机器学习算法面试

美团AI算法

1. xgboost原理,怎么防过拟合

2. gbdt推导

3. boosting和bagging在不同情况下的选用

4. DBSCAN原理和算法伪代码,与kmeans,OPTICS区别

5. LSTM原理,与GRU区别

6. 算法题:翻转中间由各种符号隔开的字符串

1. EM算法推导,jensen不等式确定的下界

2. xgboost和lightgbm的区别和适用场景

3. LR的推导,损失函数

4. gbdt推导和适用场景

5. DNN的梯度更新方式

6. 算法题:2sum,3sum

7. 算法题: 从右边看被遮挡的二叉树,求露出的node

8. 概率题,抽蓝球红球,蓝结束红放回继续,平均结束游戏抽取次数

9.apriori,KM算法,匈牙利算法,模拟退火,贪婪,蚁群对比

腾讯机器学习

1. 扣简历的项目,扣的很细

2. xgb,rf,lr优缺点场景。。。真的逢面必问,最好还是自己去网上扣一下这题

3. 算法题,单链表判断是否有环 (leetcode easy),以及判断环入口

4. 算法题,给前序和中序,求出二叉树

5. 是否写过udf,问udaf,udtf区别和一些细节

1. 扣项目,问简历,其中涉及的算法和上面差不多

2. 问推荐算法,fm,lr,embedding

3. 算法题,10亿个32位正整数,求不同值,只给1GB内存。。。我只答出来4GB的情况,时间负责度还不是最优的,所以稳稳凉了,如果有人知道怎么解1GB,求回复,感谢

1. 算法题: topK给出3种解法

2. 协同过滤的itemCF,userCF区别适用场景

3. 扣项目,问简历,其中涉及的算法和上面差不多

4. 对项目中一些技术选型产生质疑,并友好的一起讨论了这个问题

5. 推荐系统的大概步骤,解决冷启动。。。

1. 算法题:名人问题,给出最优解法

2. 问了一下项目和简历

3. 自我评价优缺点,怎么改进

4. 描述一个算法项目从kickoff-落地的全过程

阿里机器学习

1. 扣简历,问得太细了,每个项目都要回答如果再做一次,有什么改进的地方,both算法上和模型选择上

2. 算法题,反转链表

3. 算法题,trim二叉搜索树

1. 扣简历

2. CNN为什么比DNN在图像识别上更好

3. 用mapreduce实现10亿级以上数据的kmeans

4. rf和gbdt基分类器区别,里面的决策树分别长啥样,怎么剪枝

5. 说一下gbdt的全部算法过程

6. 反转链表。。。这个倒是简单

1. why LSTM,和Naive RNN区别

2. lightgbm优势

3. 简历上项目为何适用xgb和lr,对比其他分类算法的场景优势 (这题基本上逢面试必问)

4. 简历上聚类项目用到的ISODATA算法比kmeans有哪些改进

5. 算法题,单调函数求零点 (简单的二分法)

作者:MLSDD
链接:https://www.nowcoder.com/discuss/97549?type=0&order=0&pos=13&page=1
来源:牛客网

1.gbdt,xgboost,lgbm的区别(阿里,头条)
2.梯度下降法,牛顿法,拟牛顿法区别(阿里)
3.SGD,ADAM区别(百度)
4.什么是梯度消失,饱和,如何改善(阿里)
5.lr的推导(腾讯)
6.SVM目标函数,为什么转为对偶(腾讯,百度)
7.定义class mlp(头条)
8.kd tree(腾讯)
9.FFM的优化(百度)
10.解释RESNET(百度,阿里)
11.mapreduce思想(腾讯)
12.解释BN(头条,百度)
13.非结构化文本处理方法(阿里)
14.bagging.boosting.stacking区别(阿里)
15.CNN与RNN的区别(阿里)
16.如何防止过拟合(头条)
对于面试风格,百度算法面试侧重于开发的内容,比如linux常用命令,c ,操作系统之类的知识,且必写代码。腾讯侧重于机器学习算法相关基础性知识一般考一个代码题左右。阿里侧重于思维,学习能力方面的考察,聊项目居多,代码题一般一个左右。头条就是代码 项目。

基础

数据方面

1)  如何解决数据缺失的情况

