1 JVM
这个大公司基本都会问,内存模型,GC,jvm都有哪些区域?栈桢存了什么?
经常使用垃圾回收器哪些,特色?jvm性能调优,这些从周志明的jvm特性那本书基本都有答案,一个高级程序员必读,出去面试,至少得读两遍,理解,不是死记硬背,面试官会问的很细,你若是死记硬背,人家随便一问,你就跪。
2 线程池
这个基本必考,高级程序员不会问你启动线程哪几种方式,都是高并发场景。好比四种线程池,都在那哪几种场景使用的多。线程池的几个重要参数哪些,这些重要参数,在不一样线程池下比较。高并发下阻塞队列用哪一个,我记得是大众点评问个人,用linkblockqueue仍是arrayblockqueue,我当时候说,后者吧,队列添加任务快,基于列表,人家说错了,前者,array是连续的,回收的快,这些都是细节。剩下的就是阻塞队列拒绝策略。默认都是拒绝,有个面试官问我,假如阻塞队列满了,请求拒绝,可是这些请求是重要的,怎么办?这种状况实际开发中会遇到,每一个系统总有个峰值,达到峰值,系统可能处理不了,他说,这个时候先把全部请求落数据库,或者mq,后面处理,真实场景会遇到,可能以前你没遇到,可是面试官会问这些,以为你有没有思考的能力。线程池,tomcat默认就有线程池,会问到调优,全部系统基本离不开吧。
3 锁
这个也是必考,虽然开发中有时候不用,基本会问,syncnizched关键字,做用,类锁,对象锁,方法锁区别?
静态方法加锁,两线程会互斥吗,非静态方法,加锁,会互斥吗?这个比较简单。这个关键字,内置对象锁,jvm建立对象后,会在对象的对象头,存着。而后和lock锁区别,这个若是你去背,可能不理解,我是这么理解的,假若有个厕所,不少人想去上,假如是sync锁,全部人会不定时去敲门,厕全部人吗,很是耗性能,CPU切换,可是lock锁,至关于加了个管理员,举着个牌子,进去一我的,排着写着有人,剩下的看到,就不会去敲门了,人走了,把牌子改下,Java,是基于volitale关键字,经过aqs保证,还有sync阻塞的,好比有我的在厕所玩手机,sync只能等。释放锁,可是lock,能够中断,或其余操做。问的深的会问锁优化之类的,虽然。开发基本用不到,可是你想拿高薪,必需要会。另外,数据库的锁会问。表锁。lock的读锁,写锁,怎么用。原理。这块必须深刻理解。否则只能被虐。
4 缓存
这个基本必考,redis,问的问题挺多,es可能会问,分布式系统,redis的惟一ID能作什么?新数据来了,是先存数据库仍是redis,过时策略,何时用redis作缓存,何时用作数据库,和es,mongo,区别。这个只是个缓存,稍微看下,不会问的很深。
5 MQ
消息中间价,分布式系统基本使用,原理,哪几个组成部分,kafka和rabbitmq,区别?
如何保证消息不丢失。基于哪一种协议?他的好处?你的项目怎么使用它的。点对点,订阅发布,区别,你的理解。
6 分布式
分布式是啥。一个服务器问题形成血崩怎么办,四层负载均衡和七层区别,说下用过哪些RPC框架。dubbo基于哪些协议,服务如何注册,如何被发现?这个基本都考些,固然,也不要求你都精通,大体原理懂就好。
7 spring
bean的生命周期,spring得核心,spring的代理模式,动态代理,第三方cglib代理哪些场景使用,spring用了哪些设计模式。
spring的事务,传播行为。哪些经常使用注解?
8 springmvc
原理,经常使用注解。和struts区别,这个也要花点时间准备。
9 集合
这个必考,重要重要重要,说三遍。哪些经常使用集合,几种集合,区别,好比ArrayList和linklist区别,性能,这个是基础,问的最多,最多,最多,hashmap,concurrentHashmap,JDK7和JDK8concurrentHashmap区别,实现,原理,两种JDK的size() 方法怎么实现?这个最好把源码看几遍,什么初始化,扩容,底层为何要用数组加链表加红黑树,什么是红黑树,这个大部分公司必考,看你能力。
10 数据库
索引,必考,基于b+树,惟一索引,普通索引,联合索引,join是否让索引失效,联合索引的最左原则,两个字段加了联合索引,两个一块儿用,或者第一个字段,查询,都不会实现,用右边的字段,失效,等等。有的会让你手写SQL,数据库引擎,myisam和innoDB区别,基本不会问别的。
11 同步io阻塞io
nio bio aio 区别,用法,b阿里和爱奇艺都问了。
12 springmvc和struts2
13 hibernate 和 mybatis程序员
rpc相关框架了解 zookeeper选举面试