2021 程序媛跳槽记:学习计划篇(已收获字节等offer)
Posted 穆雄雄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021 程序媛跳槽记:学习计划篇(已收获字节等offer)相关的知识,希望对你有一定的参考价值。
今天推荐的这篇文章是一位互联网程序媛写的跳槽日记。她本硕毕业于985计算机专业,先后就职于央企和BAT。这一篇就是她跳槽到互联网的学习笔记,希望能对大家有所帮助,感兴趣的读者也可以关注公众号,听听更多程序媛的故事~
坦白说,我这个人不算聪明,基础也不咋样,这次跳槽我一开始是很没信心的,甚至想把这次尝试当做试水,如果受打击太多,就再修炼半年,明年过完年参加金三银四的跳槽旺季。
好在幸运了拿到了几个大厂的 offer ,比如美团啊,字节啊,阿里啊等等,所以我觉得像我这样的菜鸡都能做到,那大家也可以。
我把这次跳槽计划命名为:牛宝宝计划。
一、战略方针
有的人适合突击战,有的人适合持久战,我属于后者。我自认为自己的耐力还可以,所以我一开始就告诉自己:我的基础薄弱,也没有大厂经历,这次跳槽不要急于求成,找到自己的问题抓紧补救。
所以我给自己制定了半年的学习计划。这个时长肯定跟高考、考研没法比,不过我觉得在跳槽中也算是不短的时间了,我知道我的同事本来想随便试试结果就拿到 BAT offer 的,也有准备一个月就跳槽成功的。
但我好在有自知之明,所以不会去盲目比较和要求自己,按照自己的节奏定计划。
第二点我觉得为什么要拉长战线,是因为我现在的工作不能保证每天稳定的学习时间,有些时候线上出问题了就得去灭火,隔三差五没有时间学习也是很正常的。如果这个时候我还要逼自己快速有 offer,可能自己先崩溃了。
二、定目标
我这次的目标是想进互联网大厂,因为我一直没有这方面的经历,所以内心非常渴望。
此处需要注意:
1、不要一开始就直接投大厂,先拿一些小公司练练手。
2、大厂往往意味着有很多部门,各个部门都可能招算法工程师,要先看看这个部门在集团中的地位。
就我个人而言,我给自己的定位是,肯定是进不去大厂的核心部门(比如阿里的淘系,字节的抖音,滴滴的网约车等),所以我要搏一搏的是大厂稍微二类的部门。
3、如果是猎头联系你帮忙内推的话,一定要提前了解好要面试部门的技术栈。我面试滴滴那次就老惨了,猎头给我推了最核心部门,而且技术栈完全不一致,比如基础的编程语言、我大多项目是线下、而人家有丰富的线上模型。
整场面试下来,伤害性不大,侮辱性极强。真的是感觉在浪费双方时间,还严重打击了我的战斗气势。
三、学习方向
我本身是算法方向的,所以我在准备面试的时候主要按照三个方面准备:
1、算法知识,包括但不限于机器学习、深度学习、常用框架等
2、LeetCode 刷题
3、项目经历 + 软实力
下面逐一详细介绍。
四、算法知识
1、查招聘信息
招聘的 APP 有不少,我自己使用的有 脉脉、boss 直聘、拉钩等。
注意此时不是一上来就投简历,而是先看看各个公司的 JD,再对比自己的项目经验里有没有哪些是能够挨上边的(其实这个时候就可以大概知道简历该写哪些东西以及如何完善了)。
比如我随便在脉脉上搜了一个算法工程师的职位要求:
以上面为例,提到的技术基本都要 match,模型要会,并体现在简历中。
工作年限要求这个我倒是觉得不用严格遵守,有时候要求 3 年以上,但只有两年工作经验,也是可以去试试的,大概率技术栈 match 的话,拿到面试机会问题不大。
2、通过上一步,就能知道现在业界都注重哪些算法模型和框架了,如果你恰好使用过,那真是太开心了,再补充一下理论知识。
复习期间我一共看了三本书:
李航的《统计学习方法》,周志华的西瓜书,Hulu 出版的《百面机器学习》,结合网上的一些资料整理的笔记。
关于每个知识点要会到什么深度呢?举个例子:比如使用过 Xgboost 框架,那么就要弄懂以下几个问题:
1)Xgboost 与 GBDT 的区别?
2)Xgboost 与 Lightgbm 的区别?
3)怎么处理缺失值?
4)有哪些缺点
…
(我自己的面试真题之后再单独写一篇文章,如果你感兴趣的话,请等等我。。。)
其他类似的模型也要多多深入学习。当然了,以我个人经验来看,是做不到在第一次面试之前就掌握所有问题的,而且每个公司的关注点也不完全一致,还是要在面试过程中积累问题,如果没答上,面试之后赶紧学会,以备下次提问。
以防小伙伴们太过焦虑,其实面试过程中有问题答不上是很正常的,而且有的面试官就喜欢就一个问题不断往下深入提问,看你到底懂得有多底层,最后总会有答不上来的时候。
以我个人经验来看,一场面试中,有一两个问题没答上,是不太影响通过面试的,你只要保证大部分内容是你提前准备好的,其他的临场发挥也不是不行呀。
3、是不是所有 JD 里提到的模型全都要会?
答:大可不必。
你只要学会你工作中用到的相关的模型就行了,面试过程中主动引导面试官的提问方向,基本就不能提问到你完全陌生的领域,当然如果你引导了面试官提问,结果自己没答上,这种自己给自己挖坑的行为,请在面试结束后扇自己一个大嘴巴。
我个人的情况是,工作项目中使用逻辑回归和树模型比较多。所以我的学习路径就可以归纳为:
线性回归 --> 逻辑回归 --> 决策树 --> 集成模型 --> GBDT --> Xgboost --> Lightgbm --> 深度学习
像一些概率图模型,马尔科夫等等就完全没有问过我(幸好没问,问了我也不会啊)。
当然了,如果你精力充沛,准备的越充足越好啦,其实我也是看过 KNN 模型, Kmeans 等聚类模型滴。
五、LeetCode 刷题
我上一篇文章分享了我的刷题笔记,如果你没看过,双手奉上链接哦:
2021 程序媛跳槽记:必刷LeetCode算法题(附解题报告)
重复的内容我就不墨迹啦,这里主要想说一下对我个人比较有用的刷题方法论。
我不知道你们是不是和我一样,就是刚刷完一道题,第二天再做都不能一遍 AC,闹心死。
后来我为啥跟自己和解了呢,因为我想到当年考研的时候,我其实英语成绩还可以,差不多 80 分左右吧,可我背单词也不能做到背一遍就记住了呀,哪怕是我擅长的科目我还得千锤百炼呢,更何况是我一看到题目就发怵的 LeetCode。。。
所以我就借鉴了我背单词的方法:利用艾宾浩斯遗忘曲线,如下图。
大概意思就是给这个记忆程度进行了数值计算,得出事件发生多久之后你还能记住多少的结论。
我根据自己的学习时间,给上图进行了微调来制定我的刷题和复习计划:
每隔 12 小时、24 小时、2 天、4 天、一周、两周、一个月、两个月来复习一遍做过的题目。
比如我习惯晚上刷一道新题,假设是 6.1 号,然后我会在第二天 (6.2 号)早上复习一遍,第二天晚上 (6.2 号)再复习一遍,6.3 号、6.5 号、6.8 号、6.15 号、6.30 号、7.30 号左右再复习一遍同一道题来加深印象。
现在 Chrome 不是有标签分组的功能了嘛,我就按照日期来个大致分组,粗略地知道每周大概刷了什么专题的题目,复习的时候也知道该复习前面哪一周的了。我的 Chrome 长这样:
每个数字代表日期,比如 3.6 就是 3月6号以及这之后几天的题目。
再说一说我遇到的坑:
1)每次刷同一道题错的地方都不一样
恭喜你,每次都暴露了不同问题,哪里有问题哪里就是解法出现了偏差,可能是算法,可能是对编程语言的性质不够了解,总之是个好事。
2)心态不稳
每次我都会大喊一声:为啥还是不对啊啊啊
好在我喊完之后还能继续做题,如果实在崩溃的时候就歇一歇,没啥大不了的,面试也不一定考这道题。
但请相信我,坚持到后边,真的是越刷越快。
六、项目经历 + 软实力
项目经历这个事儿就得因人而异了,毕竟每个人的项目经历都不一样。
我就不太会把做得很普通的事情说得高大上,一开始我的亲朋好友看了我的简历都开始劝我:要不别找算法了,换个方向吧。。。
还没开始呢就有人劝退我了,打击程度可想而知。
偏偏我又是个好强的性子,非要亲自试一试。
恰好我看到了我们今年校招生的简历,他的简历就包装的很好,其实算法都差不多,我就模仿他的简历来改(太丢人了,做简历的水平竟然不如应届生,跳槽路上真是随时都可能自我否定)。
改简历真是一个没有尽头的事情,千万不要以为做一遍就万事大吉了,甚至随着面试过程,要不断进行微调,所以一开始的预期就别搞错。
我个人觉得这方面考察的重点是:
1、对自己做过的事情有清晰的理解和复盘
2、沟通成本低:较短时间内介绍出项目的难点是什么,你自己的价值体现在哪里?
3、还有对未来的思考:如果现在再让你优化,你能从哪些方面入手?
大多数程序员表达能力都欠佳,比如我,这个就得自己没事儿多练练,找人帮忙 mock interview 也行,自己没事儿就自言自语叨咕叨咕也行,尽量抓住重点和面试官的吸引力,如果看出来面试官都开始心不在焉不想听了,就抓紧调整自己的表述策略吧。
、沟通成本低:较短时间内介绍出项目的难点是什么,你自己的价值体现在哪里?
3、还有对未来的思考:如果现在再让你优化,你能从哪些方面入手?
大多数程序员表达能力都欠佳,比如我,这个就得自己没事儿多练练,找人帮忙 mock interview 也行,自己没事儿就自言自语叨咕叨咕也行,尽量抓住重点和面试官的吸引力,如果看出来面试官都开始心不在焉不想听了,就抓紧调整自己的表述策略吧。
想分享的太多,持续更新中 。。。
下面是作者的公众号,欢迎大家的关注!
以上是关于2021 程序媛跳槽记:学习计划篇(已收获字节等offer)的主要内容,如果未能解决你的问题,请参考以下文章
卷到哭!现在跳槽太难了,挂了八家公司,终于收获字节offer