总结

  1. 研究好JD,投其所好。
  2. 多参加面试,总结经验,优化话术。
  3. 自我介绍采取总分结构,先说一下有哪些项目,然后根据面试官兴趣详细介绍。
  4. 面试之前半小时排练自我介绍和项目介绍。
  5. 多总结项目中的闪光点,时常更新简历,强调自己在项目中解决的难点。
  6. 准备好自己的非技术实力相关点以及例子,使用例子证明自己有相关非技术实力。

远程面试与现场面试

  • 远程面试的优势是,可以很方便地参考各种资料,所以可以在简历上标注好关键点以及项目介绍的大纲,以及面试容易犯的错误,面试时照着简历来进行介绍,逻辑性会更好。另外,面试官在问到项目细节但是忘记了的话,可以现场查一下。当然,如果愿意的话,提前写好演讲稿或者打小抄也都是能够做到的。
  • 现场面试的优势是,能够充分发挥自己的人格魅力和自信心,通过行为和谈吐给人留下非常好的印象。与面试官亲切大方地沟通、开始和结束时的握手,以及礼貌和微笑,都比远程面试更加容易营造出优势。我在面试时的感受就像与朋友聊天,甚至有时正事聊完了还能聊聊生活上的话题,能营造出良好氛围的能力对团队合作非常有用,是一种通过侧面展现自己实力的方法。

简历书写

  • 按照 STAR 法则介绍项目
  • 着重介绍在项目中我做了什么
  • Skills 部分按类总结好
  • 最后一部分可加入非技术实力以及作品链接

感悟

  1. 前一位面试官问的问题常常后一位面试官也可能问;不同企业问的问题会有不少重合。
  2. 只要项目介绍得足够好足够详细,面试官就没有时间也不太想问基础问题。在面试中掌握主动权就可以让话题一直处于自己擅长的领域。
  3. 要话唠,问我的问题我可能不会,但我可以顺便把我了解到的相关的知识讲讲;即便问的问题不会,也能告诉对方我思考应该如何如何会不错,可以体现思维能力。
  4. 提问问题的时候也能从侧面体现出自己的知识面、性格。对软件工程实施的规范化感兴趣说明自己也重视规范性;想了解组内技术深度说明自己对技术兴趣浓厚;询问的时候体现出自己调查的结果,说明做事认真,前期准备工作量充足。
  5. 应聘的本质就是销售,简历是广告,面试是话术。

面试习惯

  1. 面试结束后询问面试官有哪些不足,可以有哪些改进。多总结失败经验。
  2. 面试后做好记录:没回答好的问题,可以进行的改进。
  3. 提前想好需要询问面试官的问题,调查清楚自己将会加入的小组情况。

面试不足

百度

一面(面试本身很好,未通过)

面试官所关注的问题:

  1. 特征工程的各种方法:编码、Embedding、高基数特征处理、特征选择、特征融合。
  2. 工程经验:LightGBM有哪些参数,调参技巧。
  3. 算法理解(算法原理)。
  4. 技术(编程语言等)

失败原因:缺乏分布式计算经验,应当用用 Hadoop,Spark,积累一下相关项目经验。

一面(通过)

项目介绍说得太简略,应当自己掌握主动权向面试官来介绍,而不该只进行简略介绍后让面试官来询问。

实际操作:我先简要说一下有哪些项目,如果面试官对哪个项目感兴趣会打断简介开始详细提问,之后恢复中断继续进行简要介绍。如果简要介绍过程没有发生中断,可以询问面试官“那么我就按照刚才介绍的顺序详细介绍一下这些项目如何”。

字节跳动

相比其他企业,字节面试时间比较紧,所以一般只能详细介绍一个项目,剩下的时间用来做编程题和问基础知识。

一面(未通过)

  1. 多了解一下广告业务(不该因为朋友讲不怎么问推荐系统就不看了,应当和其他企业一样好好研究JD)。
  2. 多了解一下推荐系统相关的知识和模型,比如FM,deep FM等。面试官推荐了一本书《深度学习推荐系统》,王喆。
  3. 应当先把思路想清楚再讲,不要意识流。面试官可以等我想明白,但不愿意看到混乱的思路。