丢弃:当缺失数据的样本很小时,可以采用直接丢弃。

数据填充:填充均值(数值型补均值,非数值型补众数值),填充预测值()

不做处理:把变量映射到高维空间,比如性别,有男女、缺失三种情况,则映射成三个变量。这样做的好处是完整保留了原始数据的全部信息,不用考虑缺失值,缺失值是计算量大大提升。适用于样本很大的情况。

2)  为什么要做数据归一化,在梯度下降时有什么好处

(加速梯度下降,减少梯度下降时的摆动,根据下降曲线进行讲解,很容易得出)

一是提高精度:

二是加速梯度下降,提升模型的收敛速度:

归一化方法:线性归一化 x = (x-min) / (max-min);标准化x = (x-样本均值) / 样本方差

3)  数据异常处理

最优化方面

4)  loss优化方法

说了BGD,SGD,各自优缺点,优化方向(Adam之类的)

5)  梯度下降法,牛顿法,拟牛顿法区别(阿里)

具体看笔记。

梯度下降:负梯度的方向是函数值下降最快的方向。在迭代的每一步,以负梯度的方向更新x的值,从而达到减小函数值的目的。有BGD批量梯度下降、SGD随机梯度下降。

牛顿法:牛顿法是一种近似求解方程的方法。使用函数f(x)的泰勒展开来寻找函数的根。牛顿法的特点是收敛速度快。牛顿法每次迭代需要计算目标函数海赛矩阵的逆矩阵,计算比较复杂。

拟牛顿法:用正定矩阵近似海赛矩阵的逆矩阵或海赛矩阵,简化了计算的过程。

6)  SGD,ADAM区别(百度)

7)  什么是梯度消失,饱和,如何改善(阿里)

8)  梯度下降过程 (写代码)

9)  什么是有监督训练,什么是无监督训练,举例说明

10) 说说常见的过拟合的解决办法;怎么解决过拟合问题:

来自吴恩达

方法一:增加数据。原因:理论上来说学习一个模型的目标就是选择期望风险(期望风险:模型关于联合分布平均意义下的损失)最小的模型,但是联合分布P(X,Y)是未知的。一方面根据期望风险最小学习模型要用到联合概率分布,另一方面联合概率分布又是未知的,因此监督学习是一个病态问题。所以实际中我们是用经验风险来学习模型,经验风险就是关于训练数据集的平均损失。根据大数定律,当样本趋于无穷时,经验风险趋于期望风险。(类比抛硬币更好解释)。

方法二:决策树剪枝、SVM松弛变量、L1,L2正则化,dropout 、Early Stopping

11) L1、L2相关问题,原理

坐标下降,LARS角回归

L1正则化是让绝对值之和最小,L2是让平方和的平方根最小(一般是取L2的平方,即让平方和最小),L1可以产生稀疏权值矩阵,让权值为0;L2可以权值趋于0.

(这种常见的图是J(w1,w2)的三维图进行投影得到的。圆圈是等值线)

12) L1优化方法

由于L1是绝对值之和,存在不可导点,故最小二乘法、梯度下降法、牛顿法与拟牛顿法统统失效。故采用两种新的求极值的解法:坐标下降法、最小角回归法(LARS)

13) 坐标下降法

数学依据:一个可微的凸函数,有n个维度,如果在某一点x使得J在每一个坐标轴上都是最小值,那么J(x)就是全局的最小值。

过程:固定其他变量不变,相对于某一单一变量xi对损失函数做迭代下降,当所有坐标轴上的x都达到收敛时,损失函数最小。

适用情况:当变量之间的值互相影响很大时,不适用。适用变量之间互相独立的情况。

与梯度下降的区别:坐标下降法是固定其他坐标,沿一个坐标的方向进行优化;梯度下降总是沿着梯度的负方向进行优化。

14) 在什么情况下使用L1,什么情况下使用L2

L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择;L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合

15) 什么是交叉验证

由于在实际中很多情况下数据是不足的,为了选择好的模型,可以采用交叉验证的方法。交叉验证的基本思想是重复使用数据,把给定的数据进行切分,将切分的数据组合为训练集和测试集,在此基础上反复训练、测试。

简单交叉验证:如70%的数据作为训练集,30%的数据作为测试集

