知识大全 博惠思华Java开发工程师面试题及答案

Posted 框架

篇首语:惜时专心苦读是做学问的一个好方法。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 博惠思华Java开发工程师面试题及答案相关的知识,希望对你有一定的参考价值。

博惠思华Java开发工程师面试题及答案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

连接数据库使用JDBC 为什么又提供了JPA?Hibernate与JPA的关系?

什么是JPA

Java?Persistence?API

JPA通过JDK? 注解或XML描述对象-关系表的映射关系 并将运行期的实体对象持久化到数据库中

Sun引入新的JPA?ORM规范出于两个原因 其一 简化现有Java?EE和Java?SE应用的对象持久化的开发工作 其二 Sun希望整合对ORM技术 实现天下归一

JPA由EJB? 软件专家组开发 作为JSR 实现的一部分 但它不囿于EJB? 你可以在Web应用 甚至桌面应用中使用 JPA的宗旨是为POJO提供持久化标准规范 由此可见 经过这几年的实践探索 能够脱离容器独立运行 方便开发和测试的理念已经深入人心了 目前Hibernate? TopLink? 以及OpenJPA都提供了JPA的实现

JPA的总体思想和现有Hibernate TopLink JDO等ORM框架大体一致 总的来说 JPA包括以下 方面的技术

ORM映射元数据 JPA支持XML和JDK? 注解两种元数据的形式 元数据描述对象和表之间的映射关系 框架据此将实体对象持久化到数据库表中

JPA?的API 用来操作实体对象 执行CRUD操作 框架在后台替我们完成所有的事情 开发者从繁琐的JDBC和SQL代码中解脱出来

查询语言 这是持久化操作中很重要的一个方面 通过面向对象而非面向数据库的查询语言查询数据 避免程序的SQL语句紧密耦合

三 JPA的优势

?标准化

JPA?是?JCP?组织发布的?Java?EE?标准之一 因此任何声称符合?JPA?标准的框架都遵循同样的架构 提供相同的访问?API 这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行

?对容器级特性的支持

JPA?框架中支持大数据集 事务 并发等容器级事务 这使得?JPA?超越了简单持久化框架的局限 在企业应用发挥更大的作用

?简单易用 集成方便

JPA的主要目标之一就是提供更加简单的编程模型 在JPA框架下创建实体和创建Java?类一样简单 没有任何的约束和限制 只需要使用?javax persistence Entity进行注释 JPA的框架和接口也都非常简单 没有太多特别的规则和设计模式的要求 开发者可以很容易的掌握 JPA基于非侵入式原则设计 因此可以很容易的和其它框架或者容器集成

?可媲美JDBC的查询能力

JPA的查询语言是面向对象而非面向数据库的 它以面向对象的自然语法构造查询语句 可以看成是Hibernate?HQL的等价物 JPA定义了独特的JPQL(Java?Persistence?Query?Language) JPQL是EJB?QL的一种扩展 它是针对实体的一种查询语言 操作对象是实体 而不是关系数据库的表 而且能够支持批量更新和修改 JOIN GROUP?BY HAVING?等通常只有?SQL?才能够提供的高级查询特性 甚至还能够支持子查询

?支持面向对象的高级特性

JPA?中能够支持面向对象的高级特性 如类之间的继承 多态和类之间的复杂关系 这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用 而不需要自行处理这些特性在关系数据库的持久化

四 JPA的供应商

JPA?的目标之一是制定一个可以由很多供应商实现的API 并且开发人员可以编码来实现该API 而不是使用私有供应商特有的API 因此开发人员只需使用供应商特有的API来获得JPA规范没有解决但应用程序中需要的功能 尽可能地使用JPA?API 但是当需要供应商公开但是规范中没有提供的功能时 则使用供应商特有的API

?Hibernate

JPA是需要Provider来实现其功能的 Hibernate就是JPA?Provider中很强的一个 目前来说应该无人能出其右 从功能上来说 JPA现在就是Hibernate功能的一个子集 Hibernate?从 开始 就开始兼容JPA Hibernate 获得了Sun?TCK的JPA(Java?Persistence?API)?兼容认证

