找回密码
 立即注册
楼主: JamesB

面试官如何判断面试者的机器学习水平?

[复制链接]
发表于 2021-7-6 15:11 | 显示全部楼层
湾区某司员工,我们组在招 ML Engineer/Data Scientist,所以近几周面了不少人,有电面有onsite,讲一下个人经验。
首先我很佩服高票回答能在面试中问那么细的,就我的经验而言,电面或onsite一场无非一个小时左右,对于单个面试官来说,能对面试者机器学习方面的基础知识和数理、编程基础有些了解就很不错了。由于面试流程所限,在我司根本不可能有让人花大半个小时闷头实现个神经网络。


因为我们组偏重应用,做机器学习的目的都是为了解决实际问题,所以招人时对机器学习知识和工程能力都有要求。基本上每个人都要有能力做到:建模、跑实验、作分析、清理大量数据(TB级以上)、实现并部署模型到生产环境。所以我下面描述的面试内容并不仅限于机器学习。
一般来说面试流程是这样的:
基本有两类面试情形:
情形A: 偏重机器学习基础、数理知识,及利用机器学习解决问题的能力
单场面试:
    问一下做过的项目,挑一个最有意思的详细问 问一道涉及机器学习简单数学推导的题,一般是概率或者优化之类,然后要求写代码实现给一个实际的应用场景,要求面试者设计基于机器学习解决方案:从用什么模型,用什么特征到怎么部署到生产环境,什么都可以问。一般题目都是简化自我们工作中实际遇到过的问题。
情形B: 偏重算法数据结构、大数据处理、机器学习系统实现等
单场面试:
    问一道一般的算法题,不至于太难,一般用来测试面试者对常用的数据结构是否熟悉,工程能力是否扎实,写代码时思维沟通是否清晰,还有代码风格之类问一道涉及MapReduce的题,当然不会是最简单的那种word count,一般也是需要一定思考的。问一些关于机器学习系统的题,比如分布式算法,比如在线学习的系统如何设计等等。
发表于 2021-7-6 15:20 | 显示全部楼层
我面试候选人时必问的一个问题
    GBDT中的梯度是什么对什么的梯度?给一个有m个样本,n维特征的数据集,如果用LR算法,那么梯度是几维?同样的m*n数据集,如果用GBDT,那么梯度是几维?m维?n维?m*n维?或者是与树的深度有关?或者与树的叶子节点的个数有关?
就这样一个简单的问题,面试过2位数的候选人了,回答正确的不到5个。回答错误的人中,包括一个前阿里P7,和一个kaggle比赛中多次进入top 5%的“竞赛达人”。
发表于 2021-7-6 15:30 | 显示全部楼层
各种办法都试过,发现只要是问问题,都会有偏差。面试者都是有备而来,曾经面过一个硕士生,来写毕业论文的,回答的挺溜,就是那些机器学习常用题,什么svm的margin啊,核函数的作用啊,拉格朗日乘子,对偶问题之类的玩意。这还是我自己要带的,还算认真。结果简直太悲剧了,根据工作中的表现,那些问题应该不可能是真正理解了的,背答案可能性不小。后来我都精分了,以为不是自己面的他,直到最后去查邮件,发现真的是自己面的,目瞪口呆。也可能是我遇到厉害角色了。
后来开始试验面试读论文,发现这是个好办法。因为机器学习这东西,基础的当然还是要问问,但真正体现功夫还是要通过读论文。可以说,基础知识和理论体现了面试者的基本面,而对论文的理解能力则体现了他的发展潜力。
一个方法是找一篇比较冷门,比较新的大论文,很长的那种,发给面试者给三天左右的时间在家研究,面试的时候做一个presentation,做完之后提问。这么一来,面试者的学习能力,表达能力都能得到很好的展示。论文里哪些地方没理解到位的地方,面试者挖掘的深度都是很明显的。有的面试者能进行深度的文献递归,在presentation里他会把他做的工作全部体现出来的,递归到哪个程度,对这个领域理解到了什么程度,都能看出来。最后还可以问他进一步优化的可能性有哪些,头脑风暴一下,对发散性思维又是一个展示。
另一个办法是面试现场读论文,二十分钟左右的时间。这样的话基本相当于压力面试了,也比较节省时间。如果面试者没读过这论文,一旦慌神,可能就蒙了,都是数学和细节,压力状态下可能看不明白。如果在压力状态下还能很好的理解陌生的论文,那是很靠谱的了。意外情况是面试者对这个领域比较熟悉,秒懂。所以要尽量选择冷门一点的,公式多一点的,这个倒是不难。
这也比较接近真实的工作状态,面试者自己也学到了东西,大家都很开心。
发表于 2021-7-6 15:40 | 显示全部楼层
谢邀,看到许多面试官掉进了坑里,考察方向略微有误。
我在阿里四年,在搜狗十年,在2010年开始从事机器学习算法工作,应该是国内第一批大规模机器学习问题的参与者,和广告、推荐、CV、CG等不同方向的同学合作过,也面试过近千人了。下面我来讲讲我的看法和具体的实践经验,供各位面试官和候选人参考。


(点击头像关注我们账号,别错过更多阿里工程师一线技术干货)
————————————————————————————————————————
许多面试官掉进了坑里,对于候选人主要关注研究新进展、模型优化方法等等基础知识的考核,也关注了对于调参技巧等等技能考核。
但实际上公司最关注的是三个问题:
一是候选人是否能够解决当前的问题,这里面对于实际问题的理解和抽象能力尤其关键;
二是团队合作,候选人是否可以与其他同学形成合力,共同实现目标;
最后一个是候选人入职后会有绩效、晋升的需求,候选人成长潜力如何,是否能和团队一起共同成长。
这3个问题都是需要关注的,在某些方面会比机器学习的基础知识更重要。


