「时光不负,创作不停,本文正在参加2021年终总结征文大赛」
年初的时候谈了恋爱,两个人在一起的快乐时光自不必说,而后她收到上海的大厂面试,一路很顺利走到offer于是最终提了离职,我和她约定一起在上海奋斗,她先去一段时间,我先准备一下面试,但是意外总比期望来的快,异地一段时间她就提出了分手。
当然这并不是本文的重点,我想谈谈自己一个三年经验的Java开发从二线到一线的求职的一个心路历程。
准备
想要去大厂那必然需要非常多的知识储备,以及基础的算法题数量。
Java
我把Java内容分为几块:
- Java 基础知识,如
HashMap、J.U.C包下的常见并发类如最基础的AQS - Java 底层,如
JVM,垃圾回收机制 - Java 常见的框架,像Spring 全家桶
第一块基础知识其实很多博客都有做一些总结,多看几个博客综合他们的一些内容对着源码可以从不同的角度去理解。只是知道源码这么写是远远不够的,还需要知道为什么这么写,比如HashMap为什么JDK7会有环形链表的问题,为什么要头插法,为什么JDK8要改成尾插?这些都是可以对着博客内容去思考形成自己的理解。以及相似的类对比着看,比如最常见的LinkedList和ArrayList的对比。
像并发这块的话其实很多思路不复杂,但是代码非常复杂,因为要考虑并发条件以及性能,所以在源码层面不是那么好理解,所以需要剥离出主干内容,比如AQS类,我们可以从锁的角度去看
- 抢到锁,继续执行
- 没有抢到锁,阻塞等待
- 释放锁,唤醒一个等待线程
如果我们自己去设计会想到需要哪些属性?
-
需要一个互斥量,标识是否抢到锁,比如为0则可争抢锁
-
排队队列,表示阻塞的排队线程,可以考虑用链表实现
-
线程持有者owner,记录谁持有锁,这样释放才不会错
-
如果支持公平非公平,那么需要一个参数标识当前是什么锁类型
那么这时候我们再去看源码,是不是思路就会清晰一些,同时AQS作为一个抽象类,那么我们也需要知道它抽象了什么功能,把什么功能留给子类去实现等等,知其然知其所以然。
第二块JVM,我主要还是看周志明的《深入理解Java虚拟机》以及《解密JVM虚拟机底层原理》视频(B站有这个视频)。书在今年也有陆陆续续看一些,但是其实很多看得都不是很懂,但是后面反复翻阅+去看R大在知乎的一些关于虚拟机以及垃圾回收器的回答,就渐渐有些明白。像垃圾回收器的话可能是问的最多的,现在普遍都在上G1垃圾回收器,所以为什么会产生G1垃圾回收器,和CMS比有什么差别这个也是需要去理解的。
第三块常见框架,这个我自己面下来问的不多,Spring基本没怎么问,Spring Boot启动流程、Spring Bean生命周期、AOP原理,这些都算是老八股了。
中间件
中间件话得看你用过哪些,我自己原来工作的话就MySQL、Zookeeper和Redis。
速成MySQL的话强烈建议《MySQL实战45讲》(极客时间)非常好用,看完基本就够用了。
Redis的话我就看得码哥字节的总结,勉强还可以,也可以再多看一些其他博主的关于Redis内容,不要拘泥于一家之言。
ZK的话看得《2021年最新 Zookeeper 3.5.7 全面升级 一套搞定》(B站有视频)建议直接看他的文档,大量的知识就在文档里写着。
MQ这块其实也准备了一些,但是因为没用过所以基本没人问这个,主要准备一些高频的问题,像如何保证不丢消息、保证幂等,这些网上其实都有相应的答案可以背。
算法
有时间的话强烈建议刷完《剑指offer》的所有题目,面试频率很高,自己遇到的基本上都是这里面出的,没啥时间想速成,请用codetop.cc/home ,我大概刷了七八十题吧,除了字节基本上都能中,也可能是运气好哈哈。
另外排序算法也要掌握,也有遇到问排序的,常见的快排、堆排、归并排序都要熟练背诵。
试炼
在完成基本的知识学习后,牛客网的面经就是一个非常好的试炼地,对着面经看看自己能不能答上来,如果能答上来百分80以上就差不多了。
面试
技术面都一般是三轮技术+1轮HR面。第一轮一般问Java基础以及中间件基础,第二轮有些也是问基础,不过大部分是一些比较灵活的问题了,可能偏向思考性,不是那种八股文朗诵级别,比如给一个场景题问你原因,就像最简单的单例模式,为什么要双重校验锁?不加双重校验会怎么样?是不是只是可能会多new一个实例,会有什么影响?这就需要你去思考,单例模式的意义,既然是单例,你变多例,这就不符合单例模式的设计意义。第二轮就是这种一直深入去问,看你是否有带入自己的思考。第三轮一般都是大leader面有的偏技术,也是问一些场景题,有的可能就是问项目看你的设计能力,是否在项目中有自己的思考。HR面的相对会简单一些,基本上问一些像为什么离职,为什么换城市,对岗位有什么期待,还有自己在原来公司的表现情况,一般问题不是太大。
在差不多两个月面了30场,面了10家公司,拿了几个大厂的offer,在等面试结果以及等下一场面试都是非常焦虑的状态,好想快点快进到offer。 一般来说面完一会就给结果就是对你的面试比较满意,如果是第二天或者过了几天才通知大多是在进行候选人PK了。 自己经历的每一场面试,遇到的面试官都挺好的,没有大家在网上各种吐槽什么不尊重候选人,面试很快就结束的情况,反倒是我自己感觉在面试初期表现感觉不是那么好,甚至在白板写代码都有点不太熟练,慢慢面得多了就熟练了。
所以给大家的建议就是在投心仪的厂子之前先找其他的练练手,感受一下氛围以及找到那种感觉,后面真的面心仪公司的时候也会比较从容应对。
谈薪
因为是二线到一线,所以有一些offer在谈薪环节谈崩了,认为我要的涨幅过大,内部没法审批下来。有几家面试官对我印象还不错,但是还是很遗憾没有共事的机会。所以二线想到一线谈薪压力还是很大的,建议多面几个argue一下会好点。
结果
加入了PDD。脉脉上一片谩骂声,但是我还是来了,到底是真是假还是要自己来亲身体会。
对自己的希望
- 努力赚钱
- 多出门走走
- 多看书
- 有空多练练字
结语
希望大家都能找到好工作,找到美好的另一半,在新的一年心想事成!
我的13 pro max到了我得去开箱了,就先到这了,后面有空再整理整理自己的一些面试经验以及复习的材料~