- 相关推荐
Java工程师笔试题
在日常学习和工作中,我们需要用到试题的情况非常的多,借助试题可以检测考试者对某方面知识或技能的掌握程度。你所了解的试题是什么样的呢?下面是小编收集整理的Java工程师笔试题,仅供参考,希望能够帮助到大家。
Java工程师笔试题 1
一、选择题(共50题,每题1.5分,共75分。多选题选不全或选错都不得分。)
1.以下属于面向对象的特征的是(C,D)。(两项)
A) 重载
B) 重写
C) 封装
D) 继承
2.以下代码运行输出是(C)
public class Person{
private String name=”Person”;
int age=0;
}
public class Child extends Person{
public String grade;
public static void main(String[] args){
Person p = new Child( );
System.out.println(p.name);
}
}
A) 输出:Person
B) 没有输出
C) 编译出错
D) 运行出错
3.在使用super 和this关键字时,以下描述正确的是(A)
A) 在子类构造方法中使用super( )显示调用父类的构造方法,super( )必须写在子类构造方法的第一行,否则编译不通过
B) super( )和this( )不一定要放在构造方法内第一行
C) this( )和super( )可以同时出现在一个构造函数中
D) this( )和super( )可以在static环境中使用,包括static方法和static语句块
4.以下对封装的描述正确的是(D)
A) 只能对一个类中的方法进行封装,不能对属性进行封装。
B) 如果子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用
C) 封装的意义不大,因此在编码时尽量不要使用
D) 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性
5.以下对继承的描述错误的是(A)
A) Java中的继承允许一个子类继承多个父类
B) 父类更具有通用性,子类更具体
C) Java中的继承存在着传递性
D) 当实例化子类时会递归调用父类中的构造方法
6.以下程序的运行结果是(D)
class Person{
public Person( ){
System.out.println(“this is a Person”);
}
}
public class Teacher extends Person{
private String name=”tom”;
public Teacher( ){
System.out.println(“this is a teacher”);
super( );
}
public static void main(String[] args){
Teacher teacher = new Teacher( );
System.out.println(this.name);
}
}
A) this is a Person
this is a teacher
tom
B) this is a teacher
this is a Person
tom
C) 运行出错
D) 编译有两处错误
7.以下说法错误的是( )
A) super.方法( )可以调用父类的所有非私有方法
B) super( )可以调用父类的所有非私有构造函数
C) super.属性可以调用父类的所有非私有属性
D) this和super关键字可以出现在同一个构造函数中
8.以下关于final关键字说法错误的是(A,C)(两项)
A) final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
B) final修饰的类肯定不能被继承
C) final修饰的方法不能被重载
D) final修饰的变量不允许被再次赋值
9.访问修饰符作用范围由大到小是(D)
A) private-default-protected-public
B) public-default-protected-private
C) private-protected-default-public
D) public-protected-default-private
10.以下(D)不是Object类的方法
A) clone( )
B) finalize( )
C) toString( )
D) hasNext( )
11.多态的表现形式有(A)
A) 重写
B) 抽象
C) 继承
D) 封装
12.以下对重载描述错误的是(B)
A) 方法重载只能发生在一个类的内部
B) 构造方法不能重载
C) 重载要求方法名相同,参数列表不同
D) 方法的返回值类型不是区分方法重载的条件
13.以下(D)添加到ComputerBook中不会出错
class Book{
protected int getPrice( ){
return 30;
}
}
public class ComputerBook extends Book{
}
A) protected float getPrice( ){}
B) protected int getPrice(int page){}
C) int getPrice( ){}
D) public int getPrice( ){return 10;}
14.以下对抽象类的描述正确的是(C)
A) 抽象类没有构造方法
B) 抽象类必须提供抽象方法
C) 有抽象方法的类一定是抽象类
D) 抽象类可以通过new关键字直接实例化
15.以下对接口描述错误的有(D)
A) 接口没有提供构造方法
B) 接口中的方法默认使用public、abstract修饰
C) 接口中的属性默认使用public、static、final修饰
D) 接口不允许多继承
16.以下代码,描述正确的有(A)
interface IDemo{
public static final String name;1
void print( );2
public void getInfo( );3
}
abstract class Person implements IDemo{4
public void print( ){
}
}
A) 第1行错误,没有给变量赋值
B) 第2行错误,方法没有修饰符
C) 第4行错误,没有实现接口的全部方法
D) 第3行错误,没有方法的实现
17.接口和抽象类描述正确的有(B,C)(两项)
A) 抽象类没有构造函数
B) 接口没有构造函数
C) 抽象类不允许多继承
D) 接口中的方法可以有方法体
18.以下描述错误的有(C)
A) abstract 可以修饰类、接口、方法
B) abstract修饰的类主要用于被继承
C) abstract 可以修饰变量
D) abstract修饰的类,其子类也可以是abstract修饰的
19.以下描述正确的有(B)
A) 方法的重写应用在一个类的内部
B) 方法的重载与返回值类型无关
C) 构造方法不能重载
D) 构造方法可以重写
20.以下程序运行结果是(A)
public class Test extends Father{
private String name=”test”;
public static void main(String[] args){
Test test = new Test( );
System.out.println(test.getName( ));
}
}
class Father{
private String name=”father”;
public String getName( ) {
return name;
}
}
A) father
B) test
C) 编译出错
D) 运行出错,无输出
21.以下对异常的描述不正确的有(C)
A) 异常分为Error和Exception
B) Throwable是所有异常类的父类
C) Exception是所有异常类父类
D) Exception包括RuntimeException和RuntimeException之外的异常
22.在try-catch-finally语句块中,以下可以单独与finally一起使用的是(B)
A) catch
B) try
C) throws
D) throw
23.下面代码运行结果是(B)
public class Demo{
public int add(int a,int b){
try{
return a+b;
}catch(Exception e){
System.out.println(“catch 语句块”);
}finally{
System.out.println(“finally 语句块”);
}
return 0;
}
public static void main(String[] args){
Demo demo = new Demo( );
System.out.println(“和是:”+demo.add(9,34));
}
}
A) 编译异常
B) finally语句块 和是:43
C) 和是:43 finally语句块
D) catch语句块 和是:43
24.以下描述不正确的有(D)
A) try块不可以省略
B) 可以使用多重catch块
C) finally块可以省略
D) catch块和finally块可以同时省略
25.以下对自定义异常描述正确的是(C)
A) 自定义异常必须继承Exception
B) 自定义异常可以继承自Error
C) 自定义异常可以更加明确定位异常出错的位置和给出详细出错信息
D) 程序中已经提供了丰富的异常类,使用自定义异常没有意义
26.以下程序运行结果是(D)
public class Test {
public int div(int a, int b) {
try {
return a / b;
}catch(Exception e){
System.out.println(“Exception”);
}catch(NullPointerException e){
System.out.println(“ArithmeticException”);
}
catch (ArithmeticException e) {
System.out.println(“ArithmeticException”);
} finally {
System.out.println(“finally”);
}
return 0;
}
public static void main(String[] args) {
Test demo = new Test( );
System.out.println(“商是:” + demo.div(9, 0));
}
}
A) Exception finally 商是:0
B) ArithmeticException finally 商是:0
C) finally商是:0
D) 编译报错
27.以下对TCP和UDP描述正确的是(D)
A) TCP不能提供数据的可靠性
B) UDP能够保证数据库的可靠性
C) TCP数据传输效率高于UDP
D) UDP数据传输效率高于TCP
28.在Java中,下面对于构造函数的描述正确的是(D)。(选择一项)
A) 类必须显示定义构造函数
B) 构造函数的返回类型是void
C) 构造函数和类有相同的名称,并且不能带任何参数
D) 一个类可以定义多个构造函数
29.根据下面的代码,
String s = null;
会抛出NullPointerException异常的有(A,C)。[两项]
A) if( (s!=null) & (s.length( )>0) )
B) if( (s!=null) & & (s.length( )>0) )
C) if( (s==null) | (s.length( )==0) )
D) if( (s==null) || (s.length( )==0) )
30..在Java中,关于HashMap类的描述,以下廉洁错误的是( B )。
A) HashMap使用键/值得形式保存数据
B) HashMap 能够保证其中元素的顺序
C) HashMap允许将null用作键
D) HashMap允许将null用作值
31.下列选项中关于java中super关键字的说法错误的是( B )
A) super关键字是在子类对象内部指代其父类对象的引用
B) super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
C) 子类可以通过super关键字调用父类的方法
D) 子类可以通过super关键字调用父类的属性
32.在Java中,以下代码( A )正确地创建了一个InputStreamReader对象。
A) InuptStreamReader(new FileInputStream(“1.dat”));
B) InuptStreamReader(new FileReader(“1.dat”));
C) InuptStreamReader(new BufferReader(“1.dat”));
D) InuptStreamReader (“1.dat”);
33.在Java中,( D )类提供定位本地文件系统,对文件或目录及其属性进行基本操作。
A) FileInputStream
B) FileReader
C) FileWriter
D) File
34.Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述错误的`是(C)(选择一项)
A) ArrayList和LinkedList均实现了List接口
B) ArrayList的访问速度比LinkedList快
C) 添加和删除元素时,ArrayList的表现更佳
D) HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
35.在Java中开发JDBC应用程序时,使用DriverManager类的getConnection( )方法
建立与数据源的连接语句为:
Connection con = DriverManager.getConnection(“jdbc:odbc:news”);
URL连接中的”n ews”表示的是(C)(选择一项)
A) 数据库中表的名称
B) 数据库服务器的机器名
C) 数据源的名称
D) 用户名
36.在Java中,JDBCAPI定义了一组用于与数据库进行通信的接口和类,它们包括在(B)包中。
A) java.lang
B) java.sql
C) java.util
D) java.math
37.Java中,以下( B )接口以键_值对的方式存储对象。
A) java.util.Collection
B) java.util.Map
C) java.util.List
D) java.util.Set
38.以下关于对象序列化描述正确的是( C,D )[两项]
A) 使用FileOutputStream可以将对象进行传输
B) 使用PrintWriter可以将对象进行传输
C) 使用ObjectOutputStream类完成对象存储,使用ObjectInputStream类完成对象读取
D) 对象序列化的所属类需要实现Serializable接口
39.在Java中,( A )类可用于创建链表数据结构的对象。
A) LinkedList
B) ArrayList
C) Collection
D) HashMap
40.分析下面这段Java代码,它的运行结果是( C )。
Import java.io.*;
Public class B{
Public static void main(string [] args){
int i=12;
System.out.println(i+=i-=i*=i);}}
A) 100
B) 0
C) -120
D) 程序无法编译
41.使用JDBC事务的步骤是(C,A,B,D)(多选)
A) 取消Connection的事务自动提交方式
B) 发生异常回滚事务
C) 获取Connection对象
D) 操作完毕提交事务
42.以下对JDBC事务描述错误的是( B )
A) JDBC事务属于JAVA事务的一种
B) JDBC事务属于容器事务类型
C) JDBC事务可以保证操作的完整性和一致性
D) JDBC事务是由Connection发起的,并由Connection控制
43.要通过可滚动的结果集更新数据,以下正确的是(A
A) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)
B) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)
C) pst=con.prepareStatement(sql, Resu ltSet.TYPE_SCROLL_SENSITIVE)
D) pst=con.prepareStatement(sql, ResultSet.CONCUR_UPDATABLE)
44.存储过程pro有两个参数,第一个为输入参数,第二个为输出参数,以下代码正确的是(C)
A) CallableStatement cst=con.prepareCall(“(call pro(?,?))”);
B) CallableStatement cst=con.prepareCall(“(call pro(?))”);
C) CallableStatement cst=con.prepareCall(“{call pro(?,?)}”);
D) CallableStatement cst=con.prepareCall(“{call pro(?,?,?)}”);
45.以下描述正确的是(B)
A) CallableStatement是PreparedStatement的父接口
B) PreparedStatement是CallableStatement的父接口
C) CallableStatement是Statement的子接口
D) PreparedStatement是Statement的父接口
46.要删除book表中书籍(bookName)是”java”的记录,以下代码正确的是(A
String sql=” from book where bookName=?”;
PreparedStatement pst=con.preparedStatement(sql);
______________________________
pst.execute( );
A) pst.setString(1,”java”);
B) pst.setString(0,”java”);
C) pst.setInt(0,”java”);
D) 以上选项都不正确
47.获取ResutlSet对象rst的第一行数据,以下正确的是(B)
A) rst.hashNext( );
B) rst.next( );
C) rst.first( );
D) rst.nextRow( );
48.以下可以正确获取结果集的有(AD)(多选)
A) Statement sta=con.createStatement( );
ResultSet rst=sta.executeQuery(“select * from book”);
B) Statement sta=con.createStatement(“select * from book”);
ResultSet rst=sta.executeQuery( );
C) PreparedStatement pst=con.preparedStatement( );
ResultSet rst=pst.executeQuery(“select * from book”);
D) PreparedStatement pst=con.preparedStatement(“select * from book”);
ResultSet rst=pst.executeQuery( );
49.以下负责建立与数据库连接的是(D)
A) Statement
B) PreparedStatement
C) ResultSet
D) DriverManager
50.使用JDBC连接数据库的顺序是(B,A,D,C,E)(多选)
A) 加载驱动
B) 导入驱动包
C) 发送并处理SQL语句
D) 建立于数据库的连接
E 关闭连接
二、简答题(各5分,共25分)
1、在java中如果声明一个类为final,表示什么意思? (不计分)
答:final是最终的意思,final可用于定义变量、方法和类但含义不同,声明为final的类不能被继承。
1、父类的构造方法是否可以被子类覆盖(重写)?
答:父类的构造方法不可以被子类覆盖,因为父类和子类的类名是不可能一样的。
2、请讲述String 和StringBuffer的区别。
答:String 类所定义的对象是用于存放”长度固定”的字符串。
StringBuffer类所定义的对象是用于存放”长度可变动”的字符串。
3、如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢?
答:因为类A、B不是接口,所以是不可以直接继承的,但可以将A、B类定义成父子类,那么C类就能实现A、B类的功能了。假如A为B的父类,B为C的父类,此时C就能实现A、B的功能。
4、结合Java视频Lesson5(多线程),分析sleep( )和wait( )方法的区别。
答: Sleeping睡眠的意思 : sleep( ) 方法用来暂时中止执行的线程。在睡眠后,线程将进入就绪状态。
waiting等待的意思: 如果调用了 wait( ) 方法,线程将处于等待状态。用于在两个或多个线程并发运行时。
5、谈谈你对抽象类和接口的理解。
答:定义抽象类的目的是提供可由其子类共享的一般形式、子类可以根据自身需要扩展抽象类、抽象类不能实例化、抽象方法没有函数体、抽象方法必须在子类中给出具体实现。他使用extends来继承。
接口:一个接口允许一个类从几个接口继承而来,Java 程序一次只能继承一个类但可以实现几个接口,接口不能有任何具体的方法,接口也可用来定义可由类使用的一组常量。其实现方式是interface来实现。
Java工程师笔试题 2
1.J2EE 是什么?它包括哪些技术?
解答:从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物.适用于企业级应用的 J2EE,提供一个平台 独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。
主要包括以下这些技术:
1) Servlet
Servlet 是 Java 平台上的 CGI 技术。Servlet 在服务器端运行,动态地生成 Web 页面。与传统的 CGI和许多其它类似 CGI 的技术相比,Java Servlet 具有更高的效率并更容易使用。对于 Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。
2)JSP
JSP(Java Server Page)是一种实现普通静态 HTML 和动态页面输出混合编码的技术。从这一点来看,非常类似 MicrosoftASP、PHP 等技术。借助形式上的内容和外观表现的分离,Web 页面制作的任务可以比较方便地划分给页面设计人员和程序员,并方便地通过JSP 来合成。在运行时态,JSP 将会被首先转换成 Servlet,并以 Servlet 的形态编译运行,因此它的效率和功能与 Servlet 相比没有差别,一样具有很高的效率。
3) EJB
EJB 定义了一组可重用的组件:Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。
4)JDBC
JDBC(Java Database Connectivity , Java 数据库连接)API 是 一 个 标 准 SQL(Structured QueryLanguage,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准 Java API 编写数据库应用程序。JDBC API 主要用来连接数据库和直接调用 SQL 命令执行各种 SQL 语句。利用 JDBC API 可以执行一般的 SQL 语句、 动态 SQL 语句及带 IN 和 OUT 参数的存储过程。 Java 中的 JDBC 相当于 Microsoft平台中的 ODBC(Open DatabaseConnectivity)。
2.测试生命周期、测试过程分为几个阶段,以及各阶段的含义?
解答:软件测试生命周期一般包括 6 个阶段:1)计划 2)分析,3)设计,4)构建,5)测试周期,6)最后测试和实施,1) 计划:产品定义阶段2).分析:外部文档阶段3).设计:文档架构阶段4).构建:单元测试阶段5).测试周期:错误修正,重复系统测试阶段6).最后的测试和实施:代码冻结阶段
4.什么是 Web 容器?
解答:容器就是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如 JAVA 中的 Tomcat 容器,ASP 的 IIS 或 PWS 都是这样的容器。
5.运行时异常与一般异常有何异同?
解答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
9.试述数据库完整保护的主要任务和措施。
解答:数据库的完整性保护也就是数据库中数据正确性的维护。数据库完整性包括三个内容:实体完整性规则,参照物完整性规则以及用户定义完整性规则。前两个是有 DBMS 自动处理。实体完整性规则是说针对于基表中的关键字中属性值不能为空值,是数据库完整性的基本要求,主关键字和元组的唯一性对应。参照物完整性规则是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联基表中必存在元组。用户定义完整性规则针对具体的数据环境由用户具体设置的规则,它反应了具体应用中的语义要求。一个完整性规则一般由下面三部分组成:完整性约束条件设置,完整性约束条件的检查以及完整性约束条件的处理.后两部分在数据库中一般有相应的模块处理。另外触发器也可以做完整性的保护,但触发器大量用于主动性领域。
12.类有哪三个基本特性?各特性的优点?
解答:类具有封装性、继承性和多态性。
封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。
继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部可继承的成员。
多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。
13.谈谈对 XML 的理解?说明 Web 应用中 Web.xml 文件的作用?
解答:XML(Extensible Markup Language)即可扩展标记语言,它与 HTML 一样,都是 SGML(Standard GeneralizedMarkup Language,标准通用标记语言)。Xml 是 Internet 环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML 是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然 XML 占用的空间比二进制数据要占用更多的空间,但 XML 极其简单易于掌握和使用。web.xml的作用是配置欢迎页,servlet,filter,listener 等的。
14.jsp 有哪些内置对象?作用分别是什么?(至少三个)
解答:1)request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header 和 session 数据的有用的方法。
2)response 表示 HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)。
3)out 对象是javax.jsp.JspWriter 的一个实例, 并提供了几个方法使你能用于向浏览器回送输出结果。
4)pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的servlet 相关功能的方法。
5)session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息。
6)application 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和servlet 环境的信息。
7)config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参数。
8)page 表示从该页面产生的一个servlet 实例。
9)exception 针对错误网页,未捕捉的例外
15.事务是什么?有哪些属性,并简要说明这些属性的`含义。
解答:事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如 SQL,C++或 Java)书写的用户程序的执行所引起,并用形如 begin transaction 和 end transaction 语句(或函数调用)来界定。事务由事务开始(begintransaction)和事务结束(end transaction)之间执行的全体操作组成。事务应该具有 4 个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为 ACID 特性。
(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
19、HashMap 和 Hashtable 的区别?
解答:HashMap 是 Hashtable 的轻量级实现(非线程安全的实现) ,他们都实现了 Map 接口,主要区别在于HashMap 允许空(null)键值(key),由于非线程安全,效率上高于 Hashtable。HashMap 允许将 null 作为一个 entry 的 key 或者 value, Hashtable 不允许HashMap 把 Hashtable 的 contains方法去掉了,改成 containsvalue 和 containsKey。因为 contains 方法容易让人引起误解Hashtable继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。最大的不同是,Hastable 的方法是 synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable 时,不需要自己为s它的方法实现同步,而 HashMap 就必须为之提供同步。
20.请说出 ArrayList,Vector, LinkedList 的存储性能和特性
解答: ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
21.描述 J2EE 框架的多层结构,并简要说明各层的作用。
解答:
1)Presentation layer(表示层)
a.表示逻辑(生成界面代码)
b.接收请求
c.处理业务层抛出的异常
d.负责规则验证(数据格式,数据非空等)
e.流程控制
2) Service layer(服务层/业务层)
a.封装业务逻辑处理,并且对外暴露接口
b.负责事务,安全等服务
3) Persistence layer(持久层)
a.封装数据访问的逻辑,暴露接口
b.提供方便的数据访问的方案(查询语言,API,映射机制等)
4)Domain layer(域层)
a.业务对象以及业务关系的表示
b.处理简单的业务逻辑
c.域层的对象可以穿越表示层,业务层,持久层软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。
23.简要描述如何结合 struts、hibernate、spring 开发 Web 应用?
解答:Struts 可以将 jsp 页面的表单关联起来,就是把 JSP 页面的表单数据封装成 javaBean,这样的话,在 action 中你再也不需要使用传统的 request.getParameter("name");还有 struts 有一个控制器,你在 struts 编程中的控制器(XxxAction)都是继承总的 ActionServlet,它能集中处理请求,然后转到相关的页面。还有 struts 的表单验证组件,不用你写 js 验证了,只需要你配置一下文件就可以了。另外 struts 的令牌机制可以防表单重复提交。
Spring 是一个轻量级容器,非侵入性.包含依赖注入,AOP 等。它是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。
Hibernate:它可以让我们以 OO 的方式操作数据库,这让我们看到了 hibernate 的强大之处,体验到操作数据的方便。但 hibernate 最耀眼之处是 hibernate 的缓存机制,而不是以 OO 的方式操作数据库。Hibernate 的缓存机制不外乎是一级缓存 session,二级缓存 sessionFactory,和第三方缓存 如 ehcache 。 也就 是 hibernate 的 最 强大 的地 方 是 它的 缓存 , 理解了 这 个 才能 真正 的 理解hibernate,Hibernate 的命名查询/命名参数查询, 就是将 hql 语句放在一个单独的 xml 文件之中, 它仍然让人们以面向对象的方式去操纵数据,而不用在以 OO 的方式写着代码的同时,然后再转变思维,用面向关系的方式去写那些 sql 语句。但 hibernate不仅做了这些,它的native sql 查询方式,完全满足 sql 语句的偏爱者,它像 ibatis 一样,将 sql 语句放在配置文件之中
24.列出自己常用的 jdk 包
解答:JDK 常用的 package
java.lang:这个是系统的基础类,比如 String 等都是这里面的,这个 package 是唯一一个可以不用 import 就可以使用的 Package
java.io: 这里面是所有输入输出有关的类,比如文件操作等
java.net: 这里面是与网络有关的类,比如 URL,URLConnection 等。
java.util : 这个是系统辅助类,特别是集合类 Collection,List,Map 等。
java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet 等
【Java工程师笔试题】相关文章:
Java工程师面试题03-29
Java工程师面试题及答案03-14
java软件开发工程师笔试题10-26
java中级工程师面试题03-30
软通动力Java工程师笔试题08-07
某公司Java工程师面试题笔试题目04-03
java笔试题10-26
Java工程师面试常考试题及答案03-12