公司 第四范式
2019.08.17 10:30 一面
一面面试官一上来就说面试时间比较紧,只有两小时,所以省去自我介绍了。
先做一道编程题,将数组中所有奇数排列到偶数前面,不考虑在数组中原来的顺序。
这道题不难,设置了头尾指针,然后循环,头指针碰到偶数,尾指针碰到奇数,交换,知道头指针大于尾指针就结束了。
先是说了一下思路然后就写代码了,虽然有一小刻像突然卡住了那样,但是还是比较顺利地写了出来。
然后在该题的基础上,将数组换为了链表。
这个题其实也不难,我一开始问了能不能用辅助的空间,面试官说最好O(1)吧,其实也不难,然后我就想了一种。
先遍历链表一次,然后知道有多少个偶数多少个奇数,然后设置两个指针,分别指向最终结果的奇数链头和偶数链头,然后遍历,如果将奇数链中的偶数和偶数链中的奇数交换。
但这种操作起来还是比较复杂。所以面试官建议我再想一次,我想到了另一种方法,其实就很简单的。先遍历,获取得到链表最后一个节点的指针。再从头开始遍历,遇到偶数的结点,就断开接到链表的末尾,然后把断开的连接上。当然最后也相对顺利地写了出来。
一面刚刚好半小时两题结束。
11:10 二面
刚结束一面,以为今天面完了,结果就收到了一面通过,准备二面的通知,于是过了一会就进入了二面了。
二面先做了简单的自我介绍。然后分别问了以下的一些问题。
1、极大似然的应用,举了一个例子:一个城市里有n辆车,编号1到n,初到该城市,随机拦下一辆车,知道其编号x,如何知道n=?就是城市里的总车辆数。使用极大似然来求解。
我一开始能想到的就是如果知道了x,比如x=20,那么可以说明n至少>=20,那么p(n<20|x)=0。但是还是想不太出用极大似然怎么求。其实极大似然是用来估计参数的,比如已知p(x|θ),然后要求模型参数θ。那就是要使得p(x|θ)最大化,因为我们这里只做了一次实验,否则的话就是p(x1|θ)*p(x2|θ)*....,最大化它。那么在这里其实就是p(x|n),p(x|n)=1/n,因为坐到每一辆车的概率是相同的,而这里只有一个样本,所以最大化1/n,其实就是使n最小,再考虑上边界n>=x,那么其实答案就出来了,拦到编号x,则估计城市里的总车辆数为n=x。
那么很明显,使用最大似然得出来的结果好像不太好,面试官问了为什么会这样呢?没接触过挺难想的其实,不过他慢慢引导我想。先问我贝叶斯公司,我说了后验概率=先验概率*?,我一开始是说公式,他说要说出术语来,但是我忘了p(x|θ)术语是什么呢,后来他说了likelihood,我就回忆起来了,似然概率!!!说到这里,自然就引出了极大似然假设先验概率的分布时均匀的,即前面的n=1,2,3,4,...的概率是相同的,无差别的。但是在我们实际中,一个城市里的总车辆数是有规律的,即有一定的分布的,比如大约在多少辆左右,服从高斯分布之类的。但是使用最大似然没有考虑到这一点,因此上面得到的结果才不太准。
接着就主要问了我项目的情况,主要是网易游戏的聚类和锋时互动的缺陷检测,具体问了哪些有点忘了。最后问我有什么问题的时候,主要问了他们业务方面的情况。整个过程大概也是40-50分钟。
2019.09.01 14:45三面
二面完后隔了两周了没啥消息,以为凉了,在家里坐着的时候突然接到hr的电话约三面。
三面上来面试官就笑着问我,看我之前的实习都是在广州深圳的,为什么想来投他们上海的,而且他们公司也不是很大的那种,不是很知名。然后我就说上海我还是可以接受的,北京就不想去,面试官笑着说上海还算南方的是吧,哈哈哈哈。然后就聊了一下项目,但是不是问技术细节,而是主要问了业务方面的,比如网易游戏的聚类项目,主要用在哪些游戏啊,然后数据量,然后业务的上下游之类的,然后怎么评估性能等,怎么确保找到都是违规工作室而不误抓呢。问我网易游戏目前主要有什么游戏。然后问了kaggle那个做了多久,然后为什么想到要做这个。总之基本没问到技术的。最后问我有什么问题,我主要问了业务,他介绍了一下他们的“先知”AutoML系统,现在视觉方面还有AutoCV平台。这两个平台好像做得还不错,后来的某天和华为的hr聊的时候hr也有作为一个范例来讲,说是业内做得不错的。感觉有点像压力面。感觉凉了吧,Orz,不过一二三面的这些问得都挺仔细和有技术含量的。谢谢第四范式!