9点40到达珠江创意园,面试时间是10点,先填了一下面试调查表,和HR的小姐姐稍微聊了一会,比如偏向于什么样的公司啊,之类的闲聊,然后稍微等了一会,就开始面试了。
第一轮是两个技术面试官,在上海数据交易中心都见过,其中一个就是一面面我的人,还有一个是隔壁的面试官。
很显然,一个面试官偏向于问机器学习项目,另外一个偏向于问算法的技术,包括原理,公式,推到等。
首先一位面试官问了一个编程题:
问题:list = [0,1,2...],长度为5,规则:1只能和2交换,0只能和1交换,并且只能相邻的进行交换。
请输出,最小的list组成的数字。
比如:
输入:
list = [2,1,0,1,2]
输出:
12012
我当时的想法是:
先交换最高位的2,到后面,
再交换次高位,一直到不能交换为止;1,2交换完毕
再交换0,1 高位是1 ,低位时0 ,就交换,一直到不能交换为止。
当时面试官说,这个复杂度是N平方。
没有完全写完,就结束了。
接着,面试官问我会什么排序算法,然后让我写了一下快排,之前都复习过,所以很快就写出来了。
后面就是简历项目的问题了:
因为我的简历第一个项目是用K-means的,
所以就问了k-means的几个问题:
1):k-means对初始值选择比较敏感,怎么改进的;
2):项目的情况,怎么选择特征,怎么对结果打标签。
3):k-means对离散的特征,怎么计算距离;
4):k-means算法和EM算法的区别
然后主要,对第二个项目申请评分卡的模型进行了大部分的询问:
1)数据缺失值怎么处理的
2)怎么进行特征的WOE编码的,为什么要WOE编码
3)怎么筛选特征的
4)叙述逻辑回归算法的原理,损失函数的推到,为什么用对数损失函数。
5)L1正则和L2正则的区别,原理是什么?
5)boosting和bagging的原理,boosting的公式。
6)凸函数的定义是什么?
7)我的提问?
第二轮:
来了一个面试官,他说是小领导吧,这个看起来比较和善。也问了几个问题:
1)多线程和多进程的区别
2)自己的编程语言和计算机基础情况
3)二分查找的原理,过程,时间复杂度,
4)也让我下了个代码
是二分查找的延生问题:
有序的list,但是有重复的数字,要输出重复数字的个数,和最起始的标签和最末尾的标签。
输入:[0,1,1,1,2]
输出:1
1,3
我说,还是用二分查找就好,然后标签,用 lfind,rfind.就可以实现了。
但是,面试官说必须用自己的代码写出来,不能用python的方法。
5)决策树ID3树为什么选信息增益最大的,解释一下。
6)计算机32位和64位的区别是什么?
7)你认为在研究生期间学的最好的一门课是什么?
基本就是这样,最后HR小姐姐又过来总结了一下。还很NICE的给了牛奶和饼干,并且带着我在公司里转了一圈,结束了这次面试。