S折交叉验证:随机将数据分成S个互不相交大小相同的子集,使用其中S-1个作为训练集,剩下的一个作为测试集;将这一过程重复执行S次。

留一交叉验证:假设数据集有N的样本,将N-1个样本作为训练集,1个样本作为测试集。一般在数据缺乏的时候使用。

16) 什么是前馈传播,什么是反向传播,推导一下反向传播算法

(手写一个三层神经网络,w11,w12,w13,w21,w22,w31)

17) 模型评价指标

ROC、AUC,精准率和召回率是什么,用0,1样本来说明(推导了一下TP、TN等)

18) Tensorflow相关问题

来自《TensorFlow实战》

TensorFlow中的计算可以表示为一个有向图或计算图,其中每一个运算操作都作为一个节点,节点与节点之间的连接被称为边。每个节点可以有任意多个输入和任意多个输出,每个节点表示一种运算操作。在计算图的边中流动(flow)的数据称为张量(tensor),故得名TensorFlow。Tensor为类型化的多维数组。

19) 说说对特征工程的理解;特征工程怎么做的,有哪些特征选择的方法

(特征工程,怎么评价选择的特征优劣,比如卡方检验、相关系数

20)  

决策树

1)  决策树怎么处理缺失值

看西瓜书

2)  决策树用什么准则来分类样本

ID3:信息增益

C4.5:信息增益比

CART:Gini系数

3)  信息增益比优缺点

信息增益比定义为信息增益与训练数据集关于特征的值的熵之比。以信息增益作为划分训练数据集的准则,存在偏向于选择取值较多的特征的问题,使用信息增益比,可以对这一问题进行校正。

4)  一步一步地构造决策树,怎么计算信息熵、信息增益

首先计算整个数据集的熵:把所有类别的熵加起来

再计算针对某个特征的条件熵:

5)  ID3 C4.5 CART的区别,各自优缺点

ID3:信息增益。对所有特征计算其信息增益,选择信息增益最大的特征作为根节点,由该特征不同的取值建立子节点;再对子节点递归调用以上方法,构建决策树。

C4.5:信息增益比。对所有特征计算其信息增益比,选择信息增益比最大的特征作为根节点,由该特征不同的取值建立子节点;再对子节点递归调用以上方法,构建决策树。

CART:Gini系数。选择Gini系数最小的特征。

6)  决策树如何防止过拟合

过拟合的原因:在学习时过多地考虑如何正确分类训练数据,导致构建的决策树过于复杂。

决策树剪枝(后剪枝):剪枝通过极小化损失函数来实现。首先计算每个叶子结点的熵,然后把所有叶子结点的熵加起来,再加上叶子结点的数目作为罚项。

算法:

输入生成的整个决策树T,参数a。计算每个节点的经验熵

递归地从树的叶结点向上回缩。若一组叶节点回缩到其父节点之后的损失函数更小,则进行剪枝,将父节点变为新的叶节点。

继续回缩剪枝,直到不能继续为止。

7)  自己看到的问题:

决策树递归终止:两种方式,一是某一节点所覆盖的样本都属于同一类别时递归终止,此时分布不确定性为0,熵或Gini系数为0;二是如果熵或Gini系数小于阈值,递归终止;三是没有特征可以选择了,递归终止。

朴素贝叶斯

1)   朴素贝叶斯分类

EM

EM算法推导,jensen不等式确定的下界

LR

1)  LR的推导,损失函数

2)  lr为什么一般不用核函数而SVM线性不可分的时候用核函数

分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制

3)  lr求解过程中有什么优化技巧,lr怎么优化计算,对于特征比较多的时候怎么优化,sgd梯度下降法的时候怎么优化计算

4)  lr为什么用sigmoid函数,这个函数有什么优点和缺点?为什么不用其他函数?

5)  对于特征值缺失的情况,用lr和rf来预测缺失值,哪种方法更好

6)  LR和SVM的相同点(为什么将LR和SVM进行比较?)

如果不考虑核函数,LR和SVM都是线性分类器(这也是没人问决策树和LR区别的原因)

都是监督学习模型

都是判别模型

7)  LR和SVM有什么不同

