Java程序员面试实战
出于一些原因近期做了一次工作变动,在职交接近一个半月时间大概面试了十五家公司,并且得到了自己比较满意的offer,最后基本上无缝衔接了新工作。总体来说,虽然准备的很充分,但面试期间还是暴露了许多问题,所以做下总结,供大家和自己以后参考,主要分四部分讲述:
简历方面,格式内容包括七个板块,个人简介,求职意向,工作经历,项目经历,技能描述,学历背景,自我评价。如果自己或公司没有其他特殊要求,这些一般就够了,具体格式不再赘述。总结几个要素:
1.个人简介名字大写,内容需要详实,一是可以给人留下映像,二是减少不必要的与面试官交换个人信息的时间。准备一份好的口头自我介绍是很有必要的,毕竟准备一次能用很久,时间花在上面很实用,面外企英文版的最好也提前准备下。
2.简历上不要写上期望薪资,能够根据面试情况变化是最好的,如果写上建议高于自身期望,详细参考锚定效应。
3.简历要简洁,最好不要超过两页。项目经历要突出重点(可以具体到某次解决线上问题,某次优化效率提升),两到三个为宜,不重要的可以放在工作经历中一笔带过。这样有个好处,即面试官根据项目问的问题就会很集中,在你的预料之中,如果你的项目夸夸其谈写了很多,那面试官发挥起来,你就容易被带着走。
4.很多人不重视个人评价栏目,我的技巧是评价最后中带上自己的博客,个人项目,因为在尾部还是很容易被看到并当做加分项的。
面试流程,其实每个公司大同小异,电话面试,笔试,技术面(可能两面),Hr面,部门经理面,可能不同公司有稍微做调整。这里需要强调两点:
1.电话面试,很多大公司都会有电话面试,有些朋友接到面试不管当前情况如何,环境如何都会争取这个机会,而我想说的是,如果身边环境尚可接了也就接了,但是如果身处闹市,或者下班回家地铁上信号不好,或者自己完全没有准备,建议直接回复面试官目前不合适,改约其他时间,这么做好处一是没有环境影响,二是自己有心理准备。
2.抓住机会问问题,如果对技术有追求一定要向技术官问清楚项目所使用技术,问开发人员上下班时间。向HR问清楚公司的薪酬福利体系,决定自己开价。向管理层问清楚项目目前所处的阶段,以及规划方向。
面试题概览,基本上汇总了这次面试中遇到的所有问题,中间也有一些是自己当时没有答上来的,这里只做罗列:
1.简述下ArrayList和LinkedList的底层实现,其性能优劣在哪里?
2.简述下HashMap的底层实现,对比下HashMap和HashTable的异同,源码上分析这些异同?
3.ConcurrentHashMap效率为什么比HashTable高?
4.常用的锁有哪几种?ReentrantLock可重入锁是怎么实现的?简述下死锁的造成与解决/避免。
5.比较下Synchronize和ReentrantLock。
6.Volatile关键字能否保证并发安全。
7.考察常用的设计模式(集中考察工厂,单例,观察者,策略模式)
8.考察常用的类库,工具类。
9.线程池有几种类型?线程池的构造参有哪几个?数线程池的意义和原理是什么?
10.考察JVM,垃圾回收机制(GC和Full GC区别),类加载机制。
11.考察JVM常用命令,CPU飙升怎么办,内存异常增高怎么办?
12.数据库的锁有哪几种?
13.数据库事务的传播机制。
14.数据库事物的隔离级别,以及分别解决什么问题?
15.简述下Spring中Bean的生命周期,Spring是如何解决循环依赖的?AOP相关考察。
16.MyBatis相关考察
17.为什么使用Redis,为什么Redis很快?
18.为什么使用消息队列,消息队列可以解决什么问题?
19.考察微服务框架
20.降级和熔断的区别,分别在什么情况下使用?
以下是一些开放性问题:
22.设计一张表来装树形结构(多叉树),要求能根据父节点很快找到他的子节点。(考察NoSql)
23.两个整型数组中求唯一一个不同的整数。(考察溢出和异或操作)
24.快速求证一个数是不是2的N次方。(考察缓存和位移操作)
25.一亿整型数中求前一百大的整数。(考察内存分析和分而治之)
26.秒杀系统的设计。(百度上很多分析)
以上是一部分面试题,以下最新总结的BAT面试题及答案及更多关于Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料(视频),有需要的朋友可以找我免费领取!
领取方式可以加群:810589193,点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=5deQUBl免费领取答案!!!
其他,主要是一些面试后的个人看法和玄学了:
1.很多在职的同学觉得请假面试麻烦,其实现在很多公司都有安排晚上面试和周末面试专场的,提前沟通好就行了,请假的话一天面试三家应该不是问题。
2.投递公司的顺序建议,首先是一两家公司预热一下,然后比较心仪的很有把握的公司,然后才是非常心仪的公司,最后是选择 性的面试。安排这个顺序主要是,虽然可能你业务很厉害,但是进入面试状态时需要一个过程的,面试预热很有必要,这里顺便强调下面试提前准备,比如看下面试题,复习下技术书籍都很有必要的。提前选择比较心仪的很有把握的公司,主要是为了拿到offer,一是做自我价值验证,二是心中有底气。
3.调整好心态,其实有些offer是带有运气成分的,毕竟对于有些体量公司来说,面试常有,编制不常有,所以拿不到offer也不要气馁。
最后,祝所有大家在面试中过关斩将,拿到心仪offer。
在这里我为java的同道者准备了架构相关视频资料,有需要的可以加群:810589193,点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=5deQUBl里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!