只要熟悉Hibernate或者其他ORM框架 在使用JPA时会发现其实非常容易上手 例如实体对象的状态 在Hibernate有自由 持久 游离三种 JPA里有new managed detached removed 明眼人一看就知道 这些状态都是一一对应的 再如flush方法 都是对应的 而其他的再如说Query?query?=?manager createQuery(sql) 它在Hibernate里写法上是session 而在JPA中变成了manager 所以从Hibernate到JPA的代价应该是非常小的

同样 JDO 也开始兼容JPA 在ORM的领域中 看来JPA已经是王道 规范就是规范 在各大厂商的支持下 JPA的使用开始变得广泛

?Spring

Spring?+?Hibernate?常常被称为?Java?Web?应用人气最旺的框架组合 而在?JCP?通过的?Web?Beans?JSR? 却欲将JSF?+?EJB?+?JPA? 来自?JBoss?Seam(Spring?除外)的一些组件和EJB? (目前能够提供有基本拦截和依赖注入功能的简化?Session?Bean?框架)的一个?Web?组合进行标准化 如今的?Spring? ?为?JPA?提供了完整的?EJB?容器契约 允许?JPA在任何环境内可以在?Spring?管理的服务层使用(包括?Spring?的所有?AOP?和?DI?增强) 同时 关于下一个Web应用组合会是?EJB Spring?+?Hibernate?还是?Spring?+?JPA?的论战 早已充斥于耳

在Spring? 中 正式提供对JPA的支持 这也促成了JPA的发展 要知道JPA的好处在于可以分离于容器运行 变得更加的简洁

?OpenJPA

OpenJPA?是?Apache?组织提供的开源项目 它实现了?EJB? ?中的?JPA?标准 为开发者提供功能强大 使用简单的持久化数据管理框架 OpenJPA?封装了和关系型数据库交互的操作 让开发者把注意力集中在编写业务逻辑上 OpenJPA?可以作为独立的持久层框架发挥作用 也可以轻松的与其它?Java?EE?应用框架或者符合?EJB? ?标准的容器集成

?其它

目前支持的实现包括Toplink Hibernate?Entitymanager等 TopLink以前需要收费 如今开源了 OpenJPA虽然免费 但功能 性能 普及性等方面更加需要加大力度

对于EJB来说 实体Bean一直是被批评的对象 由于其太复杂和庞大 JPA的出现 很大程度的分离了复杂性 这让EJB的推广也变得容易

总而言之 JPA规范主要关注的仅是API的行为方面 而由各种实现完成大多数性能有关的调优 尽管如此 所有可靠的实现都应该拥有某种数据缓存 以作为选择 但愿不久的将来 JPA能成为真正的标准

五 小结

EJB? 和JPA?毫无疑问将是Java?EE? 的主要卖点 在某些领域中 它们给Java社区带来了竞争优势 并使Java?在其他领域与竞争对手不分伯仲(因为 不可否认 目前某些领域尚不存在基于标准的方法)

过去数年来 Spring?Framework一直是EJB在企业领域的主要竞争对手 EJB 规范解决了很多促进Spring兴起的问题 随着它的出现 EJB 毫无疑问比Spring提供了更好的开发体验——最引人注目的优势是它不需要配置文件

JPA提供一种标准的OR映射解决方案 该解决方案完全集成到EJB 兼容的容器中 JPA的前辈将会继续稳定发展 但是业务应用程序中的?raw?使用将可能会减少 实现?JPA?兼容的实体管理器似乎很可能是此类技术的发展方向

Java?EE系列规范的较大问题与JPA没有任何关系 Java?EE?系列规范的问题涉及到?Web和EJB容器之间的集成 Spring在此领域仍然具有主要竞争优势 JBoss的Seam项目尝试使用自定义的方法来解决这一问题 Caucho?Resin应用服务器试图扩展容器边界并支持在Web容器中使用@EJB注释 我们希望Java?EE? 将解决层集成的问题 为我们提供一个全面而标准的依赖性注入方法

