2018/02/08面试总结
1.写出hibernate的一对多和多对一双向关联的annotation配置。
2.java开发中会用到的第三方包。
3.如何防止前台页面重复提交。
4.java类加载器classloader总结。
5.left join 与join的区别。
6.值传递与引用传递。
7.JDK动态代理GClib动态代理(深入了解其原理)。
8.单例模式(懒加载深入了解其原理)
9.用redis设计一个分布式乐观锁的工具类。
********华丽的分界线**********************
一. 选择题,每题有一个或者多个答案
1. 下面哪个函数是 public void example(){…} 的重载函数? D
A 、 private void example( int m){…}
B 、 public int example(){…}
C 、 public void example2(){…}
D 、 public int example ( int m, float f){…}
2. 给出下面的代码段 :
public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;
z=c;
}
}
在代码说明 // assignment x=a, y=b 处写入如下哪个代码是正确的? D
A 、 Base(a,b);
B 、 x=a, y=b;
C 、 this(a),this(b);
D 、 this(a,b);
3. Java 中 main() 函数的返回值是什么 ? D
A 、 String
B 、 int
C 、 char
D 、 void
4. 如下哪个不是 Java 中有效的关键字? B
A 、 const
B 、 NULL
C 、 false
D 、 this
5. 如下哪个不是 Java 中正确的整数表示 ? D
A 、 22
B 、 0x22
C 、 022
D 、 22H
6. 下面的代码段中,执行之后 i 和 j 的值是什么 ?C
int i = 1;
int j;
j = i++;
A 、 1, 1
B 、 1, 2
C 、 2, 1
D 、 2, 2
7. 下面句话是正确的 ? A
A >> 是算术右移操作符 .
B << 是算术右移操作符 .
C >>> 是算术右移操作符
D <<< 是算术右移操作符
8. 下面哪个赋值语句不是合法的? A
A 、 float a = 2.0
B 、 double b = 2.0
C 、 int c = 2
D 、 long d = 2
9. 下面哪个是 main() 函数的合法参数 ? C
A 、 char args[]
B 、 char args[][]
C 、 String arg[]
D 、 String args
- 指出下列程序运行的结果( ) D
public class Example{
String str=new String(″good″);
char[]ch={′a′,′b′,′c′};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex,ch);
System.out.print(ex.str+″and″);
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str=″test ok″;
ch[0]=′g′;
}
}
A.good and abc B.good and gbc
C.test ok and abc D.test ok and gbc 下面哪条语句定义了5个元素的数组( )A
A、int [] a={22,23,24,25,12};
B、int a []=new int(5);
C、int [5] array;
D、int [] arr;已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的? C
A 、 args[0] = “MyTest a b c”
B 、 args[0] = “MyTest”
C 、 args[0] = “a”
D 、 args[1]= ‘c’对于catch子句的排列,下列哪种是正确的( ) B
A.父类在先,子类在后
B.子类在先,父类在后
C.有继承关系的异常不能在同一个try程序段内
D.如何排列都可以构造方法何时被调用( ) B
A.类定义时 B.创建对象时
C.调用对象方法时 D.使用对象的变量时下面的表达式中正确的是() A
A.String s=″你好″;int i=3;s+=i;
B.String s=″你好″;int i=3;if(i==s){s+=i}; //整形和字符串类型比较Java的比较机制中无法识在if(i==s)处会出错。
C.String s=″你好″;int i=3;s=i+s;
D.String s=″你好″;int i=3;s=i+;已知如下代码:
public class Test
{
long a[] = new long[10];
public static void main ( String arg[] ) {
System.out.println ( a[6] ); //成员变量要通过对象.访问
}
}
请问哪个情况是正确的? C
A 、 输出为 null.
B 、 输出为 0.
C 、 编译时出错
D 、 运行时出错下列语句片段
int a=10,b=4,c=20,d=6;
System.out.println(a++b+c–d);
的结果为( C)
A.144 B.28
C.140 D.不能执行下列语句片段:
int a=-67,b=116,c=78;
int d=~a|b&c;
System.out.println(d)的结果为(A)
A.70 B.67
C.78 D.56以下哪个方法用于定义线程的执行体? C
A 、 start()
B 、 init()
C 、 run()
D 、 main()
E 、 synchronized()如果类中的成员变量可以被同一包访问,则使用如下哪个约束符 ? D
A 、 private
B 、 public
C 、 protected
D 、 缺省
E 、 final- 在如下源代码文件 Test.java 中 , 哪个是正确的类定义?
A 、 public class test {
public int x = 0;
public test(int x)
{
this.x = x;
}
}
B 、 public class Test{
public int x=0;
public Test(int x) {
this.x = x;
}
}
C 、 public class Test extends T1, T2 {
public int x = 0;
public Test (int x) {
this.x = x;
}
}
D、 protected class Test extends T2{
public int x=0;
public Test(int x){
this.x=x;
}
} - 给出一段程序,试判断哪个是正确的结果( )
public class rtExcept{
public static void throwit(){
System.out.print(“throwit”);
throw new RuntimeException(); }
public static void main(String [] aa){
try{
System.out.print(“hello “);
throwit(); }
catch(Exception re){
System.out.print(“caught ”); }
finally{
System.out.print(“finally ”); }
System.out.print(“after ”);
}
}
A、hello throwit caught
B、hello throwit caught finally after
C、hello throwit RuntimeException after
D、hello throwit caught finally after RuntimeException - 下列哪个方法可用于创建一个可运行的类( )
A.public class X implements Runable{ public void run(){……} }
B.public class X implements Thread{ public void run(){……} }
C.public class X implements Thread{ public int run(){……} }
D.public class X implements Runable{ protected void run(){……} } - 以下哪条语句会产生运行错误:( )
A.var obj = ( );
B.var obj = [ ];
C.var obj = { };
D.var obj = / /; - 以下哪个单词不属于javascript保留字:()
A. with
B. parent
C. class
D. void - 请选择结果为真的表达式:( )
A. null instanceof Object
B. null === undefined
C. null == undefined
D. NaN == NaN - 请选择对javascript理解有误的:( )
A. JScript是javascript的简称
B. javascript是网景公司开发的一种Java脚本语言,其目的是为了简化Java的开发难度
C. FireFox和IE存在大量兼容性问题的主要原因在于他们对javascript的支持不同上
D. AJAX技术一定要使用javascript技术 - 以下哪些是javascript的全局函数:( )
A. escape
B. parseFloat
C. eval
D. setTimeout
E. alert - 关于表格表述正确的有:( )
A. 表格中可以包含TBODY元素
B. 表格中可以包含CAPTION元素
C. 表格中可以包含多个TBODY元素
D. 表格中可以包含COLGROUP元素
E. 表格中可以包含COL元素 - 关于IE的window对象表述正确的有:( )
A. window.opener属性本身就是指向window对象
B. window.reload()方法可以用来刷新当前页面
C. window.location=”a.html”和window.location.href=”a.html”的作用都是把当前页面替换成a.html页面
D. 定义了全局变量g;可以用window.g的方式来存取该变量 - 每个Servlet都必须实现()接口
A. javax.servlet.Servlet;
B. javax.servlet.HttpServlet;
C. javax.servlet.GenericServlet;
D. javax.servlet.http.Servlet; - 下面是一JSP页面的代码,请问输出结果是()
<%! int i =1; %>
<% i++; %>
A 什么也不输出。
B 弹出内容为“Is 1”的对话框。
C 弹出内容为“Is 2”的对话框。
D 当第一次访问这个程序时,弹出一个内容为”Is other”的对话框,从第二次开始,每次访问这个程序都弹出内容为“Is 2”的对话框。
E 当第一次访问这个程序时,弹出一个内容为”Is 1”的对话框,从第二次开始,每次访问这个程序都弹出内容为“Is 2”的对话框。
33. 下面是一JSP页面的片断代码,请问页面输出结果是().
<%
StringBuffer buffer =new StringBuffer (”Hello”);
buffer.append(“World”);
System.out.println(buffer.toString());
%>
A Hello
B World
C HelloWorld
D 什么也不输出
34. aa.jsp文件如下:
<%! static int I=0; int j=0; %>
<% for(;I++<2;)
{ out.print(j++); out.print(” “);}
%>
两个客户依次使用浏览器浏览aa.jsp,且每个客户只浏览一次,那么,第2个客户的浏览器将显示什么?
A 0 1
B 1 2
C 3 4
D 5 6
E 什么也没有
35. 关于Servlet Filter,下列说法正确的有()。
A Filter 其实就是一个Servlet
B Filter 可以产生response
C Filter可以在servlet被调用之前截获request
D Filter可以用来处理统一认证,过滤不雅字句等。
36. Jsp在转译阶段生成文件的扩展名是 ( )
A. class B. java
C. exe D. bin
37. 哪个不是作用域通信对象: ( )
A. session B. application
C. pageContext D. request
38. 下面说法错误的是 ( )
A. Http协议是无状态的协议
B. 会话跟踪技术有:用户授权,隐藏表单域,URL重写,Cookie等
C. 使用request.getSession(false)可以新建会话
D. 使用request.addCookie()可以添加Cookie到客户端
39. 给定某servlet程序的片段,如下: public void doGet(HttpServletRequest
request,HttpServletResponse response){?}可以在?处插入的正确的页面重定向请求是 ( )
A. request.sendRedirect(“/myjsp.jsp”)
B. response.sendRedirect(“/myjsp.jsp”)
C. request.sendRedirect(“www.google.com”)
D. response.sendRedirect(“www.google.com”)
40. 你为公司开发了一个逻辑模型:公司有10个部门,每个部门有6-7个员工,但每个员工可能会不止一个部门工作。下面所给的模型正确的是()
A部门和员工之间是一种确定的一对多的关系
B 建立一个关联表,从该关联表到员工建立一个一对多的关系,然后再从该关
联表到部门表建立一个一对多的关系
C 建立一个关联表,从员工表到该关联表建立一个一对多的关系,然后再从部
门表到该关联表建立一个一对多的关系
D 这种情况不能建立正常的数据库模型
二. 概念题
1. 写clone()方法时,通常都有一行代码,是什么?
2. List、Map、Set三个接口,存取元素时,各有什么特点?
3. Collection 和 Collections的区别
4. 事务是什么?
三.主观题
1. 常用的设计模式有哪些,开发中都用到了那些设计模式?用在什么场合?
答案
1 D 2 D 3 D 4 B 5 D
6 C 7 A 8 A 9 C 10 D
11 A 12 C 13 B 14 B 15 AC
16 C 17 C 18 A 19 C 20 D
21 B 22 B 23 A 24 A 25 B
26 C 27 ABCD 28 ABC 29 ABCDE 30 ACD
31 A 32 A 33 D 34 E 35 CD
36 A 37 C 38 C 39 B 40 B
概念题(每题4分)
1 Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。
2 List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。
3 Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索排序线程安全化等操作
4 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务