超硬核Java工程师秋招回忆录+面经汇总,为了拿BAT的研发offer我都做了那些准备? (5)

我则按照《深入理解JVM虚拟机》这本书的行文脉络进行文章的整理。在搞定JVM基本原理以后,我着重了解了JVM调优和实践中常遇到的问题,并且整理了常用的JVM调优工具,场景问题以及调优实践的案例,这也是因为面试中对JVM调优实践越来越重视了。

在JavaWeb方面

我从JavaWeb相关技术的发展入手,一步步了解了每种技术存在的意义,比如JSP,Servlet,JDBC,Spring等等,然后对每种技术进行了比较全面的了解,并且着重地看了Spring和SpringMVC的源码分析文章,另外一方面,我花了很多时间去研究Tomcat的工作原理。除此之外,JavaWeb项目中常用的maven,日志组件,甚至是单测试组件,也纳入了我的系列文章里。

在数据库和缓存方面

我主要学习了MySQL和Redis这两种最常用的数据库。对于Mysql,我从简单的sql开始了解,然后开始了解sql优化,MySQL的存储引擎和索引,事务及锁,还有更复杂的主从复制,分库分表等内容。对于Redis,我也是从简单的api入手,然后去了解每一种数据结构的底层实现原理,接着尝试去学习Redis的持久化方式,以及作为缓存常需要考虑的技术点,当然,也包括Redis的分布式锁实现,以及它的分布式集群方案。

最后一部分就是分布式相关的理论和技术

这个也是困扰我很久的一块内容,我主要把这块内容分为两个部分,分别是分布式理论和分布式技术,理论方面,我先了解CAP,BASE等基本知识,然后开始学习一致性协议和算法,接着探讨分布式事务。对于分布式技术,涉及的东西就更多了,例如分布式session,负载均衡,分布式锁等内容。

这些知识点我都会用一到两篇文章去总结,对于分布式缓存,消息队列,以及分布式服务等内容,我会花比较多的时间去全面学习,然后总结出一个系列的文章出来。当然,对于这些技术的学习主要还是停留在理论方面,在自己的项目中能用到的比较少。

至此,我的知识体系基本构建完成,这也是我在秋招中能够成功闯过那么多面试的原因。

秋招之路,砥砺前行

不管前期做了多少准备,到秋招的时候也不能掉以轻心,从七月底第一次面试到9月基本佛系,中间经历了大大小小的面试。

在完成知识体系重建以后,我把重点转向了另外几件事,一是完善和熟悉我的简历,以便在面试中能够比较好地发挥,二是持续刷题,保持对算法题和笔试真题的手感和熟练度,三则是看面经查缺补漏,我一直认为看面经是很重要的一项复习内容。

就这样,我一边继续复习,以便开始了一场接一场的面试接力。

起初,我面了几家小公司练手,接着阿里的提前批接踵而至,我战战兢兢地参加了阿里中间件部门的面试,面难难度还算适中,一共四轮面试,当时我的表现也还不错,问题基本都答上来了。面完不到一周以后我就收到了通过的消息,当时还有点懵。没想到第一个offer这么快就来了。

这段时间内,蚂蚁金服的两个部门也给了我面试机会,我都参加了它们的面试,并且顺利地拿到了其中一个部门的offer。由于我对蚂蚁这边的业务比较感兴趣,最终选择了蚂蚁金服的offer。

阿里提前批的胜利确实是意外之喜,但也大大地鼓舞了我,于是我又参加了百度和腾讯的提前批面试,由于百度的提前批不走流程,一共有四个部门面试了我,每个部门都有2到3轮面试,总计约为12次面试,到后来我已经快晕了,看到百度的电话就害怕,由于面试次数太多,有时候发挥确实也不是很好,我也没有特别在意,只当是在锻炼自己了。

百度的面试难度每个部门不一样,但是每次面试必写算法题,一写算法题,时间至少就是一个小时以上,每次面试完都有一种身体被掏空的感觉。

经历了百度面试的摧残以后,我手写算法的速度也变快了,很多坑也被我填上了。接下来面对腾讯的面试,我也是既激动又担心,腾讯的面试难度比较大,对于操作系统和网络的知识喜欢深挖,问的东西也很有深度,面完前三面以后,第四面拖了3周才进行。当时三面面试官对我的评价比较好,也让我信心爆棚了好久。

在等待腾讯终面的期间,我参加了今日头条的面试,当时有幸拿到了一个白金码,免去笔试,事实证明白金码作用真的很大。头条的面试难度和腾讯差不多,三轮面试,同样需要写各种算法,由于是视频面试,我可以清楚地看到,头条的面试官真的非常高冷啊。面完头条我的第一感觉就是应该挂了吧。没想到最后还是给了offer。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsywy.html