[toc]
春招早就告一段落了,本来早就想写点儿什么东西,记录下这段经历,但是无奈,太懒+拖延症,一直拖到了现在。现在秋招都马上要开始了,必须要逼自己动一下了,输出倒逼输入。为春招画下一个句号,也为秋招写下一个冒号吧。
心态
其实一开始今年心态是很不稳的。当时觉得自己底子太差,啥也不懂(现在也这么觉得),再加上算法岗“诸神的黄昏”,疫情加持等原因,所以当时对自己能不能找到一个合适的实习非常悲观。当时和家里人说:不用拿到一个你们听说过的公司的offer,只需要拿到一个我听说过的公司的offer就可以了。所以最终能找到阿里的这份实习,我也是从来没想过的。当然信心都是慢慢建立起来的,从一开始的作业帮,到后来的网易伏羲,华为诺亚,再到腾讯PCG,一步步慢慢觉得自己也可以做些事情。(当然在此也非常感谢一开始能有耐心面完我的面试官们),最后面快手的时候就已经很放松了,感觉完全是在和面试官进行学术交流。春招一共拿了六个offer,从2.8号开始刷题准备,到5.21号接到阿里意向书,暂告一段落,共历时三个半月,接下来就尽量以时间为轴对这段经历做个记录和总结吧。
简历
最一开始的一版简历是根据上次的找地平线实习时的简历改的,当时是老师给发了一个微软的招聘链接,一开始心想:老师太看得起我了,我这种水平投微软这不是自取其辱吗? 后来心念一动,觉得反正也是试试,体验一下呗,看看什么叫国际大厂。额,当时老师给推了微软的L师兄,但是我当时觉得师兄是不是太大佬了。我这水平也过不了,不如让Joulin师兄投一下吧。(给林神丢人了,以下简称林神)然后就让林神帮忙内推了下,顺带着请林神看看简历。林神就和往常上来先吹捧两句,我就知道不是正菜。然后开始输出干货,有几个硬伤:
1 | 1.项目太多,如果不熟的话建议砍掉微信小程序的内容。简历项目3个就差不多(咱也不知道,反正人林神是offer收割机)。简历贵精不贵多。简历上的项目、知识点要非常熟,否则被问倒的话反而是减分项。 |
后来刘师兄(以下简称龙神,再次慨叹,龙与龙之间的差距咋就这么大呢)在群里发阿里云的一个招聘,然后和龙神聊了聊。顺带又让看了一下简历。龙神就很直接了,提了几个问题:
1 | 1.教育背景建议加上时间 |
后来又陆续和龙神聊了几次(下文可能陆续提到),发现龙神太有意思了,哎,可惜,相知恨晚,希望能有机会在上海碰一下子。
(预留广告位:
刷题
大概是从什么时候开始刷的题呢,记不太清了。大概正月十五左右吧,从伯神问我在家干嘛开始,我才知道应该准备刷题了。(伯神真是春招路上#不,快成人生路上了#
的精神灯塔,先鸣谢一下子)。先刷的LeetCode,为什么不先刷剑指呢,。。。忘了。总之先刷了lc,非常菜。LeetCode我其实之前找实习和业余时间大概零星刷了60道左右。然后呢我个人有个非常大的缺点就是不愿意复习,所以我是接着往下刷的。大概一天两道(对,就是全天,非常菜),后来了解到往届的师兄们(就不特指了)一天少则二三,多则七八,还是在实验室有任务的情况下。愈加慌了,怀疑自己ing。
lc刷到100左右,可能觉得凑个整了。开始刷剑指,前几道题很简单,简单到我都快不怀疑自己了。结果,很快,剑指就告诉我你应该继续怀疑下去。大概一天也是两三道。不过我做题倒是有个不知道是缺点还是优点的特点,我有强迫症,所以基本不看答案,就是死磕,代码就写得很烂,然后通过后我再去看看标准答案怎么写的。这好像并不是一个好习惯。总之,剑指基本上刷完的时候,迎来了第一次面试。
面经
前面絮絮叨叨了那么多,到这儿可以算是进入正题了。接下来开始写写面经吧。以下就尽量以公司为标题,以时间为顺序吧。
作业帮(一波三折,最终offer)
投作业帮的时候连暑期实习和日常实习的区别都分不清,傻傻地投成日常了。。。
3.5 14:30 一面
上来就是四道算法题:1.给定点顺时针矩阵2.二叉树的中序遍历非递归3.最小连续子序列和4.不均匀骰子:1,2,3,4,5:0.1 6:0.5
答:算是第一次面试,贼紧张,所幸,这几道题我都做过。基本上差不多十分钟一道吧。
简历提问:
1.智能客服做了哪些内容,数据集多少,多少个意图,存在过拟合问题,如何解决?
2.金融大数据分析系统:贝叶斯为什么不用N-gram。
忘了是怎么回答得了,反正就实话实说呗,第二个问题当时好像直接没时间做了。。。
但是最后面试官称赞简历做得不错。
面完之后感觉还算稳,因为算是第一次面试,本来根本没打算过,结果反而都答上来了,备受鼓舞。(由此可见,万事开头难,但是开头但凡能顺利一点点,就会给人莫大的信心)
果然面完两个小时左右吧,HR打电话约二面了。
3.9 14:30 二面
算法题:机器人从左上角走到右下角,途中有两个障碍,求走法种数。
答案:很简单,就是dp呗,不过要考虑障碍点置为0.
简历提问:意图的分类,槽填充。传统机器学习方法了解多少。
逻辑题:五枚硬币,一枚有字和花。两枚只有字,两枚只有花,抛出一枚,现在花朝上,求反面也是花的概率。
答案:一开始张口就来,一共三枚带花的,两枚可能反面也有花,2/3,面试官说不对。陷入沉思ing,后来一想一共是五面有花啊,花朝上一共是五种情况啊(一枚硬币两面都是花,算两种情况)。于是答曰4/5。看到面试官露出了欣慰的笑容。
基础提问:过拟合定义、原因、解决方法。
开放题目:一片树林数据,1%~2%高度有错,如何去噪?
答案:这个问题当时就思路有点儿乱,回答得不是很清晰,只说用回归和标准差方差一类的,附上面试官答案吧:1.先分类,2.寻找与树高相关的特征。3.然后求正态分布,求标准差,或回归。
最后面试官问有什么问题,问了问业务方向,答曰也是做智能客服,感觉非常match,而且答得也不错。
结果
本来二面完,信心倍增,没想到首家公司面试就这么顺利,美美地想能拿到作业帮offer也不错。结果等了三四天,毫无音讯,于是问了下HR,结果反馈:对个人素质和能力很满意,但因为不能立即入职,时间上觉得不太理想,所以如果六月份还有HC的话,她会联系我。
晴天霹雳,通过这个我才知道什么叫日常实习,什么叫暑期实习。于是不服输的我转手就投了一下作业帮暑期实习。
3.26 一面
算法题:
1.快排找错误(这个是真难找啊,自己写还好,找人家的错误就很难)
2.求最大递增子序列。
第二题应该是保留一个递增栈,但是当时没答出来,,答了一个别的O(N^2)的方法(还是刷题太少。
简历提问:
1.LR和softmax的联系。
答:LR是softmax的二分类形式。可由公式推导。
2.LR如何将线性变换为非线性。
3.textCNN的用法,多少卷积。
这个答得很好,因为太简单了。
3.多进程与多线程区别,多线程IO。GET与POST区别。
(没想到会考这种问题,答得磕磕绊绊的。。。
总之一面之后,感觉可能凉了,过与不过五五开吧,不过后来是给约二面,再次感谢面试官高抬贵手。
4.1 二面
简历提问:介绍最拿手的一个项目,如何确定阈值,某一轮对话中出现了意图切换怎么办。为什么要一个槽一个槽的问,而不是直接全部询问,全部进行槽识别。
答曰:阈值是统计得来的。意图切换尚未处理;误差太高,模型需重新训练。
算法题:一段绳子长n分成m段,求乘积最大。
答:很简单,用dp,秒了。
二面感觉稳一些,后来果然没几天就HR面了。
HR面
1.上段实习学到了什么
2.工作城市选择
3.有什么个人诉求
说是HR面,其实感觉已经像是oc,后来证明我的感觉是错的,因为作业帮足足等了好几个周才给offer。。。
网易·伏羲(offer)
前言:随便找了个内推码,投的雷火事业群,发现好正规啊,最后提交简历前还要对某个测评任务讲一下自己的设计方案,因为没做个常识推理的内容,只好特地去看了三篇论文。
3.18 一面
算法题:
朴素贝叶斯的公式,朴素贝叶斯与贝叶斯的区别
用列表生成式生成1~10的奇数平方和
K-means算法伪码。
答:贝叶斯是因为简历上提到了,所以公式已经倒背如流了(当时),总之算法题不难,就是K-means以前没写过,凭感觉瞎写的。
简历提问:
介绍智能客服流程。多少意图,多少数据集。
未知意图检测。如何集成任务型和KBQA。
介绍embedding方法。CBOW,两个trick。
设计一个简单的KBQA。
答:第四个不太会,凭感觉说的:先NER,再检索三元组,连接句子进行rerank(本质是判断关系是否相符)
基础题:直接提取句子表示和通过特征提取句子表示有什么不同?
答:本质上还是人工干预多少的问题。直接训练句子表示是端到端的训练,人工干预少,而特征提取,比如可以把每个词的词性特征加上,或者根据依存句法分析的结果进行加减等等。加入了人工干预,前者更依赖数据,后者可能会更精确,但也可能存在误差传播问题。
深拷贝浅拷贝问题。
3.18 二面
一面面完之后直接就进行二面,一面面得感觉还行,喝了口水,马上投入战斗。
算法题:
1.pytorch 实现textCNN。
答:很慌,基本上是 提笔忘函数名,最终磕磕绊绊地蒙出来的。
2.实现开根号函数,考虑各种边界条件(自定义精度及输入非数字)。
答:这个就很简单了,二分法秒了。
简历提问:
1.常用的DST方法。:不太了解
2.知识图谱构建流程。
答:多亏毕设当时调研过,一通怼名词。
3.decoder过程中固定某个词,确保相邻冲突词不出现。
答:通过CRF或者其他的序列标注方法给降权;或者从训练数据的构造入手。
3.简述beam search。
二面后感觉答得也还行,但是没有十足的把握,四六开吧。
3.20 三面
主要是简历提问:
为什么textCNN有用。
意图分类是如何做的,抽象为分类问题还是匹配问题?数据集多少?槽识别怎么做的,对齐方式还是非对齐方式?其他意图怎么划分的?
答:分类;数据集实话实说;对齐;确定阈值。
如何集成KBQA和闲聊?
答:意图分类
金融大数据分析系统如何识别反讽和指桑骂槐?整个业务流程?
答:引入依存句法分析、ensemble或者从构造数据集入手
最后问有什么问题。
三面是主管面,感觉人超好,说话又好听,面试体验非常nice。
HR面
HR面等了挺久,以至于误以为自己挂了,具体问啥忘了,反正也是有关于上段实习的。
总结
伏羲整体的面试体验非常nice,而且流程非常正规,又是写测评思路,又是答题的。面试官人也很棒,感觉非常好的一个部门。
陌陌(HR面后杳无音讯。。。)
一开始连简历都挂了,后来鑫哥帮忙捞了一下,感谢~
3.16 16:00 一面
简历提问:
实习业务闭环流程。不同部门有不同的标注需求。怎样判断标注质量(数据去噪)
答:讲了一下地平线的数据平台的运转流程是啥,然后判断标注数量就用了一些数据去噪的方法,(特征筛选、回归等)
对话的意图如何分类,是否分层。
答:二分类任务,不分层。
为什么用TextCNN。不用TensorFlow,自己手动实现textCNN。
答:简单口述了一下,主要是先按卷积展开成行,然后将卷积展开成列向量。
未登录词去掉还是随机初始化?
答:随机
情感分析,为什么用三种算法。依存句法分析如何和情感分析结合。
代码题:
编程计算pre和recall。阈值上升,这两个值如何变化。
答:现在也不太会,得画个图才能勉强答出来。。。
编程实现split函数,注意边界条件,不能添加“”。
答:代码本身很简单,但是面试官提了好多边界case,改了好几次。
3.20 11:00 二面
算法题:回文串判断,各种边界条件。
基础提问:
softmax公式。
bert的输入一共是三种,三种输入变量。
textCNN,假如一个7*300的矩阵输入进来,用2,3,5的卷积核各128个去做卷积,最后输出的句子向量表示shape是什么。
答:如果用padding方式,不管卷积核尺寸,每个卷出来的都是7*1,最大池化取1,共128+128+128=384个卷积,所以最终是384维的向量。
简历提问:对话项目,问的非常深入。关于未知意图的判断,输入 你好 会怎么样(阈值判断)。假如意图过程中出现不属于该意图的槽,怎么办?(生成问句引导收敛)。为什么加crf不好用?
最后问有什么问题:问了下是做啥业务的。回答说那边也是做对话和反垃圾文本等。
两个小时候,收到了三面邀约。
3.24 14:00 三面
基础提问:一直在问分词。分词有哪几种,各有什么优劣。使用词典的方法如何解决歧义问题。HMM分词算法中状态是什么,观测又是什么。HMM中如何加入新词?
答:分词我是真了解得不多,硬着头皮大概撑了半个小时。
用lstm来做槽识别,后面只接隐含层。一共有多少参数?
答:LSTM还是很熟的,毕竟入门的时候专门看过。用笔画了一下,参数包括:wc,wu,wf,wo,bc,bu,bf,bo+全连接层+embedding矩阵。常用汉字有3000个,正常做槽填充5000个。
算法题:
手写一个二层感知机分类器。包括:定义输入、网络结构、batch的loss、acc、预测结果的label,预测结果的概率分布等。
答:很慌,主要是只顾着充当调包侠了,赛码网又没有函数提示,所以就有些慌乱,最后反正磕磕绊绊地写了一下。
BIO模式要识别三个实体要设计几个tag
答:3B+3I+O=7个
感觉三面面得不太好,主要是分词那块儿是真的不熟悉,所以到现在我也不知道为啥面试官要考我这么久的分词,我回去翻遍了简历,也没发现分词这两字。不过最后还是给了HR面。
HR面
鑫哥给面的,具体问题也没几个。
上段实习学到了啥,为什么要做大数据?
理想工作地点
能实习多久
因为鑫哥当时把我捞起来的,很感激,以为可以美美地等offer,结果。。。等到现在了。。。
(不怪鑫哥,怪我太菜,估计rank到后面了。
华为·诺亚方舟(offer)
方舟也是一位师兄帮忙推得,后来另一位师兄给约的面试。(感谢感谢,非常感激)。一面二面都是直接zoom约面的。
3.13 16:00 一面
简历提问:
展示金融大数据分析系统。
先远程桌面展示了一下做的那个金融大数据系统,我特地提前一个小时就把系统跑了起来。嗯,评价还算可以。
如何将依存句法树应用于情感分析中
金融关系图谱如何构建,如何存储。
智能客服有多少意图,数据集量。介绍DM流程。
为什么使用TextCNN(意图与局部特征有关)。
比赛:除了beam search和CNN还做了哪些改进?
答:加入BOW loss等。
代码题:
实现一个分词算法
答:感觉这问题可深可浅,基于对自己水平的判断直接写了个正向最大匹配。(卑微
一个被截断数组,查找一个元素
答:剑指原题,先找到被截断的位置,然后用二分法。(我当时刷剑指时用的不是这方法,各种判断,贼麻烦,后来看答案,觉得自己宛如一个智障,就记住了。)
3.26 9:00 二面
二面是主管面,基本上没问啥。就是详细介绍了下简历的项目,然后交流了下QA在PLM下游任务中的应用。
结果
后来师兄告诉我,打听到我过了,很兴奋,结果等了好久。。。杳无音讯,也没好意思问师兄,后来连续有华为云和消费者BG的人给我打电话约面,我才感觉应该是凉了,当时已经接腾讯offer了,就准备去腾讯了,结果后来接到了诺亚offer,才知道因为疫情,当时冻结发放了,然后HR忘告诉我了。。。
腾讯
腾讯之路简直是一部血泪史,前后面了两个部门,一开始找邓师兄内推的ieg,结果二面挂了。。。然后找杉姐内推了一下官网,刚投完半个小时就被TEG捞了,很兴奋,暗忖TEG真识货。结果足足等了五天,才给打电话,然后上来自我介绍一番说是做RL的,这我也不会啊,于是比较不婉转地和面试官沟通了下,说自己还是想做NLP,然后就释放了。释放了以后想让别的部门师兄捞一下,结果发现又被TEG另一个部门捞了,师兄捞不了,然后TEG一直不面我,足足等了三天自动释放。。。最后才辗转来到PCG,哎,一把辛酸泪。
IEG(二面挂)
3.19 16:30 一面
简历提问:
TextCNN如何提取有效信息,因为embedding的片段是无效的?
为什么选用textCNN?
当线下测试足够好线上就一定好吗?如何选择合适的模型?
答:(其实我也不太会)模型训练时尽量保证test,dev与train的分布一致性。选择合适模型要考虑很多方面。性能、应用场景、可拓展性、增量训练等等。
基础提问:
BERT在什么任务上不太好用?(生成式)为什么?那如何改进?
答:生成式呗。因为与pretrain过程就不一样。只想到两个思路,一是直接加transformer类型的decoder端,二是用sep在做encoder。
beam search为什么要加?为什么有效果?
说一个最拿手的机器学习模型。HMM与CRF区别。分词中用HMM还是CRF?各有什么优劣?
答:非常经典的一个问题,可惜我现在都磕磕绊绊。优劣就是HMM更快但CRF更准。
代码题:
- Python字典判断k在不在,复杂度。如何对dictionary的值进行从大到小排序:sorted(d.items())。
- Python读取大文件,直接用 in 句柄,迭代器或 f.read(chunk_size)。
3.20 11:00 二面
简历提问:MongoDB筛查的时候在上层做没做优化,打不同的tag怎么办。
基础提问:
- 讲一下LR的流程。归一化与标准化。
- 情感分析中做没做增量训练?怎么做的。
- Xlnet与bert有什么不同?
代码题:五亿个数字不确定桶的边界的情况下,如何做桶排序,使各个桶的数量尽可能均匀。
我只能想到一趟扫描先分桶,然后再一趟扫描合并重新拆分。哎,太菜了。
总之,二面答得非常差,一开始面试官总是问好多关于HDFS和Hbase底层的东西,但是无奈我真的不会,而且当时实习的时候做的也主要是上层应用,当然也怪我自己没有深入到底层看一下。最后果不其然的挂了,反馈是:感觉做得不够深入。
PCG(offer)
4.10 11:00 一面
简历提问:对话项目,做了哪些改进(三个)。
答:问句引导;加速;二分类,置信度分析。
基础提问:
介绍LR,协同过滤,排序算法。
C++的map、set、vector。Python的list 底层实现。
答:C++的全忘了,python的list根据可以用-1,-2来遍历,推测是双向链表(很不幸,不对,是对其它对象的引用组成的连续数组)
算法题:用C语言实现strcpy
答:这个很好实现,关键是用c,就有点儿磕磕绊绊了。
4.12 10:30 二面
简历提问:介绍一个比赛。
答:阅读理解,按时间线分成三个阶段,1.直接拼接2.选取topk句子进行训练3.加入no-answer及上下文,加入实体识别等等。
基础提问:实体识别的常用方法;比赛中怎么修改的loss。
PCG的问题都比较开放,也不怎么常见,感觉答得中规中矩,后来还是给过了。
HR面
- 关于实习地的选择
- 为什么不去百度(这是从百度挖了多少人啊)
- 对技术的规划和理解
- 这几个公司同时要你你怎么选?为什么?
最终顺利oc,在此感谢邓师兄,胡师兄,及所有在腾讯帮助我的师兄,感谢感谢,小弟铭感五内。
搜狗(二面挂)
搜狗也是找师兄内推的,哎,可惜了,给师兄丢人了。
3.25 18:00 一面
算法题:LeetCode64、739。
答:64比较简单,就是dp,一眼就能看出来。739是一道递减栈问题,虽然没见过,但是好好想想也不难,所以都没花太长时间。
简历提问:
详细介绍项目一。如何解决训练集不平衡的问题。
答:数据增强;数据重采样;选择不同的模型;评价标准。
总之就是数据->模型->评价 三个阶段。
BN与LN各是什么,有什么作用,为什么用relu函数还需要这么加。
答:现在知道了一个是横向,一个是纵向,可惜我当时不会。。。。
CRF的损失函数,CRF是有向图还是无向图,为什么要加crf,可以起到什么作用。CRF与HMM的不同。
beam search的过程,与维特比算法有什么不同。
答:beam_search如果beam宽度为所有类别,那么就是另一种意义上的维特比,无非是把发射概率和转移概率给合并了。
孪生神经网络。TensorFlow中bert 的损失函数如何修改。无向图的inference。
答:两种损失去修改呗。(可惜当时只会fine tune)
CTR有无了解。介绍transformer的attention,为什么要除以dk**2?
答:不知道为啥(现在知道了,为了将Q*K的方差降低,否则值太大和值太小会使梯度更新很麻烦。假设两个 dk 维向量每个分量都是一个相互独立的服从标准正态分布的随机变量,那么他们的点乘结果会变得很大,并且服从均值为0,方差就是 dk,【很大的点乘会让softmax函数处在梯度很小的区域】,对每一个分量除以 sqrt(d_k) 可以让点乘的方差变成 1。)
3.31 14:00 二面
算法题:
截断数组进行查找的问题。
答:剑指原题,秒杀。
机场大门到候机厅,有一些路程是水平电梯。一个人想要尽快通过,有电梯就乘坐电梯并在电梯上也保持正常行走。(1)如果他想要停下来系鞋带,他应该在电梯上停还是步行道上停?
答:假设 人行速度为v1,电梯速度v2, 电梯长度为s2,步行长度为s1。假设系鞋带时间为 t。
1.停在步行道:在步行道上用的时间为 s1/(v1)+t 在电梯上的用时为 s2/(v1+v2) 共用时为 s1/(v1)+t+s2/(v1+v2)
2.停在电梯上:在步行道上用的时间为 s1/(v1) 在电梯上用时为 (s2-v2t)/(v1+v2)+t 共用时为 s1/(v1)+(s2-v2t)/(v1+v2)+t
由此可见停在电梯上用时更少。
基础提问:
说一个最拿手的算法。讲讲HMM到最大熵HMM到CRF的改进。
答:这种问题,我之前只知道表面的区别,但具体怎么演化的并不太清楚,所以就没回答上来,不过后来自己又陆续查阅了一些资料,自己想了好久,现在大概明白了区别(不用就忘)。附上我觉得讲得比较好的知乎答案
逻辑回归特征离散化处理。星期几这个变量怎么处理。
答:01
LR中如果前五十个特征特别小,后五十个特别大,怎么办?
答:没答上来。。。
梯度消失与梯度爆炸,relu函数会如何。
adam算法介绍(一方面加入动量,一方面加入自适应)
momentum 动量法介绍。
如果loss一直震荡有哪些原因,如何解决。
神经网络初始化时可不可以全部置为零。可不可以设置为很大的数。
面完之后,感觉面得很不好,磕磕绊绊的,归根结底还是因为自己ML的很多基础不牢靠,很多东西都是似是而非的,当然经不起人家问。哎,面得心情失落,学无涯啊。
美团(一面挂)
美团当时也是找师姐内推了一下,但是不是推的自己部门,而是推了另外一个部门(后来才知道是美团外卖,这个牌很牛逼)。
4.1 16:00 一面
简历提问:
叙述感觉最好的一个项目。
金融大数据流程。
分什么要对不同数据使用不同方法。
依存句法分析有图结构和树结构,两者有什么区别。
答:当时没答上来。后来才知道是scir出的一个标注标准,图结构是谓词与论元直接相连,比较直接(参考:https://www.hankcs.com/nlp/sdp-corpus.html)
依存句法分析如何应用于情感分析。
讲一下bilstm。
算法题:
两个有序列表查找中位数。
答:归并排序。让优化,没优化明白。。。(后来才知道是二分)
翻转二叉树。
答:常见题目,秒杀
当时面完问面试官自己有哪些表现不好的地方,得到反馈是项目讲解时要多侧重技术点而不是业务逻辑,其他方面都还不错,对代码能力很满意。当时感觉有这话应该一面稳了,结果。。。左等右等,等了一个月。。。后来托人打听反馈是不太match。。。果真玄学,但是还是非常感谢师姐!!!
快手(offer)
当时面快手的时候手里已经有几个offer了,所以心里也有底,面得也比较轻松。笔试过了1.9/4道,但是实际上应该算2.7道(因为一道罚时有问题,后来HR和主管反馈了下)
4.22 19:30 一面
简历提问:
- 介绍业务流程。
- 介绍
TextCNN
过程。 - 介绍比赛,前几名方案有无了解。
基础提问:
- 说下~损失函数,其他的损失函数,SVM损失。
- 池化的其他方法(top k池化)。
latent LSTM
代码:二叉搜索树,改为一路往右递减。
答:再造一颗,中序遍历即可,直接秒杀。后来讲了讲不这么暴力的方法,面试官就没让写代码。
一面面试官非常nice,后来我俩重点聊了聊LSTM和BERT的一些改进方法以及NLP的研究的现状。
4.24 14:00 二面
简历提问:介绍实习项目,介绍对话项目,为什么用
textCNN
,对textCNN
做出了哪些改进。基础问题:
bert
的优势是什么,有哪些激活函数。leaky relu
解决什么问题。算法题:剑指offer正则匹配原题
答:我一看就知道是原题,然后开始侃:有两种方法,一种递归,一种dp,但是dp我一时半会应该推不出来。面试官说那你写写递归的。我心里一凉,没唬住,尴尬。于是磕磕绊绊的写了一下,最后面试官给了几个case,让跑一下,怀着沉重的心情点击了一下测试,没想到居然全过了。
快手的面试官感觉还是很专业的,而且当时自己也不慌了,感觉聊得也挺好,后来HR给打电话了,介绍了下部门和优势薪水啥的。真的心动了,但是最终还是婉拒了,有些遗憾。
阿里(offer)
阿里从一开始就觉得自己高攀不上,所以很恐惧面阿里,但是也没有恐惧到连试都不敢试的程度。于是下定决心给阿里面试官露一手,让他们摸一摸工大的底层水平。于是先找胡师兄内推了下ICBU,一个是因为在杭州,然后以前在北京实习过想去杭州体验下。二是师兄很热情,让我心里暖暖的,再次感谢师兄(但还是辜负了,惭愧)但是后来和天哥聊天,谈起了北京户口的事儿,唤起了内心的那种搏一搏,单车变摩托的渴望与激情,于是icbu二面的时候换到天哥那儿了。从当年一开始去北京实习,天哥就帮我指点找租房的地儿,后来也一直在远程抱大腿,很感激,不知道说什么好,希望天哥步步高升吧,我寻思P12的小弟,怎么着也能混个9、10吧。
ICBU
4.9 一面
简历提问:
介绍两个最拿手的项目。
意图识别具体怎么做的。
为什么选用CNN,对textCNN做了哪些改进。
槽识别怎么做的。分类错误的数据是什么样子的,有什么办法解决?
答:规则、ensemble、数据增强。
基础提问:
开放问答基于对话历史提取出模板(一些表格):各种提问,实体识别、关系抽取、知识推理等等。
命名实体识别有哪些方法,ML和DL的都要说。
答:HMM、CRF;RNN+CRF,CNN+CRF。
后来在网上找到一篇博客写得挺好,附链接
算法题:
大数乘法,如何改进。
答:用list来模拟
玫瑰矩阵问题。
答:老题了。。。估计写完了也就三四分钟。
4.13 二面
二面已经决定转到天哥那儿了,所以没咋面,就聊了聊nlp的发展和前景展望,然后说了自己的打算。
搜索推荐事业部
4.2 一面
算法题:2*N的数组,N个奇数N个偶数,要在
O(1)
的空间复杂度和O(N)的时间复杂度内将奇数放在奇数位,偶数放在偶数位。答:一开始看到这种要求复杂度的,就比较慌,后来稳了稳,发现双指针可以做这个题,就写了写,没啥问题。
简历提问:
对话项目介绍。
假如槽位识别有问题如何处理。
老大很专业啊,一眼就看出了问题所在,很不幸,这个问题当时没处理,但是后来简单说了说几个思路
总之,一面是部门老大面得,感觉更像是从大方向把控一下这个人行不行,具体的一些基础知识就没怎么问了。
4.9 14:00 二面(面得时间很长,快两个小时了)
简历提问:详细介绍对话项目。项目里印象最深的问题,怎么解决的。
答了一些业务上的问题,非技术性难题,更多的是对业务和数据的理解上。
基础提问:
详细说
TextCNN
与bilstm
过程。说
RNN
与CNN
的区别是什么。答:感觉越是这种看似简单的开放性的问题,反而越不好答,当时考虑了考虑,就
应用场景:one to one;序列
本质:捕捉局部与整体关系;捕捉序列关系
速度:快;慢
一些问题和改进,及融合两种方法的方法
等这四个角度来回答了一下。
卷积的本质
答:这个真给问住了。。。一开始我以为是从DL的角度谈,就说是模糊了一些边界,或者给某些点加上周围的的信息。然后又继续往下谈,从卷积公式的角度(当时我连公式都忘了),数学上来讲所谓两个函数的卷积,本质上就是先将一个函数翻转,然后进行滑动叠加。在连续情况下,叠加指的是对两个函数的乘积求积分,在离散情况下就是加权求和。
以下是知乎上一篇回答:
对卷积的意义的理解:
1.从“积”的过程可以看到,我们得到的叠加值,是个全局的概念。以信号分析为例,卷积的结果是不仅跟当前时刻输入信号的响应值有关,也跟过去所有时刻输入信号的响应都有关系,考虑了对过去的所有输入的效果的累积。在图像处理的中,卷积处理的结果,其实就是把每个像素周边的,甚至是整个图像的像素都考虑进来,对当前像素进行某种加权处理。所以说,“积”是全局概念,或者说是一种“混合”,把两个函数在时间或者空间上进行混合。
2.那为什么要进行“卷”?直接相乘不好吗?我的理解,进行“卷”(翻转)的目的其实是施加一种约束,它指定了在“积”的时候以什么为参照。在信号分析的场景,它指定了在哪个特定时间点的前后进行“积”,在空间分析的场景,它指定了在哪个位置的周边进行累积处理。
作者:palet
链接:https://www.zhihu.com/question/22298352/answer/637156871
来源:知乎LSTM与gru区别。
transformer存在哪些问题。
答:速度
self-attention存在哪些问题。
答:因为前几天刚好看了两篇新论文(摘要),便就两篇论文的思路说了说。
一个是人们发现只有和Q比较相似的一些K使对其V对最后的特征表示有很大贡献,那么我们对所有词的token进行attention的计算就很浪费,所以有人引入了分桶,只找每个 Query 序列「最相近」的 32 个或 64 个元素,然后局部attention,便可逼近全部attention的效果,即LSH。
论文:Reformer: The Efficient Transforme(ICLR2020)
二是「交谈注意力机制」(Talking-Heads Attention),在 softmax 操作前后引入对多头注意力之间的线性映射,以此增加多个注意力机制间的信息交流。这样的操作虽然增加了模型的计算复杂度.
position embedding简介。
答:只知道是表征了一定范围内,词的先后顺序,一个词位置表示可以由其他词的线性组合得到。(具体原理当时并不是很清楚,后来特地查阅了下资料,理解了一下,发现并不难。参考:知乎答案1,知乎答案2)
算法题: 给定一个字符串,找出其中连续并且无重复字符的最长子串,输出其长度。(如何优化)。
答:这个题一看就是双指针,一前面指针遇到重复的,则后面指针一直往前走就行。但是这种做法复杂度是O(2N)。
这个题写出来只花了六七分钟,但是优化思路加代码花了十几分钟。思路是保存一个map存储位置,但是这个map里到底怎么存的位置,存的谁的位置,需要好好考虑,否则还是需要一步步的走。最终确定map里存的是:一个元素到目前为止在列表中的最右位置,这样slow指针走的时候,map就不需要删除元素了,直接更新就可以。
5.1 交叉面
基础提问:
介绍
transformer
。add&normallize
。tranformer中为什么要用
layer normalize
。答:这个问题我到现在都不太会,只说了BN容易受
mini_batch
的影响,很占显存不利于序列模型。(还是多亏之前搜狗面试谈到这个问题我后来去看了看)
算法题:k阶斐波那契数列问题。
答:实话实说是快手笔试原题。面试官一听,就表示那算了,说说思路就行。
HR面
你认为阿里HR关注点在哪儿
答:分了三个时期,1.认为可能有压力面时期 2.关注实习和项目时期 3.关注个人规划的职业的认识
18年为什么当初投产品经理
对阿里的考核方式有什么建议
你认为自己适合做算法吗,给自己定位就是一直做技术吗?
你认为专用型算法和通用型算法有什么异同
你认为自己取得的最好的成就是什么
HR小姐姐人美声甜,从一开始聊就把我的紧张情绪给打消了,然后我就发挥了话痨本色,开始讲故事,前后聊了四十五分钟,感谢小姐姐的耐心。
总结
也不知道该总结点儿啥,没办法,常见面经好像都有总结,那我也加上吧。个人感觉(至少就个人经验来看)招聘无非就是三个环节么:
简历筛选—>笔试—>面试
那么拆解一下我们需要准备的点也无非就是:
- 简历(简明扼要,突出重点)
- 刷题(个人感觉剑指+100道lc差不多可以应付绝大部分厂子,msra,Google这种当我没讲)
- 基础知识:以简历中的为重中之重,要能够由底到高,由浅到深,由点到面。
- 个人思考:在平时的一些工作和学习中我们可以多想想为什么,还没有其他方法做,如果是我来做我会怎么做等等。“学而不思则罔,思而不学则殆”,古人诚不欺我。另外也要时不时的从书山“码”海中抬起头来,眺望一下“远方”,思考一下“未来”,既要“脚踏实地”也要“仰望星空”。
- 心态:还有很重要的一点就是心态,通过这次春招我愈发觉得,人不能狂妄自大,但同时更不能妄自菲薄。很多事情要敢想,敢做。高中时候很喜欢一句话:人不是因为看到了才相信,而是因为相信了才会看得到。可能有些唯心主义,但是生活中很多事可能唯心一点,效果更好。(声明:本人是一个坚定地马克思主义唯物论者)
春招就告一段落了,后来百度和头条一些公司也约面来着,但是都回绝了,实在面累了,可惜,现在还不是“刀枪入库,马放南山”的时候,秋招已经在挥手了。最后还是非常非常感谢所有帮助过我的师兄师姐,同门好友们,非常感谢,衷心的希望每个人都好,社会学一个实验表明:一个人的收入大概率与其最亲密的五个朋友的收入的平均数相差无几。所以,能不能实现财务自由就仰仗各位好友,各位同门的努力了!
致谢名单:
要感恩的人太多了,实在谢不过来了,秋招的时候肯定还要再谢一遍,merge之后再commit吧。