一个四五年的Java开发程序员,该准备哪些去面试?
2017-06-24 13:29
561 查看
上周面试了一周,感触颇深,总结一下。
面试了公司大概有阿里,携程,爱奇艺,唯品会,途牛,bilibili,大众点评,阿里和爱奇艺是电话面试,其他现场面试。
首先,五年左右,应该算高级开发工程师,大部分面试不用去做题,背string和stringbuilder区别的,几乎都是底层和远离,分布式等。虽然一个程序员,在工作中大部分还是写流水代码,增删查改。
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 其他
其他问的不多,上面基本全了,性能优化。系统稳定性。问之前的项目。总结
大部分问的,开发用不到,但是想拿高薪。还是准备下基础,因为公司会把这个面试情况衡量你是否是一个人才。另外,偶尔还会有笔试,去bilibili,途牛,笔试题,写算法,哎,坑爹的,总之一句话,多准备,多面试。另外遇到面试官问的,你不会,要问他答案。不然下一个面试官问到你还是不会。相关文章推荐
- 一个合格的程序员应该读过哪些书(偏java)
- JAVA程序员面试32问,你能回答多少题?-Java基础-Java-编程开发
- 学院有意找你开发一个“毕业论文选题管理”的软件,在正式承接本项目的开发任务之前,你认为需要做哪些前期准备工作。
- 一个java程序员自学IOS开发之路(三)
- 做为一个Java程序员,你需要哪些傍身的技能?
- 一个中专生的程序员之路-Java基础-Java-编程开发
- 从零开始--系统深入学习android(理论-开发前准备-10.一个好的应用应该具备哪些方面-10.1易于访问)保留
- 变态级JAVA程序员面试32问(附答案) - 仅供面试Java开发的朋友参考 :)
- 一个合格的程序员应该读过哪些书(偏java)
- 一个java程序员自学IOS开发之路(二)
- RoR介绍:一个Java程序员的开发体验
- 程序员修炼之路(四)走近腾讯 走进腾讯(一个关于面试准备的记录)
- FAQ11:成为一个VC++程序员(已经决定放弃Java了,没有那么多精力),我需要学会哪些东西?
- 投奔怒海——一个Domino老程序员眼里的Java开发
- [转载]一个java程序员的面试
- 变态级JAVA程序员面试32问-Java基础-Java-编程开发
- 一个java程序员的面试
- 从事程序开发以来,但从未真正做过Java开发—一个Java程序员的心声
- 软件开发 测试 Java 程序员 计算机专业 互联网 电子信息 经典 面试 笔试
- 程序员修炼之路(四)走近腾讯 走进腾讯(一个关于面试准备的记录)