下面我会回答这样几个问题:
1、面试如何设计?
2、问题解决能力如何考察?
3、团队合作能力如何考察?
4、成长潜力如何考察?
5、候选人如何准备面试。




1、面试的设计。

面试需要的是尽快完成对候选人的考察,从而判断是否录用候选人,对于面试官来说,需要考虑的是是否接纳候选人成为未来的伙伴。
需要注意的是,面试题不宜经常变动,用相同/相似的题目面试不同候选人,会看到不同候选人的差异,有助于快速做出正确的判断,也就是大家常说的结构化面试。
面试的环节一般分为几步,自我介绍、算法/项目问答、编程题/逻辑题、最后总结。
面试首先是看到候选人的优点,而不是寻找缺点,首先的自我介绍环节,对候选人进行全面的了解,同时让候选人放松下来,以便正常的发挥自己的水平。
算法/项目问答,一个投递岗位是算法工程师的同学,如果没有合理的理由,算法的基本理解是需要过关的,对于低级别候选人,要现有深度再有广度,许多面试官刨根问底,也是为了考察候选人的思考深度。
编程题/逻辑题,为什么算法工程师也会这么重视编程题和逻辑题呢?目前的许多候选人算法背景差距很大,隔行如隔山,面试官与候选人钻研领域有时候并非匹配,考察的复杂度就会大大增加,而编程题和逻辑题考察每个候选人都可以使用,面试官非常喜欢这种题目。
最后的环节建立在前面环节的基础上进行考察,如果在知识和技能上失分太多,这个环节可以忽略,如果前面的环节表现比较好,可以和候选人深入交流。交流对未来的想法,对自己的优缺点的认识,从而建立更完整的对候选人的认知,看看是否匹配公司需求,避免做出错误判断。




2、问题解决能力如何考察?

对于问题解决能力的考察,关注的不是问题是否被候选人完整解决,而是得到答案的思考路径和方法如何。
具体关注三个能力:
一是读题能力,是否能够正确定义问题;
二是分析能力,识别问题中的关键点和难点,确定解题思路;
三是应用能力,是否能将已有方法在具体情境中应用,真正掌握了先进技术。
一种方法是逻辑题或者编程题,首先关注候选人是否能够通过沟通和互动,对问题建立正确的理解。其次是看候选人面对问题的时候,是能够进入问题情境,就事论事的分析问题,一步步建立对问题理解,还是说急于把未知问题套到一个已知问题的框架内解决,或者是在思考不完整的情况下轻易下判断。考察的时候一定不要用题面清晰,解答复杂的成题,这样的题目候选人即使能解决也是背下来解题思路。
我曾经用过这样一道面试题,12个球,其中有一个坏球,坏球和好球重量不同,用一个电子秤把坏球找出来,至少需要多少次。
这是一道很老的IOI题目,有的同学学过天平称球,就想套用天平称球,发现不适用,还是跳不出来思考框架,这样的同学在面对实际问题的时候,也缺乏灵活的解决办法。
还有的同学着急去探索最优解法,而实际问题中大部分情况,我们只需要可行解,然后在可行解基础上不断优化即可。
这道题如果是忘记脑中的各种套路,从题目本身思考,得到可行解甚至次优解并不难,也可以排除一些不可能的情况,逼近最优解。如果能够对于问题的本质进行思考,从而给出解题的完整思路,因为考试时间问题无法做出最优解,也是可以获得高分的。
另一种方法是把同学拉到一个具体的算法情境中来看,就像是有个高赞回答提到的现场调试算法,但现场调试需要时间比较长,题目的设计也需要下功夫,还需要有个题库,避免漏题,公司里有专门的同学负责此事的话可以考虑。更通用的方法是对于同学应该比较熟悉的领域,构造一个实际场景,观察同学的思考角度和方法。
比如同学对图像识别比较熟悉,可以问问同学,一个每个类目目前只有10条数据,大约100个类目的家具分类问题如何解决比较好?回答的时候既包括模型选型,也包括标注任务设计,迁移学习理解,实际问题中样本不均衡、噪声样本等问题的解决。
学术界对于这些单一问题都有相关的解决方案,但是在具体情境下的决策能力,还是非常考验候选人这些方法融会贯通、灵活运用的能力。


3、团队合作能力如何考察?

团队合作能力在面试中很难考察的很深入,最好是候选人实习一段时间,才能完整判断合作能力。面试过程中,主要关注候选人沟通中的一些特质体现。
第一,候选人在面试环节中是很自我的在思考、表达,还是尊重面试官、尊重题目。
第二,候选人的沟通能力如何,是否能够快速理解面试官问题,有疑问的时候是否能用沟通解决疑问。
第三,候选人表达能力如何,能够简明扼要的说清楚自己的观点,还是说表达缺乏重点,效率很低。


4、成长潜力如何?

成长潜力体现在自控力、主动性、学习能力几个方面。
自控力和主动性的考察,主要是体现在简历考核中,候选人是能够主动探索自己希望学习的方向,还是被动的接受学校的培养计划。当自己确定了努力的方向,是否能够按照自己的期望进行努力,还是说很容易放弃。
学习能力体现在题目考察中,读题的时候理解题目速度如何,分析题目时是否有很强的逻辑性,能够快速找到问题的关键。
成长潜力的考核是贯穿面试整个过程的,面试后需要尽快进行总结,从各个细节中形成完整的判断,候选人是否成长潜力合格。


5、候选人如何准备面试?