二面(另一个部门,通过)

  1. 写代码时先想好思路,并且沟通好打算如何编写之后再进行实际编写;编写过程中时刻保持沟通,向面试官说明自己打算干啥。简单来讲就是类似于结对编程。
  2. 可以为每个项目准备不同时长的介绍,面试过程中根据需求选择如何介绍。
  3. 了解清楚物理背景,ReaxFF 里面参数的物理意义忘记了。

三面(通过)

多了解一下做过的项目的整个流程,了解实习项目为什么成功中标(寻找归因)。使用 Team Leader 的角度看问题,做项目的时候应当多多了解业务相关知识。

字节我所面试的这个组非常偏向业务,所以三面面试官作为 Team Leader 非常关注业务相关的能力。考虑到未来我有可能同样作为 Team Leader 负责一项业务,建议我能多思考一下整个项目的前因后果,整个流程。

高频面试题/知识漏洞

高频问题

几乎逢考必问 Logistic 回归

  • 损失函数
  • 为什么效果不好

如何防止过拟合,为什么会发生过拟合

过拟合是因为模型容量远超过样本容量,因此对噪声进行了拟合。根据PRML(chapter 1.1 P8),考虑使用多项式函数进行回归,多项式次数越高则容量越大,对噪声拟合则导致高次项参数非常大。原因是噪声通常对数据的影响是毛刺状大幅震荡,对于傅立叶变换之后高频部分影响较大,或者泰勒分解后会出现很大的高次项。从泰勒分解来考虑,过拟合使得模型非常不稳定,y相对x不再是平稳变化而是大幅震荡。

解决方案:

  1. 正则项:L1、L2等(chapter 1.1 P10),其中L1可以产生稀疏解
  2. 数据集增强:例如将图像旋转变化等
  3. 加入噪声:可以将噪声加入数据或参数中
  4. Early Stoping:机器学习和深度学习中都会用到
  5. Dropout:深度学习中用的比较多
  6. Bagging等集成

基尼不纯度:从数据集中任取两个数据,不同的概率,$1 - \sum{p_k^2}$

交叉熵:用p真实分布衡量非真实q分布平均编码长度,$-\int{p \cdot log(q)}$

Kl距离:p*log(p/q)$-\int{p \cdot log(\frac{q}{p})}$

SoulAPP

一面(未通过)

如何解决梯度爆炸或消失

  • 预训练加微调
  • 梯度剪切、权重正则(针对梯度爆炸)
  • 使用不同的激活函数
  • dropout
  • batchnorm
  • 残差结构
  • LSTM网络

不均衡样本

  1. 重新采样,比如smote过采样算法(选择每个正样本的k近邻,在该样本与邻样本连接线上采样)
  2. 再缩放:调整分类边界(西瓜书chapter3.6 P66)
  3. 集成学习(其实就是欠采样)

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 本质上是将椭圆形等高线转换成圆形等高线,避免振铃效应(怎么有点像共轭梯度法)
  • 我认为可以直接恒定优化步长,梯度只提供方向信息

询问面试官的问题

通用问题

本次面试相关

  1. 本次面试我有哪些不足,有哪些可以改进的地方
  2. 面试什么时候会有结果

岗位相关

  1. 业务:如果我能加入,将会做什么样的工作
  2. 我希望能够做富有挑战性的工作,请问能否详细讲讲这份工作里面将会存在的挑战
  3. hc数量(竞争压力)

组内情况

  1. 技术:组内使用的技术深度,如果我来能学到什么样的技术
  2. 流程规范化:内部软件工程做的怎么样,code review,代码静态检查工具等
  3. 加班情况(加班时间,强制性,加班的时候做什么)

企业相关

  1. 内部培训制度
  2. 大公司相比创业公司能学到哪些学不到的东西

字节跳动

三面

组相关问题

  1. 我来的话将会做什么
  2. 加班情况(加班时间,强制性,加班的时候做什么),作息要求严格吗,比如能否早上八九点来,晚上八九点走

技术成长

  1. 这个组在做项目中有做过哪些改进(能否举个例子,比如有的组会做业务的过程中额外思考word2vec有哪些改进等等)
  2. 是否总出差驻场(技术增进少,全是横向)
  3. 也想了解一下同学眼中的贵部门情况,所以想问一下如何能定位到贵部门,部门编号之类的

results matching ""

    No results matching ""