从迷茫不会写代码到拿到34万的NLP offer:一定要多写代码


就业的史老师之前问我就业情况,也看到群里老师给了很多信息的帮助。现在回顾一下也挺好的。这篇文章,我会大致介绍自己的基本情况、学习的一个历程、面试的一些经验和寄语。

基本情况:本科双非硕士,目前已有的好点offer有某知名互联网公司的核心部门的算法岗,加补贴大概34上下,于我是很幸运了。硕士之前,没怎么写过代码。

偷懒,该还的迟早的还!我最开始是插班报的集六的课程。当时自以为研究生是计算机专业了,在报班之前,自以为是计算机专业,大家之前上过的一个多月课程,基本就没认真听,后面讲机器学习、深度学习的课程时,也是因为各种事(主要是自己懒)没有真正的跟上,七月的老师一再的催作业,但是夜郎自大觉得听起来好像很简单,作业基本就没怎么做,到整个集六结束。

虽然那时候(寒假)老师建议我刷下剑指offer。今年的春天实习招聘基本结束时,才发现我连个像样的实习都没找到,才发现老师虽然讲的明白,但是自己根本没认真学,算法功底不扎实,数据结构题也不行。出了问题了,没办法了,后面自己又加钱报了下一期的。

后面的这段时间里,自己反思了自己的行为,虽然一边在实习,但是尽量抽时间重新把新课的内容重新学了一遍,主要是算法推导上,有些东西你听的懂,不是你真的懂了,是老师讲的比较清楚,你还得自己会真的去推导,去写才行,千万不能偷懒。另外还有老师给的部分代码一定要自己去运行,去写,最好能自己从头写!我当时不扎实的工作,导致我后面秋招一再碰壁,一度自闭。

我秋招找工作的一个大致情况,大概笔试面试有好多家公司(emm包括校招提前批将近三位数),有很多是在笔试的时候就挂了,其实自己应该早点刷题,现在想想,其实校长在一开始上课的时候就有提到四大金刚,其中数据结构题(比如剑指offer、LeetCode)就是个敲门砖,而且确实刷题也真的能提高编程能力(个人意见),保证至少基本的剑指offer刷完吧,66道题,其中有个别难偏的题确实可以跳过。一遍不可能一次性刷完的,多刷几遍,熟练度很重要,在线笔试与面试,都是需要自己手敲(手写)。

秋招整个战线拉得很长,面试中遇到了不会的问题,记录下来,再回过头来看七月的视频。比如手推xgboost,AI LAB陈博士的视频就讲的挺好的。这样反复的迭代,另一方面自己在实习的项目,也反复的去抠细节,把代码与原理弄得更加透彻。

一次失败不要紧,我有个P大的朋友(本科非计算机,研究生也过的较水),前后笔试面试有118家!他大概到了100家才收到第一个offer,所以大家都一样难。我相对幸运,不会一定要利用好咱报班的资源,反复的去看咱们的课程与搜索资料,还有去群里找老师提问。

我找找实习时用的项目,就在群里提问了很多次。要相信自己,随着自己能力的不断提升,一定是会有好的offer的,我和他最终去向都还不错,从0到1突破了,后面就很快了,希望大家一定要坚持!坚持去反思与总结,并坚持学习。算法肯定是未来的趋势,而且待遇也是真的很好,搞开发的要sp才能拿到30(除了头条),但是算法普遍白菜就有28了。

很庆幸,自己坚持过来了,其实收到第一个offer通知时,我眼睛是真的湿润了。。。要相信天道酬勤!咱们能花钱报班,有想转变想改变的志气,就一定要用行动去提升自己!而且,算法虽然竞争比大了,但是更说明算法这个岗位确实是很棒,不然为什么那么人都争着往这个方向转!

一些杂七杂八的话:我报班其实是借款报的,但是现在想想,正是因为当时是借款报的,后面啪啪打脸的时候,我就想到一定要对的住自己花的钱,一定要努力,更何况只要自己愿意学,七月的老师还是很愿意教的,这一定程度上促进了我后期的更加努力。

一定要写代码,一定要写代码,一定要写代码!你不要抱着报班就能100%找到好工作的想法,如果你花个一两万块钱,就能让你100%实现从年收入15万到30万的转变,那这肯定谁都愿意干啊!!!还轮的到我们这样的普通人吗?!一定要好好利用教育资源与自己买的教育服务,好的东西一定是值钱的,自己的能力是值钱的,教育服务也是。对自己投资,尤其是教育的投资,确实回报最大的(算是给他们打个广告吧,但是这确实是我的观点)

