人工智能面试总结:160个机器学习面试题,赶紧先考考自己!
数据科学职位的典型面试过程会有很多轮,其中通常会涉及理论概念,目的是确定应聘者是否了解机器学习的基础知识。在这篇文章中,我想总结一下我所有的面试经历(面试or被面试)并提出了160多个数据科学理论问题的清单。其中包括以下主题:
线性回归模型验证分类和逻辑回归正则化决策树随机森林GBDT神经网络文本分类聚类排序:搜索和推荐时间序列这篇文章中的问题数量似乎远远不够,请记住,面试流程是根据公司的需求和你的工作经历而定的。因此,如果你的工作中没有用过时间序列模型或计算机视觉模型,就不会收到类似的问题。
提示:如果不知道某些面试问题的答案,不要灰心。为了简化起见,我根据难度将问题分为三类:
容易中号专家letusgo!
有监督的机器学习
什么是有监督学习?线性回归
什么是回归?哪些模型可用于解决回归问题?什么是线性回归?什么时候使用它?什么是正态分布?为什么要重视它?如何检查变量是否遵循正态分布?如何建立价格预测模型?价格是否正态分布?需要对价格进行预处理吗?解决线性回归的模型有哪些?什么是梯度下降?它是如何工作的?什么是正规方程?什么是SGD-随机梯度下降?与通常的梯度下降有何不同?有哪些评估回归模型的指标?什么是MSE和RMSE?验证方式
什么是过拟合?如何验证模型?为什么需要将数据分为三个部分:训练,验证和测试?解释交叉验证的工作原理?什么是K折交叉验证?如何在K折交叉验证中选择K?你最喜欢的K是什么?分类
什么是分类?哪些模型可以解决分类问题?什么是逻辑回归?什么时候需要使用它?Logistic回归是线性模型吗?为什么?什么是Sigmoid?它有什么作用?如何评估分类模型?什么是准确性?准确性始终是一个好的指标吗?什么是混淆表?表中的单元格表示什么?什么是精度,召回率和F1分数?准确率和召回率的权衡什么是ROC曲线?什么时候使用?什么是AUC(AUROC)?什么时候使用?如何解释AUROC分数?什么是PR曲线?PR曲线下的面积是多少?这个指标有用吗?在哪种情况下AUPR比AUROC好?如何处理分类变量?为什么需要one-hot编码?正则化
如果的数据中包含三列:x,y,z,其中z是x、y的和,那么线性回归模型会怎样?如果数据中的z列是x和y列之和加上一些随机噪声,那么的线性回归模型会怎样?什么是正则化?为什么需要它?有哪些正则化技术?什么样的正则化技术适用于线性模型?L2正则化在线性模型中是什么样的?如何选择正确的正则化参数?L2正则化对线性模型的权重有什么影响?L1正则化在线性模型中是什么样的?L2和L1正则化有什么区别?可以在线性模型中同时具有L1和L2正则化吗?如何解释线性模型中的常数项?如何解释线性模型中的权重?如果一个变量的权重高于另一个变量的权重,那么可以说这个变量更重要吗?什么时候需要对线性模型进行特征归一化?什么情况下可以不做归一化?特征选择
什么是特征选择?为什么需要它?特征选择对线性模型重要吗?有哪些特征选择技术?可以使用L1正则化进行特征选择吗?可以使用L2正则化进行特征选择吗?决策树
什么是决策树?如何训练决策树?决策树模型的主要参数是什么?如何处理决策树中的分类变量?与更复杂的模型相比,单个决策树有什么好处?如何知道哪些特征对决策树模型更重要?随机森林
什么是随机森林?为什么需要在随机森林中进行随机化?随机森林模型的主要参数是什么?如何选择随机森林中树的深度?如何知道随机森林需要多少棵树?随机森林的训练并行化容易?该怎么做?随机森林中过多的树有什么潜在问题?是否可以不找到最佳分割,而是随机选择几个分割,然后从中选择最佳分割?可行吗数据中存在相关特征时会怎样?梯度提升
什么是梯度增强树?随机森林和梯度提升之间有什么区别?是否可以并行化梯度提升模型的训练?怎么做?梯度增强树中的特征重要性-有哪些可能的选择?梯度提升模型的特征重要性,连续变量和离散变量之间是否有区别?梯度提升模型中的主要参数是什么?如何在XGBoost或LightGBM中调整参数?如何在梯度提升模型中选择树的数量?参数调整
你大致了解哪些参数调整策略?网格搜索参数调整策略和随机搜索有什么区别?什么时候使用一个或另一个?神经网络
神经网络可以解决哪些问题?通常的全连接前馈神经网络如何工作?为什么需要激活功能?sigmoid为激活函数有什么问题?什么是ReLU?它比sigmoid或tanh好吗?如何初始化神经网络的权重?如果将神经网络的所有权重都设置为0会怎样?神经网络中有哪些正则化技术?什么是1.1Dropout?为什么有用?它是如何工作的?神经网络的优化
什么是反向传播?它是如何工作的?为什么需要它?你知道哪些训练神经网络的优化技术?如何使用SGD(随机梯度下降)训练神经网络?学习率是多少?学习率太大时会发生什么?太小?如何设置学习率?什么是Adam?Adam和SGD之间的主要区别是什么?什么时候使用Adam和SGD?要保持学习率不变还是在训练过程中改变它?如何确定何时停止训练神经网络?什么是ModelCheckpoint?讲一下你是如何进行模型训练的?用于计算机视觉的神经网络
如何使用神经网络进行计算机视觉?什么是卷积层?为什么需要卷积?不能使用全连接层吗?CNN中的pooling是什么?为什么需要它?Maxpooling如何工作?还有其他池化技术吗?CNN是否抗旋转?如果旋转图像,CNN的预测会怎样?什么是数据增强?为什么需要它们?你知道哪种增强?如何选择要使用的增强?你知道什么样的CNN分类体系?什么是迁移学习?它是如何工作的?什么是目标检测?你知道有哪些框架吗?什么是对象分割?你知道有哪些框架吗?文字分类
如何使用机器学习进行文本分类?什么是词袋模型?如何将其用于文本分类?词袋模型的优缺点是什么?什么是N-gram?如何使用它们?使用N-gram时,词袋模型中N应该是多少?什么是TF-IDF?它对文本分类有什么用?你用过哪种模型对带有词袋特征的文本进行分类?使用词袋进行文本分类时,你希望使用梯度提升树模型还是逻辑回归?什么是词嵌入?为什么有用?你知道Word2Vec吗?你还知道其他词嵌入的方法吗?如果你的句子包含多个单词,则可能需要将多个单词嵌入组合为一个。你会怎么做?在进行带有嵌入的文本分类时,使用梯度提升树模型还是逻辑回归?如何使用神经网络进行文本分类?如何使用CNN进行文本分类?聚类
什么是无监督学习?什么是聚类?什么时候需要它?K-means是如何工作的吗?如何为K均值选择K?你还知道其他哪些聚类算法?你知道DBScan如何工作吗?何时选择K-means,何时选择DBScan?降维
维度灾难是什么?为什么要关心它?你知道降维技巧吗?什么是奇异值分解?它通常如何用于机器学习?排序和搜索
什么是排序问题?可以使用哪些模型来解决它们?文本信息检索任务重,什么是好的无监督baselines?如何评估排序算法?使用哪些离线指标?k的精度和召回率是多少?k的平均精度均值是多少?如何使用机器学习进行搜索?如何获得训练算法的排序数据?可以将搜索问题表述为分类问题吗?如何将点击数据用作训练数据以进行排序算法?如何使用梯度提升树进行排序?如何在线评估新的排序算法?推荐系统
什么是推荐系统?建立推荐系统时有什么好的baseline?什么是协同过滤?如何将隐式反馈(点击等)纳入推荐系统?什么是冷启动问题?解决冷启动问题的可能方法?时间序列
什么是时间序列?时间序列与通常的回归问题有何不同?用于解决时间序列问题的有哪些模型?如果序列中有趋势,如何消除它?为什么要这么做?在时间t处测得只有一个变量“y”的序列。如何在时间t+1预测“y”?使用哪种方法?有一个带有变量“y”和一系列特征的序列。如何预测t+1时的“y”?使用哪种方法?使用树来解决时间序列问题有什么问题?以上!希望它对各位有用,赶紧考考自己先,也希望大家面试顺利!更多人工智能,机器学习方面的教程也会继续更新!
本人这些天总结了些人工智能视频教程,伙伴们有正在学或者准备学的伙伴,可以留言或评论回复:人工智能,我发大家哈!
人工智能面试题86问,新手找工作必备!
人工智能是一门研究模拟人类智能,实现机器智能的一门科学,那么,在找工作过程中,这些面试题常常会被问到。了解一二,有备无患。
关于Python
1、Python的函数参数传递方法?
2、Python中的元类(metaclass)有哪些?
3、@staticmethod和@classmethod的区别?
4、类变量和实例变量区别?
5、Python中单下划线和双下划线?
6、字符串格式化:%和.format?
7、迭代器和生成器的区别?
8、说一说面向切面编程AOP和装饰器?
9、怎么理解Python中重载?
10、新式类和旧式类
11、__new__和__init__的区别
12、单例模式
13、Python中的作用域
14、GIL线程全局锁
15、协程
16、Python函数式编程
17、Python里的拷贝
18、Python垃圾回收机制
19、read,readline和readlines
20、Python2和3的区别
21、调度算法的步骤
22、静态链接和动态链接的区别是什么
23、虚拟内存技术
24、分页和分段
25、页面置换算法
26、边沿触发和水平触发
27、Redis原理
28、乐观锁和悲观锁
29、MyISAM和InnoDB
30、urllib和urllib2的区别
31、apache和nginx的区别
32、幂等Idempotence
33、RESTful架构(SOAP,RPC)
34、CGI和WSGI
35、unix进程间通信方式(IPC)
36、广度遍历和深度遍历二叉树编程问题
关于人工智能
1.什么是机器学习
2.机器学习与数据挖掘的区别
3.什么是机器学习的过度拟合现象
4.过度拟合产生的原因
5.如何避免过度拟合
6.什么是感应式的机器学习?
7.什么是机器学习的五个流行的算法?
8.机器学习有哪些不同的算法技术?
9.在机器学习中,建立假设或者模型的三个阶段指的是什么?
10.什么是监督学习的标准方法?
11.什么是训练数据集和测试数据集?
12.下面列出机器学习的各种方法?
13.非机器学习有哪些类型?
14.什么是非监督学习的功能?
15.什么是监督学习的功能?
16.什么是算法独立的机器学习?
17.人工智能与机器学习的区别?
18.在机器学习中分类器指的是什么?
19.朴素贝叶斯方法的优势是什么?
20.在哪些领域使用模式识别技术?
21.什么是遗传编程?
22.在机器学习中归纳逻辑程序设计是指什么?
23.在机器学习中,模型的选择是指?
24.用于监督学习校准两种方法是什么?
25.什么方法通常用于防止过拟合?
26.规则学习的启发式方法和决策树的启发式方法之间的区别是什么?
27.什么是感知机器学习?
28.贝叶斯逻辑程序的两个组成部分是什么?
29.什么是贝叶斯网络?
30.为什么基于实例的学习算法有时也被称为懒惰学习算法?
31.支持向量机能处理哪两种分类方法?
32.什么是集成学习?
33.为什么集成学习被应用?
34.什么使用集成学习?
35.什么是集成方法的两种范式?
36.什么是集成方法的一般原则,在集成方法中套袋(bagging)和爆发(boosting)指的是什么?
37.什么是集成方法分类错误的偏置方差分解?
38.在集成方法中什么是增量合成方法?
39.PCA,KPCA和ICE如何使用?
40.在机器学习中降维是什么意思?
41.什么是支持向量机?
42.关系评价技术的组成部分是什么?
43.连续监督学习有什么不同方法?
44.在机器人技术和信息处理技术的哪些方面会相继出现预测问题?
45.什么是批量统计学习?
46什么是PAC学习?
47有哪些不同的类别可以分为序列学习过程?
48什么是序列学习?
49.机器学习的两种技术是什么?
50.你在日常工作中看到的机器学习的一个流行应用是什么?
某公司人工智能面试问题与参考答案总结
本文用于记录这几天面试下来的一些流程和心得体会,重点记录XXXX部门的三场面试,了解自己的优势,更重要的是发现自己的不足,以便在日后针对性的加强学习和进步!
1面试流程1.1技术面(14:00–14:30,15:30–16:40,30/Aug.)1.1.1自我介绍1.1.2话题来源1.1.3互动方式1.1.4面试问题a.基础部分b.数据部分c.机器学习&深度学习d.数据结构与算法e.逻辑思维1.2HR面(16:30–17:00,31/Aug.)2一些想法和日后的学习计划1面试流程面试流程轮数面试类型面试方式面试时长(min)1技术面视频302技术面视频60-703HR面电话20-301.1技术面(14:00–14:30,15:30–16:40,30/Aug.)1.1.1自我介绍首先是一段自我介绍,自我介绍内容可以尽量简洁,只涵盖和自己及岗位相关的框架,便于面试官在我们陈述过程中抓取感兴趣的内容,拓展开来提问;这个时候不需要慌张,可以随时终止自我介绍,针对面试官的提问,详细展开,分点描述。如果一开始就事无巨细的把自己的各类爱好特长科研经历的细节一一陈述,不仅浪费时间,更会丧失重点,更重要的是,会给面试官留下主次不分,没有条理的坏印象。
1.1.2话题来源从几次的技术面试经历来看,除了面试官准备好一定要问的问题之外,问题来源一般有三:
自我介绍;个人简历,重要性依次为:项目经历>专业技能>专业课程;在详述某个内容或项目时,提及的面试官兴趣的某个项目或技能;从某种意义上来说,准备好自我介绍,认真雕琢简历(在此特别感谢一位学长给我简历上的指导!),以及对项目的了如指掌,就已经主导了这一场面试的大部分讨论话题!
1.1.3互动方式两次技术面试除了在时长上面有所差异,面试内容问题差异不大,但是根据技术面试官个人的喜好和性格,呈现出两种不同的面试风格。其中:
一面倾向于面试官提问--我来回答的模式,面试官本人不会对我的回答进行详细的评价,而是立即进行下一个问题的讨论;二面倾向于面试官提问--我来回答--双方讨论的模式,虽然面试官在我回答之后同样不会给出正确答案,但是会针对我的回答进行一定程度上的互动,例如:阐述该问题在专业领域的重要性解释该问题涉及的相关技能对问题进行略微的改动,观察我的迁移学习和反应能力1.1.4面试问题由于当时没有特意记录,这里全凭记忆整理一些印象深刻的问题。
a.基础部分介绍自己平常用到的Linux命令;介绍什么是继承和多态;介绍Numpy常用操作,如何对矩阵进行转置;介绍Pandas常用操作,如何筛选数据;如何反转输出字符串;什么是列表推导式;b.数据部分是否对大量数据或者经典数据集进行过数据预处理(数据清洗/数据筛选等),如果有请详述操作流程(因为没有实际数据处理经验,我只介绍了当初学习过程中如何对Boston房价和Wine数据进行清洗和预处理);介绍常用的SQL语言,如何显示所有字段,如何拼接表单(由于我对数据库仅限于了解最基础的操作,因此我只回答了我所知道的最基本的几个数据库语句,对最后一个拼接表单的问题,我直接说确实不会做。在这里说一下,如果遇到自己不会的题目,是很正常的事,直截了当地说不会就行,然后最好可以说一说和它相关但是自己又相对熟悉的其他东西,面试官不会因为我们哪个知识点不熟悉不了解而全盘否定我们的——当然前提是不要问啥啥不会[笑哭]);用Scrapy框架爬过哪些网站,分别用过哪些技能,各个网站都有什么各自的特点(详细说一说各大网站的反爬虫特点,以及自己的应对方法,有做过简单项目的华也可以针对自己的项目进行述说);是否了解Python的异步和多线程,用过哪些相关的库(这里我提到了自己做过的动态代理池项目,Github/博客笔记,详述了整个项目的框架,然后通过其中一个异步模块顺带就回答面试官的问题);用爬虫获取的数据有什么用途,是否应用于机器学习(这一题我也是如实回答,没有对爬虫获取的数据进行过实际的应用,因为当初是在学习爬虫的各种技能,关于数据应用和挖掘这一块我尚且没有进行过实战);c.机器学习&深度学习了解哪些经典机器学习方法,针对某一两个进行详述(我在实验室项目中用到过SVM,因此详细说了下SVM的原理,以及是如何调参的;二面也问到了这个问题,但是面试官又主动问了我决策树/CART/GBDT的原理和特点,但是遗憾的是我对决策树只了解最基本的决策树和剪枝等对抗过拟合的方法,CART/GBDT两个我直接说目前还没有深入了解,同时我又描述了一下我相对比较了解的随机森林,运用的Bagging和Adaboost,继而在面试官的要求下,又详细说了一下Bagging和Adaboost的原理和效果);用过Tensorflow框架搭建过哪些模型,简述模型搭建的过程和步骤(我目前也没有针对实际应用搭建过模型,就说了最经典的MNIST的全连接网络模型以及CNN模型,分别介绍了全连接和CNN模型的搭建过程)是否了解CNN和RNN,简述其特点,以及为什么要用这两种网络(我对于RNN目前还不是特别了解,因此针对CNN进行了详述,包括卷积层/池化层的作用和优势,stride的选取,参数数量的改变);介绍Dropout的作用和意义;什么是过拟合和欠拟合,过拟合的应对措施有哪些(应对措施我主要说了三个:增大训练数据集的规模/训练提前停止/L1和L2正则化;这之后面试官又让我说一说L1和L2正则化为什么能起作用,以及他们各自的特点,我说到了网上一篇文章用二位坐标轴来解释的,面试官笑着说他也看过这篇文章,然后互相心有灵犀我也就没有继续解释下去);是否不用深度学习框架编写过网络模型(我介绍了一下当初跟着吴恩达老师的视频课程,用纯Python搭建过识别猫的图片的后向传播神经网络,并简要介绍了一下模型的架构和作用);d.数据结构与算法详述快速排序的原理和过程;利用快速排序找到数据中第K大的项(这题我一时半会没有回答出来,不过和面试官交流了我的思考过程,面试官也会和我进行一定的讨论,从而判断我的逻辑是否清晰);e.逻辑思维有一个村子里有n个人,其中一人是明星,另外(n-1)个人是普通人。其中,明星不认识除了自己之外的任何人,却被所有普通人认识;而普通人之间有可能认识或不认识。为了找出这个村子里的明星,我们可以向上帝提问:A是否认识B,上帝会给我们正确的答案——这个操作需要O(1)的时间成本。请给出耗时尽可能少的方案。上一题的变体:有两个明星,明星之间互相认识;有两个明星,明星之间互相不认识;有两个明星,其中A认识B,但B不认识A;有(n-1)个明星;。。。这道题目和它的变体很多甚至不存在正确答案,面试官需要我们一边思考一边展示我们的思考过程,也就是解决实际问题的一个思路。1.2HR面(16:30–17:00,31/Aug.)前两部分技术面试通过之后,剩下最后的HR面试。HR面试主要考察我们的入职意愿,时间安排,爱好性格等等软实力和第三方因素,因为个人差异肯定较大,因此在这里不做讨论~注意一点就好,就是要给HR留下几个印象:我很希望入职,我是一个阳光上进刻苦聪明的人,并且我有时间精力参加实习,并且不会突然离职。这句话当然不能够直接说出来,要在和HR的交谈中透露出来就行。
2一些想法和日后的学习计划有待补充。