第一、本质是loss function不同, 不同的loss function代表了不同的假设前提,也就代表了不同的分类原理,也就代表了一切.简单来说,​逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值;支持向量机​基于几何间隔最大化原理

第二、SVM只有支持向量影响决策面的结果,在支持向量外添加或删除样本点对决策面不会产生影响,而LR中每个点都会影响决策面的结果

第三、在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。

第四、LR是基于概率,SVM是基于距离,SVM需要做normalization,LR不需要

第五、SVM损失函数自带正则(SVM是结构风险最小化算法),LR则需要在损失函数外加正则化项

8)  LR、SVM、决策树的区别(从模型复杂度,激活函数等方面来阐述)

SVM

1)  SVM引入拉格朗日算子之后原问题其实就可以求解,为什么要转换成对偶问题,两者的适用情况分别是什么?SVM原问题和对偶问题关系?

2)  SVM smo算法讲解一下

3)  SVM怎么防止过拟合

4)  为什么要把原问题转换为对偶问题?

对偶问题更容易求解,

更容易引出核函数

5)  为什么求解对偶问题更加高效?alpha系数有多少个?

Alpha系数个数 = 样本个数

6)  为什么样本点到决策面是 1/||w||?

7)  手推向量点到决策面的表达式, 点到直线距离公式

8)  SVM中需要解决的重要数学问题是什么

(拉格朗日对偶问题)

9)  SVM目标函数,为什么转为对偶(腾讯,百度)

Boosting

1)  Boosting算法有那几种

AdaBoos,GBDT,Xgboost

2)  GBDT推导,适用场景

3)  GBDT处理回归问题和分类问题的时候分别是怎么解决的

4)  GBDT目标函数中为什么要用梯度去拟合残差

5)  GBDT输出特征到lr再训练有没有做过

6)  GBDT的全部算法过程

7)  Xgboost的原理,怎么防止过拟合

8)  Xgboost中是怎么处理缺失值的

9)  Xgboost目标函数中,正则项w表示什么

10) Xgboost里面的lambda rank的损失函数是什么?

11) Xgboost在什么地方做的剪枝,怎么做的?

12) Xgboost如何分布式?特征分布式和数据分布式?各有什么存在的问题?

13) xgboost和lightgbm的区别和适用场景

14) Bagging和boosting的区别:

每一轮训练数据的获取方式不同。

bagging,即有放回的抽样,从样本有重复地抽取n个样本,建立一个分类器,重复上述过程m次得到m个分类器,分类器的训练是可以并行执行的(个体学习器间不存在强依赖关系、可同时生成的并行化方法);

boosting,字面理解提升,每一个新的分类器都是根据上一个分类器的性能来训练的(提高那些被上一轮分类器错误分类的样本权值,降低那些被正确分类的样本的权值),分类器的训练是串行执行的(即个体学习器之间存在强依赖关系、必须串行生成的序列化方法)。

弱分类器的组合范式不同。

bagging采用多数表决,所有弱分类器的权重相等;而boosting是加权多数表决,弱分类器的权重是不等的(误差率小的分类器权重大,在表决中起更大作用)。

15) bagging.boosting.stacking区别(阿里)

16) boosting和bagging在不同情况下的选用

17) xgb,rf,lr优缺点场景。。。真的逢面必问,最好还是自己去网上扣一下这题

18) rf和gbdt基分类器区别,里面的决策树分别长啥样,怎么剪枝

19) lightgbm优势

20) gbdt,xgboost,lgbm的区别(阿里,头条)

Bagging  

1)  Bagging算法有哪几种

2)  随机森林在有很多树的情况下会不会过拟合

3)  Bagging基本过程(来自网络):

1 从样本有重复地抽取n个样本

2 在所有的属性上,对这n个样本建立分类器

3 重复上述过程m次,得到m个分类器

4 将数据放在这m个分类器上分类,最终结果由所有分类器结果投票决定

推荐等

1)  推荐算法,fm,lr,embedding

2)  协同过滤的itemCF,userCF区别适用场景

3)  推荐系统的大概步骤,解决冷启动

K-Means

1)   K-means聚类个数选择,做什么样的试验来确定K?

