腾讯阿里等基础研究,机器学习岗方面的一些建议和面经
这一类的岗位面试大多数是以简历为基础,会根据简历上所提到的一些工具(比如caffe,cuda),算法(比如CNN,随机森林)和项目进行提问。所以准备面试最重要的就是要深刻的理解这些工具和算法的基础和优劣势,和实际工程上会遇到的问题并且要知道如何解决(比如,SVD在遇到数据特别大的时候会产生一定的问题?如何解决?)。如果自己不太熟或说不清楚的算法或记忆不太清楚的项目最好不要写在简历上。一般之前实习的具体内容不会被问到,面试官感兴趣的主要是学校课程和实验室所做的基础项目。
这类岗位同时也经常会问到一些统计相关的问题,所以基本的统计模型,概率题,矩阵知识得熟悉。也经常会遇到一些很抽象的问题,比如某技术的前景,和一些技术的对比,所以建议大家多看看机器学习相关的公众号啊之类的。
面试时楼主认为不仅是你能回答所有问题,态度等也很重要,要让面试官感受到你的谦虚和热情并且感受到你是一个将来可以融入他们团队的人。面试官更想看到你是个学习能力强并且积极阳光的人,毕竟校招不同于社招,并不会期待你能懂很多很多。
算法,数据库,数据结构:
1. 快排
2. 归并排序(核心为一个merge函数,把两个sort好的list合并起来)
3. 冒泡排序
4. 两个单向链表相接的一系列问题
5. reverse一个linked list,while和for两种方法
6. dynamic programming (要会做基础的背包问题,longest substring等)
7. mysql索引
8. B+树(节点如何分裂的)
9. 数据库底层所用到的grace hash join和merge join
10. 死锁和解决办法
11. n个数取k个最大
数理统计:
1. 如何求出一个圆的sin1度的大小(用taylor series)
2. 有一个不规则硬币,如何用它做一个1到6的随机数生成器(核心为找六个概率相同的事件)
3. 斗地主摸到王炸和四个二的概率是多少
4. 有一个二位坐标轴,你从原点可以往上下左右走,请问100步后走回原点的可能性(题目大概是这样,学过随机过程的可以做做)
5. confidence interval
6. 统计中的P值和Alpha值
7. 三门问题
8. 还有一些其他的概率题不太记得了
9. 矩阵的基本知识得牢记
机器学习方面:
(机器学习方面的问题一般会根据简历来问, 简历上写了的算法一定要很清楚如何底层实现,面试官一般都会让你给他讲)
1. 随机森林(注意要了解随机树上的每个节点上的feature是怎么选择的)
2. 线性回归(最优解表达式要牢记)
3. logistic回归
4. logistic函数和relu函数的图像是什么样的
5. 反向传播神经网络的讲解
6. PCA和SVD(数学方面的分解最好能比较精通)
7. SVD在遇到数据特别多的时候会产生一定的问题?如何解决?
8. cuda可以通过哪些方法对神经网络进行加速
10. 推荐系统(简单的可以用PCA和SVD做)
11. RNN和CNN的对比
12. 如何做矩阵的卷积。
语言:
(C++,java的这里就不写了,现在这类岗位比较喜欢问python相关的问题)
1. python2和python3有哪些区别
2. 用哪些库(比较基础的是numpy和scikit-learn)
3. python如何继承其他的class
4. super()的用法
5. python较java相比的优劣势
6. AngularJS, ReactJS, html的比较(写过前端的同学可以看看)
7. unix里的一些指令,比如cat,mkdir