在不久的将来 Sun可能会将JPA作为一个单独的JSR对待 同时JPA还可能作为Java?SE的一部分 不过这些都不太重要 重要的是 我们现在已经可以在脱离容器的情况下 在Java?SE应用中使用JPA了 ?

JPA已经作为一项对象持久化的标准 不但可以获得Java?EE应用服务器的支持 还可以直接在Java?SE中使用 开发者将无需在现有多种ORM框架中艰难地选择 按照Sun的预想 现有ORM框架头顶的光环将渐渐暗淡 不再具有以往的吸引力

简述struts 它有什么优缺点??谈一下MVC

Vector与ArrayList的区别 interface与abstract?class的区别

JavaScript有什么作用?什么是Ajax Ajax与JavaScript的联系

通过什么element把数据提交到WebApp?有几种方式?这几种方式的区别?

表格DEPARTMENT

ID DEPTNAME SUPERID John Peter Rose Martin Michel Tom

使用代码将其显示为

import? dom j Document;

import? dom j DocumentHelper;

import? dom j DocumentException;

import? dom j Element;

import?java util *;

/**

*?Created?by?IntelliJ?IDEA <br>

*?<b>User</b>:?leizhimin<br>

*?<b>Date</b>:? ? : : <br>

*?<b>Note</b>:?Java递归遍历XML所有元素

*/

public?class?XmlTest?

// private?static?Map<String ?String>?xmlmap?=?new?HashMap<String ?String>();

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

private?static?List<Leaf>?elemList?=?new?ArrayList<Leaf>();

//要测试的xml对象

private?static?String?srcXml?=?&# ;<?xml?version=\\&# ; \\&# ;?encoding=\\&# ;GBK\\&# ;?>\\n&# ;?+

&# ;<doc>\\n&# ;?+

&# ; <person>\\n&# ;?+

&# ; <name>某人</name>\\n&# ;?+

&# ; <adds> \\n&# ;?+

&# ; <add?ID=\\&# ; \\&# ;>\\n&# ;?+

&# ; <BS> </BS>\\n&# ;?+

&# ; <note>西安市太白路</note>\\n&# ;?+

&# ; </add>\\n&# ;?+

&# ; <add?ID=\\&# ;\\&# ;>\\n&# ;?+

&# ; <BS> </BS>\\n&# ;?+

&# ; <note>空ID节点啊</note>\\n&# ;?+

&# ; </add>\\n&# ;?+

&# ; <add>\\n&# ;?+

&# ; <BS> </BS>\\n&# ;?+

&# ; <note>空ID节点啊</note>\\n&# ;?+

&# ; </add>\\n&# ;?+

&# ;\\t\\t\\t<add?ID=\\&# ; \\&# ;>\\n&# ;?+

&# ;\\t\\t\\t\\t<BS?xmlns=\\&# ; \\&# ;/>\\n&# ;?+

&# ; <note>西安市太白路 </note>\\n&# ;?+

&# ; </add>\\n&# ;?+

&# ;\\t\\t</adds>\\n&# ;?+

&# ; </person>\\n&# ;?+

&# ; <other>\\n&# ;?+

&# ; <name?ID=\\&# ;HEHE\\&# ;>ASDF</name>\\n&# ;?+

&# ; </other>\\n&# ;?+

&# ;</doc>&# ;;

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内容&# ;&# ;&# ;&# ;&# ;);

System out println(srcXml);

System out println(&# ;&# ;&# ;&# ;&# ;解析结果&# ;&# ;&# ;&# ;&# ;);

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()?==? )?

//没有子元素

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<Leaf>?elemList)?

StringBuffer?sb?=?new?StringBuffer();

for?(Iterator<Leaf>?it?=?elemList iterator();?it hasNext();)?

Leaf?leaf?=?it next();

