小米内推-搜索推荐算法岗一面,二面,三面面经

楼主非科班出身,一名小小的研究生(非985),数不清多少次的内推,没有一次给了面试机会,终于在8月30下午接到小米内推的预约周五,今天(9月1号)面试的电话。
刚刚结束了小米的一面,遂写下此面经,攒点人品。话不多说,我们开始。
一面:
1.自我介绍(一般套路)
我介绍了自己的研究方向,自己读研期间的项目以及实习经历。
2.介绍下你简历里面令你印象深刻的项目,为什么?
我说了一个实习经历,原因是真实场景,会遇到各种以前没见过的问题,balabala。。。
(期间会打断我,不断的问实习的时候做的事情,什么特征选择,特征的维度,用户和物品的数量)。
3.(开始问算法)说说线性回归
我结合逻辑回归基本讲了一下原理
4.问了xgboost(我实习的时候用过xgboost,所以写在简历上),问特征维度是1600,你一般建多少颗树,数的深度你怎么设置,以及其他的参数怎么设置?
我说我当时设置100颗树(具体我也忘了。。。因为当时实习的时候是leader把参数设置好让我去跑的),树的深度我回答50(回答完我就后悔了)
,面试官问:数的深度是50,你算算有多少结点(自己挖了个坑啊2^50-1,自己笑笑说可能记错了。。。尴尬)。
5.你了解JVM的参数设置吗,比如现在频繁出现GC,你应该怎么做?
我说出现GC可能是内存不够用,可以考虑把堆内存调大一点。
6.延伸第五个问题,你怎么调整内存中新生代和老年代的内存大小?
(其实我内心是奔溃的)我说新生代和老年代的比例不是固定的嘛?1:2.。。。(好吧,我对这块不熟悉)然后就过了。。。
7.HashMap和Hashtable和Map的区别
我从线程安全和是否容许null来回答的。
8.然后又问,Hashtable的线程安全你知道是怎么实现的嘛?
说真的,这题我真不知道怎么回答,我只是说了加了synchronized关键字。
9.你和我说说spark RDD吧
然后我从两大类的算子大致说了下RDD。
10.说了一个场景:现在我用spark跑一个逻辑回归模型程序,发现数据倾斜了,你怎么解决?
我说首先分析是否算子方面写的不合理,然后说如果是数据方面的原因,可以考虑对数据进行预处理,然后单独去处理这部分的会导致倾斜的数据。(中间打断了我一次,说,如果在跑程序的过程中,如果是数据出现的问题,你会停止然后重新做?我好直接说:会。。。不知道回答的对不对。。。估计是不是想考我rdd方面的知识,奈何不太熟悉)。
11.问我有什么想问的?

整个过程40分钟左右中间电话还断了一次,我问完两个问题,然后面试就结束了,都没说后面还有没有面试了,留下我一脸蒙蔽,心想挂了吧,回去写个面经吧。
还有其他的问题我就记不起来了,原因是,我在写面经的过程中,二面的电话来了,接下来是二面的面经。
===================================================================================================
二面:
1.自我介绍
我将刚刚那一套又说了一遍。。。实在不知道还有什么好说的。
2.说一下xgboost
我简单说了一下原理。
3.给我介绍下,推荐方面有那些算法
我大致将两类的推荐算法都说了。
4.我看你简历上写了fm,那你和我说说fm吧
我也简单说了下fm的思想。
5.现在给你一亿的用户,和一亿的物品,你怎么去做推荐?
说实话,当时听到这个问题的时候,我内心是拒绝的,心想:我在研究所里最多用的也不过是几万的用户几十万的物品,一亿你存心为难我吧。硬着头皮说,既然数据量这么大的话,是否可以先进行数据预处理,然后利用spark去做?我当时用的是问号,其实是希望面试官回答我的这个问题,结果他直接过了。。。
6.然后问我项目的事情,问我实习的项目,推荐系统的流程(当时我在实习的时候也是做得推荐)?
我将整个推荐的流程说了一遍,从数据的处理到数据的应用。
7.你在实习的时候,在召回的步骤用的协同过滤和ALS会不会出现一些效果不好的情况,然后你怎么分析的?
这个问题,我并没有回答,因为我确实没有参与召回策略那一块。只好说我没有参与,然后转向说目前业界这些基本的算法应该还是很好用的。

