Java方向如何准备BAT技术面试答案(汇总版)

这个主题的内容之前分三个篇幅分享过,导致网络上传播的比较分散,所以本篇做了一个汇总,同时对部分内容及答案做了修改,欢迎朋友们吐槽、转发。因为篇幅长度和时间的原因,部分答案我没有亲自总结。本篇内容来自我的微信公众号:JavaQ,持续更新、欢迎关注。

1.面向对象和面向过程的区别面向过程

面向对象

2.Java的四个基本特性(抽象、封装、继承,多态)

3.重载和重写的区别

4.构造器Constructor是否可被override

5.访问控制符public,protected,private,以及默认的区别

6.是否可以继承String类

7.String和StringBuffer、StringBuilder的区别可变性线程安全性性能

8.hashCode和equals方法的关系

9.抽象类和接口的区别语法层次设计层次

跨域不同

抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的,仅仅是实现了接口定义的契约而已,"like-a"的关系。

10.自动装箱与拆箱

11.什么是泛型、为什么要使用以及泛型擦除

12.Java中的集合类及关系图

13.HashMap实现原理

14.HashTable实现原理

http://blog.csdn.net/chdjj/article/details/38581035

15.HashMap和HashTable区别

16.ArrayList和vector区别

17.ArrayList和LinkedList区别及使用场景

区别

ArrayList底层是用数组实现的,可以认为ArrayList是一个可改变大小的数组。随着越来越多的元素被添加到ArrayList中,其规模是动态增加的。LinkedList底层是通过双向链表实现的, LinkedList和ArrayList相比,增删的速度较快。但是查询和修改值的速度较慢。同时,LinkedList还实现了Queue接口,所以他还提供了offer(), peek(), poll()等方法。

使用场景

18.Collection和Collections的区别

19.Concurrenthashmap实现原理

20.Error、Exception区别

21.Unchecked Exception和Checked Exception,各列举几个Unchecked Exception:

Checked Exception:

22.Java中如何实现代理机制(JDK、CGLIB)

23.多线程的实现方式

24.线程的状态转换

0?wx_fmt=jpeg

25.如何停止一个线程

参考文章:

26.什么是线程安全

27.如何保证线程安全

28.synchronized如何使用

29.synchronized和Lock的区别

30.多线程如何进行信息交互

31.sleep和wait的区别(考察的方向是是否会释放锁)

32.多线程与死锁

33.如何才能产生死锁

34.死锁的预防

35.什么叫守护线程,用什么方法实现守护线程

36.Java线程池技术及原理

37.java并发包concurrent及常用的类

38.volatile关键字

0?wx_fmt=jpeg

read and load 从主存复制变量到当前工作内存

39.Java中的NIO,BIO,AIO分别是什么

BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

40.IO和NIO区别

41.序列化与反序列化

42.常见的序列化协议有哪些

43.内存溢出和内存泄漏的区别

44.Java内存模型及各个区域的OOM,如何重现OOM

45.出现OOM如何解决

46.用什么工具可以查出内存泄漏

47.Java内存管理及回收算法

48.Java类加载器及如何加载类(双亲委派)

https://www.ibm.com/developerworks/cn/java/j-lo-classloader/(推荐)

49.xml解析方式区别:

50.Statement和PreparedStatement之间的区别

代码片段1:代码片段2:

51.servlet生命周期及各个方法

参考文章http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html

52.servlet中如何自定义filter

参考文章http://www.cnblogs.com/javawebsoa/archive/2013/07/31/3228858.html

53.JSP原理

参考文章http://blog.csdn.net/hanxuemin12345/article/details/23831645

54.JSP和Servlet的区别

(1)JSP经编译后就变成了“类servlet”。

(2)JSP由HTML代码和JSP标签构成,更擅长页面显示;Servlet更擅长流程控制。

(3)JSP中嵌入JAVA代码,而Servlet中嵌入HTML代码。

55.JSP的动态include和静态include

(1)动态include用jsp:include动作实现,如<jsp:include page="abc.jsp" flush="true" />,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。会先解析所要包含的页面,解析后和主页面合并一起显示,即先编译后包含。

(2)静态include用include伪码实现,不会检查所含文件的变化,适用于包含静态页面,如<%@ include file="qq.htm" %>,不会提前解析所要包含的页面,先把要显示的页面包含进来,然后统一编译,即先包含后编译。

56.Struts中请求处理过程

参考文章http://www.cnblogs.com/liuling/p/2013-8-10-01.html

57.MVC概念

参考文章http://www.cnblogs.com/scwyh/articles/1436802.html

58.Spring mvc与Struts区别

参考文章:

http://blog.csdn.net/tch918/article/details/38305395

http://blog.csdn.net/chenleixing/article/details/44570681

59.Hibernate/Ibatis两者的区别

参考文章http://blog.csdn.net/firejuly/article/details/8190229

60.Hibernate一级和二级缓存

参考文章http://blog.csdn.net/windrui/article/details/23165845

因为公众号文章字数有限制,所以61~115内容请点击左下角阅读原文查看。

0?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值