sb append(leaf getXpath()) append(&# ;?=?&# ;) append(leaf getValue()) append(&# ;\\n&# ;);

return?sb toString();

/**

*?xml节点数据结构

*/

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

JSP文件中有如下代码

<>

……

<%!?int?a?=?initia( A )

int?b?=?initia( B );

%>

<%

a?++;

b?++;

%>

<%

System out println(a);

System out println(b);

%>

请写出代码运行第一次与第二次分别的值是什么?并用表格进行表示

.在投资 万元以下 开发一个访问人数小于 人的发布与管理系统

请写出相关的需求分析及采用方式(大致这意思)

.写一个你了解的开源的项目 并说下自己的理解

.使用过什么应用服务器 并且说出他们的差别

什么是应用服务器

应用服务器(无论是什么功能的应用服务器)在数据库服务器和终端用户之间占有很大一部分计算领地 这个领域有一个广为人知名字 这个名字就是中间件 这个名字也告诉了你应用服务器都做什么事情

首先也是最重要 应用服务器把数据库信息(通常来源于一个数据库服务器)与终端用户或者客户端程序(常常在Web浏览器里运行)连接在一起 在这个连接中存在一个中间层很多理由 这些理由包括减少客户端程序的大小和复杂性 缓存和更好的控制数据流以提供更好的性能以及为数据通信和用户通信提供安全保障

然而 这并不是应用服务器功能的全部 在应用服务器早期应用的时候 人们就发现应用软件本身(人们用来完成工作的程序)正变得越来越大并且越来越复杂 无论应用程序的编写和维护都是如此

cha138/Article/program/Java/JSP/201405/30754

相关参考

知识大全 经典面试题及答案分析

人事主管最常用的面试题和最喜欢的答案问题1如果我录用你,你认为你在这份工作上会待多久呢?A.这问题可能要等我工作一段时间后,才能比较具体地回答。B.一份工作至少要做3年、5年,才能学习到精华的部分。C

知识大全 面试中常出现的两个Hibernate面试题及解答

面试中常出现的两个Hibernate面试题及解答  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在数

知识大全 JAVA手机开发高级工程师笔试题 威盛电子(中国)

JAVA手机开发高级工程师笔试题威盛电子(中国)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!li

知识大全 化简求值题及答案100道

化简求值题及答案100道1.(3X+2Y)+(4X+3Y)其中X=5,Y+3解:原式=3X+2Y+4X+3Y=7X+5Y当X=5,Y=3时原式=5*7+(-3)*5+202.(5a^2-3b^2)+(

知识大全 求一份2010年江苏化学高考题及答案

求一份2010年江苏化学高考题及答案?求大神帮助哥们忘了问你,宁波博洋国际怎么个挂羊头卖狗肉啊?能不能说的详细一点?紧急求助:2010江苏卷数学高考题15题答案可惜不能传图片故所求的两条对角线的长分别

知识大全 小学六年级语文上册第二单元评估检测题及答案

小学六年级语文上册第二单元评估检测题及答案,小学六年级英语上册学习水平评估测试卷第二单元答案这里应该找不到答案你可以问问老师或者同学尽量自己做吧不会了让同学给你讲讲,这样才对你的学习有帮助,答案只能解

知识大全 数据结构考研1800题及答案集锦

   计算机专业考研论坛   计算机考研在线测试   计算机考研专业课大纲   

知识大全 我是一名java开发的本科应届生,想找工作但是在各种招聘网站上投了简历,让我去面试之后都会说我技术

我是一名java开发的本科应届生,想找工作但是在各种招聘网站上投了简历,让我去面试之后都会说我技术1.一般是科技公司2.职位分布毫无逻辑,数控跟天猫在一家公司,公司领域再怎么广也不可能把八竿子打不着的

知识大全 十道有关,运算定律的,易错脱式计算题及答案

十道有关,运算定律的,易错脱式计算题及答案怎样简便就怎样计算98×10148×12538×99+38175×56+25×50×25×20×40十道有关运算定律的易错的脱式计算题已结列印下载,备用,分析

《职业病防治法》试题38题及答案

1、依据《职业病防治法》的规定,下列关于职业病病人享受国家规定的职业病待遇的说法,正确的是()。A、职业病病人变动工作岗位的,其依法享受的职业病待遇随工作岗位改变B、职业病病人变动工作岗位的,其依法享