这是以前参加校招时的面试题集合,可能不全,仅供参考,未经允许,不得转载。


机器学习算法工程师的面试一般分为几步,自我介绍、项目介绍、算法考察,当然大部分公司都会考察手写代码。


项目方面一般会考察以下几点:

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. 有什么缺点(不善于拒绝别人)和优点(动手能力快)