该仓库记录了如何准备机器学习工程师面试,尤其海外与外企岗位
-
申请岗位:软件工程师-机器学习方向、机器学习工程师、数据科学家、应用科学家
CS自学指南
- https://github.com/PKUFlyingPig/cs-self-learning
- https://github.com/conanhujinming/comments-for-awesome-courses
Leetcode
刷题策略
时间有限的前提下,精刷大于泛刷
- 阶段1: 初步掌握考察的常见数据结构和算法,尤其是常见类型的模版
- 阶段2: 拿到问题,首先从解决问题角度入手,然后从模板中提供线索。模版的基础上,不断强化练习。按tag刷题
- 阶段3: 真正融会贯通,结合问题交流、复杂度分析、头脑测试,刷题量达到满意要求
- 面试前,针对面试公司的tag或面经进行重点练习
面试
机器学习方向主要使用python,因此以python为刷题语言
- 先明确自己理解题意,不明白的地方一定问清楚。通过写几个test case,确保涵盖所有情况。并确认输入输出的类型和边界
- 开始想人是如何做这个任务的。没有思路时,想想更简单、数量更少时如何处理
- 转化为代码,用什么数据结构,什么算法。讲思路的时候,一定说清楚为什么选择这个数据结构,并结合有代表性的test case讲
- 写完代码后,进行test的过程
- 给出复杂度分析
参考
学习资料
基础
- Introduction to Computer Science - Harvard CS50x
- Structure and Interpretation of Computer Programs - UC Berkeley CS 61A
- How to Design Programs
- 深入理解计算机系统 - CSAPP
- The Art of Computer Programming - TAOCP
- 代码大全
- UNIX 编程艺术
- 重构:改善既有代码的设计
数据结构和算法
操作系统
- Operating Systems and System Programming - UC Berkeley CS 162
- Operating System Engineering - MIT 6.828
- 编码:隐匿在计算机软硬件背后的语言
- 计算机系统要素
- 计算机组成与设计
- Operating Systems: Principles and Practice
- Operating Systems: Three Easy Pieces
- Operating System Concepts
Web开发与系统设计
分布式
机器学习
- 常见模型的原理和局限
- 手写基础算法
- 写实现两层fully connected网络
- 手写CNN
- 手写KNN
- 手写K-means
- 手写softmax的backpropagation
- 手写AUC
- 手写SGD
- 延伸
- 给一个LSTM network的结构,计算how many parameters
- convolution layer的output size怎么算? 写出公式
- 设计一个sparse matrix (包括加减乘等运算)
- 八股文
- 怎么解决nn的overfitting/underfitting
- 优化器,如何选择优化器
- 数据收集
- 模型选择
- 推荐,scale\abtesting\trouble shooting
System design
Reference
行为面试 Behavior question
面试考察的不单是技术能力,更是考察是否是未来值得合作的同事。行为面试不可小觑,甚至更多时候软实力都是更重要的能力,因此面试时有针对的准备是非常非常有必要的。
基本态度
- 说话自信大气,眼睛和肢体不要有多余的动作,professional, 有Leader该有的样子。而且不要我,是你们的损失,有这种气魄,但不要因此傲气
- 正常的面试官,其实也就是我们身边的人,是和我们谈笑风生的一样,不要有负担
- 注重记录和录音
- 注意面试官问题,他想要的答案是什么,一些关键字是什么. 不会的问题,也把能想到和思考的呈现出来即可,relax
- 任何开放问题,LC或ML,都从最简单开始
- 适当掌握主动,整体诚信
- 总是从大的框架入手讲解,横向多对比,纵向如何深入优化
- 主要发offer之前表现出对加入公司浓浓的兴趣
- 有些问题,可以多要点时间想想 不要乱说。框架性思考,分点阐述。不必着急回答
常见问题
背后都对应着leadership principles
-
conflicts with manager/跟老板同事如何处理冲突,
-
challenging project
-
think differently
-
simple solution to solve a problem
-
tight deadline
-
怎么带队
-
怎么plan项目
-
advocate myself的经历
-
deal with 不配合的同事
-
怎么让团队保持innovative
-
怎么说服别人同意你的意见
首先划定几个禁区,- 不要以自己的身份和地位去压别人,而是摆事实 讲道理
- 就事论事,不要上升到人
- 意识到自己的错误了 及时承认
-
describe a situation where you decided to step in to help a friend/teammate
-
describe a situation where you explore a new area
-
怎么给一个完全没有ML背景的客户介绍相关技术概念
-
跳槽原因
- 提升技术深度和广度
Project
- 里面的细节
- 是否有不足之处,怎么改善/或现在让你重新来做,会如何改善
STAR
- situation
- task
- action
- results
网友评论