2)   Kmeans中,现在给你n个样本点不在欧式空间中,无法度量距离。现在给了一个函数F,可以衡量任意两个样本点的相似度。请问Kmeans如何操作?想了一会,比如K=4的聚类。 1、首先,随机去4个点,作为初始类簇中心。 2、计算所有样本点与这4个点的F相似度。根据相似程度,把所有样本点分到4个类中。 3、在这4个类中,计算每一个样本点 i 到该类其他样本点的相似度和Si。取Si最大的那个点作为这个类的中心。 4、重复2、3步骤,直到类中心不再变化或者循环次数达到目标。

3)   手写一下Kmeans(一般工业界不这样用,用kd-tree加速)

4)   知道哪几种聚类算法,说下原理

5)   Kmeans有什么优缺点

6)   简述下kmeans算法,如何选择k的个数(说了和业务相关),k-means++是怎么确定k的个数,面试官提示k和业务无关

7)   什么是Kmeans,与EM怎么联系

8)   DBSCAN原理和算法伪代码,与kmeans,OPTICS区别

深度学习

1)   对AlexNet、GoogleNet、Inception V3、 ResNet进行详细介绍,各自的优缺点和参数细节,网络优化问题

2)   RNN原理

3)   为什么会出现长时依赖的问题, LSTM/GRU如何解决长时依赖的问题

4)   RNN怎么训练的?

5)   说一下LeNet的网络结构,一层层说,带着卷积核大小,越详细越好

6)   缺失值怎么处理?

7)   验证集怎么划分?

8)   哪些指标说明你的模型调优了?调节过模型的哪些参数

9)   过拟合的标志有哪些?

10) BP神经网络推导一遍

11) 如何采集样本,样本类别不均衡对模型有什么影响

12) CNN结构,怎么调参的

13) 深度学习的优化方法有哪些?

14) sgd、adam、adgrad区别?

15) adagrad详细说一下?为什么adagrad适合处理稀疏梯度?

16) DL常用的激活函数有哪些?

17) relu和sigmoid有什么区别,优点有哪些?

18) 什么是梯度消失,标准的定义是什么?

19) DNN的初始化方法有哪些?为什么要做初始化?kaiming初始化方法的过程是怎样的?

20) LSTM原理,与GRU区别

21) DNN的梯度更新方式

22) CNN为什么比DNN在图像识别上更好

23) why LSTM,和Naive RNN区别

24) CNN与RNN的区别(阿里)

计算机基础

1)   操作系统:进程和线程,进程线程区别,多线程实现方式,线程冲突是什么、怎么解决,线程安全的理解,有哪些线程安全的函数,银行家算法,死锁条件,悲观锁乐观锁,深拷贝浅拷贝

2)   数据库:主键、索引和外键,以及作用,数据库transaction,SQL中inner join 和outer join的区别?hadoop重要的2点(面试官说,其实是HDFS,正是由于有了分布式文件系统,才可以分布式计算。对,分布式文件系统。数据在哪里计算就在哪里,移动数据变成了移动计算。更高效)

3)   详细讲解红黑树、B树、2-3-4树, Trie树

4)   Python如何定义一个私有变量

5)   Java多线程start和run方法的区别

6)   Java hashmap和hashtable的区别

7)   计算机网络:TCP三次握手,四次挥手等细节,网络有哪些层,每层具体应用,浏览器属于哪一层

8)   海量数据排序(分治)

算法题

1)   字符串的距离

2)   两个单链表是否相交(有环无环)

3)   字符串转整型(字符串可能有特殊字符和正负号,考虑溢出情况)

4)   给出一个数组,数组里面有n个数出现了两次,有一个数出现了1次,找出这个出现一次的数

5)   斐波那契数列

6)   字符串排序 计数排序

7)   实现atoi()字符串整型

8)   快排,递归非递归

9)   八皇后问题

10) 一个班级n个人,考的分数在1-100分,找出n/2同学的分数(桶排序)

11) n个数中随机抽取k个数,怎么随机抽

12) 从很多文章中找到和当前文章匹配的文章(搜索的方法,关键词倒排索引)

13) 两个有序数组合并

14) 最大子数组乘积; 求连续子数组最大乘积,还让考虑边界问题

15) 矩阵从左上角走到右下角

16) 无序数组的n个数之和等于k,找出这样的数组

17) 微信红包分发策略

18) 统计网站的最大在线人数(直接用一个计数器)

