亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

博惠思華Java開發(fā)工程師筆試題目及答案

時間:2023-02-10 00:49:12 筆試題目 我要投稿
  • 相關推薦

博惠思華Java開發(fā)工程師筆試題目及答案

  1。連接數(shù)據(jù)庫使用JDBC,為什么又提供了JPA?Hibernate與JPA的關系?

博惠思華Java開發(fā)工程師筆試題目及答案

  什么是JPA

  Java Persistence API

  JPA通過JDK 5.0注解或XML描述對象-關系表的映射關系,并將運行期的實體對象持久化到數(shù)據(jù)庫中。

  Sun引入新的JPA ORM規(guī)范出于兩個原因:其一,簡化現(xiàn)有Java EE和Java SE應用的對象持久化的開發(fā)工作;其二,Sun希望整合對ORM技術(shù),實現(xiàn)天下歸一。

  JPA由EJB 3.0軟件專家組開發(fā),作為JSR-220實現(xiàn)的一部分。但它不囿于EJB 3.0,你可以在Web應用、甚至桌面應用中使用。JPA的宗旨是為POJO提供持久化標準規(guī)范,由此可見,經(jīng)過這幾年的實踐探索,能夠脫離容器獨立運行,方便開發(fā)和測試的理念已經(jīng)深入人心了。目前Hibernate 3.2、TopLink 10.1.3以及OpenJPA都提供了JPA的實現(xiàn)。

  JPA的總體思想和現(xiàn)有Hibernate、TopLink,JDO等ORM框架大體一致?偟膩碚f,JPA包括以下3方面的技術(shù):

  ORM映射元數(shù)據(jù),JPA支持XML和JDK 5.0注解兩種元數(shù)據(jù)的形式,元數(shù)據(jù)描述對象和表之間的映射關系,框架據(jù)此將實體對象持久化到數(shù)據(jù)庫表中;

  JPA 的API,用來操作實體對象,執(zhí)行CRUD操作,框架在后臺替我們完成所有的事情,開發(fā)者從繁瑣的JDBC和SQL代碼中解脫出來。

  查詢語言,這是持久化操作中很重要的一個方面,通過面向?qū)ο蠖敲嫦驍?shù)據(jù)庫的查詢語言查詢數(shù)據(jù),避免程序的SQL語句緊密耦合。

  三、JPA的優(yōu)勢

  1 標準化

  JPA 是 JCP 組織發(fā)布的 Java EE 標準之一,因此任何聲稱符合 JPA 標準的框架都遵循同樣的架構(gòu),提供相同的訪問 API,這保證了基于JPA開發(fā)的企業(yè)應用能夠經(jīng)過少量的修改就能夠在不同的JPA框架下運行。

  2 對容器級特性的支持

  JPA 框架中支持大數(shù)據(jù)集、事務、并發(fā)等容器級事務,這使得 JPA 超越了簡單持久化框架的局限,在企業(yè)應用發(fā)揮更大的作用。

  3 簡單易用,集成方便

  JPA的主要目標之一就是提供更加簡單的編程模型:在JPA框架下創(chuàng)建實體和創(chuàng)建Java 類一樣簡單,沒有任何的約束和限制,只需要使用 javax.persistence.Entity進行注釋;JPA的框架和接口也都非常簡單,沒有太多特別的規(guī)則和設計模式的要求,開發(fā)者可以很容易的掌握。JPA基于非侵入式原則設計,因此可以很容易的和其它框架或者容器集成。

  4 可媲美JDBC的查詢能力

  JPA的查詢語言是面向?qū)ο蠖敲嫦驍?shù)據(jù)庫的,它以面向?qū)ο蟮淖匀徽Z法構(gòu)造查詢語句,可以看成是Hibernate HQL的等價物。JPA定義了獨特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一種擴展,它是針對實體的一種查詢語言,操作對象是實體,而不是關系數(shù)據(jù)庫的表,而且能夠支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高級查詢特性,甚至還能夠支持子查詢。

  5 支持面向?qū)ο蟮母呒壧匦?/p>

  JPA 中能夠支持面向?qū)ο蟮母呒壧匦,如類之間的繼承、多態(tài)和類之間的復雜關系,這樣的支持能夠讓開發(fā)者最大限度的使用面向?qū)ο蟮哪P驮O計企業(yè)應用,而不需要自行處理這些特性在關系數(shù)據(jù)庫的持久化。

  四、JPA的供應商

  JPA 的目標之一是制定一個可以由很多供應商實現(xiàn)的API,并且開發(fā)人員可以編碼來實現(xiàn)該API,而不是使用私有供應商特有的API。因此開發(fā)人員只需使用供應商特有的API來獲得JPA規(guī)范沒有解決但應用程序中需要的功能。盡可能地使用JPA API,但是當需要供應商公開但是規(guī)范中沒有提供的功能時,則使用供應商特有的API。

  1 Hibernate

  JPA是需要Provider來實現(xiàn)其功能的,Hibernate就是JPA Provider中很強的一個,目前來說應該無人能出其右。從功能上來說,JPA現(xiàn)在就是Hibernate功能的一個子集。Hibernate 從3.2開始,就開始兼容JPA。Hibernate3.2獲得了Sun TCK的JPA(Java Persistence API) 兼容認證。

  只要熟悉Hibernate或者其他ORM框架,在使用JPA時會發(fā)現(xiàn)其實非常容易上手。例如實體對象的狀態(tài),在Hibernate有自由、持久、游離三種,JPA里有new,managed,detached,removed,明眼人一看就知道,這些狀態(tài)都是一一對應的。再如flush方法,都是對應的,而其他的再如說Query query = manager.createQuery(sql),它在Hibernate里寫法上是session,而在JPA中變成了manager,所以從Hibernate到JPA的代價應該是非常小的

  同樣,JDO,也開始兼容JPA。在ORM的領域中,看來JPA已經(jīng)是王道,規(guī)范就是規(guī)范。在各大廠商的支持下,JPA的使用開始變得廣泛。

  2 Spring

  Spring + Hibernate 常常被稱為 Java Web 應用人氣最旺的框架組合。而在 JCP 通過的 Web Beans JSR ,卻欲將JSF + EJB + JPA 、來自 JBoss Seam(Spring 除外)的一些組件和EJB 3(目前能夠提供有基本攔截和依賴注入功能的簡化 Session Bean 框架)的一個 Web 組合進行標準化。如今的 Spring 2.0 為 JPA 提供了完整的 EJB 容器契約,允許 JPA在任何環(huán)境內(nèi)可以在 Spring 管理的服務層使用(包括 Spring 的所有 AOP 和 DI 增強)。同時,關于下一個Web應用組合會是 EJB、Spring + Hibernate 還是 Spring + JPA 的論戰(zhàn),早已充斥于耳。

  在Spring 2.0.1中,正式提供對JPA的支持,這也促成了JPA的發(fā)展,要知道JPA的好處在于可以分離于容器運行,變得更加的簡潔。

  3 OpenJPA

  OpenJPA 是 Apache 組織提供的開源項目,它實現(xiàn)了 EJB 3.0 中的 JPA 標準,為開發(fā)者提供功能強大、使用簡單的持久化數(shù)據(jù)管理框架。OpenJPA 封裝了和關系型數(shù)據(jù)庫交互的操作,讓開發(fā)者把注意力集中在編寫業(yè)務邏輯上。OpenJPA 可以作為獨立的持久層框架發(fā)揮作用,也可以輕松的與其它 Java EE 應用框架或者符合 EJB 3.0 標準的容器集成。

  4 其它

  目前支持的實現(xiàn)包括Toplink、Hibernate Entitymanager等。TopLink以前需要收費,如今開源了。OpenJPA雖然免費,但功能、性能、普及性等方面更加需要加大力度。

  對于EJB來說,實體Bean一直是被批評的對象,由于其太復雜和龐大。JPA的出現(xiàn),很大程度的分離了復雜性。這讓EJB的推廣也變得容易。

  總而言之,JPA規(guī)范主要關注的僅是API的行為方面,而由各種實現(xiàn)完成大多數(shù)性能有關的調(diào)優(yōu)。盡管如此,所有可靠的實現(xiàn)都應該擁有某種數(shù)據(jù)緩存,以作為選擇。但愿不久的將來,JPA能成為真正的標準。

  五、小結(jié)

  EJB 3.0和JPA 毫無疑問將是Java EE 5的主要賣點。在某些領域中,它們給Java社區(qū)帶來了競爭優(yōu)勢,并使Java 在其他領域與競爭對手不分伯仲(因為,不可否認,目前某些領域尚不存在基于標準的方法)。

  過去數(shù)年來,Spring Framework一直是EJB在企業(yè)領域的主要競爭對手。EJB3.0規(guī)范解決了很多促進Spring興起的問題。隨著它的出現(xiàn),EJB3.0毫無疑問比Spring提供了更好的開發(fā)體驗——最引人注目的優(yōu)勢是它不需要配置文件。

  JPA提供一種標準的OR映射解決方案,該解決方案完全集成到EJB3。0兼容的容器中。JPA的前輩將會繼續(xù)穩(wěn)定發(fā)展,但是業(yè)務應用程序中的 raw 使用將可能會減少。實現(xiàn) JPA 兼容的實體管理器似乎很可能是此類技術(shù)的發(fā)展方向。

  Java EE系列規(guī)范的較大問題與JPA沒有任何關系。Java EE 系列規(guī)范的問題涉及到 Web和EJB容器之間的集成。Spring在此領域仍然具有主要競爭優(yōu)勢。JBoss的Seam項目嘗試使用自定義的方法來解決這一問題。Caucho Resin應用服務器試圖擴展容器邊界并支持在Web容器中使用@EJB注釋。我們希望Java EE 5.1將解決層集成的問題,為我們提供一個全面而標準的依賴性注入方法。

  在不久的將來,Sun可能會將JPA作為一個單獨的JSR對待,同時JPA還可能作為Java SE的一部分。不過這些都不太重要,重要的是,我們現(xiàn)在已經(jīng)可以在脫離容器的情況下、在Java SE應用中使用JPA了。

  JPA已經(jīng)作為一項對象持久化的標準,不但可以獲得Java EE應用服務器的支持,還可以直接在Java SE中使用。開發(fā)者將無需在現(xiàn)有多種ORM框架中艱難地選擇,按照Sun的預想,現(xiàn)有ORM框架頭頂?shù)墓猸h(huán)將漸漸暗淡,不再具有以往的吸引力。

  2。簡述struts,它有什么優(yōu)缺點? 談一下MVC。

  3。Vector與ArrayList的區(qū)別,interface與abstract class的區(qū)別。

  4。JavaScript有什么作用?什么是Ajax? Ajax與JavaScript的聯(lián)系。

  5。html通過什么element把數(shù)據(jù)提交到WebApp?有幾種方式?這幾種方式的區(qū)別?

  6。表格DEPARTMENT

