写在前面的话:
日常工作一定要多积累经验,多思考、多学习!!!
一、想清楚要不要走
1.1 要不要走
当初我第一次准备社招,满脑子只有一个问题:我到底能行吗?人家常说,一般情况下,如果干不下去了,要么是不开心了,要么是钱少了。我这里再补充两种场景也可以作为考虑要不要走的时候点,一个是当前的公司体量如何,另一个是当前岗位的业务如何,其实从这两个点也是可以考虑的。
1.2 要去哪
例如我之前可能已经有个大厂的背景了,但是做的项目都比较简单,那我下一份工作可能更需要考虑的就是业务方向一定要够复杂,数据量更大,不然的话虽然在大厂,但是如果都只做一些简单的对内使用平台,那成长也注定是不大的。
相反,如果是我已经在各种中小公司接触过很多复杂的业务场景了,那我可能就会更关注下一份工作能否进入大厂,让大厂的背景为我背书。
当然,如果能在大厂里面又能做到核心的业务是更好的。
其实这并不是offer阶段才需要考虑的事情,因为投递阶段就要想好要投递哪些岗位了。
一般情况下,社招三年之内还是可以改变业务方向的,例如我之前是信贷行业,现在可以选择电商行业,但是一但过了五年就很难再去改变了,因为这个时候很多岗位都会招业务经验相匹配的同学了。
**因此所有的同学在三年经验的时候都要开始思考,是否以后一直都要在这个行业深耕。**如果发现自己现在的行业或者现在做的业务不是很能够支撑以后得发展一定要考试考虑换业务岗位。
1.3 不要冲动辞职
正常情况下不要冲动辞职,因为被说了或者绩效很差就要想走,因为如果一旦有了想走的念头之后,后面干的所有事情都会干不好,“反正我都要走了,随便做做吧”。
当你觉得在这干的不开心的话,一定要想清楚是要奋起直追改变困境还是确实想好了要走,参考1.2。
如果确定了想离开,可以参考以下的步骤
二、社招准备流程
一般情况下,一次面试主要会包含三块内容:
-
项目
-
技术
-
算法
因此准备流程也就是对以上三块内容进行准备
2.1 回顾项目
2.1.1想自己做过什么可以说的事情
在正式开始社招之前,一定要回顾跟复盘一下自己在这个公司做的事情!!!
-
有没有做过技术问题的跟踪解决,例如JVM参数优化、频繁FullGC排查等等
-
有没有在做过项目上的重构或者新项目从0到1的经验
-
最有挑战的事情
和晋升类似,在准备跳槽之前,也要回顾好自己在这个公司已经做了什么。
此外,和很多晋升文档中提到的类似,以上的东西重在日常的积累,准备跳槽时的思考只是将这些日常的东西给汇总精炼。
2.1.2 详细回顾自己做的事情
在想好那些东西可以说之后,这一步就是将这些事情细化,例如上一步回想了自己做过redis的优化、做过项目上的重构,在这一步就要回想具体的内容,例如redis优化的整件事情做了什么,**最好是以STAR原则能够去讲清楚这件事,例如出现问题的背景、排查问题的思路、最终怎么解决问题、解决问题之后是否有沉淀(分享、规范等)。**同样的,如果负责过某块复杂内容的设计,这里需要讲清楚的就是为什么要做这件事情、做这件事情需要考虑的哪些内容、都做了哪些横向对比等等。
总结下就是上一步思考都做了哪些事情,这一步思考每个事情的详细内容,最好可以自己预先把这些事情写好背下来,然后让AI给我们优化话术。
这是为了防止有些面试官会问的特别细,如果这件事已经做了很长时间会导致忘掉了某些具体的细节。
这里其实可以稍微夸大一些自己做的事情,例如不是自己负责的,或者实际上没有做的。比如路由模块虽然不是我做的,但是我对这块非常熟悉,哪我就可以说是我做的。比如虽然我没有做过系统的高可用、高可靠、高性能,但是我可以提前想好如果是我设计的话会怎么做,然后在别人问的时候去讲实际已经做了。当然,这里的前提一定是,对这些东西一定要足够的了解,例如为什么要这么做,背景是什么,考虑是什么,最终做了什么等等。有句话说的是,“如果你能把这个东西摸清楚,那他就是你做的”。
2.2 学习技术
学习技术一般会花费较长时间,例如我前前后后花费了将近一个整年的时间才把所有的技术学了一遍。因此其实更推荐对应新入职场的同学在日常中就要开始注意技术的积累了,此外如果到跳槽之前了一定要把技术都学完之后才开始准备跳槽。
这部分只对技术同学适用,这里需要注意的是,学习技术最好不要通过背面试题的方式去学习,因为虽然背面试题能够快速让我们掌握这些知识,但是实际上有两个坏处:一是背面试题一般会比较浅,没有深入的去学习的话,面试管稍微一深入的问就回答不上来了,二是如果只背面试题的话会忘的很快,经常忘了背,背了忘。
学习方式如下:
- 因此我学习的方式以及我推荐的学习方式是,给自己制定一份学习计划,例如后端同学常用的一般是
-
JAVA
-
JVM
-
RPC
-
DB
-
Redis
等等各种中间件
-
然后对于每个中间件详细、深入、透彻的学习,最好是通过系列博客或者读书的方式,从原理、工作方式等方面详细的学习。正常情况下一个中间件可能有多个产品,例如MQ有
Kafka、RocketMQ,一般只需要选择一种产品学习即可,但是最好还可以再学习一下与同类型的中间件有什么区别。 -
在学习完之后最重要的一点是,一定要产生学习文档,自己手工的把学习的内容全部手写一遍,例如学习完了数据库,那么索引类型、事务、log、等每个模块都可以详细的把涉及到的知识点写一遍,记得写文档不是照抄复制粘贴,而是自己手打,而且写的时候最好不要参考文档,纯靠会议。这样有两个好处,一是能再回顾复习一遍,因为学习的时候有些点一知半解如果当你自己手写的时候就会再思考一遍,能够很好的总结学习的内容。二是如果后面忘了再看这个文档也就能很快的想起来自己之前学的什么。
-
最后一点,在学习完整个系列之后,可以从网上搜索相关的面试题,看看这些面试题有没有自己回答不上来的,如果有再对之前的学习补充一下,最终能达到所有的面试题都是自己学习过的内容。
2.3 算法
这块没有什么好说的,如果有能力的大牛可以日常就开始刷题积累算法能力了,但是像我这种算法弱鸡,只能在面试前一个月,去刷一些算法常用面试题目了,力扣上有专门的面试常考题目汇总。
三、社招开始流程
注意该章节的所有内容都需要认真细读!!!
社招开始流程一定是在上面的准备流程都结束之后才开始,不然准备不足很有可能挂掉。
一般主要分为一下几个阶段
-
简历
-
投递
-
面试
-
offer
3.1 简历
众所周知,简历是所有面试的第一步,网上有很多教程教我们怎么写简历,这块我就不详细说了,主要有几个我自己的心得需要注意
-
最好使用简洁、工程的模板,页数如果不是特别情况的下最好是2页及以上。
-
项目经验中主要体现我们在这边主要做的一些事情,这里就会用到我们2.1中所回顾的内容,最好用简洁易懂的话让面试官明白你这个项目是做什么的,以及你做了什么事。注意这里一定要把重点做的事情突出,例如项目设计、重构、问题解决等等,此外还可以把数据量化成数字指标等。
-
此外如果还有一些文章发表的话也可以写在上面。
-
最后写完之后可以让AI帮忙提出修改意见。
3.2 投递
3.2.1 投递方式
投递方式一般有几种
官网投递、招聘软件投递、内推(分为有效内推和无效内推)
处理效率的递进关系为
1.有效内推(朋友之类的关系就在这个部门或者有协同关系的部门)>2.招聘软件投递(Boss大于其他软件)>3.无效内推(只通过内推码投递不相关的部门)= 4.官网投递
因此投递时可以参考这种方式。
3.2.2 投递顺序
投递的公司一般分为几类
根本不会去的、不太想去的、想去的公司
因此投递的时候可以按照这个顺序去投递去积累经验
例如第一周去投一些小公司或者根本不会去的公司,这样的话可以积累一些初步的经验,例如可以查漏补缺看看哪些技术没有学习到或者遗漏的。
然后再投不太想去的,最后积累了相当多的经验之后再投自己想去的公司。
我这点就做的不太好,一开始是这么想的,但是后面有个想去的公司约了面试就开始想去不想去的公司同时开始面了,导致有一些经验一直到最后才积累到,而这个时候想去公司的面试已经没有通过了。
3.2.3 投递业务岗位
我之前做的不太好就是只要公司想去,什么业务岗位就都可以了,但是后面随着面试的积累发现自己做的项目十分简单,因此后面面试的时候就会挑一些复杂业务的岗位。
这里可以参考1.2,想好自己想去的哪些岗位。
3.3 面试
ok到这里基本上属于到了最重要的环节,毕竟前面所有的事情都是在准备,而面试这里是真正上战场考验你前面所有的努力了。而所谓的面试,其实就是通过你之前的积累去给面试官展现给你一个怎么样的人设。
一般情况下一次完整的面试会包含三个环节
-
电话预面
-
技术面
-
HR面
3.3.1 电话预面
一般情况下当收到你的简历并真正开始面试之前,HR都会打电话问一下的情况,主要包含几个内容
-
过往绩效情况
-
职级
-
薪资
-
期待薪资
-
业务方向
-
离职原因
其他内容诚实告知就可以了,切勿隐瞒,不然后面有可能会背调挂掉。
这里把离职原因加粗是因为离职原因几乎所有的面试都会问到,一定要想好,最好是一些客观因素,例如薪酬福利待遇不满意、公司人文关怀太差等等,因为面试官问这个是因为会看自己的公司是否也存在你说的这个问题,我之前就是因为又一次说的是因为当前业务规模太小不满足文档成长,后面有个面试官就给我挂了,理由是过于关注自身发展.....,**因此这个问题一定要想好最好是一些客观原因。**例如我后面就修改了话术,**修改为了觉得公司人文关怀太差以及薪资倒挂。**大家可以搜索一下常用的离职原因,可以挑两个觉得符合自己的。
最好不要说是因为跟同事/上级不和,或者一直没有晋升,因为面试官会详细问为什么会这样...
3.3.2 技术面
技术面就是真的决定我们能否通过这次面试的内容了,一般会包含一下几个环节
-
自我介绍
-
项目经历
-
技术问题
-
算法
-
反问
不同的公司顺序和流程可能不太一样,但是基本上就这几块内容。
3.3.2.1 自我介绍
自我介绍是将简历上的内容精简为2-3分钟的话术,这种需要提前准备好并且需要稍微打磨一下(AI)。
主要包含了几块内容,
-
个人信息简介(毕业院校、年龄、经验)
-
工作经历(待过几家公司、起止时间)
-
项目经历(主要做过哪些项目、在这些项目中主要的角色、在这些项目中主要做了哪些事情(挑重要的可以讲的,参考2.1.2))
将以上的内容汇总成一段话后熟练背诵,不然每次现想就会错过很多东西。
3.3.2.2 项目经历
以下的内容大部分都是一些问答环节,因此需要有一些临时反应能力,除此之外,还有几个重要的原则需要明确,无论是项目经历还是技术能力都需要注意(非常重要,后面会举例子)
-
一定要知道面试官想要问什么,然后针对他问的问题去回答,最不好的就是说了半天没有说到他想问的点子上,如果不理解他想问什么就问清楚真的想考核的点。
-
还有很重要的一个点是,**不能是他问A你只回答A,他问一个问题最好的方式是你可以讲一下你对这个问题的思考,还有一些补充拓展的点。
-
如果一个东西没做过或者不会的话,要直接明确的说没做过或者不会,不要瞎猜乱答,可以说虽然我没做过但是如果让我去设计或者我去做的话我会怎么做怎么实现。
-
当下面要讲的东西很多的时候,可以问一下面试官这个东西要不要展开说一下,这是因为有些面试官可能对这个点感兴趣,但是如果你觉得没必要说的话他就会觉得你说的不清楚,相反有些东西如果你说的太细,但是面试官不感兴趣他就会觉得你很啰嗦不耐烦(我就遇到过一开始说的太细被说太啰嗦,后面换了个面试官很多东西只说了大概又被说表达模糊)。因此最好的方式就是问一下面试官,下面这个东西内容还挺多的,要不要我展开说一下。
-
和第2点类似的是,要向面试官展现出日常一定是有思考过的东西在的,无论是项目还是技术。
-
面试回答遵从STAR原则,从背景、目标/原因、行动、总结复盘四个顺序去讲清楚一件事。
-
背景,就是为什么要做这件事,如果是主动的类似于系统优化/迭代,就要讲清楚现有系统会发生这个问题,造成哪些影响,带来哪些不便。如果是被动的问题解决,就可以讲什么事情去驱动我们做这件事情的,是告警还是其他的原因。
-
目标/原因,同样的如果是主动的要去做一些事情,那这里就是事情的目标,明确自己要做哪些事情,解决哪些问题。如果被动的问题解决,那这里就要讲清楚在出现这个现象后是怎么排查问题的,可以详细的把排查思路描述出来。
-
行动,在第二步已经明确了要做什么之后,这一步就是要具体行动了,需要描述清楚自己的行动分为了几步。如果是主动的就要讲清楚要做的这个事情需要分成几个模块,如果是被动的就要将解决这个问题分成了几步。
-
总结复盘,这一步首先需要对做的事情进行结果描述,例如上线之后通过率从63%上升到了82%,或者是说内存使用率降低了90%。其次是自己做了哪些沉淀,例如沉淀了问题排查文档、沉淀成了部门规范、沉淀了通用组件(抽象成通用组件这件事是一个非常不错的加分项,因此在日常工作中没做一件事都要想想是不是可以沉淀成一个通用的组件)
-
以下是一个问题解决的例子:例如我做这个redis优化的事情是这样的,最开始的背景是每次大促的时候,我们都会收到redis集群空间不够用触发自动扩容的告警,然后过了大促之后又需要手动的把空间回收回去(背景)。因此我们的排查redis的使用情况之后发现有两个问题,一是有很多不该存在的数据存放到里面来了,二是代码已经给这些key设置了缓存有效期,但是过了有效期之后内存的使用率并没有下降,因此我们又针对与这两个问题进行更深一步的分析xxx,最终排查到是redis的内存淘汰策略有关,因此我们找到了问题所在(目标/原因)。我们综合考虑后第一步先调整redis内存淘汰策略参数,第二步修改代码任务结束后手动删除无用的redis key,xxx(行动)。在做完以上的事情后,我们实现了一个把redis的内存使用率降低了98%的使用场景。此外,我自己还把整个事情的排查思路和心理历程做了总结并沉淀成了文档,发表在了我们内部的技术论坛和外部的博客上,还有就是借助此事我形成了一份我们部门的redis使用规范文档。(总结和复盘)
-
-
描述完一个问题后,可以进行一个简单的总结,这里的总结和STAR原则中的总结不太一样,这里的总结是说对刚刚描述的话进行一个总结,因为讲一个事情可能会将很多,这里可以把讲了哪些事情两句话带过一下进行回顾。例如对上面的例子就是,
我刚刚从发现问题的背景,到问题原因的排查,还有最终如何解决这件事情,以及最后的总结复盘,进行了详细的描述,以上就是我在整个redis内存使用率优化上所做的事情
以上是一些通用性原则,需要注意的是在回答一个问题的时候可能会综合几个原则同时使用,这样的练习就只能发生在面试中了。此外还有就是无论是问项目还是技术问题都需要注意。
除此之外,还会根据你做的事情提出一些问题,但是这种问题一般不具备普适性,记得遵循之前的原则即可。这里再次强调,需要对自己做的事情一定要熟悉,从背景、原因、问题解决、原理、收获等方面详细总结。
下面举几个例子
Q:你们这个项目上在设计上有没有一些高可用的功能?
A:(他问这个范围太大了,可以详细追问一下他想问什么,参考原则1)您是说例如一些中间件的容灾吗?
Q:是说比如对你们的上下游有没有什么监控或者制约手段,例如对上游限流对下游异常发现
A:(这里已经明白了面试官想要问什么,下面就是对这个问题进行回答)我理解您说的意思了,其实在高可用上我们主要做了两点,一点是您刚刚说的对上下游的制约措施,另一点是我们对我们的中间件的高可用上也有一些实现(参考原则2,不要只回答他的问题,尽可能做一些补充)。比如说第一点我们对会给每个上游配置一个限流措施,下游会有异常发现措施,发现异常过高之后会自动把他从可路由列表中剔除xxx,第二点我们会对每个中间件有一定的降级措施,这个需要我展开说一下吗?(参考原则4)例如redis分布式锁失败后会自动降级为数据库分布式锁xxx。最后我再稍微总结一下,我们在高可用上的实现一共有两点,第一点是xxx,第二点是xxx(参考原则6)
以下是一些项目经历中通用常问的问题,可以用作参考,面试之前试着想想自己能不能回答上来,然后再用AI去帮忙优化
你在这个项目中遇到的最大的挑战的是什么(最困难的事情、最有成就感的事情)
你在这个项目中负责什么事情
你在这个项目中有没有做高可用、高可靠、高性能的事情
你在这个项目中最大的收获是什么
你这个项目中的关键指标是什么
你这个项目还有什么待改进的地方吗?
你这个项目中做的比较好的事情是什么?
3.3.2.3 技术能力
技术能力的关键点的原则也是跟项目经历的原则一点的,这里只列举几个例子
Q:你了解Dubbo吗?
A:了解一些的,我之前有系统的学习过RPC这块内容,这里可能会稍微拓展一下,其实在学习Dubbo之前,我有个问题是为什么已经有了HTTP了,还要用RPC呢?(参考原则2原则6,注意即使是技术问题也同样使用原则6)后面学习完之后知道了,HTTP的适用场景,RPC的好处xxxx
Q:你知道Dubbo中各个超时时间的优先级吗?例如客户端、服务端都设置了超时时间,如果这两个不一致的话以哪个为准呢?
A:emmm这个还不太了解,但是我想想如果是我的话我会怎么设计(参考原则3)xxxx
3.3.2.4 反问
一般在面试官的所有问题结束之后会进入到反问环节,可以问一些自己关心的问题,例如在整个面试过程中自己还有哪些待改进的地方?或者是说在这个岗位上您作为面试官可能会更关心候选人的哪些能力?这个岗位具体是做什么的?这个部门的在整个公司体系内部是什么样的架构下?总之不要出现没有问题可问的场景。
3.3.3 HR面
一般在经历完一到两轮的技术面之后,就会进入到HR面。
在这一轮面试中,HR有可能会对你的一些项目经历进行一些询问,主要的目的是考察你的表达能力,项目思考能力,学习能力,总结能力等,因此参考之前的文档即可。
3.4 Offer
3.4.1 OC
一般如果所有的面试都通过之后就会进入到了OC阶段了,HR会询问你的意向薪资,其他offer情况,介绍自己的福利待遇等
3.4.1.1 意向薪资
这里一般看个人的意向,但是注意不要报太低了,预期可以在30%-40%的涨幅中挑一下。
3.4.1.2 其他offer情况
一般情况下,HR会问你其他offer的薪资情况,用于对比给你的薪资。这里一般只需要按照你的实际情况告知HR即可,但是为了要价也可以稍微夸大一些自己的offer情况,但是如果HR问是已经发offer了还是只在OC阶段,建议说只在OC阶段,不然的话可能会让提供offer证明。
3.4.1.3 薪资Argue
如果觉得想去的公司给的薪资一般,可以用其他offer与HR讨论下,说有一个offer薪资如何,但是对哪方面不太感兴趣,对我们公司比较认可xx。
3.4.1.4 业务方向
在技术面的时候可能会这个岗位的业务方向,但是在offer选择前也一定要再问一遍最好问的详细,具体负责哪一块业务的哪些功能,防止进去了之后发现跟面试的不一致。
3.4.2 Offer选择
如果到了这一步手里有几个offer的话,最终需要选择一个最终的offer,这里就需要从各个方面去考虑了,推荐使用Deepseek,告知每个offer的薪资、岗位、福利待遇等,然后告知自己的意向选择,让他帮忙推荐。
其实这里也可以参考自己的1.2章节的内容,从公司体量、业务岗位、薪资等方面综合考虑。
四、社招结束的流程
4.1 离职
如果是还在职的情况下选择离职,这里最好是在收到了一个预期之内的offer再提,至少是有一个保底的offer。提的时间尽量可以稍微早点,留下与领导的沟通记录。离职原因的话,如果不是有特别重大的影响,最好可以跟领导说明是一些客观原因,比如薪酬福利待遇回家等等,这是因为下一份工作会启动背调,而领导的背调是有很大的影响。
4.2 假期
离职前可以把该休的假休一下,年假的话可以换成钱也可以。
五、总结
综上来看,一次社招从开始准备到真正的离职,是一次非常大的功夫活,因此确实是需要好好准备,好好对待。
同样的,社招作为一个打工人必不可少的环节,其实简历和面试只是对过往经历的展示,因此最重要的还是日常的积累和总结,每做一件比较有意义的事情,或者是说可以拿出来说的事情都可以进行总结,作为以后得晋升或者跳槽的时候背书。