19) 找数组中2个出现两次的数字,还有3个两次的数字

20) 实现一个java迭代器

21) 检测括号是否匹配 {abc()}也是合法的

22) 给你一个有向图,怎么检测有环?

23) 一个文件每一行有3列(\t分隔),每个字符串是abcd,这种形式,中间有大写有小写。 现认为:abcDe 等于BcaDe (即:不区分大小写,无关顺序) 要求输出: 字符 空格 出现次数 空格 每一种字符(以|分隔) 实例输出: abcde 2 abcDe|BcaDe

24) 一个矩阵都是0,1 且每一行,0都在1前面。求1个数最多的那一行的序号

25) 一个有序数组中查找某个数

26) 给定二叉树前序、中序遍历结果。求后序遍历结果

27) 一维空间中,2个线段,a1-b1 和a2-b2。判断是否两个线段有交集(他想要的答案是:一个线段里面的大坐标,小于等于另一个线段里面的小坐标)

28) 数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求时间复杂度O(n),空间复杂度O(1)

29) 数组第k大的数

30) 数组左减右,求最大差

31) 树的路径和

32) 给定一个数组,数组值表示股票的股价,求哪天买入哪天卖出赚的最多

33) 旋转数组中,怎么快速查找一个数

34) 给出一个api等概率产生 0和1 ,利用api写出等概率产生0-5的数字

35) 两个人抛硬币,抛到正面就算赢,抛到反面就换人抛。问先手的人获胜的概率是多少

36) 一副扑克牌,未拆封,是有序的排列。要给4个人发牌,要使发的每一张牌的概率相同.即发第i次牌,发出10和发出2的概率要相等。

37) 归并排序

38) 最大子序列和:一串序列,找出和最大的子序列:用一个变量储存第i位之前最大的和,碰到新的数字进行相应的加减法, 一旦这个变量小于0就置为0。

39) 平衡二叉树

40) 海量数据中找中位数(数据有100G,内存只有1G):利用外部排序确定,或者可以用两个堆

41) 大数相加 string A ="112233445566778899" string B ="998877665544332211"

42) 二叉树的广度优先遍历和深度优先遍历。

43) 找出所有的回文子串

44) 字符串匹配算法,朴素匹配和KMP等,手写算法

45) 手写dijkstra

46) 层次打印二叉树

47) 有原始序列1,-1,2,-3,4,6,   找出最长递增序列1,2,4,6 的长度

48) dfs,比如全排列、八皇后。

49) bfs,比如最少转机

50) 实现双向循环链表,

51) 快慢指针找入口、

52) 两个链表找交点,

53) 手写一个hash表

54) 二叉树操作,比如实现后序优先遍历的非递归算法。

55) 64匹马,8个赛道,找出最快的4匹马

56) 随机数1~5,如何生成随机数1~7

57) 有序数组的交集

58) 数组中第一个大于等于K的数

59) 判断树是否相等(同构 对应节点值相等))

60) LCA(树中两个节点的最低公共祖先)

61) 两个有序数组求中位数(leetcode)

62) 判断平衡二叉树(剑指offer)

63) 最长上升子序列(lintcode)

64) 二叉树转双向链表(剑指offer)

65) LRU cache实现(leetcode)

66) House Robber(leetcode)

67) 最长公共子序列

68) 海量数据topk问题,多种解法

69) 蓄水池抽样算法

70) 翻转中间由各种符号隔开的字符串

71) 2sum,3sum

72) 从右边看被遮挡的二叉树,求露出的node

73) 单链表判断是否有环 (leetcode easy),以及判断环入口

74) 给前序和中序,求出二叉树

75) 反转链表

76) rim二叉搜索树

77) 单调函数求零点 (简单的二分法)

业务能力

1)   找出亿万级ip出现次数最多的前1000个

2)   如何计算圆周率

3)   抛硬币,正反概率都是0.5,抛6次, 正大于反的概率

4)   概率题:赌场里300元可以抽签3次,不管抽中几次中奖签,顾客只能得到一份奖品,这时候有人建议赌场老板,顾客每次100元抽一次,老板该不该采纳这个建议。(不采纳。这是一个计算期望的问题,假设一份奖品价值为v第一种情况:v/P1 + v/P2 + v/P3第二种:v/P1 + 2V/P2 + 3V/P3)

