求职总结|无竞赛无顶会低学历的菜鸡的中小公司算法岗位的一些面经~
18316
2022.04.29
2023.05.17
发布于 未知归属地

这应该是我第一次在论坛里开帖。在上个月17日我从曾以为无比优越(甚至在某场4个简单题的周赛里发了大量优越感爆棚的言论而被点了无数个踩,这里再次对被我的言论伤到的人道歉)的机器学习岗位冲动裸辞后,由于项目经历的严重不足,经历了一个月的艰难应聘,终于在劳动假期前拿到了涨薪50%的offer~

offer1.png

2023-5-17更新:题主本人最近一年多以来,经历了无数次犯病+失业,但最终还是又拿到了满意的offer。因此,本帖的内容依旧有效!即使在万物初复苏的2023年,三无人员(还有空窗期的debuff)依旧不是没有机会!朋友们千万不要气馁!

微信图片_20230517164004.png

----以下为2022年原帖----

首先,说明一下本贴的意义在于证伪“算法岗需要顶会/ACM才能入场”之类的论调,给喜欢CV/NLP等AI领域的朋友们打气,然后针对我自身的面试经历与遇到的奇怪问题给大家提点注意事项,希望不要被误解。

常驻这个网站的朋友们里很有一部分认为除了BAT字节网易pdd华为等主流大厂或者外企,其他的工作根本不算工作。我觉得这是不好的,大多数人都是普通人,在全民内卷大环境下找一份工作饿不死自己已经不易,所谓程序员人均大厂只是因为大厂程序员话语权大而已,上进心强向往大厂/外企是好事,但人贵在找准定位,如果大学/研究生期间并不是很积极地自学和实习,无论是否科班出身,应聘时都不应好高骛远。我本人的情况,211本985硕,学历条件对算法岗而言实在太差,项目实习要啥没啥,论文只有2个EI。这个月里投递的全部都是中小型公司,本篇帖子也是在讨论中小型公司面试的常见内容。如果读者不同意这一段,那就请关闭网页,而不要像某些帖子一样,匿名发表一些让人很不适的言论。

我很喜欢某个大佬的比喻,大厂招人,就像大超市按照特定明确标准来批量进10吨苹果,小公司招人,则像普通顾客按照自己的标准买2个苹果。小公司都以契合度为主,所以应聘时不能太学生思维,也就是被不知名公司淘汰时不要轻易怀疑自己的能力,很可能只是因为过往经历和当前岗位不够匹配。另外,就我这样的差等中的差等条件,在boss上投递简历的通过率都有一半以上,所以“没有985本硕,没有顶会不可能做算法,早点转开发”的言论,还是歇歇吧,喜欢模式识别/人工智能的朋友,看到这些后,就振作起来吧!

好了废话说完就开始正片,先说和这个网站有关的部分。

非知名公司的面试,算法题部分一般是比较基础的。我这个月里遇到了下列问题:排序3次(2次快速排序,1次面试官明确说冒泡排序),快速幂(主站50题)1次,IOU(主站223题)1次,二叉搜索树查找(主站700题)1次,手写2D卷积(主站661题类似)1次,还有一次是用迭代法实现f(x,y)=f(x-1,2*y)+y。这些题目无论官标难度是什么,实际上都是人人必须掌握的基础。

本段为2023-5-17更新:
两数之和(没错,真的会有公司用主站第1题面试),斐波那契数列(主站509题),一次能走3格的爬楼梯(主站70题),主站72题,主站104题,主站435题,主站463题等都是题主遇到过的。题主认为这些都在“人人必须掌握的基础”的范围内。另外和70,463出现在同一场的还有主站84题,并且附加了2个进阶,其中进阶2在主站85题的基础上还加了每格宽度不一定为1的设定,这个难度就足够标Hard了,不过相应地,这是作为附加题出现的。

当然,既然有“一般”,那就有反例。有一家公司在面试前先做了一套笔试卷,40分钟6道题,前2题为简答,后4题均为编程。包括主站155和1143,程序员金典17.18。而这家公司在技术终面时,问了这样一道题,10个人任意建不同的微信群(每个群无人数限制),共有多少种不同的建法,我当时没答上来,面试官简化为3个人,这样答案明显是5种(1/2/3,12/3,13/2,23/1,123),最终我被挂掉了,后来想想这可能不是口算题而是编程题……
这说明了,LC上的常用知识点还是必须要学的,否则可能因为技术原因挂掉,但周赛经常只有两三道题的朋友也不要灰心,很多时候算法环节没有难题,这个水平是够用的……

接下来说和这个网站无关的部分。