最后,其实还是需要好好感谢七月的老师,尤其是褚老师的课程,以及助教余远根,他是我见过超级认真且耐心的助教老师(校长,这样的助教老师应该多招要加鸡腿!),当时那个QA的demo完全是靠助教他写的注释才搞懂是怎样一回事。

对了,还有当时服务器平台的运营老师,网名应该是叫Sniper(小编注:现在是范浩管GPU了),人也很有耐心。谢谢北京杨老师课程的精彩讲解,他在讲授满是经验的时候,“大家要提升的是能力,能力上去一定会有好的待遇”非常认同了,也成为了我后面与现在的信念!还有谢谢就业老师们的信息提供与讲解,谢谢曾经帮过我的所有老师、助教与同学!

面试主要都是围绕简历来问,我感觉不同人的简历不一样,参考性不大。
附近期面过的几家公司吧:
头条面试
整体面试小哥考核基础考的比较深入,注重算法本质的与原理的深入考察
1)写下bilstm+crf的损失函数?损失函数中的max有什么作用,为什么要减去这个max?-->具体的emission score与transition score是如何得到的?
2)RNN与lstm 有什么区别?lstm解决了RNN的什么问题?如何解决的,写下解决的原理(其想要的是本质答案,关于激活函数的多次幂--(好像是反向更新参数时RNN的激活函数f 为指数次,lstm变成了求和的形式-)
lstm 解决的是梯度消失的本质原因
transformer整体架构 transformer的提出 Q、K、V
Multi-Head attention、多头的理解
Position Embedding位置编码
Mask 操作

粉笔蓝天科技算法岗:
除了问实习经历中的项目以外,两轮面试中还问到了:
推导LR的损失函数与梯度下降更新参数(必须要手推一下,当时就没准备好)
如何理解过拟合,怎样解决过拟合现象(当时没说全,过拟合现象的原因没有讲清楚)
如何理解dropout机制,dropout机制是在解决一个什么问题,其中的原理(需要再整理)
L1正则与L2正则的作用
LSTM+attention机制是如何做句子分类的(这个当时没有说清楚)
实体抽取的项目中,bilstm是如何和crf链接的?bilstm起的作用是啥?能否用cnn代替?(这个当时应该没答对,重新再查一下)
在xx的实习中,做的模型调优工作有哪些(当时答的不全)
Transformer Encoder 与Decoder 有哪些不同?
Encoder-Decoder attention 与self-attention
mechanism有哪些不同?
multi-head self-attention mechanism具体的计算过程是怎样的?
Transformer在GPT和Bert等词向量预训练模型中具体是怎么应用的?有什么变化?
NLP特征抽取机制有哪些?(基于DN), 各有哪些优缺点?
Multi-Head Attention和Scaled Dot-Product Attention
为什么是缩放点积,而不是点积模型?
为什么是双线性点积模型(经过线性变换Q !=K)?
相较于加性模型,点积模型具备哪些优点?
多头机制为什么有效?

算法题:
二维数组中找值,一个很大的二维数组,满足,同一行中从左往右,元素值递增。同一列中,从上往下递增,写代码。
(从右上角开始比较,注意一行内用二分查找算法)(当时二分查找的边界好像没写对!)
给定一个整数型递增数组,元素值不重复,求其能组成的所有元素个数(先转换成字符串,然后变成字符串的全排列问题—当时全排列的划分问题好像没写对)

小黑盒max算法:
整体问了很多计算机基础的内容(面试官是清华cs专业的)
提到相似度项目的F1score很高,能否解释下原因?解释下F1score的公式是怎样的?(当时公式都没有答清楚,这个必须要会手写)
解释acc与precision
Python的数据库连接操作用什么实现,服务器开发时连接数据库的原理是什么
线程与进程区别和联系,Python线程与进程的特点,多线程如何处理
面向对象设计语言的特点
怎样理解http,进一步提问计算机网络的七层协议
算法题;
手写快速排序的变形题,问了有比快速排序时间复杂度更低的算法不?

9月下旬面试
1. 双向mask机制的理解,--这个可以参考下paperweekly公众号(知乎或者微信都有),从语言模型到Seq2Seq:transformer如戏,全靠mask的文章
2. attention为什么比RNN,CNN好。
--attention序列的对齐机制
3. transformer为什么比lstm好。
4. 预训练向量模型进化的理解,从word2vec到bert ,到ERNIE与XLNET,Bert与ERNIE和Xlnet需要有所了解

0 个评论

要回复文章请先登录注册

收藏七月在线,一起向大牛进阶

ctrl+D或command+D可以快速收藏哦~