快手实习生面试

感谢@lxc师兄的内推和面试建议,我有幸可以参加快手推荐组算法实习生的面试,并最终通过面试被录取。
虽然实习生的面试可能相对简单,但是我认为还是有参考价值的。
刷实习算是一种最终找到好工作,进入梦想公司的途径吧(不能算是捷径,我实习的2份工作还是很累的。快手是我的第二份实习。)。
现在实习终于稳定下来,毕设论文也还有一段时间才deadline,恰好抽出时间总结一下自己的面试和实习。
希望可以指导到自己之后找其他实习或者是正式工作:)

面试

我总共经历2轮面试,耗时近2个小时。
总体感觉是准备的不很充分,很多地方有待提高。

一面

面试官是一个胖胖的小哥哥,很友善,面试也很认真。
我参加实习后,经常在开会和吃饭的时候遇到他,感觉很亲切;我们不在一个小组,但在同一大组。

面试内容:

  • 给定一个数组,找到和最大的连续序列,返回和;
  • 翻转句子:如 today is wednesday! => wesdnesday is today!
  • SQL相关:left join, right join, inner join区别;partition了解不。
  • 机器学习相关:准确率和召回率的定义

二面

面试官是一个严肃的工程师,给我的印象是反应很快,可能是leader类的人物。
但可惜的是,我入职之后在大组没有见过他。

  • 内存特别小时,在大量的数中找到数m的位置。
  • a = b时,b有可能在哪里获取?寄存器、cache、Memory、外存
  • 一个已排好序的数组,循环左移k位(k未知),找到数m的位置。
  • n个台阶,可以走1步或2步… 这个题他先问我做过吗?我说做过,就没再让我做。
  • 一颗二叉树,每个节点存一个数,找到两个数的最近公共父节点。
  • 多进程与多线程区别;
  • java、C++ 多进程通信使用;
  • java、C++ 网络通信 socket库使用。(这2个我没答好)
  • 机器学习的了解程度,损失函数是否研究过。

面试准备

经过这次面试,我对面试的准备内容更加明确了:

  • 数据结构和算法是基础,必须好好复习和刷题的。
  • SQL、机器学习和Hadoop只是是锦上添花的技能。
  • 手写代码和简答是面试的主要内容。

因为事实上,我sql、机器学习、多线程的问题答得都很差,只有算法题马马虎虎答得还可以,都写出来了,虽然中间出现过一些错误而且耗时可能比较长(尤其是手写第一题的时候,还没进入状态,多花了些时间)。

参考师兄的建议,我认为如下的准备路径和方式比较高效(我也还在准备当中):

  • 数据结构和算法:cos226+算法第四版,the elements of interview
  • sql: sql必知必会,runoob
  • 多线程:Java并发编程实践
  • 机器学习:周志华的“西瓜书"

入职

之前因为毕设的原因,还犹豫过到底要不要接受实习offer。
经过咨询师兄和权衡利弊,我最终还是接受了offer,于4月19日入职。
这份offer的待遇是:每天300,管午饭、下午茶和晚饭,水果牛奶雪糕随便吃。
事实上是:
每天税前300,实习生按劳务所得交税,超过800的部分要交给国家20%。
午饭晚饭还是很棒的,尤其是午饭的自助餐,每次都吃撑。
下午茶很简单,一个牛皮纸袋里有饮料、水果和零食,与想象中的有差距,但还是很使人满足的;我经常会剩一些带回去吃。

从工作中的点点滴滴中,我可以感受到
快手是一家技术很好、牛人很多的公司,现在在迅速扩张之中,几乎每周组内都有人入职(因此我才被录取?)。
带我的2个mentor人也都很nice,我从工作中学习和成长了很多。