准备面试分为2个阶段,一个是长期积累,另一个是短期冲刺。
学习能力、学术能力、解题能力都不是短期能够突击的。
希望大家建立正确的学习观念,面试的目的是双方相互了解,进行匹配,通过一些短期手段,即时通过了面试,后续的工作也是很痛苦的。
一是长期能力培养。
leetcode是很好的工具,大家不要简单的去满足题目通过了,而是是否能够独立分析题面,理解题意,解题的时候都有哪些方法解决,优缺点如何,解题方法选型依据如何。坚持这样的思考过程,做了几百道题,编程和解决问题的能力自然提升了。
读论文、实验复现也是如此,首先关注论文的核心贡献,思考论文面对的问题背景如何,你有什么想法,论文中设计了什么样的解决方案,为什么这么设计。
主动性的培养可以尝试主动去参加比赛,以及各种活动,并不断改进方法提升成绩。
二是短期冲刺。
冲刺的目的是完整的展示自己,避免面试的短时间无法利用好,展示自己的优点。
首先是整理好简历以及相关内容的了解,说清楚自己的核心优点,简历内容中相关的支撑点都有哪些。
其次是对于自己的项目,看看相关资料,说清楚难点和自己的价值,也对于领域内其他人的相关工作可以简要说明。
最后是多演练,找同学模拟练习,表达熟练了,情境熟悉了,自然面试表现会好不少。


最后,我们团队也在招人~
商业机器智能部基础算法团队,负责淘宝、天猫等电商平台相关算法研究和创新,在KDD、ICCV、CVPR、NIPS、AAAI等国际顶级会议上发表多篇论文。
在3D机器学习方面,我们探索2D视觉算法和3D几何及视觉算法融合的先进技术,在3D建模、AI设计等方面处于国内领先水平,期待推动家居行业的技术革新。
欢迎感兴趣的同学投递简历或者交流,rongfei.jrf@alibaba-inc.com


(本篇回答作者:阿里巴巴淘系技术部  友闻)
————————————————————————————————————————
阿里巴巴集团淘系技术部官方账号。淘系技术部是阿里巴巴新零售技术的王牌军,支撑淘宝、天猫核心电商以及淘宝直播、闲鱼、躺平、阿里汽车、阿里房产等创新业务,服务9亿用户,赋能各行业1000万商家。我们打造了全球领先的线上新零售技术平台,并作为核心技术团队保障了11次双十一购物狂欢节的成功。详情可查看我们官网:阿里巴巴淘系技术部官方网站
点击下方主页关注我们,你将收获更多来自阿里一线工程师的技术实战技巧&成长经历心得。另,不定期更新最新岗位招聘信息和简历内推通道,欢迎各位以最短路径加入我们。
阿里巴巴淘系技术
发表于 2021-7-6 15:46 | 显示全部楼层
作为一名久经沙场的算法面试官,最近陆陆续续也面了几十个同学。有几个学生的给我的感触很深。一个是学车辆工程的学生,那个学生还挺实在,上来就说非常抱歉我可能不太符合贵公司的招聘要求。。问了一下,感觉没咋写过代码。。。我作为转行的,我对转行的同学都是非常友好的。基本只会看学校这个基本面,不会卡专业,不会不给转行学生机会,真的看实力。
那对于算法工程师什么是实力的体现呢?我认为主要是1. 理论基本功 2. 工程能力 3. 业务理解能力。这也是面试官判断面试者机器学习水平的三个重要维度。
    理论基本功 - 机器学习与深度学习的算法知识
数学原理和机器学习基础很重要,面试三板斧LR,SVM,GBDT的原理是必须要搞清楚的,内部细节也要懂,最好自己实现过才讲得清。例如你说你用过xgboost,那你就要说得清xgboost好在哪里,有哪些改进。特征工程也很重要,是基本功。现在算法更新很快,推陈出新,只有基本功好,才能快速跟上前沿。强烈推荐李航的统计学习方法,真心很精练了。
此外,针对只有炼丹(深度学习)经验的同学,我还喜欢问的问题:
    RNN、LSTM、GRU时序模型的特点梯度弥散与梯度爆炸的原因与解决方案激活函数的优缺点什么是L2正则化,为什么L2正则化可以防止过拟合?L1正则化与L2正则化有什么区别和联系。
2. 工程能力
初学者的一大误区就是觉得深度学习就是网上找个公开数据集,github上找个开源代码,然后开始花里胡哨就完了。实际工作中算法工程师对工程能力的要求非常是非常硬核的。首先算法工程师是一名工程师。模型训练出来绝对不是万事大吉了,只是模型落地的第一步。
模型太重速度太慢,不符合线上需求,怎么办?
    模型部署和推理,如何提速?怎么做模型的压缩、剪枝、量化quantization?现在我们训练数据轻轻松松上千万视频,数据的预处理也成为了主要瓶颈(bottleneck)之一,如何给数据预处理提速?前面说的都是深度学习的,然而很多场景是不适合用深度学习的。很多线上模型用的都是XGBoost。如何给XGBoost加速呢?
当然,这些都是针对深度学习领域工程能力的考查,此外也会考查传统的算法题与数据结构(LeetCode),有些情况也会问一些system design的问题。
3. 业务能力
考查业务能力的主要是业务场景题,让面试者设想一个业务场景,考查他该如何解决?
    对于预测蔬菜价格的场景如何构建特征,主要是从哪几个纬度思考?为什么要构建某个特征。给定某用户的app里浏览信息,如何判断此人是否有车?对于xxx任务如何构造一个稳定、可靠、精准的评测集?