ID DEPTNAME SUPERID
11 John -1
17 Peter 11
19 Rose 11
23 Martin 17
81 Michel 19
83 Tom 23

  使用代碼將其顯示為

  import org.dom4j.Document;

  import org.dom4j.DocumentHelper;

  import org.dom4j.DocumentException;

  import org.dom4j.Element;

  import java.util.*;

  /**

  * Created by IntelliJ IDEA.

  * User: leizhimin

  * Date: 2008-4-14 14:02:12

  * Note: Java遞歸遍歷XML所有元素

  */

  public class XmlTest {

  // private static Map xmlmap = new HashMap();

  //存儲xml元素信息的容器

  private static List elemList = new ArrayList();

  //要測試的xml對象

  private static String srcXml = ”\n” +

  “\n” +

  “ \n” +

  “ 某人\n” +

  “ \n” +

  “ \n” +

  “ 10002\n” +

  “ 西安市太白路\n” +

  “ \n” +

  “ \n” +

  “ 10002\n” +

  “ 空ID節(jié)點啊\n” +

  “ \n” +

  “ \n” +

  “ 10002\n” +

  “ 空ID節(jié)點啊\n” +

  “ \n” +

  “\t\t\t\n” +

  “\t\t\t\t\n” +

  “ 西安市太白路2\n” +

  “ \n” +

  “\t\t\n” +

  “ \n” +

  “ \n” +

  “ ASDF\n” +

  “ \n” +

  “”;

  public static void main(String args[]) throws DocumentException {

  XmlTest test = new XmlTest();

  Element root = test.getRootElement();

  test.getElementList(root);

  String x = test.getListString(elemList);

  System.out.println(“———–原xml內(nèi)容————”);

  System.out.println(srcXml);

  System.out.println(“———–解析結(jié)果————”);

  System.out.println(x);

  }

  /**

  * 獲取根元素

  *

  * @return

  * @throws DocumentException

  */

  public Element getRootElement() throws DocumentException {

  Document srcdoc = DocumentHelper.parseText(srcXml);

  Element elem = srcdoc.getRootElement();

  return elem;

  }

  /**

  * 遞歸遍歷方法

  *

  * @param element

  */

  public void getElementList(Element element) {

  List elements = element.elements();

  if (elements.size() == 0) {

  //沒有子元素

  String xpath = element.getPath();

  String value = element.getTextTrim();

  elemList.add(new Leaf(xpath, value));

  } else {

  //有子元素

  for (Iterator it = elements.iterator(); it.hasNext();) {

  Element elem = (Element) it.next();

  //遞歸遍歷

  getElementList(elem);

  }

  }

  }

  public String getListString(List elemList) {

  StringBuffer sb = new StringBuffer();

  for (Iterator it = elemList.iterator(); it.hasNext();) {

  Leaf leaf = it.next();

  sb.append(leaf.getXpath()).append(“ = ”).append(leaf.getValue()).append(“\n”);

  }

  return sb.toString();

  }

  }

  /**

  * xml節(jié)點數(shù)據(jù)結(jié)構(gòu)

  */

  class Leaf {

  private String xpath; //

  private String value;

  public Leaf(String xpath, String value) {

  this.xpath = xpath;

  this.value = value;

  }

  public String getXpath() {

  return xpath;

  }

  public void setXpath(String xpath) {

  this.xpath = xpath;

  }

  public String getValue() {

  return value;

  }

  public void setValue(String value) {

  this.value = value;

  }

  }

  提示:遞歸 XML DOM

  7.JSP文件中有如下代碼:

  …….

  請寫出代碼運行第一次與第二次分別的值是什么?并用html表格進行表示。

  8.在投資10萬元以下,開發(fā)一個訪問人數(shù)小于5000人的發(fā)布與管理系統(tǒng)。

  請寫出相關的需求分析及采用方式(大致這意思)。

  9.寫一個你了解的開源的項目,并說下自己的理解。

  10.使用過什么應用服務器,并且說出他們的差別。

  什么是應用服務器

  應用服務器(無論是什么功能的應用服務器)在數(shù)據(jù)庫服務器和終端用戶之間占有很大一部分計算領地。這個領域有一個廣為人知名字,這個名字就是中間件,這個名字也告訴了你應用服務器都做什么事情。

  首先也是最重要,應用服務器把數(shù)據(jù)庫信息(通常來源于一個數(shù)據(jù)庫服務器)與終端用戶或者客戶端程序(常常在Web瀏覽器里運行)連接在一起。在這個連接中存在一個中間層很多理由。這些理由包括減少客戶端程序的大小和復雜性、緩存和更好的控制數(shù)據(jù)流以提供更好的性能以及為數(shù)據(jù)通信和用戶通信提供安全保障。

  然而,這并不是應用服務器功能的全部。在應用服務器早期應用的時候,人們就發(fā)現(xiàn)應用軟件本身(人們用來完成工作的程序)正變得越來越大并且越來越復雜。無論應用程序的編寫和維護都是如此。

  與此同時,應用程序共享數(shù)據(jù)和有時候共享功能的壓力也越來越大。更多的應用程序被放在網(wǎng)絡上或使用報網(wǎng)絡擴展功能。讓某些類型的應用程序在網(wǎng)絡上運行似乎是合乎邏輯的:這有助于以有組織和有效率地方式共享應用程序的功能,使應用程序更容易編寫、管理和維護。

【博惠思華Java開發(fā)工程師筆試題目及答案】相關文章:

java筆試題目及答案07-27

中興2013年Java開發(fā)筆試題目及答案07-17

中興Java Web開發(fā)工程師筆試題及答案07-17

Java中級開發(fā)工程師筆試題及答案201608-21

JAVA經(jīng)典筆試題目及答案(精選7套)08-03

java筆試題,筆試題目分享08-10

java筆試題及答案07-28

java筆試題及答案07-17

ios開發(fā)工程師筆試題及答案08-10