360手机卫士-机器学习算法研发工程师-面试经验

以下内容来自于应聘者回忆整理

很多同学都想得到360的实习或者校招机会。那从过来人的角度谈谈,要通过360的实习、校招面试,都有哪些经验和注意事项呢?今天就跟大家分享一下。

【一面】

总体情况:线上面试,一共 30min

1、没有自我介绍

2、介绍实习项目

3、特征选择的几种方式有没有特定的应用场景?

3、出了 xgb 和 lr 还了解哪些机器学习模型, svm 核函数变换有什么好处?

不用真的对特征向量做核映射,而是直接对特征向量的内积进行变换,而这种变换却等价于先对特征向量做核映射然后做内积。  

4、用过什么聚类算法, 什么时候需要用聚类?

数据挖掘、数据分析 

5、神经网络了解过吗, 讲一下权值共享

给一张输入图片,用一个 卷积核 去扫这张图,卷积核里面的数就叫权重,这张图每个位置是被同样的卷积核扫的,所以 权重 是一样的,也就是共享。 权值共享意味着每一个过滤器在遍历整个图像的时候,过滤器的参数 (即过滤器的参数的值)是固定不变的,比如我有3个特征过滤器,每个过滤器都会扫描整个图像,在扫描的过程中,过滤器的参数值是固定不变的,即整个图像的所有元素都“共享”了相同的权值。  

6、hmm 了解过吗? 有什么样的应用场景?

是统计模型 ,它用来描述一个含有隐含未知参数的马尔可夫过程 ,应用于语音识别,自然语言处理,生物信息,模式识别等领域

7、lstm 了解过吗?用过吗?

lstm 是一种特殊的递归神经网络 。这种网络与一般的前馈神经网络不同,LSTM可以利用时间序列对输入进行分析;简而言之,当使用前馈神经网络时,神经网络会认为我们 360手机卫士-机器学习算法研发工程师-面试经验 时刻输入的内容与 360手机卫士-机器学习算法研发工程师-面试经验 时刻输入的内容完全无关,对于许多情况,例如图片分类识别,这是毫无问题的,可是对于一些情景,例如自然语言处理 (NLP, Natural Language Processing) 或者我们需要分析类似于连拍照片这样的数据时,合理运用 360手机卫士-机器学习算法研发工程师-面试经验 或之前的输入来处理 360手机卫士-机器学习算法研发工程师-面试经验 时刻显然可以更加合理的运用输入的信息。为了运用到时间维度上信息,人们设计了递归神经网络 (RNN, Recurssion Neural Network),一个简单的递归神经网络可以用这种方式表示  

8、平时什么编程语言用的比较多?

9、还有什么你自己的优点我没有问到的

10、反问

【二 面】

总体情况:40min

1、自我介绍

2、实习经历介绍下

3、xgb 与 lr 相比优缺点在哪里

1)在寻找最佳分割点时,考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中根据上面求分割点的公式计算找出最佳的分割点。

2)xgboost考虑了训练数据为稀疏值的情况,可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率,paper提到50倍。

3)特征列排序后以块的形式存储在内存中,在迭代中可以重复使用;虽然boosting算法迭代必须串行,但是在处理每个特征列时可以做到并行。

4)按照特征列方式存储能优化寻找最佳的分割点,但是当以行计算梯度数据时会导致内存的不连续访问,严重时会导致cache miss,降低算法效率。paper中提到,可先将数据收集到线程内部的buffer,然后再计算,提高算法的效率。

5)xgboost 还考虑了当数据量比较大,内存不够时怎么有效的使用磁盘,主要是结合多线程、数据压缩、分片的方法,尽可能的提高算法的效率。

适用场景:分类回归问题都可以。

3、xgb 与 gbdt 相比的好处

(1)传统GBDT以CART作为基分类器,xgboost还支持线性分类器(gblinear),这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)
(2)传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下,xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导
(3)xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性
(4) Shrinkage(缩减),相当于学习速率(xgboost中的eta)。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。实际应用中,一般把eta设置得小一点,然后迭代次数设置得大一点。(补充:传统GBDT的实现也有学习速率)
4、哪些机器学习算法比较了解?

5、linux 了解吗?

Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。  

6、 一个文本里面有 0 1 和其他字符, 要获 取除了 01 以外的字符输入到另外一个文本

7、九宫格输入法怎么实现单词提示(比如输入 a,提示 advertise) 什么数据结构实现?

8、能否实习

9、有什么要问他的?

想要获得更多360的实习、校招机会,请点击这里

  • 1、刺猬实习遵循行业规范,任何转载的稿件都会明确标注作者和来源
  • 2、刺猬实习的原创文章,请转载时务必注明"来源:刺猬实习",不尊重原创的行为刺猬实习或将追究责任
  • 3、作者投稿可能会经刺猬实习编辑修改或补充。

相关推荐