现在,算法工程师的要求的确水涨船高,基本要求候选人三个方面都没有短板。理论基本功,只要好好学过斯坦福的那几门课(cs229, cs231, cs224)问题到不大。业务场景题,有过实际经验的同学,也基本能说上两句。最要命的恰恰是工程能力,很多同学都是在工程能力上折戟成沙。
还好英特尔工程师们分析人工智能领域遇到的种种计算瓶颈,把他们的解决方案用更贴近硬件的方式整合进英特尔至强处理器里,为人工智能算法提供澎湃动力,也能解决算法工程师们的燃眉之急。回到我前面提到的工程能力的几个难题:
    模型部署和推理,如何提速?
英特尔至强可扩展处理器集成 AVX-512 指令集,为算法模型开辟了专用快车道。英特尔开发的oneDNN函数库在AVX-512 指令集进一步开发, 它不仅集成有众多优化的深度学习基元,例如直接批量卷积、池化、激活等,可提升各类深度学习应用的效率,更可针对 CPU 的各项特性实施优化。轻松将算法模型中的各种操作向量化为 AVX-512 指令,并在支持 AVX-512 指令集的在英特尔至强可扩展处理器中带来强劲算力。
英特尔oneDNN 中的深度学习基元向量化为 AVX-512 指令
    怎么做模型的压缩、剪枝、量化呢?
