这是以前参加校招时的面试题集合,可能不全,仅供参考,未经允许,不得转载。
机器学习算法工程师的面试一般分为几步,自我介绍、项目介绍、算法考察,当然大部分公司都会考察手写代码。
项目方面一般会考察以下几点:
1. 项目介绍
2. 项目中的收获(理论与实践,向资深员工学习)
3. 项目中遇到的问题(大数据下的处理,理论在实践中如何改进)
自我介绍、项目介绍和手写代码不在本文介绍范围,本问只介绍具体的机器学习问题。随着时间的变化,可能有些题有些旧了,大家自己有取舍地看下就可以。
1. 支持向量机
a. 支持向量机(SVM)原理(最小间隔最大化,结构风险最小化)
b. svm优点(非线性、高维、小样本、泛化能力强、有全局最优点)
c. 多类问题的解决方案,多类分类(一对其余k个(看分为那个类或离那个分类面远),一对一k(k-1)/2个(投票决定),决策树)
d. 公式、模型、优点,libsvm
e. 如何组织训练数据
f. 如何调节惩罚因子C,C无限大变成硬间隔问题,C变大,损失变大,越不容忍离群点
g. svm的泛化能力
h. 增量学习
i. 并行处理 网格搜索,调参
j. 调参,g越大,高维越多,越过拟合,分类正确率几乎达到了100%
k. g默认 1/k ,k为特征维数 C默认1
2. 逻辑回归(LR)原理、公式、求解(梯度下降法、拟牛顿法)、代码实现
3. 生成模型(朴素贝叶斯、隐马尔科夫,可以用EM求解)和判别模型(直接学习条件概率分布或者决策函数)
聚类:
4. kMeans聚类算法原理、不足(没有结构化信息、不适合非球状的聚类)、改进(扁平聚类)(聚类效果评估)
5. 层次聚类
6. KNN的优缺点(优点:a.可做分类和回归 b.可用于非线性分类 c.准确度高,对outlier不敏感)(缺点:a. 计算量大,b.样本不平衡问题 c.需要大量内存)
7. 排序算法效果评估(MAP、DCG、NDCG)
8. k值选择(族平均直径的拐点)
9. 聚类算法的评价(纯度、NMI、RI、F5 )纯度不能在聚类质量和簇数目上保持均衡,NMI可以
10. 分类算法的评价标准
11. 朴素贝叶斯公式,laplace光滑,某些特征(网址、电话号码等)
12. 正则化的作用(控制模型复杂度,提高模型的泛化能力)
13. 用过的分类聚类算法,分类(LR、朴素贝叶斯、支持向量机、神经网络、KNN、决策树),聚类(Kmeans、层次、谱聚类)
14. 看过哪些专业书
15. 对数据挖掘的了解
16. 机器学习在互联网应用面临的10大挑战(数据稀疏、不平稳随机过程产生的数据、高质量的标定数据、大规模、速度、在线学习、冷启动、做到极致、人加机器)
17. 蒙特卡洛算法(特别是Gibbs采样算法)
知道蒙特卡洛算法的基本原理,特别了解Gibbs算法的采样过程;Markov 随机过程和Markov chain等
18. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:
用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
在树构造过程中进行剪枝;
能够完成对连续属性的离散化处理;
能够对不完整数据进行处理。
19. MLN 建构在图模型和一阶逻辑基础上的一种语言,可以用来描述很多现实问题
20. 特征选择方法(相关性、距离、信息增益、一致性属于筛选器,而分类器错误率属于封装器。)
21. 降维的方法(特征选择和特征提取)特征选择(过滤法、封装法、混用法、嵌入法)特征提取(pca)
22. 神经网络防止过拟合(样本尽量多,除去噪音点,交叉验证)
23. 矩阵分解(特征值,特征向量)
24. 分类效果评估(宏平均和微平均)
其中宏平均F1的计算方法先对每个类别单独计算F1值,再取这些F1值的算术平均值作为全局指标。而微平均F1的计算方法是先累加计算各个类别的a、b、c、d的值,再由这些值求出F1值。由两种平均F1的计算方式不难看出,宏平均F1平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均F1平等考虑文档集中的每一个文档,所以它的值受到常见类别的影响比较大。
25. 归一化 ([min,max]归一化,零均值归一化,s型分布)
26. 特征提取(卡方、互信息、信息增益),lasso
27. 感知机(线性)
KNN(非线性,欧氏,球体,k值较小过拟合,交叉验证选K值)
决策树(贪心,剪枝反之过拟合,信息增益)
LR线性
最大熵(迭代尺度,让似然函数变大,收敛条件:所有 wi 都收敛,wi是拉格朗日乘子)题:
28. libsvm
checkdata 归一化
交叉验证,g的取值范围,c的取值范围,取最优
C越大,对误分类的惩罚越大,越要求线性可分
g越大,高维特征组合越多,越非线性,g越小,越选择低维
29. HMM
1)概率计算,不用前向后向,时间复杂度是O(T*N^T)
用前向后向,时间复杂度是O(T*N^2)
2)学习参数,EM算法
3)预测问题,维特比算法O(T*N^2)
30. EM算法
E步求期望,M步求最大。
jensen不等式。
31. 图形图像 RNN(反馈)CNN(卷积)
32. 回归
编程能力方面:
1. 编程实现atoi、itoa
2. 编程实现memcpy、memmove、memset
3.编程实现strcpy、strcat
数据结构和基础算法方面:
1.排序算法时间空间复杂度是否稳定思想(快排空间复杂度o(logn),归并空间复杂度o(n),稳定的排序有插入排序、冒泡排序、归并排序,希尔排序是插入排序的一种)
2.如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)(桶排序)
3.找出数组中两个只出现一次的数字(异或分为两个数组,然后再异或得到结果)
4.最长公共字串(动态规划)
5.二叉树非递归遍历
6.旋转数组找最小或找某值
7.最大连续子矩阵
基础算法应用题
1. 两个文件找相同行
2. 硬币 正面p 反面q 如何得到0.5 01认为正面,10认为反面
正反0.5 去掉00,其它1/3
3. 球均匀取点
4. 找中位数(前16位,后16位)
5. 随机数生成器
6. 旋转数组找中位数
具体应用场景、实际问题分析
1. query改写 simrank
加分项:
1. 实习经历
2. 项目经验
3. spark 弹性分布式数据集、scala
分析问题的思路:
宏观的把握,如节假日。
微观的细节,如具体的商户或者商品。
HR方面:
1. 为什么不继续留在百度或者腾讯
2. 有什么缺点(不善于拒绝别人)和优点(动手能力快)