周五进行了第二轮面试,面试官是整个大数据部门的Head,人很nice,答不上来的时候经常提示引导。
下面用A代表面试官,B代表我自己。

A:是王同学吗?清介绍一下你自己
B:blabla。。。

A:上一次面试官的反馈不错,但我还需要亲自面试确认一下。你对一些基本的ML算法熟悉吗?
B:熟悉,从Perceptron到SVM都算了解。

A:那好,讲一下KNN吧。
B:blabla

A:你说KNN的实现是KD树,为什么要用KD树呢?
B:因为KNN计算要涉及到不同类之间的比较,用linear scan(线性扫描)的方法时间上开销很大,而KD树能通过构造树结构来简化运算。

A:那你能说一下KD树在二维空间的一个情景吗?
B:首先是要根据dataset来构造KD树,也就是对二维空间的一个划分。先确定根节点,再根据树深度选择相应的特征来划分。小于特征中位数的被划到左枝,其他划到右枝。如此反复直到子集为空。划分好以后,再将新进来的x进行归类。具体来说,从根节点开始,如果x当前维度坐标小于中间结点的坐标,就划分到左结点,否则右结点。如此递归地向下划分直到叶节点y。再向上回退,如果y的父节点的另一个子节点z包含与以x为中心,x到y的距离为半径的圆相交,则说明实际的最近邻点是z。

A:讲一下overfit的原因和应对方法
B:我认为第一个原因是dataset不足,模型只学习到了在这个dataset如何表现。当dataset无限大的时候可以趋近于实际情况,如果太小就会导致overfit。可以通过data augmentation来应对。也可以用L1, L2或者dropout。

还有几个问题不太记得了。。都是挺基础的东西

A:来答一个开放性的问题哈,我先定义转化率,假如100个人浏览了某航班的机票情况,15个人买了,那么我的转化率就是0.15。这个指标也是我们经常观测的一个重要指标,一般它都是稳定在某个范围里。如果忽然增加或者减小,说明有些问题出现了。现在得到了一个新的观测值,我怎么判断是不是异常值?
B:blabla(这个简单。。)

A:恩,就是这样。携程APP用过吧?订机票的时候,一般都是先选出发地,目的地,然后是时间。。这样。从用户点search到收到结果,会有几百毫秒的时间。我想优化这个用户体验,也就是缩短从search到返回result的时间。怎么做呢?是通过用户的行为来预测他的结果,提前将search发过去。你会怎么做?
B:我会用决策树模型。blabla。。。

A:决策树是一个选择,还有没有别的办法
B:如果要有记忆能力的模型,CNN也可以。blabla…..

A:不错,你有什么问题要问吗

问了几个技术问题。。

A:结果不能直接告诉你,但是如果打分的话,我可以给你打80分。行,那么这次面试就结束了。我去找其他几个领导谈谈把你分到哪个组的事情。哦对,暑假建议你先学一些数据库,肯定会用到的

这次面试感觉比上次还简单。。应该算是过了吧?