本人只是一枚老码农,不生产代码,只做代码的搬运工。报过七月的集训营和NLP一对一,刚接到offer(月薪4万多 × 14,接近60万),不像大神一样可以拿下很多大厂的offer,我就总结一下我的教训吧,希望大家引以为戒。
首先拿到进入面试的门票,就是你的简历。如果你是双非本科,尽可能突出项目和经历,通过工作经验获得面试的机会,突出熟悉的算法,机器学习和深度学习都要有所准备。工作经验中突出你的算法项目,展现出你的突出贡献,突出你熟悉的算法,为面试问题做准备,先获取面试机会。
其次,准备code题,刷剑指Offer,刷LeetCode,由易到难,步步入坑,不要一下跳进去,不然很容易进入懵逼的状态,很难缓解尴尬的局面。由简单的数据结构原理入手,一般也就快排、堆排序、第k大的数等,也比较常见。放低姿态,不要以为学了点皮毛,就天下第一 老子无敌了。必须把基础打牢。
进阿里面试,在项目上和面试官叨叨了近一个小时,感觉吹的还行,结果让做道代码题(取数据流中第k大的数),当时给出了排序的代码,在循环遍历,面试官鄙视了我一眼后,还很有耐心的引导,半天没憋出个屁来。最终game over。
天眼查面试,让写一个循环遍历,被我鄙视了,老子写这么简单的。然后没结果了。
京东的面试,还有几家公司都是有代码题,没给你出代码题的,自己多加小心,一般这家公司啥也不懂,希望你是万能的。
面试了某某在线,没代码题,就是干聊,一点稀的没有,薪资不合适,也就告辞了。
也有一些传统的企业招算法,比如某某幸福,也是尬聊,这次有个真的nlp工程师,我可能吃药多了,怼了他一顿,然后就没然后了。所以说心态很重要,越是大佬,越是那种低调,待人有礼,保持良好心态,面试官很多时候也会引导你的。但是code题一定要刷,不会code那就莫装逼。不然像我一样丢了很多机会。
再次,回答问题要有逻辑感觉,问题现象-----问题原因------解决问题。
比如问怎么解决过拟合?这是送分题,加正则化、什么droupout,最好多讲一些比如你是怎么判断的过拟合,过拟合有什么好处,什么坏处,为什么产生这种问题,从哪几个方向可以解决过拟合(训练集、测试集的不同表现-------模型学习到了内容,但泛化能力弱---------数据少了、模型太复杂了--------增加数据、降低模型复杂度(L1、L2)、bagging思想)
如果你只是回答正则化,那面试官肯定问你,什么是正则化,L1、L2的区别?怎么选择?为什么这么选?等等都是挖坑的线路,如果你能都准备好那么还ok。
你如果准备xgboost,那么只是回答推导公式,没用的兄弟。
本人面试某车网,我回答了xgboost的推导,面试官直接问xgboost为什么快?
怎么分裂的?
特征重要度怎么计算的?
分位点怎么确定的?
怎么自定义损失函数?
等等所以你准备的算法基础,要全面,在网上查看知乎相关的讨论,一定深入算法,通过网络查找关于该算法的面试题,从面试各个角度分析算法。
不要只停留在了解算法原理的基础上。注意细节的深入。
面试某氧App,随机梯度下降的抽样是有放回,还是无放回?为什么?随机梯度下降,有噪声怎么办?注意心态,不要慌,稳赢。人一懵逼,绝对死翘翘了。
同样在这家面试,因为前一个回答的不好,回答auc的时候就慌了,面试官问什么是auc?图中四个点分别代表什么?这稍微推理一下就可以了,当时被虐了,不敢嚣张跋扈了。
杜绝问答式的面试,提倡聊天式的回答。
最后就是hr了,记住要低调,低调做人,高调赚钱,态度要端正,嘴巴要紧,不要轻易松口,也要尊重hr和公司文化。千人千面,每个人遇到的问题不一样,但只要想好想细自己的场景,按照问题现象、问题原因、问题解决方案的路子,应该都可以找到工作。如果你已入坑,那赶快去准备。如果还未入坑,入坑有风险,请谨慎而行。
最终还是实力说话,我命由我不由天,是魔是仙我说了算,只要你肯努力,就一定可以。说你不行的,灭了他个鸟命。
我面试中遇到的问题:
L1、L2的区别?不要只回答截断和缩放,要展开一些,最好在二维图中画出,并解释。
随机梯度下降是什么抽样?为什么?
什么是auc,图中四个点代表什么?auc怎么计算?面积auc相同的时候怎么判断?
bias与 variance,过拟合中谁高谁低,欠拟合的时候呢?
xgboost的分位点怎么计算?怎么自定义损失函数?
解释k-means?
LR的损失函数?
svm的核函数怎么选择?
不同时间浏览商品的权重标签怎么设计?
池化层的作用?
了解哪些采样方法?
你了解哪些主题模型?
今日头条的热度词怎么实现的?
spark产生很多小文件怎么解决?
什么是凸函数?(这个是我自己挖的坑,大家千万别给自己挖坑)
文本分类的时候,我的真实样本标签可能经常会改变,你有什么思路解决?