高级Java工程师面试题
选择题  各2分 共 44分
1.下列说法正确的是
A. Java语言不区分大小写
B. Java程序以类为基本单位
C. JVM为Java虚拟机JVM的英文缩写
D. 运行Java程序需要先安装JDK
答案:B,C,D
2.下列说法中错误的是
A. Java语言是编译执行的 
B. Java中使用了多进程技术 
C. Java的单行注视以//开头 
D. Java语言具有很高的安全性
答案:A,B
3.下面不属于Java语言特点的一项是
A. 安全性 
B. 分布式 
C. 移植性 
D. 编译执行
答案:D
4.下列语句中,正确的项是
A . int $ e,a,b=10;         
B. char c,d=a;      
C. float e=0.0d; 
D. double c=0.0f;
答案 ABD
5.一个int 类型的常量和一个byte类型常量做减法,结果的类型是
A. int   
B. byte 
C. char 
D. float
答案 A
6.下列程序段的输出结果是
public class Expressions{
void printExpr(){
int x=3,y=4,z=5;
System.out.println(x+y+z);
}
}
A. xyz
B. x+y+z
C. 12
D. 9
答案 C
7.下列关于for循环和while循环的说法中哪些是不正确的?
A. for循环能实现的操作,while循环也都能实现 
B. for循环判断条件一般是非程序结果
C. while循环判断条件一般是程序结果
D. 两种循环结构中都必须有循环体,循环体不能为空
答案 ABC
8.以下程序段执行后的K值为
  int x=10; y=34;
  k=(x<y)?y:x;
A. 10 
B. 34
C. 10 
D. 44
答案 B
9.下列不属于Java语言流程控制结构是
A.分支语句  java源代码加密
B.条转语句 
C.循环语句   
D.赋值语句
E.答案D
10.设定义语句:int a[ ]={43,44,45};则下面对此语句的叙述正确的是
A.定义一个名为a的一维数组
B.a数组有3个元素
C.a数组的元素的下标为1~3               
D.数组中的每一个元素都是整型
E.答案ABD
11.运行以下代码
public class Person{
int array[]=new int[10];
public static void main(String args[]){
System.out.println(array [1]);
}
}
正确的是
A.编译时将产生错误
B.编译时正确,运行时将产生错误
C.输出零
D.输出空
答案 A
12.执行完下面语句int[ ]x = new int[20]; 后,说法正确的是
A.x[19]为0
B.x[19]未定义
C. x[20]为0       
D.x[0]为空
答案A
13.设tmp是一个数组类成员,以下声明并初始化一个4个元素的数组选项
A.int tmp[]={1,2,3,4};
B.int tmp[]=new int[5];
C.int tmp[]=new int(5);
D.int tmp[];
答案 A
14.设定义:String s=”cake”,下面不合法的有
A.s=s. toUpperCase();   
B.char c=s[1];
C.int len=s.length;      
D.im();
答案BC
15.设 String s1=”Hello”;
String s2=”World”;
以下方法用来得到字符串“Hello World”有
A.s2+s1;
B.s1.concat(s2);
C.s1.append(s2);
ate(s2);
答案B
16.下面哪一个是Java最基本的元素
A. 接口 
B. 方法 
C. 包 
D. 对象
答案:D
17.如果Cake.java、Ball.java这两个类总共包含有8个方法,则编译后会产生多少个字节码文件
A. 12 
B. 10 
C. 2
D. 1
答案:C
18.下面关于抽象类的理解,错误的是
A. 构造方法可以声明为抽象类型 
B. 抽象方法必须被子类的方法覆盖 
C. 不允许实现抽象方法 
D. 方法声明中,static 和abstract不能同时存在
答案:A
19.编译Java程序时编译器提示不到要编译的代码,这种错误通常可能是
A. 文件名拼写错误 
B. 没有导入相应的包 
C. 文件名不是.java 
D. 源文件不在Java搜索路径中
答案:A,C,D
20.捕获异常应该使用下列哪个子句
A. throw 
B. catch 
C. finally 
D. throws
答案:B
21.下列哪一项不属于finally语句的工作
A. 关闭数据库 
B. 释放资源 
C. 关闭文件 
D. 分配资源
答案:D
22.下面哪些需要异常处理机制
A. 编译出错 
B. 方法、类中抛出的异常 
C. 使系统从故障中恢复 
D. 程序因不可避免的原因产生错误
答案:B,C,D
简述题  每题3分 共18分
(1)用final声明属性、方法和类时,被声明的属性、方法和类表现出哪些特性?
下面的实例正确吗?如果不正确,请说明原因?
实例:final Test t = new Test();
        t.setName(“Jack”);
答:final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
正确,因为setName是方法,可以通过方法改变类的属性。
(2)现有如下2个语句块:
1.try{
(0);
}catch(.){
}finally{
        }
请问该语句能否执行到finally语句块中?
答:不会。
2.try{
Return;
}catch(.){
}finally{
        }
请问该语句能否执行到finally语句块中?
答:会
(3)两个对象使用equals方法和==有什么区别?   
答:==是”内容”(或实质),而equals是表象。
  ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。
(4)Session与Cookie的区别是什么?
  答:Session存储在服务器端,cookie存储在客户端
(5)Filter和Listener的作用和区别是什么?
答:(listener):
        用于监听事件的发生,与swing中的类似。可以监听客户端的请求、服务端的操作等。通过,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1。编写需要实现相应的接口,编写完成后在l文件中配置一下,就可以起作用了,可以在不修改现有系统基础上,增加web应用程序生命周期事件的跟踪。
Listener接口                                      Event类
ServletContextListener                      ServletContextEvent
ServletContextAttributeListener        ServletContextAttributeEvent
HttpSessionListener                          HttpSessionEvent
HttpSessionActivationListener            HttpSessionEvent
HttpSessionAttributeListener            HttpSessionBindingEvent
HttpSessionBindingListener                HttpSessionBindingEvent
ServletRequestListener                      ServletRequestEvent
ServletRequestAttributeListener        ServletRequestAttributeEvent
用于对服务器请求的过滤,它与最大的不同是:只能够监听请求而无法改变原来的请求、而过滤器可以改变任何请求。所有的过滤器都实现了filter接口中的doFilter方法来实现对请求的过滤,doFilter方法又使用了FilterChain这个传入的值实现过滤链,来进行层层的过滤。过滤器也同样需要对l进行设置。Servlet过滤器的适用场合:
A.认证过滤
B.登录和审核过滤
C.图像转换过滤
D.数据压缩过滤
E.加密过滤
F.令牌过滤
G.资源访问触发事件过滤
H. 其他
(6)forward 和redirect的区别
答:使用forward的时候浏览器不知道它所请求的具体资源来源,所以地址栏不会变;
使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。forward,转发页面和转发到的页面可以共享request里面的数据.
redirect,不能共享数据.
框架部分  每题5分 共30分
(1)说出解析XML和读取Excel常用的框架有哪些?
答:XML>JDOM,dom4j
Excel>POI

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。