5)   如何协调广告商广告投递金钱与用户对广告感兴趣程度问题

6)   垃圾邮件过滤问题(一些邮件对特定用户并不是垃圾邮件,但是对其他用户是垃圾邮件)。我说的是通过提取用户特征,对用户进行聚类,对属于不同聚类的用户建模,区别化过滤。

7)   有一堆已经分好的词,如何去发现新的词?(面试官给的提示:用这个词和左右词的关系。互信息 新词的左右比较丰富,有的老词的左右也比较丰富。还要区分出新词和老词。)

8)   电商搜索框,每天有500W的搜索query。针对新来的一个query,给出和它最相似的100个query。

9)   两个4G的文件(每个文件可能有重复),里面全都是数字。现有内存1G,求这两个文件的交集。2个4G的文件,分别hash成10个子文件,一个400M。把一个子文件存储到hash表中,作为key。遍历另一个文件,看这个数字是否存在于刚才的hash表中。存在即可输出。

10) python开发中的实际问题,如果写的程序跑的非常慢,多方面分析这个问题?( 1、检查程序是否有多层嵌套循环,优化2、检查程序是否有很耗时的操作,看能否优化为多线程并行执行3、检查数据量是否非常大,考虑是否可以用分布式计算模型。)

11) 10分钟内,恶意IP访问检测(10分钟内访问次数超过1024即为恶意访问)

12) 有100亿网页,每个网页都有一个标签。有可能一个标签对应上百万标签,有的标签只对应几个标签。要做一个数据去重,每个标签只要1个网页。

13) 智力题,不能用程序敲,自己想100的阶乘的末尾有多少个0:面试官陪着做的,先提取10的个数,加上100的零总共有11个,再找有多少个5,5,15,到95总共10个,但是25,50和75都包含两个5, 所以是11+10+3 = 24.

14) 题目:用户打开一个App时,我们可以得到用户的坐标(经纬度),那么如何根据经纬度得到城市名称呢?回答:没有预先定义的数据库,智能调用高德等第三方接口(因为高德被阿里收购了嘛);不要求做高精度定位,可以将大城市为中心构建区域块(所有区域块内的经纬度映射到这个城市。这种题目要紧密集合业务来说)

15) 怎么去判定淘宝上好评与差评是不是刷的

16) 10亿个32位正整数,求不同值,只给1GB内存

17) 文件里包含了大量URL,每行一个,其中有很多重复。编写一个方法,输出出现次数前5多的URL。MapReduce

18)  

开放性问题

1)   简单介绍一下自己

2)   为什么来这个公司? 你对我们团队了解吗?

3)   有没有自己实现过算法

4)   分别说出自己的三个优点和缺点

5)   从你的项目和比赛经验中选取一两个讲一讲

6)   对机器学习或者数据挖掘的流程是否熟悉

7)   对未来技术发展的看法,未来5-10年什么技术可能变成热门

8)   对于机器学习你都学了哪些?讲一个印象深的

9)   平时用啥语言比较多?

10) 自己学机器学习,怎么学的?

11) 你认为你有什么优势能跟其他这个专业的人竞争?讲一下你的优势

12) 工作中遇到了什么实际的难点问题,怎么解决的?

13) 自己评价自己,别人怎么评价你的

14) 你对机器学习的理解

15) 深度学习正确率很高,是否是真的很有能力

16) 学习深度学习的途径是什么?

17) 你有什么想问的。 部门情况,岗位相关业务场景是哪些。新员工的培养体系以及职业发展体系

18) 描述一个算法项目从kickoff-落地的全过程

未分类

1)   定义class mlp(头条)

2)   kd tree(腾讯)

3)   FFM的优化(百度)

4)   解释RESNET(百度,阿里)

5)   mapreduce思想(腾讯)

6)   解释BN(头条,百度)

7)   非结构化文本处理方法(阿里)

总结

1)   每一种算法都要能从头至尾按照逻辑说出来

2)   每种算法的优缺点、优化方法、适用场景

总结于牛客网面经

By [email protected]

猜你喜欢

转载自blog.csdn.net/weixin_43124720/article/details/93137433
今日推荐