15 个必须知道的 Java 面试问题(2年工作经验)
程序员文章站
2022-03-08 20:16:58
...
源:http://www.oschina.net/question/12_17815
评:
【Java核心】
1) What is the purpose of serialization?
2) What is the difference between JDK and JRE?
3) What is the difference between equals and ==?
4) When will you use Comparator and Comparable interfaces?
5) What is the wait/notify mechanism?
6) What is the difference between checked and unchecked exceptions?
7) What is the difference between final, finally and finalize?
【Java企业版】
8) What is the difference between web server and app server?
9) Explain the Struts1/Struts2/MVC application architecture?
10) What is the difference between forward and sendredirect?
【一般问题】
11) How does a 3 tier application differ from a 2 tier one?
12) How does the version control process works?
13) What is the difference between JAR and WAR files?
【数据库】
14) What is a Left outer join?
15) What is the difference between UNION and UNION ALL?
【Java核心】
1) What is the purpose of serialization?
为了传输,将java对象串行化以后变成01串方便传输或者保存,可以很容易的反串行变回原来的java对象。其中@tranxx的一个什么注解可以让java忽略某个属性不做串行化,比如某个巨大的字符串,有效减小串行化后的数据量。
2) What is the difference between JDK and JRE?
JDK是有开发功能的,比如javac什么的,javap什么的;JRE就是一个runtime environment,跑java字节码的
3) What is the difference between equals and ==?
==是比较引用,equals是Object类的一个方法,可以通过重写equals方法达到比较内容的目的
4) When will you use Comparator and Comparable interfaces?
比较大小有的很容易,比如说2>1, "abc">"aba", 这种可以通过自然特性比较的容易理解,但是如果比较两个对象的时候怎么比呢,比如说比较两个人,是比年龄?身高?还是体重?
所以可以通过实现Comparable来实现比较大小的功能,还是用人来说,就比较年龄,A的年龄比B大,就认为A>B
这样的好处有很多,比如说实现了Comparable的以后,就可以用Collections.sort方法来排序。
问题是并不是每次都以年龄比较的,如果下次要比较体重怎么办?那么就要写一个实现了Comparator的比较器来比较传入的两个对象的大小。所以用Collections.sort方法排序的时候传入一个List和一个Comparator
5) What is the wait/notify mechanism?
wait和notify的机制。。我没深入研究过,不过我想应该是通过共享锁的方法,比如说将某个对象设为锁(用那个synchronized关键字),某个线程占用了该锁以后,其它线程无法获得该锁就等着,知道那个占用线程释放锁,唤醒等待线程。
这个瞎掰的,按照对操作系统的的了解吹吹。。。
6) What is the difference between checked and unchecked exceptions?
我不知道什么叫checked 和unchecked exception,我只知道有check exception 和runtime exception,前者必须用try catch来处理的,后者不需要,比如数组越界之类和除以0这样的异常就是runtime exception。
7) What is the difference between final, finally and finalize?
这个太普通了,要写起来也太多了,只说一下finally的时候也可以没有catch,但是必须有try
finalize方法在对象被回收时调用,但是被调用的时候不代表一定马上就被回收,且他只会执行一次,比如说自己手动调用一次以后,等他被回收的时候也不会被执行了。
【Java企业版】
8) What is the difference between web server and app server?
web server: 就是提供一个网站的,比如apache,IIS等,处理一个http 请求,将静态网页或者图片什么的发回去
app server:可以执行程序的,比如说tomcat什么的。
这也是我瞎掰的。。。觉得自己说的不够清楚。。
9) Explain the Struts1/Struts2/MVC application architecture?
这个要写就太多了,就是模型-视图-控制三层架构,比如Struts2中,FilterAction对应着Control,Action返回的那些result对应着视图,strut2支持的视图层就多了,比如jsp,甚至是pdf等。。。模型就对应着后来的业务逻辑吧
10) What is the difference between forward and sendredirect?
sendredirect重新开一个request
【一般问题】
11) How does a 3 tier application differ from a 2 tier one?
三层模型和两层模型的区别?什么业务逻辑和展示层分离等等,有效分工,有利于后期维护等等。。。
12) How does the version control process works?
版本控制,目前有两大类吧,CVS,SVN等属于集中式的,Git属于分布式的,目前Git很火啊。
process就是check out > update > modify > check in, 如果发现冲突那么 merge > check in.
13) What is the difference between JAR and WAR files?
jar和war都是zip格式压缩,war是web项目压缩的意思,里面有WEB-INF文件夹,下面有web.xml配置文件
【数据库】
14) What is a Left outer join?
左外连接,就是将左表对应于右表中没有关联的数据也列出来,比如
表 A
a b
c d
e f
表 B
b 1
d 2
c 3
A left outer join B的结果为:
a b 1
c d 2
e f
好久没有写SQL语句了,不记得是不是这样了。。
15) What is the difference between UNION and UNION ALL?
前者去除重复记录,后者不去除
上一篇: 对Ruby VM的GC的思考
下一篇: AI建立复合路径和差集有什么区别?