一场正常的面试,时间一般都在1小时左右,低于40分钟的可以认为应聘者明显不符合要求被早早挂掉。而对非知名公司来说,绝大多数时间都在项目经历上。很多面试都要求你完整地讲述一个项目,首先要把项目需求尽量解释到让对方明白,然后你在项目中尝试过哪些模型,为何最终选择特定模型,都要给出专业的角度上有说服力的理由,在简历中写到的模型的细节必须足够熟悉,如果这份工作比较久了可能有遗忘,在面试之前必须要专门拿出来复习。如果你的简历里有很多项目经历,一定要优先讲项目本身的出发点没有争议并且实际落地效果好的(我个人缺少这样的项目,所以面试中总会被抓漏洞,应聘极其困难),在此基础上选择自己最熟悉的一个。
对于和CV有关的岗位,这两个问题几乎是必然出现的:
1.你采用了哪些方法来提高模型的精度
2.你的训练样本总共有多少,怎么得到的训练样本
前者要尽量从模型本身,损失函数,优化器学习率这几方面分开来讲,后者应尽量在样本增强上展开描述。

(以下2023-5-17重新整理)
其他问题(CV):
· 怎样判断和防止过拟合(高频)
· BN和LN的区别(高频)
· 拿到训练样本如何预处理
· 如何实现模型的剪枝和量化
· 精确率和召回率的公式
· ROC和AUC的概念和计算
· Resnet的主要思想,这个思想能解决的问题
· 可分离卷积的含义,为什么可分离卷积能减少运算量
· shuffle net的主要思想,以及该思想是用于提升精度还是速度
· YoLo和RCNN系列的主要区别,YoLo模型输出大小与每个输出位置的含义
· YoLo的损失函数包括哪些,互相之间是否有联系
其他问题(时间序列与NLP):
· Transformer模型的结构(可能要求画图) (高频)
· 注意力机制如何实现,为什么要除以√d (高频)
· 拿到文本后先进行哪些预处理,怎样进行分词
· 怎样保证训练模型用的不同语料的词向量的维度,怎样设置BatchSize
· 自注意力与交叉注意力的区别
· Bert模型的结构,输入包括哪些部分
· RNN和LSTM的区别,RNN会出现梯度消失的数学原理
· ChatGPT相比GPT-3有哪些区别
其他问题(传统机器学习):
· 随机森林和xgboost的区别
· xgboost内部包含哪些导数,最高几阶导数
· 常见的聚类算法有哪些,类别数怎么确定
其他问题(Pytorch与Tensorflow):
· 数据集有哪几种类型,在线数据和离线数据使用时有何区别
· cat和stack的区别
· Tensorflow 2.X和1.X的主要区别
上面列出的都是我见过的,也都是些很基础的问题,如果因为专业知识而挂掉是很不应该的,说明面试之前没有认真准备。

最后就是说几个我在面试里遇到的让人恼火的坑人问题了。

Q1:你的XX项目最后卖给客户的产品是个什么样的形式,app还是其他?你的模型部署在什么型号的板卡?
出现这个问题很可能是简历中的项目经历的真实性被怀疑,对于CV工程师(真的CV,不是LC上常提到的CV)而言,熟悉常见板卡的性能参数与部署模型时的注意事项是必须的,即使你真的不确定哪个项目对应哪个板卡,或者确实用假简历应聘,如果事先在这方面做好功课,也可以正常应对。

Q2:你最近在读什么专业书籍,在看什么已经被认证的视频课程?
非科班转码应聘初级岗位容易被这样提问,在如实回答的基础上,强调专业书籍和视频课程都是基础,进一步提高,还是依靠阅读前沿论文和在工程中积累经验。

Q3:你的研究生期间是怎么度过的?
这说明你的工作经历不够理想,硕士期间研究成果也不被对方接受(比如我本人的情况),如果自身的读研经历确实不佳,可以回答课题组做的方向和自己喜欢的方向严重冲突,所以主要时间花费在自学AI上。

Q4:你的理想的工作团队氛围是什么样的?
我应聘的其中一家公司是通过了所有技术面,挂在最终HR面,很可能是因为这个问题。这是个双向选择,你可以真实表达自己的希望,但作为技术岗位,还是要着重强调良好的技术学习提升氛围,充分有效的专业沟通。只要你表达清晰流畅,即使被挂掉也不应后悔,因为假如你能去也会发现不符合自己期望。

Q5:你的业余时间用来干什么?
出现这种问题基本确定对方福报严重。如果不能接受,随意回答,然后把这家公司拉黑就可以了。如果可以接受,应该回答业余时间用来阅读paper来保证自己的专业储备能紧跟前沿,表达自己不是好逸恶劳的人。

总之,即使一片红海,“三无”人员也不是毫无机会,关键还是看自身的决心。也希望想入算法岗的朋友们,不要被主流舆论吓怕,专心准备面试,只要基础扎实,内心强大,面包总会有的~

评论 (60)