整个过程大概是15分钟,很短,结果二面面试官跟我说,你在我这儿ok,我来问问其他的同事,如果有三面,等会再联系你。
====================================================================================================
三面:
接到三面的电话,我还特意找了一个清净的地方,结果说要电脑,要写代码,我只好回到办公室。
1.你给我写一下链表的反转
我还特意问了下,时间复杂度和空间复杂度有什么要求?面试官说没有,这个还是很好写的,看过左神书的应该都会写这个,然后写了一个最优的。
2.你还有没有其他的方式来实现这个?
我说递归(说完我就后悔了。。。),面试官说你写一个递归的版本吧,好在网速不稳定页面刷不出来,然后就没写了,让我口述了一下。
说完,来了一句其实就是考考你递归。。。
3.你一般用java是吧,你对GC熟悉吗,给我说说GC的有几个算法并说下原理
我说了标记-清除,标记-整理,还有一个死活想不起来名字,然后说还有一个的原理是这样的,但我忘了叫什么名字。。。
4.JVM内存是怎么划分的?
答了堆内存从物理上可以分为年轻代和老年代
5.年轻代是否可以继续划分?
答了Eden区和Survivor区,然后两个的比例。
6.这个比例是固定的嘛?是否可以调整?
这个问题,我不知道,我记得是固定的8:1:1。。。然后问:这个比例可以调整吗?我没遇到过。。。
7.什么时候会触发年轻代的GC?

中间还有几个问题我忘了。。。

后面聊推荐,因为我的研究方向是推荐,所以聊天推荐的话还行,感觉和三面的面试官后面的时间不像面试,倒是像在交流。面完,同屋子里说,还以为你和谁讨论问题。。。
三面大概一个小时。

总结下:
1.无论结果怎么样,至少是秋招的第一场面试,对我这个内推好几家没有一家回复的人来说是一种安慰,感谢。
2.面试官貌似很在意你解决实际问题的能力,所以投机器学习或者数据挖掘的童鞋们,感觉要多模拟下实际的场景。
3.第一次写面经,写的不好,请大家指正。

全部评论
楼主好厉害,小米菜鸟都没有面试的资格,心疼。
点赞 回复 分享
发布于 2017-09-01 18:48
感觉你这边问的挺广的,除了算法以外还问了不少Java,Spark的知识点,另外那个一亿用户一亿商品做推荐的话,有一种思路是先对用户、商品分别做个聚类,然后对聚类的结果再进行推荐操作,不知道有没有更好的想法,或者说实际工业操作中的方法是怎么样的?
点赞 回复 分享
发布于 2017-09-01 18:49
spark数据倾斜,需要定位造成数据倾斜的算子把。
点赞 回复 分享
发布于 2017-09-01 19:15
亲,求问内推资源?你是怎么内推的?在线等。。。
点赞 回复 分享
发布于 2017-09-01 19:25
你是怎么内推的呀,求内推方式
点赞 回复 分享
发布于 2017-09-01 19:52
厉害!
点赞 回复 分享
发布于 2017-09-01 22:16
楼主,看你面经里面面试官问得问题,你已经很牛逼了啊,你是不是内推的都是超牛逼的公司啊,不然怎么会全部不给面试机会?
点赞 回复 分享
发布于 2017-09-02 12:42
兄弟你们的内推码从哪里得到的?
点赞 回复 分享
发布于 2017-09-02 20:08
记得楼主之前说面过搜狗,如何呢
点赞 回复 分享
发布于 2017-09-02 20:21
感觉小米有戏啊。。。
点赞 回复 分享
发布于 2017-09-03 00:26
楼主三面之后有通知吗
点赞 回复 分享
发布于 2017-09-07 11:38
楼主你好,请问小米搜索推荐算法岗是属于哪个部门,是人工智能与云平台还是信息流呢。谢谢。
点赞 回复 分享
发布于 2018-08-16 10:13
额,后天也是面这个岗位,我是cv转推荐,看楼主面试问的问题,我感觉我要凉了。。。
点赞 回复 分享
发布于 2018-09-03 15:24
一面和二面隔了多久?我在等二面
点赞 回复 分享
发布于 2018-11-14 17:07
一亿的问题怎么推荐呢?筛选后再推?
点赞 回复 分享
发布于 2019-04-22 21:32

相关推荐

头像
11-07 14:59
东北大学 Java
点赞 评论 收藏
分享
11-11 10:31
测试工程师
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
16 150 评论
分享
牛客网
牛客企业服务