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