1、Java工程师 笔 试题 一 、 填空题 (本大题 10 小题 ,每 空 1分,共 20 分 )。 1.Java语言的三大特性即是 : 继承 、 封装 、 多态 。 2.在 Java中, char 型采用 _unicode_编码方案 ,这样,无论是中文字符还是英文字符 ,都是占用 _2_个字节的内存空间 。 3. 形式参数指的是方法被 _定义 _ 时的参数行,实际参数是方法被 _调用 _ 时所传递进去的变量或值。 4.JSP内置对象中, application 对象是 代表应用程 序上下文,它允许JSP页面与包括在同一应用程序中的任何 Web组件共享信息 ,而 session 对象则是每个客户
2、专用的。 5.如果想把一个对象写入一个流,那么这个类就必须实现 Seralizable 接口 。 6.程序中实现多线程的方法有两种 :继承 Thread类和实现 _Runable _ 接口 。 7.多线程中, 可以通过调用相应的 setPriority() 方法来修改一个线程的相对 优先级。 8.面向对象 编程 的五大 设计 原则 ,分别是 单一 职责 、 开放封闭 、 里氏替换 、 依赖倒置 、 接口分离 9.通过 Ajax,客户端获取的数据主要有两种类型:文本型和 xml 10. Socket通常也称为 套接字 ,用于描述 _ ip 和 _ _接口 二 、 选择 题 (本大题 20 小题,
3、每小题 2分 .共 40分 )。 1.在 JAVA中,如果父类中某些方法不包含任何逻辑,并且需要由子类重写 .应该使用 ( )关键字来声明父类的这些方法 : A) final B) static C) abstract D) void 2.在 JAVA中,已定义两个接口 B和 C,要定义一个实现这两个接口的类,以下语句正确的 是 ( ) 。 A) interface A extend B,C B) interface A implements B,C C) class A implements B,C D) class A implements B, implements C 3.在 JAVA
4、接口中可以定义 ( )。 A) 静态方法 B) 常量 C) 构造方法 D) 抽象方法 4.假设 A有构造方法 A (int a),则在类 A的其他构造方法中调用该构造方法和语句格式应为( )。 A) A(X) B) this.A(x) C) this(x) D) super(x) 5.设 x = 1 ,y = 2 , z = 3, 则表达式 y+=z-/+x 的值是 ( )。 A) 3 B) 3.5 C) 4 D) 5 6 下列关 于 继承的说法哪个正确 ?( )。 A)子类只继承父类 public方法和属性 : B)子类继承父类的非私有属性和方法 : C)子类继承父类的方法 , 而不继承父类
5、的属性 : D) 子类将继承的所有的属性和方法 . 7.在 java中 .在使用 JDBC 时。对于多次调用同一条 SQL语句的情况 , 使用 ( )通常会提高效。 A) Statement B) CallableStatement C) PreparedStatement D) PrarmeterStatement 8.下列不能控制一个 Servlet的 生命周期方 的 法是: A) service B) destroy C) doPost D) init 9.能够给一个 byte型变量赋值的范围是 ( )。 A) 0 65535 B) (-128) 127 C)( -32, 768) 32
6、, 767 D) (-256) 255 10.java语言中 int类型数据占用多少位 ?( )。 A) 32 B) 64 C) 16 D) 20 11. ServletContext对象是如何创建的 ?( )。 A) 由 Servlet容器创建,对于每个 HTTP请求 .Servlet容器都会创建 一个ServletContext对象 B)由 JavaWeb 应用本身为自己创建一个 ServletContext对象 C)由 Servlet容器创建 , 对于每个 JaveWeb应用,在启动时, Servlet容器都会创建一个 ServletContext对象 12.在 JSP中不能在不同用户之
7、间共享数据的方法是 ( )。 A) 通过 cookie B) 利用文件系统 C) 利用数据库 D) 通过 ServletContext对象 13.以 下 哪个不是 Collection的子接口 ?( )。 A) List B) Set C) Map D) SortedSet 14. 下面正确的创建 Socket 的语句是 ( )。 A) Socket a = new Soeket(80): B) Socket b = new Socket(“130. 3. 4. 5“, 80): C) ServerSocket c = new Socket(80) D) ServerSocket d = ne
8、w Socket (“130. 3. 4, 5“, 80) 15.下面的说法正确的是 ( )。 A)带有页作用域的对象在一个 web应用程序的每个 JSP中都存在 . B)指令指定与一个特定的 JSP 请求不相关的全局信息。 C)当 JSP容器遇到开始定制标 签 和结束定制标签时,分别调用 doInitBody方法和 doAfterBody方法。 D) 动作只在翻译时处理一次。 16.为了区分重载多态中同名的不同方法 ,要求 :( )。 A)参数名不同 B) 采用不同的形式参数列表 C)返回值类型不同 D) 选项 A, B, C 都对 17.下面是有关子类调用父类构造函数的描述正确的是 :(
9、)。 A)子类定义了自己的构造函数 .就不会调用父类的构造函数 B)子类必须通过 Super关键字调用父类有参数的构造函数 C)如果子类的构造没有通过 super调用父类构造函数,那么子类会 先调用子类自己的构造函数,再调用父类不含参数的 构造函数。 D)创建子类的对象时,先调用子类自己的构造函数,然后调用父 类的构造函数 18.在 Java中,负责对字节代码解释执行的是 ( )。 A) 垃圾回收器 B) 虚拟机 C) 编译器 D) 多线程机制 19.一个 java程序运行从上到下的环境次序是 ( )。 A) 操作系统、 Java程序、 jre/jvm、硬 件 B) jre/jvm、 Java
10、 程序、硬件、操作系统 C) java程序、 jre/jvm、操作系统、硬件 D) java程序、操作系统、 jre/jvm、硬件 20.对于从 Employee表中选择记录的以下代码片段,识别其遗漏的代码行。 ( ) Connection con = null: Class. forName(“sun.jdbc.odbc.JdbcOdbcDriver“): con=DriverManager.getConnection(“jdbc:odbc:ss“ , “sa“ , “); ResultSet rs=stat.executeQuery(“select * from Employee“); A
11、) Statement stat=createStatement(); B) Statement stat=con.createStatement (); C) PreparedStatement stat=con.createStatement(): D) PreparedStatement stat=createPreparedStatement(); 三 、 问答题 (本大题 6小题,共 40分 )。 1.请 说出 ArrayList , Vector , LinkedList 的存储性能和特性 。( 6分) 2.什么是单例模式 (Singleton) ? 请在下面 写出一个 单例模式
12、类 ,并支持多线程调用。 ( 6分) 3.请 描述一下 JVM加载 class文件的原理机制 ?( 6分) 4.请 谈谈对 SQL注入 的理解,请给出你知道的防止 SQL注入的方法。 ( 6分) 5.请 谈 谈 对 Hibernate的理解 ,并 简要叙述 Hibernate的 一级缓存和二级缓存 ( 8分) 。 6.请写出 你知道 的排序方法,并 使用 Java语言写出其中一种。 ( 8分) 答案 : 一、填空题 1.封装 、 继承 、 多态 2.unicode 2 3.定义 调用 4.application session 5.Seralizabe 6.runnable 7.setPrio
13、rity() 8.单一职责原则( SRP)、开放封闭原则( OCP)、里氏替换原则( LSP)、依赖倒置原则( DIP)、接口隔离原则( ISP) 9.xml 10.IP地址 接口 二、选择题 1.C 2.C 3.BD 4.C 5.A 6.B 7.C 8.C 9.B 10.A 11.C 12.A 13.C 14.C 15.D 16.B 17.B 18.B 19.C 20.B 三、简答题(参考答案) 1. ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索
14、引数据快而插入数据慢, Vector 由于使用了 synchronized 方法( 线程安全 ),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要 进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 2. 创建某类对象时,无论创建多少次该类对象只有一份在内存中 , 这就是单例模式 。支持多线程调用,考虑线程安全,只需要加锁即可。 public class Singleton private static Singleton instance = null; private Singleton() privat
15、e static synchronized void syncInit() if(instance = null) instance = new Singleton(); public static Singleton getInstance() if(instance = null) syncInit(); return instance; 3. JVM中类的装载是由 ClassLoader和它的子类来实现的 ,Java ClassLoader是一个重要的 Java运行时系统组件。它负责在运行时查找和装入类文件的类。 4.解决办法: a. 利用 Javascript,在客户端进行校验 。 b
16、.程序判断 c.使用 PreparedStatement连接数据库 。(参数化) d.利用框架 技术 5. Hibernate是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用 JDBC 的场合,既可以在 Java的客户端程序使用,也可以在 Servlet/JSP 的 Web应用中使用 。 一级缓存就是 Session级别的缓存,一个 Session做了一个查询操作,它会把这个操作的结果 放在一级缓存中,如果短时间内这个 session(一定要同一个 sessio
17、n)又做了同一个操作,那么 hibernate直接从一级缓存中拿,而不会再去连数据库,取数据; 二级缓存就是 SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个 sessionFactory 创建的某个 session执行了相同的操作, hibernate就会从二级缓存中拿结果,而不会再去连接数据库; 6.插入排序、希尔排序、冒泡排序、快速排序、直接排序、归并排序 下面以快速排序为例: 1. public class quickSort 2. 3. inta=49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34 ,15,35,25,53,51; 4. public quickSort() 5. quick(a); 6. for(int i=0;i= tmp) 14. high-; 15. 16. 17. listlow =listhigh; /比中轴小的记录移到低端 18. while (low 0) /查看数组是否为空 38. _quickSort(a2,0, a2.length - 1); 39. 40. 41.