写在开头
好久没更新博客, 找工作去了。为期三个多月的秋招之旅可谓是寻寻觅觅冷冷清清凄凄惨惨戚戚。经历了许多坎坷曲折磨难,大大小小的面试近乎30场,笔试更是不计其数,跌宕起伏之后,最终还算是收获了几个offer。感慨颇多,故以此文纪念,若对读者有所帮助,不胜荣幸。
本文是我秋招总结系列的第一篇文章。主要会从个人背景、学习准备、资料分享、面试经验等方面对我的秋招之旅进行总结。本文有很多主观的表达吐槽,可能有很多不准确的地方,同时本文写作随性,逻辑混乱,废话颇多,常有不知所云之碎碎念,还请读者海涵。本文不会介绍具体的某个公司的面试题目,但可能会吐槽一些搞笑的面试经历。后续可能会更新一些具体的面试经历,敬请期待。
个人背景
学历方面,见我个人简介,我可以算是211本科985硕士双非硕士。在学历贬值的当下,平心而论,这个学历在当经求职市场上也不算吃亏。至少投一些互联网或制造业开发岗位基本上不会因为学历的问题而被刷掉简历,不过在过了简历关之后,学历只是敲门砖,打铁还需自身硬。我是非科班专业的,本科是学物理的,后来保研在种种原因下转了网络安全(或许也可以算是半科班?),或许看我博客的读者也以网络安全专业居多,后面我还会讲讲关于专业方向以及慌乱转行的思考,或许有所偏颇。
因为种种原因,没有大厂的实习经历,读研期间也没有什么论文产出。竞赛方面,本科、读研期间参加过一些数学竞赛、英语竞赛、蓝桥杯等垃圾比赛,拿过一些省级水货奖项。项目方面,本科做过的大创校创就不说了(都不会写在简历里),自己又在牛客和github上缝合了一个C++烂大街的webserver项目,然后自己做了一个操作系统相关的项目。慌乱中就开始投递简历搞秋招了。
至于我的技术水平,哪怕不太愿意承认,但也只能可以说对于C++开发岗而言,可谓是非常垃圾。基本上我的博客就涵盖了我的技术水平。基本上就是一些网络安全的基础技术栈:
秋招之前,我扪心自问,我tm到底会啥?
408基础八股:计算机网络之前自学过,操作系统零零散散的学过,数据结构与算法啥的这些也零散的自学过。属于是你问我某个知识点,我会感觉这个知识点有点熟悉,但大概率答的坑坑巴巴东一榔头西一棒槌的水平。应付秋招的八股远远不够。
算法题:leetcode刷了100道左右,很多是两三年前做的了,并没有系统的搞过。
编程语言:python还算熟悉,主要写一些脚本和跑一些模型,C/C++可能还停留在大一的水平,学业中遇到一些必须用C/C++的地方一般去github ctrl +c/v,或者用gpt解决。java完全不懂。
其他计算机相关技能:MySQL仅限用过(渗透靶机的时候涉及到),对linux还算熟悉(后续面试被吊打才发现根本不算熟悉),另外就是我博客的一些技术栈,懂一点点机器学习啥的算法,以及一些网络安全技能(了解一点Web漏洞、渗透测试啥的)。
基本上可以说,这种水平在大佬云集的秋招中完全应该就是炮灰的水平,我应该完全找不到工作才对,或者靠吃学历勉勉强强进个国企或者银行啥的。那我有什么优势呢?仔细思考了一下,掰着指头数,硬给自己算优势的话,大概有如下:
学历还行:211本科
985硕士双非硕士成绩比较好:本科GPA top5%,拿过国奖。把成绩放在这里说,我自己都觉得害臊。
成绩好对于秋招有个毛用?企业招聘是看你的技术水平,又不是看你本科学的量子力学考了90分。英语还行:六级成绩算高,硬要说挑战英语面试我也能接受。
把英语放在这里实属是没其他好说的了。心态不错:意识到自己是垃圾之后,我也逐渐放平了心态。毕竟当下就这经济环境,不要再回想三四年前本科容易找工作的时代了。同时我决定海投,只要我心态好,不怕失败,抱着找不到工作的心态去,也没什么好怕的。
短期学习(速成)能力还行:得益于本科期间8个小时突击一门期末考试的经历(虽然考完之后立马就把知识还给老师了),我学习速成能力还行。可以短期速成各种计算机八股,
实际上是狗熊掰苞米,边学边仍。
有段时间感觉压力很大,和工作了的师兄一起聊天,师兄帮我看了看简历,问我:现在你的找工作思路简直是放弃自己的强项,然后又拿自己的弱项去和别人的强项去比?你这水平去卷C++开发和人家计算机专业的,早就决定做后端的本科毕业生相比,你有啥优势?
我沉思良久,强装淡然,回答道,是的,我没有优势。
没错,这就是我,菜的安详。
秋招方向选择
身边统计学
在我周围环境的朋友同学(以网络安全专业为主)中,大致有如下秋招选择:
国企/央企银行运营商啥的:各种信息科技岗,预研岗位等待。这种比较吃学历,同时也有个运气成分在,还得刷刷行测。
公务员:选调/国考。还是看行测+申论,基本上类似千军万马过独木桥。
大厂安全相关:大厂的网络安全岗位,一些大模型的预研、风控算法、安全运营、漏洞挖掘、代码审计等等。这种算是比较对口,三四年前毕业的师兄师姐基本上都能进大厂,至于现在好像越来越少了。
后端开发:卷开发去。以java为主。
仅就身边统计学来看,现在想进体制的同学越来越多,进大厂越来越难,人数也越来越少。哪怕是愿意投大厂的,也回同时投递一些国企央企啥的,不会在一棵树上吊死。基本上人手一本行测刷题的书。学网络安全的同学也很少有去卷开发的,主要是现在校招开发要求也确实高了,仓促转行比较困难。然而就身边统计学而言,大厂的安全岗也挺不容易的,基本上卷进大厂拿高薪的都是本硕网络安全+CTF有成绩+有挖洞/论文/实习啥的。像我这种半路转行的菜鸟是很难成功的。
另外最后发现确实秋招形式不容乐观(可能每年都是这样),虽然今年号称京东涨薪、美团扩招、字节也有几千hc,但最后真能拿offer打牌的人也没几个,多数兄弟都是挤破头拿到一两个学历厂发的offer就不错了,也可能是头部效应明显,大佬通吃。至于国央企啥的,大多数面试也不太看技术,主要还是学历+笔试 + 运气,同时可能也有一些行测啥的会大幅度刷人。
我的选择
如本文标题所示,最终我选择了走上C++开发的道路。这其实也是举棋不定多时的结果。首先说我的秋招目标还是以大厂私企为主要投递对象,至于为什么这样选择,一来是我从来没有去大厂实习过,尚未对大厂祛魅,还想着趁着年轻多学一点技术也多攒一点钱;二来则是我的性格可能也不太适合进体制。所以就这样吧,但愿以后坐在工位996熬夜加班的我不会后悔当初的选择。
转行网络安全——从白手起家到一贫如洗
然后再讲讲为什么放弃网安,首先给自己叠个buff,我也只是个小白,以下这段表述主观成分很强,纯属梦话,不知所云,碎碎念而已。
如前文所述,我没有选择以网络安全行业为求职主要目标,这也是纠结了很长时间的结果。回顾我读研期间的网络安全学习之旅,又可以写一篇垃圾小故事《网络安全——从白手起家到一贫如洗》。我是半路出家读研才转行网安的,感觉这两年的时间,我依然不能说是入了门。没有很好的挖洞经历,也没正式的打过CTF。参加了两次HVV都在蓝队当点鼠标的猴子,打过渗透也基本上就是用各种工具扫来扫去。自己的项目主要还是跑模型调调参,读一读论文再改改别人的开源代码。但平心而论的扪心自问,我倒是也不能说没努力,我也算是尽力了(说这话可能是给自己的不够努力找借口开脱),一直积极的在学,也在一直总结博客,但似乎没找到太好的门路。同时基础不牢地动山摇,网络安全行业又特别吃计算机基础(操作系统、数据库、计算机网络、编程语言等),在学习或者做项目的时候遇到一些问题需要打基础的时候,我总是选择糊弄过去,勉强先把问题解决,最后反而没能补齐之前欠下的基础。
同时感觉自己也没有融入安全的圈子,很多白帽组织也好,安全论坛也好,想学技术都得先融入这些圈子,光靠开源资料其实很难有长足进步,毕竟网络安全学到的很多技术都与黑客攻击啥的相关,有些敏感。我确实能见到很多师傅很厉害(各路内外渗透/免杀大神),我也佩服他们,他们中的很多人或许学历平平,但对于钻研安全技术起步非常早(比如中小学就开始了),同时对于技术曾经有着极高的热情,并非我这样的废物可比。
还记得有个比我小两三岁的学弟,在大学中非常优秀(绩点高、项目多、一大堆竞赛、甚至还有科研经历)。有人问他有啥课余爱好,他说他的课余爱好就是和CTF战队的兄弟各自搭个靶机互相黑。也让我感慨,成功的人往往确实需要热情,向我这种三分钟热度,偶尔埋头苦干,常年混吃等死的的小镇做题家是天生给别人当分母的。
同时现在经济大环境也就是这样,安全行业本身并不能产生收益(当然不是说不重要,尽可能降低损失也是效益嘛)。很多叫得上名的安全乙方公司都在裁员,就更不用说什么取消全年年终奖的事了。身边的同学都求稳往体制内走这也是很正常的选择。如果你作为大厂企业高管,裁员的时候你会先想到裁哪个部门呢?
Why C++
接下来讲讲为啥选择C++,牛客上劝退C++的非常多,说什么互联网搞开发还是Java的岗位多得多。这点确实,不过我没时间学Java了。今年上半年对于找工作的事情我一直犹豫不决、举棋不定、左顾右盼、瞻前顾后,一直在纠结要不要做技术、要不要干脆找国企算了、要不要继续做安全、要不要转开发等等一系列问题。同时也在磨毕设的事情,同时还学了很多乱七八糟的求职方向。在乱点技能点的犹豫中,已经到了七月底。
坏了,秋招就要开始了。而我还是啥也没准备的小白。最后加了几个论坛,同时也自己思考了几天,评估了一下各个方向的学习路线和我的现状,Java确实来不及了,老实说此时无论选择什么方向都确实已经有点晚了,求助了几个大佬之后,最终决定转C++。C++的八股相对较少,同时C++虽然搞互联网后端不占优,但也可以投递一些制造业(新能源车企,或者类似华为/小米这种大厂)。所以就这样吧,毕竟这个时候了,已经容不得我挑挑拣拣,只能抓紧动手开始准备,边笔试面试边学了。
所以其实并没有太多的深思熟虑,可能只是迫不得已的选择。但是后来想想,去学去做可能并没有特别的痛苦与心累,反而是举棋不定的犹豫最让人焦虑。早点想明白之后干就完了,没啥好怕的。本来就是一贫如洗,也就没必要患得患失。
秋招准备
具体我的准备过程就不在这里写了,不过站在今天的视角回头看,去搞C++的开发(包括一些通用的软件开发、后端、多媒体开发、嵌入式等等),大概需要如下的储备。
要学啥?
在说要学啥之前,先大致说一下大厂的招聘流程,咱针对各个环节进行刨析,找出学习对策。:
简历投递 -> 行测 + 心理测评 -> 笔试 -> 技术一面 -> 技术二面 -> HR面试/主管面试 -> 泡池子等捞
当然上述流程不绝对哈,可能有的公司是海笔,先笔试再筛选简历(我真是想喷),有的可能不只两轮技术面试,有的既有HR面,也有主管面等等。不过总体啥大差不差,至少两轮技术+一轮主管/HR面。
Step1: 首先当然是简历准备,这个大家去github或者各种论坛去搜就可以了。有点项目经历(项目经历尽可能写的具体一点,实现了哪些具体功能,加一些定量描述等),写一写专业技能,如果学历不错的重点把学历写在最上面,标注上酒吧捂/饿幺幺啥的。总之适当突出重点优秀的部分,垃圾的部分可以不写(比如如果本科成绩倒数,就没必要在简历上提起自己的GPA位列专业前90%)。可能是得益于学历还凑合,基本上直接挂我简历的公司不多。
Step2: 行测/心理测评部分,这部分基本上都是海测,我非常想吐槽。做这种行测可谓是对自己毫无提高,纯粹浪费时间,但是没办法,还是必须认真对待,测评是针的会挂人的。还是得认认真真的做。不过这边也有很多技巧在,回头再分享。
Step3: 笔试部分。一般是选择题+在线编程。选择题包含计算机基础、数学题智力题等(也不一定有选择题,有的公司只有算法题)。在线编程就是算法题。有的这里我感觉我们大概需要储备Leetcode200道,包含hot 100题目和一些针对性的动态规划、图论等。200道可能不算很多,但我这里的前提是对200道滚瓜烂熟,基本上一旦遇到就能立马写出来,这样哪怕碰不到原题,也基本上就那些知识点,总还是可以实现的。另外要掌握ACM模式,毕竟笔试和面试中的很多题目都不是让你像Leetcode那样写个函数就完事的。你要自己定义数据结构、处理输入输出。而且面试也会考算法,要是考个链表或者树啥的题目,你在哪里坑坑巴巴定义节点的结构体写不明白就尴尬了。
Step4: 技术面试。这部分大致流程是自我介绍 + 项目/实习拷打 + 八股拷打 + 算法题。有的可能还会考你个智力题啥的,一般尊重求职者的面试官还会允许你反问一些工作的问题。自我介绍部分我一般就做了个PPT介绍一下,把准备的熟悉的项目适度多提两句(但也不要说太多,留给面试官提问机会,不至于你讲的太明白只能问刁钻的问题了)。
先说面试部分的算法题吧,这部分其实基本上准备和笔试相似。俗称“手撕代码”,在有的面试中可能还是挺关键的。这部分基本上和笔试的准备类似,面试的题目往往还会比笔试要简单不少,很可能就是leetcode原题,如果来不及了就先准备Hot 100题目,一定要很熟悉才行,做的时候不要着急,面试官会看你的操作,不要觉得简单轻易就说做完了,然后发现有bug就尴尬了,注意处理一些边界条件啥的。同时也要补充一些基础的数据结构和开发知识,比如让你手写个哈希表类对象、实现个简易的多线程、智能指针啥的,我还真遇到过。
然后有经验的面试官会针对你的实习和简历项目去问,我们应该对自己的项目很熟悉才对,然后回穿插一些八股的题目。涉及到:计算机网络 + 操作系统 + 数据库等等,你说你熟悉Linux还可能问一些Linux的题目。同时也可能有一些针对业务的场景题,比如线上数据库连接池爆满问题如何排查、商家想要知道自己店铺卖的最好的 top 50 商品,如何实现这个功能等等。这种如果想要短期内提高,我只能说我们尽力准备,多看面经多被八股啥的。
学习资料推荐
推荐也有许多主观成分,读者可以适度看可以看。为避免打广告嫌疑,我这边有的就不给链接了。
算法刷题:leetcode、牛客网、代码随想录的题解等。也可以关注一些专门推送大厂面试题的博主,随时复盘。
面经/职场分享:牛客网、脉脉、包括小红书。
C/C++八股:这里推荐一个澳大利亚博主Cherno C++的教程,17年的视频了,虽然是英语,但讲的比较深入、设计了很多底层的东西(B占有搬运)。
计算机八股:小林coding图解系列(小林这个真的挺不错的,有点相见恨晚的感觉)、面试鸭 等。
这篇文章就写到这里吧,后门可能我还会总结几篇秋招笔试面试的经验和一些直观感受。如果学弟学妹看到这篇文章,请你相信自己一定可以的。如果你把一件事情想象的非常困难,一般这件事没有你想象的那么困难。降低期待,想清楚之后就少想多做,会有个不错的结果的。
等offer也很焦虑,故以此文纪念总结,亦使后来者以我为戒,不宜妄自菲薄。若有启发直言,不胜荣幸。就写到这里吧。