我面试的是中兴软件开发岗位,由于我相对熟悉Java,所以为我安排了一个熟悉Java的面试官,感觉挺人性化的,因为有些公司的面试直接安排一位面试官根本不管你擅长什么。
以下是我记得一些面试题目,并且做了解答,如果有不对的地方还望指正:
1.ArrayList是集合,里面存放的是对象,但是却可以存放int类型的数据(int不是对象),为什么?
Java中有8中基本数据类型,int、float、double、byte、short、long、char、bool,这8中基本类型对应8中封装类,分别是:Integer、Float、Double、Byte、Short、Long、Character、Boolean。在某些情况下,Java会自动完成int>>Integer(装箱)、Integer>>int(拆箱)的转换,如下:
ArrayList list=new ArrayList<Integer>();
list.add(3);//自动装箱
int elem=list.get(0);//自动拆箱
2.HashTable和HashMap的区别?
(1)HashTable是线程同步的,而HashMap不是
(2)HashTable不允许null,而HashMap允许null值
(3)HashTable有一个contains(Object value)和containsValue(Object value)功能一样
3.线程有那几种状态?
(1)NEW:线程被new出来但是还没有调用start方法
(2)RUNNABLE :正在Java虚拟机中执行的线程处于这种状态
(3)BLOCKED:受阻塞并等待某个监视器的线程处于该状态
(4)WAITING:无限期的等待另一个线程来执行某一操作的线程处于该状态
(5)TIMED_WAITING:等待的另外一个线程的时间是指定的线程处于该状态
(6)TERMINATED:已经退出的线程处于该状态,run方法执行完处于该状态
4.线程之间如何共享数据?
使用public static修饰的变量可以在多线程中访问,但是需要自己保证线程同步。(如使用线程同步的数据结构)
5.说说JDBC连接数据库的过程?
加载驱动、获得连接、获得statement对象执行sql语句、使用ResultSet获得sql语句执行的结果。
这个不难,就不再这里写代码了。
6.说说Java的反射机制?
要让Java程序运行,就得让Java类被Java虚拟机加载,如果不被加载就无法执行。正常情况下,Java虚拟机会在程序编译期就把相关的类加载了。可是有时候在编译时期并不知道该加载哪一个类,需要等到运行时再确定,这就是Java的反射机制。
Java反射机制作用:方便我们使用面向接口编程,我们代码中使用接口来操作,而具体是哪一个实现我们把它写到配置文件中,这样一来,如果我们以后需要修改实现,只需要修改配置文件而不需要修改代码了。(Spring就是利用了反射、JDBC也是使用了反射:Class.forName())
7.forward和redirect的区别?
forward是浏览器向服务器请求jsp或servlet,如果服务器发现该url指向另外一个页面会直接把另外一个页面内容返回,这个跳转发生在服务器端,而浏览器地址栏中还是原先的地址;redirect重定向,浏览器请求某个jsp或servlet,如果发现指向另外一个url,则服务器把url返回,浏览器收到之后重新请求服务器,所以地址栏显示的是重新请求的地址。
8.tomcat中默认的编码方式?
tomcat中的默认编码方式为ISO8859-1,可以通过修改server.xml中的URLEncoding为"UTF-8"。
9.简单说说Java的垃圾回收机制?
在Java中程序员不需要考虑内存的释放,因为这一切都是有JVM的GC来管理的。GC是Java的垃圾收集器,能够自动释放在程序中不再用到的对象,能够有效地管理内存,避免了出现内存泄漏的可能。垃圾收集是一个优先级很低的线程,在内存充足时是不会被调用的。
具体的垃圾收集相关的知识还请大家翻阅资料。
10.Struts2中如果要跳转的是一个Action,应该如何配置?
只需要修改result中的type属性为redirect-action或者为chain,chain跟foreard类似,跳转之后地址栏的地址不会发生变化,而redirect-action与redirect类似,地址栏内容发生了改变。
11.web请求返回的状态码默认是什么?
200:服务器成功返回;
404:访问的页面不存在
302:重定向
503:服务器暂时不可用
500:服务器遇到内部错误
504:网管超时
以下是一些网络相关的内容:
12.OSI有那几层?TCP/IP有哪几层?TCP和UDP有什么区别?
OSI:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层;TCP/IP:应用层、传输层、网际层、数据链路层、物理层
TCP、UDP的区别:
TCP | UDP | |
是否面向连接 | 是 | 否 |
传输是否可靠 | 是 | 否 |
速度 | 慢 | 快 |
传送数据量 | 传送少量数据 | 传送大量数据 |
13.TCP是如何保证可靠传输的?
14.解释一下三次握手四次挥手,说明为什么需要三次握手?