大多数 AI 模型多采用传统的 FP32 数据格式,其实这种格式完全可以在损失很小精度的前提下,转换成 BF16 或 INT8 格式,以换取更高的处理效率或者说吞吐量。但人为转换费时费力,不仅无法根据处理器平台特性实施优化,且转换后的模型也无法兼容不同的硬件平台。
为此,英特尔推出了 OpenVINO工具套件,则是专业和省心工具的代表,它提供的模型量化功能,为上述问题提供了应对良方。它能让基于不同 AI 框架,如 TensorFlow、MXNet、PyTorch 等构建的 FP32 数据格式 AI 模型,在损失很少精度的情况下转化为 INT8 和 BF16 数据格式。同时可以利用英特尔DL Boost技术把对低精度数据格式的操作指令融入到了 AVX-512 指令集中,即 AVX-512_VNNI (矢量神经网络指令) 和 AVX-512_BF16(bfloat16),对模型的训练和推理都提供了强大的支持。
使用 OpenVINO量化压缩的模型服务,其推理性能是普通的 Tensorflow Serving推理性能的3.4倍,效果群拔。
CDS 首云针对不良视频内容检测场景的验证测试结果(https://www.intel.cn/content/www/cn/zh/now/data-centric/openvino-tool-suite-ai-workshop.html)
    数据的预处理也成为了主要瓶颈(bottleneck)之一,如何给数据预处理提速?
英特尔的OpenVINO工具套件,对传统的 OpenCV 图像处理库也进行了指令集优化,实现了性能与速度的显著提升。
如下图所示,在典型的图像抠图应用场景中,OpenVINO工具套件带来了 5 倍的推理速度提升,而在不良内容检测和文本检测场景中,效率提升更是达到了 6 倍和 11 倍之多。


OpenVINO 工具套件在爱奇艺 AI 应用场景中带来的性能提升(https://www.intel.cn/content/www/cn/zh/now/data-centric/openvino-tool-suite-ai-workshop.html)
    如何给XGBoost加速呢?
这时候就可以用上英特尔开发的数据分析加速库DAAL(Data Analytics Acceleration Library)。在英特尔至强处理器上,英特尔优化了XGBoost 代码库,最新的优化成果已经集成到 XGBoost 1.0 及之后的版本。相比 XGBoost 0.9 版,新版本性能提升 2 倍以上,最高达 54 倍。
基于英特尔DAAL优化的xgboost(英特尔中国制造行业AI实战手册)
总而言之,算法同学非常值得深入学习英特尔一系列工具箱,如OpenVINO、oneDNN 、DAAL等,尤其是它们所属的 oneAPI 统一编程模型。这是一个跨架构工具组合,帮助开发者简化异构编程的流程、加速性能、提升生产力。凭借这些高级工具,开发者可在英特尔CPU、GPU、FPGA上实现AI工作负载的加速,并使代码可以在目前及未来的英特尔处理器及加速器上运行。
掌握好oneAPI,便可以快速拥有算法模型上线部署的各种能力,可以轻松地将训练好模型在英特尔平台的各种处理芯片上快速部署起来,提高自己的算法落地能力!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-6 15:50 | 显示全部楼层
说一下我目前面试最爱聊的,总结就是:
论“调优”。
我觉得,无论是一个有过2年或2年以上工作经验的本科,或者是有过1年或以上工作经验的硕士,或者是博士,要让我满意,都需要有一定的模型调优技术与直觉。
那什么是“调优”技术呢,简而言之,就是当面对一个要用机器学习技术解决的任务时,当调用了比较通用的或者是现有的模型时,面对那一串串出来的指标数字(例如准确度)。该如何进行“下一步”。
吴恩达曾经出的《Machine Learning Yearning》,链接在此,我就很喜欢,不过我觉得这本书传授的经验还不是很全面,又或者说很多的经验是和应用领域相关的,所以一本书难以囊括全面。所以,模型调优作为面试的考题,就很合适了,能够真正地考察面试者是否是实操过调优这门有意思的技术。
那为什么要用模型调优来作为面试主考题呢。很简单,如果一个人能调的一手好优,我相信他会具备:
1, 对调优过的算法比较深的理解。
2, 一定的数据分析以及数据敏感性
3, 自己动手定制化算法的能力
另外通常还具有对应用领域一定程度的业务理解。
这种人,我会喜欢我会珍惜,如果共事我会很开心,因为如果与其合作进行了一次成功的模型调优会是很让人愉悦的事情,而中间的过程,可能会让彼此都学到挺多。
----------------
不过说实话,我说的这个关于调优的面试,对面试官也是有比较高的要求的。对算法理论要扎实,对error analysis要熟练和敏锐,甚至是需要有比较丰富的实战经验的。emmm...所以是不是如果面试官提关于模型调优的问题,并且展示出有意思的经验,也能够比较吸引面试者呢。
发表于 2021-7-6 15:52 | 显示全部楼层
机器学习水平并不只是对算法的理解,算法只是工具,重要的是:
    能否有思考地解决问题、并把方案高效实现能否表达自己的想法、理解他人的诉求是否上进好学、思维敏捷,有一定的潜力
另外,对于不同成长阶段也有不同要求。马上毕业的同学,能做好任务、把方案实现就很好了。而工作了一两年的同学,则要求独立解决问题,对问题进行拆解并设计方案;对于工作再久点儿的同学,则要求有一定的业务积累,并能主动发现问题,协调资源进行解决,创造出一些「价值」。
我也当了一段时间的初级面试官,分享一下我在每个环节会考察的点,希望能对大家有帮助。
项目+基础考察

这个环节的主要目的是完整考察面试者如何在项目中思考、解决问题,并表达出来。举一些算法面试中的负例:
    整体叙述没有逻辑和结构:一看就准备的不充分。可以提前准备一个1分钟内的整体介绍和5分钟以上的各个项目介绍不清楚数据集如何构造、评估指标的选取:这些很容易被大家忽略,大部分时候数据和指标都是默认或者上级交待下来的,但具体为什么这么做、换其他的会不会更好也需要思考一下没做过方案调研,不知道为什么用这个模型:虽然现在都是无脑精调BERT,但同样有很多论文和方法。我很在意面试者是否接到项目时去深入了解这个任务,调研从深度学习开始到现在的解决方法,并思考后选择最适合的(速度-精度)没想过优化方向:算法是做不到100%的,虽然很多项目做到一定程度就搁置了,但是否给出优化方向也会体现个人对项目的思考
我通常会在项目中穿插对机器学习基础的考察,比如用过BERT就来说一下各个模块的计算流程、用过HMM CRF的就来说一下区别、用过LSTM就说一下公式,通常会问的越来越深,问到最后答不上来也没关系,不过尽量多做准备,坚持几轮。让面试官看到你真的深入到了项目涉及的每个模型,主动去学懂用到的技术,而不是调调包就完事儿。
也会穿插一些发散题,比如做生成任务就来说说这个领域最近的进展,如果把任务中的短文本加长都怎么解决。其实这些问题面经里都可以刷到,但不会的还是很多。。
如果没时间的话可以看看我总结的算法工程师面试点脑图:
算法工程师面试知识点整理Anyway,发散题的减分不是特别大,在初期毕竟是知识深度更重要,即使不了解那么多,但可以把自己的每个项目做深挖透也是很难得的。
编程能力+智力考察

Coding能力虽然被一些人诟病,但如果coding不好的话,实现idea、pipeline的效率也会变慢。另外在做题的途中还可以考察面试者的沟通能力和思维。做不上来没关系,面试官也不是非要为难人,而是更希望同学能够主动交流,表达自己的思考过程,写出一个基本可行的代码
即使medium、hard题做不出来,但基本的知识点还是要学习的,显得起码学过一些,拿到题也知道考点在哪里:
Leetcode刷题必备:CMU大佬的笔记+高频题脑图+1470全题解与编程题一起的还会偶尔有些智力题、数学题考察。这个就看面试官的风格了,有的想看看大家的思维开放程度,但我个人觉得这些其实和真实工作内容差的比较多。不过排列组合、概率计算还是算法工程师的必备基础,肯定要准备一下。
开放题+人生题

开放题是指给定一个场景和问题,让面试者设计解决方案,去模拟真实的工作场景。对于这类题,我往往期待的不是一个fancy的端到端模型,而是怎样去用最简单有效的方法快速构建出baseline。拿到题目后,可以先尝试对问题进行拆解,每个子问题就都对应着一个模块,之后确定每个模块的评估方法、模型,以及训练数据的准备(最好是无监督或者半监督,减少人工成本)。最后就是业务的sense,预知一些可能的问题和重要特征。
人生题则是各种灵魂拷问了。比如觉得自己有什么不足、最近看了哪些论文、平常怎么分配时间等等。从这些题目中可以看出面试者的性格和三观,没有固定的答案,只是考察下眼缘和潜力。尽量把自己出彩的点展示出来,比如细心、爱拼、好学等等。
佛系心态

最后说一下心态。
面试不通过的原因有很多。虽然网上一直流传有刷KPI的现象存在,但大部分面试官的时间都很宝贵(要搬砖、要开会),不会专门为了挂人面试,大家经常是自己项目忙得焦头烂额的时候,被安排上了面试日程,所以迟到这种现象还是很普遍的。。。也有时碰到不合期望的面试者,快速结束面试,虽然显得不尊重人(毕竟面试者可能准备了很多、很想进这家公司),但在面试官看来可能只是不想耽误双方时间。
Anyway,面试不像我们中考、高考一样重要,最坏的结果也就是不通过而已,现在有那么多岗位和公司,挂了大不了去面其他家,或者过半年、一年再投这家。况且面试结果不仅和个人能力有关,也跟眼缘、市场竞争有关,不必因为一场失败而否定自己。如果经历了一场糟糕的面试,或者dream company一直没有回复,尽量不要纠结在这个点上,调整心态继续攻克其他面试对自己才是更重要的。
最后,面试过了就开始pk offer了,我认为可以从公司前景、部门地位、Leader水平、对能力的成长几个角度对比,欢迎参考我的踩坑总结:
你觉得是去大公司打杂好,还是去小公司磨炼好?---
欢迎备战2021年秋招的同学加入我们的「秋招必上岸群」一起交流,添加微信「leerumorrr」备注知乎+秋招即可,我会在群里解答大家的问题,并提供各种大厂部门直招岗位~
总结不易,觉得有帮助请给 @李rumor 点个赞哇~祝大家面试必过!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-6 15:55 | 显示全部楼层
也来回答一下,我就喜欢非常具体,非常细节,这里就狭隘地用深度学习来回答机器学习的问题了,不喜可以轻喷,毕竟言论自由。
插入一句:我在阿里开设了深度学习系列课程,欢迎持续关注:
深度学习原理与实践 - AI学习 - 阿里云天池除了面试者简历上的项目,竞赛,论文等硬货之外,斗胆先答两条思路,然后再推10多个专栏供大家挑选题目,首先看两条思路。
一,分等级

直接将被试者分为几个水平,斗胆将学习深度学习的同志分为5大境界,分别是白身,初识,不惑,有识,不可知,下面一个一个道来,以计算机视觉方向为例。
1 白身
所谓白身境界,就是基本上什么都不会,还没有进入角色。在这个境界需要修行的内容包括:
(1) 熟练掌握linux及其环境下的各类工具的使用
(2) 熟练掌握python及机器学习相关库的使用
(3) 掌握c++等高性能语言的基本使用
(4) 知道如何获取和整理,理解数据
(5) 掌握相关的数学基础
(6) 了解计算机视觉的各大研究方向
(7) 了解计算机视觉的各大应用场景
(8) 了解行业的优秀研究人员,知道如何获取最新的资讯,能够熟练阅读简单的技术资料
如果掌握了这些,那么就从白痴,不,是白身境界晋级了。怎么判断这个境界呢?可以参考以下的文章,看看掌握的如何。
AI白身境界系列完整链接:
第一期:【AI白身境】深度学习从弃用windows开始
第二期:【AI白身境】Linux干活三板斧,shell、vim和git
第三期:【AI白身境】学AI必备的python基础
第四期:【AI白身境】深度学习必备图像基础
第五期:【AI白身境】搞计算机视觉必备的OpenCV入门基础
第六期:【AI白身境】只会用Python?g++,CMake和Makefile了解一下
第七期:【AI白身境】学深度学习你不得不知的爬虫基础
第八期: 【AI白身境】深度学习中的数据可视化
第九期:【AI白身境】入行AI需要什么数学基础:左手矩阵论,右手微积分
第十期:【AI白身境】一文览尽计算机视觉研究方向
第十一期:【AI白身境】AI+,都加在哪些应用领域了
第十二期:【AI白身境】究竟谁是paper之王,全球前10的计算机科学家
2 初识
所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。在这个阶段,需要修行以下内容。
(1) 熟练掌握神经网络
(2) 培养良好的数据敏感性,知道如何正确准备和使用数据
(3) 至少熟练掌握一个深度学习框架的使用
(4) 熟悉深度学习模型的基本训练和调参,网络设计
(5) 掌握归一化,激活机制,最优化等对模型性能的影响
(6) 能熟练评估自己的算法,使用合适的优化准则
这是这一个系列的文章
AI初识境界系列完整链接:
第一期:【AI初识境】从3次人工智能潮起潮落说起
第二期:【AI初识境】从头理解神经网络-内行与外行的分水岭
第三期:【AI初识境】近20年深度学习在图像领域的重要进展节点
第四期:【AI初识境】激活函数:从人工设计到自动搜索
第五期:【AI初识境】什么是深度学习成功的开始?参数初始化
第六期:【AI初识境】深度学习模型中的Normalization,你懂了多少?
第七期:【AI初识境】为了围剿SGD大家这些年想过的那十几招
第八期:【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?
第九期:【AI初识境】如何增加深度学习模型的泛化能力
第十期:【AI初识境】深度学习模型评估,从图像分类到生成模型
第十一期:【AI初识境】深度学习中常用的损失函数有哪些?
第十二期:【AI初识境】给深度学习新手开始项目时的10条建议
3 不惑
进入到不惑境界,就是向高手迈进的开始了,在这个境界的重点就是进一步巩固知识,并且开始独立思考。如果说学习是一个从模仿,到追随,到创造的过程,那么到这个阶段,应该跳过了追随,进入了创造的阶段。
如果是在学校读研究生,就要能够发表水平不错的文章,如果是在公司做业务,就要能够提出正确且快速的解决方案,如果是写技术文章,就要能够信手拈来原创写作而不需要参考。
这个阶段需要修行以下内容:
(1) 熟练玩转数据和模型对一个任务的影响
(2) 能够准确的分析出模型的优劣,瓶颈
(3) 对于新的任务能够快速寻找和敲定方案
(4) 拥有各种各样的深刻理解深度学习模型的技能,从可视化到参数分析等等等
(5) 能够优化模型到满足业务的需求,实现工业级落地
(6) 了解行业的最新进展,并在某些领域有自己的独到理解
AI补惑境界系列链接:
第一期:【AI不惑境】数据压榨有多狠,人工智能就有多成功
第二期:【AI不惑境】网络深度对深度学习模型性能有什么影响?
第三期:【AI不惑境】网络宽度对模型性能有什么影响?
第四期:【AI不惑境】学习率和batchsize如何影响模型的性能?
第五期:【AI不惑境】残差网络的前世今生与原理
第六期:【AI不惑境】移动端高效网络,卷积拆分和分组的精髓
第七期:【AI不惑境】深度学习中的多尺度模型设计
第八期:【AI不惑境】计算机视觉中注意力机制原理及其模型发展和应用
第九期:【AI不惑境】模型剪枝技术原理及其发展现状和展望
第十期:【AI不惑境】模型量化技术原理及其发展现状和展望
第十一期:【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望
第十二期:【AI不惑境】AutoML在深度学习模型设计和优化中有哪些用处?
更多可以参考我的新书,全面系统讲解深度学习模型设计!
言有三新书来袭!业界首次深入全面讲解深度学习模型设计4 有识
到这里,就步入高手境界了。可以大胆地说自己是一个非常合格的深度学习算法工程师甚至是研究员了,在自己研究的领域里处于绝对的行业前沿,对自己暂时不熟悉的领域也能快速地触类旁通。
无论是眼界,学习能力,还是学习态度都是一流水平,时而大智若愚,时而锋芒毕露,当之无愧的大师兄。
5 不可知
最后一个境界,就是不可知境界,超出我能描述的范围了。举一个例子,马文·闵斯基,既可以让AI生,又可以让AI死,这样的人是不会遇到的,放心好了。
如果你不认可这个分等级的,OK,来一个简单一点的,问细节。
二,问细节

问容易被面试者忽略的很小,但是又很重要的问题,这些问题通常有这些特点:
    技术相关足够聚焦容易被忽视普通但是不简单可以引申很多思考
这里提供几个。
做过图像分类项目或者看过文章的小伙伴们应该都知道,在论文中进行各类方法的比较时,要求使用同样的数据集。而为了公平的比较,网络的输入大小通常都是224*224的大小,那为什么呢?
【AI-1000问】为什么深度学习图像分类的输入多是224*224
(2) 相信大家也都知道LeNet5这个经典的卷积神经网络,它有3个全连接层,输出维度分别是120,84,10,不知道大家知不知道为什么倒数第2个全连接层的维度是84呢?
【AI-1000问】为什么LeNet5倒数第二个全连接层维度为84?
做图像处理的我们应该都知道,OpenCV是我们必备的一个工具,我们在使用OpenCV读取图像时你应该也发现了读取出来的数组居然是BGR格式,而不是我们听的最多,用的最多的RGB格式,这是为什么呢?
【AI-1000问】为什么OpenCV读取的图像格式是BGR?
从某些时刻开始,小卷积开始流行,那么小卷积到底相比大卷积有什么优势呢?
【AI-1000问】为什么现在大家喜欢用3*3小卷积?
大家都知道有测试集和验证集,这两个到底是有什么不同的定位呢?
【AI-1000问】训练为什么要分测试集和验证集?
问他10个小问题,看看能答出来几个,要是只能答出来两三个,那就说明基础不扎实了,能答出来八九个,那说明很踏实,这样的人是可以干活的。你说这些问题太简单,没问题,那就找更难的呗。我只是想说,简单问题看基础,比什么都合适。
以上内容不满意,那就再加内容,问问对这些掌握地怎么样。
研究方向相关等
【技术综述】闲聊图像分割这件事儿
【技术综述】“看透”神经网络
【技术综述】你真的了解图像分类吗?
【技术综述】一文道尽R-CNN系列目标检测
【技术综述】万字长文详解Faster RCNN源代码
【技术综述】一文道尽softmax loss及其变种
【技术综述】深度学习中的数据增强方法都有哪些?
【技术综述】为了压缩CNN模型,这几年大家都干了什么
模型解读系列文章(更新中):
第一期:【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构
第二期:【模型解读】network in network中的1*1卷积,你懂了吗
第三期:【模型解读】GoogLeNet中的inception结构,你看懂了吗
第四期:【模型解读】说说移动端基准模型MobileNets
第五期:【模型解读】pooling去哪儿了?
第六期:【模型解读】resnet中的残差连接,你确定真的看懂了?
第七期:【模型解读】“不正经”的卷积神经网络
第八期:【模型解读】“全连接”的卷积网络,有什么好?
第九期:【模型解读】从“局部连接”回到“全连接”的神经网络
第十期:【模型解读】深度学习网络只能有一个输入吗
第十一期:【模型解读】从2D卷积到3D卷积,都有什么不一样
第十二期:【模型解读】浅析RNN到LSTM
第十三期:【模型解读】历数GAN的5大基本结构
各种各样的模型结构,可以参考我的其他内容
【总结】言有三&阿里天池深度学习模型设计直播汇总,附赠超过200页直播PPT课件
【星球知识卡片】残差网络家族10多个变种学习卡片
【星球知识卡片】移动端高效率的分组网络都发展到什么程度了?
【星球知识卡片】注意力机制发展如何了,如何学习它在各类任务中的应用?
【知识星球】超3万字的网络结构解读,学习必备
问问这些,是不是掌握的还可以,还是能看出很多基础的,如果想知道更加,有三AI生态欢迎你。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-6 16:00 | 显示全部楼层
敢保证自己45分钟以内准确判断面试者机器学习水平的,感觉真是有点厉害,完全想像不到呢。。
学术水平的话,45分钟勉强看看面试者的publication,如果运气好和你的专业方向比较近的话,还能凑和几个不太烂的问题问一下,交流一下;45分钟内别让面试者觉得面试官是傻叉,我觉得就是胜利了。。
工业界干活的水平的话。。只能说工业界还是有很多ML的活儿只需要最基本的ML素养就够了,低端/junior 职位的话随便问两句ML design就差不多了;高端职位还是要看之前在别的地方做了什么,对于本公司的问题有没有什么有趣的见解。。。
发表于 2021-7-6 16:03 | 显示全部楼层
刚好有个朋友最近换行成功了,机器学习工程师!
我问了下他的面试经过,分享给大家参考一下:


面试官:8+18等于几?
朋友:11
面试官:同学,这么简单的问题你都不会,你走吧!
朋友:19
面试官:行了 ,咱们别浪费时间了
朋友:23
面试官:TMD,8+18等于26啊!
朋友:26!
面试官:恭喜你,下周来入职。


以上内容仅供娱乐......抱歉没有提供有用的回答。分享点机器学习的练手项目,希望能帮助到大家:
算法基础

    基于SVM的猫咪图片识别器
SVM(支持向量机)是一种常用的机器学习分类算法。教程使用HOG+SVM算法和OpenCV实现一个图片分类器,通过自己训练分类器,达到可以判断任意图片是否是猫咪的效果。


2. K-近邻算法实现手写数字识别系统
从电影题材分类的例子入手,详细讲述 k-近邻算法的原理。在这之后,我们将会使用该算法实现手写数字识别系统,书籍教程配套实验练习,帮助您更好得实战。


3. Spark 基础之使用机器学习库 MLlib
你将可以学习到 Spark 的机器学习库—— MLlib 的相关知识,了解 MLlib 与 ML 之间的区别和联系,掌握 MLlib 中的几个基本数据类型。同时,还将通过一个电影推荐的实例,讲解如何利用机器学习算法解决实际问题。


4. 决策树实战项目-鸢尾花分类
了解决策树的基本概念,学习决策树生成过程中的 ID3, C4.5 及 CART 算法及原理。最后通过 scikit-learn 提供的决策树算法完成鸢尾花分类实验。


5. 使用逻辑回归预测IPO市场
在20世纪90年代末,获得了对的IPO(首次公开募股)就像赢得彩票一样。通过对一系列数据进行清洗、建模、分类,来获一个可以预测IPO市场的简单模型。


6. 《Python 贝叶斯分析》- 利用逻辑回归实现鸢尾花分类
讲解逻辑回归模型的概念,以及由线性回归扩展为逻辑回归的逆连结函数概念,并利用逻辑回归对鸢尾花进行分类。




中场休息......笑一个吧!


基础项目

    人机对战初体验:Python基于Pygame实现四子棋游戏
利用Python模拟AI和玩家进行四子棋游戏,利用游戏实验Pygame库,为游戏提供界面和操作支持。AI算法借用蒙特卡洛搜索树思想。通过设置AI的难度系数,即AI所能考虑到的未来棋子的可能走向,从而选择出最佳的方案和玩家对抗。


2. Python 实现英文新闻摘要自动提取
新闻摘要提取就是除去新闻中冗余的部分,只保留关键的语句。教程将通过两个实验来为大家介绍两个不同的提取摘要算法,并通过python语言完成英文新闻摘要的自动提取。


3. 使用 Python 实现深度神经网络
教你使用 Python 实现一个深度神经网络,让你在实际动手的过程中理解深度学习的一些基本原理,带你真正入门深度学习。


4. 使用卷积神经网络进行图片分类
卷积神经网络特别适合于处理图像相关问题,教程一边讲解卷积神经网络原理,一边带你动手使用caffe深度学习框架进行图片分类。


5. 基于卷积神经网络实现图片风格的迁移
基于卷积神经网络,使用Caffe框架,探讨图片风格迁移背后的算法原理,手把手教你实现和Prisma一样的功能,教计算机学习梵高作画。


开源工具学习

    scikit-learn 实战之非监督学习
机器学习中,除了常见的监督学习之外,还有一个非常重要的分支 —— 非监督学习。本教程将带你了解非监督学习,并学会使用 scikit-learn 解决非监督学习问题。


2. scikit-learn 实战之监督学习
监督学习是机器学习中最为常见、应用最为广泛的分支之一。本教程将带你了解监督学习,并学会使用 scikit-learn 提供的各类监督学习方法解决实际问题。


3. 深度学习初探--入门DL主流框架
通过8个实验,带领同学们入门TensorFlow、Theano、Keras 及 Caffe 几个主流的深度学习框架,通过项目实践使同学了解如何利用这些框架搭建自己的深度学习神经网络。


中场休息......要么面带桃花,要么面带微笑。


进阶项目

    Python 应用马尔可夫链算法实现随机文本生成
应用马尔可夫链算法,实现根据给定训练文本,输出随机生成的中/英文文本。使用 Python 实现一个类,封装可供使用的方法。


2. 神经网络实现人脸识别任务
利用基于无监督学习的自编码器对人脸数据进行特征提取,进行图片降维,利用降维后的结果作为有监督学习分类器的输入,最终利用一个三层神经网络实现人脸识别的任务。


3. 基于无监督学习的自编码器实现
介绍一种基于无监督学习神经网络数据降维的一种应用——自联想存储器。


4. NBA常规赛结果预测:利用Python进行比赛数据分析
利用NBA在2015~2016年的比赛统计数据进行回归模型建立,最终在今年2016~2017的常规赛中预测每场比赛的输赢情况。


5. Python 气象数据分析:《Python 数据分析实战》
先会对数据进行清洗,然后运用 Python 中 matplotlib 模块的对数据进行可视化处理,最终从清晰的图表中得出我们的结论。


6. Twitter数据情感分析
使用Spark MLlib对Twitter上的流数据进行情感分析,并且利用Python的工具包basemap可视化美国不同的州对于曾经的总统候选人情感分析结果。


7. Ebay 在线拍卖数据分析
利用 eBay 上的拍卖数据进行数据分析,实现通过数据判断拍卖最终是否可以成功交易和预测最终成交的价格。


8. 大数据带你挖掘打车的秘籍
基于某市的出租车行驶轨迹数据,带你学习如何应用Spark SQL和机器学习相关技巧,并且通过数据可视化手段展现分析结果。


9. 使用 Spark 和 D3.js 分析航班大数据
在航班数据分析实验中,可以学习到如何使用 OpenRefine 进行简单的数据清洗,以及如何通过 Spark 提供的 DataFrame、 SQL 和机器学习框架等工具,对航班起降的记录数据进行分析。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-15 08:22 , Processed in 0.098832 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表