总结
- 研究好JD,投其所好。
- 多参加面试,总结经验,优化话术。
- 自我介绍采取总分结构,先说一下有哪些项目,然后根据面试官兴趣详细介绍。
- 面试之前半小时排练自我介绍和项目介绍。
- 多总结项目中的闪光点,时常更新简历,强调自己在项目中解决的难点。
- 准备好自己的非技术实力相关点以及例子,使用例子证明自己有相关非技术实力。
远程面试与现场面试
- 远程面试的优势是,可以很方便地参考各种资料,所以可以在简历上标注好关键点以及项目介绍的大纲,以及面试容易犯的错误,面试时照着简历来进行介绍,逻辑性会更好。另外,面试官在问到项目细节但是忘记了的话,可以现场查一下。当然,如果愿意的话,提前写好演讲稿或者打小抄也都是能够做到的。
- 现场面试的优势是,能够充分发挥自己的人格魅力和自信心,通过行为和谈吐给人留下非常好的印象。与面试官亲切大方地沟通、开始和结束时的握手,以及礼貌和微笑,都比远程面试更加容易营造出优势。我在面试时的感受就像与朋友聊天,甚至有时正事聊完了还能聊聊生活上的话题,能营造出良好氛围的能力对团队合作非常有用,是一种通过侧面展现自己实力的方法。
简历书写
- 按照 STAR 法则介绍项目
- 着重介绍在项目中我做了什么
- Skills 部分按类总结好
- 最后一部分可加入非技术实力以及作品链接
感悟
- 前一位面试官问的问题常常后一位面试官也可能问;不同企业问的问题会有不少重合。
- 只要项目介绍得足够好足够详细,面试官就没有时间也不太想问基础问题。在面试中掌握主动权就可以让话题一直处于自己擅长的领域。
- 要话唠,问我的问题我可能不会,但我可以顺便把我了解到的相关的知识讲讲;即便问的问题不会,也能告诉对方我思考应该如何如何会不错,可以体现思维能力。
- 提问问题的时候也能从侧面体现出自己的知识面、性格。对软件工程实施的规范化感兴趣说明自己也重视规范性;想了解组内技术深度说明自己对技术兴趣浓厚;询问的时候体现出自己调查的结果,说明做事认真,前期准备工作量充足。
- 应聘的本质就是销售,简历是广告,面试是话术。
面试习惯
- 面试结束后询问面试官有哪些不足,可以有哪些改进。多总结失败经验。
- 面试后做好记录:没回答好的问题,可以进行的改进。
- 提前想好需要询问面试官的问题,调查清楚自己将会加入的小组情况。
面试不足
百度
一面(面试本身很好,未通过)
面试官所关注的问题:
- 特征工程的各种方法:编码、Embedding、高基数特征处理、特征选择、特征融合。
- 工程经验:LightGBM有哪些参数,调参技巧。
- 算法理解(算法原理)。
- 技术(编程语言等)
失败原因:缺乏分布式计算经验,应当用用 Hadoop,Spark,积累一下相关项目经验。
一面(通过)
项目介绍说得太简略,应当自己掌握主动权向面试官来介绍,而不该只进行简略介绍后让面试官来询问。
实际操作:我先简要说一下有哪些项目,如果面试官对哪个项目感兴趣会打断简介开始详细提问,之后恢复中断继续进行简要介绍。如果简要介绍过程没有发生中断,可以询问面试官“那么我就按照刚才介绍的顺序详细介绍一下这些项目如何”。
字节跳动
相比其他企业,字节面试时间比较紧,所以一般只能详细介绍一个项目,剩下的时间用来做编程题和问基础知识。
一面(未通过)
- 多了解一下广告业务(不该因为朋友讲不怎么问推荐系统就不看了,应当和其他企业一样好好研究JD)。
- 多了解一下推荐系统相关的知识和模型,比如FM,deep FM等。面试官推荐了一本书《深度学习推荐系统》,王喆。
- 应当先把思路想清楚再讲,不要意识流。面试官可以等我想明白,但不愿意看到混乱的思路。
二面(另一个部门,通过)
- 写代码时先想好思路,并且沟通好打算如何编写之后再进行实际编写;编写过程中时刻保持沟通,向面试官说明自己打算干啥。简单来讲就是类似于结对编程。
- 可以为每个项目准备不同时长的介绍,面试过程中根据需求选择如何介绍。
- 了解清楚物理背景,ReaxFF 里面参数的物理意义忘记了。
三面(通过)
多了解一下做过的项目的整个流程,了解实习项目为什么成功中标(寻找归因)。使用 Team Leader 的角度看问题,做项目的时候应当多多了解业务相关知识。
字节我所面试的这个组非常偏向业务,所以三面面试官作为 Team Leader 非常关注业务相关的能力。考虑到未来我有可能同样作为 Team Leader 负责一项业务,建议我能多思考一下整个项目的前因后果,整个流程。
高频面试题/知识漏洞
高频问题
几乎逢考必问 Logistic 回归
- 损失函数
- 为什么效果不好
如何防止过拟合,为什么会发生过拟合
过拟合是因为模型容量远超过样本容量,因此对噪声进行了拟合。根据PRML(chapter 1.1 P8),考虑使用多项式函数进行回归,多项式次数越高则容量越大,对噪声拟合则导致高次项参数非常大。原因是噪声通常对数据的影响是毛刺状大幅震荡,对于傅立叶变换之后高频部分影响较大,或者泰勒分解后会出现很大的高次项。从泰勒分解来考虑,过拟合使得模型非常不稳定,y相对x不再是平稳变化而是大幅震荡。
解决方案:
- 正则项:L1、L2等(chapter 1.1 P10),其中L1可以产生稀疏解
- 数据集增强:例如将图像旋转变化等
- 加入噪声:可以将噪声加入数据或参数中
- Early Stoping:机器学习和深度学习中都会用到
- Dropout:深度学习中用的比较多
- Bagging等集成
基尼不纯度:从数据集中任取两个数据,不同的概率,
交叉熵:用p真实分布衡量非真实q分布平均编码长度,
Kl距离:p*log(p/q)
SoulAPP
一面(未通过)
如何解决梯度爆炸或消失
- 预训练加微调
- 梯度剪切、权重正则(针对梯度爆炸)
- 使用不同的激活函数
- dropout
- batchnorm
- 残差结构
- LSTM网络
不均衡样本
- 重新采样,比如smote过采样算法(选择每个正样本的k近邻,在该样本与邻样本连接线上采样)
- 再缩放:调整分类边界(西瓜书chapter3.6 P66)
- 集成学习(其实就是欠采样)
ROC
- 横坐标:FPR=右上/右
- 纵坐标:TPR=左上/左
第四范式
一面(未通过)
不同强化学习算法结构是什么样的
- A3C的价值网络记错了
On-Policy 与 Off-Policy 原理
时间差分法,比如Q Learning是 off policy 的,之前的数据也可以使用,所以可以使用 Replay Buffer;Policy Gradient 是 on policy 的,策略改变后之前的数据就没用了,所以不能使用 Replay Buffer。
SenseTime
二面(通过)
git 如果想要放弃之前的 n 个提交,只要某次提交,如何操作
git cherry-pick
强化学习有哪些改进
- Advantage 改进:Generalized Advancade Estimation
- Replay Buffer 改进:Prioritized Experience Replay
深度学习优化算法的公式
- RMSProp 本质上是将椭圆形等高线转换成圆形等高线,避免振铃效应(怎么有点像共轭梯度法)
- 我认为可以直接恒定优化步长,梯度只提供方向信息
询问面试官的问题
通用问题
本次面试相关
- 本次面试我有哪些不足,有哪些可以改进的地方
- 面试什么时候会有结果
岗位相关
- 业务:如果我能加入,将会做什么样的工作
- 我希望能够做富有挑战性的工作,请问能否详细讲讲这份工作里面将会存在的挑战
- hc数量(竞争压力)
组内情况
- 技术:组内使用的技术深度,如果我来能学到什么样的技术
- 流程规范化:内部软件工程做的怎么样,code review,代码静态检查工具等
- 加班情况(加班时间,强制性,加班的时候做什么)
企业相关
- 内部培训制度
- 大公司相比创业公司能学到哪些学不到的东西
字节跳动
三面
组相关问题
- 我来的话将会做什么
- 加班情况(加班时间,强制性,加班的时候做什么),作息要求严格吗,比如能否早上八九点来,晚上八九点走
技术成长
- 这个组在做项目中有做过哪些改进(能否举个例子,比如有的组会做业务的过程中额外思考word2vec有哪些改进等等)
- 是否总出差驻场(技术增进少,全是横向)
- 也想了解一下同学眼中的贵部门情况,所以想问一下如何能定位到贵部门,部门编号之类的