注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
Google Onsite
* Ben 老白, NLP phd, 问了如何设计一个手机的输入法中的suggestion, 我回答trier tree 然后嘴贱说了suffix tree, 被追问suffix tree细节, 我答不知道. 然后问了如何rank suggestion. 我答了可以利用用户的click data, common words, edit distance,… 一直没有答到点子上. 他想问的实际上可以通过前面几个出现的词来推断下一个出现的词, 可以train一个language model, 可以知道给定前面几个词 推断下一个词的概率. 然后问了知不知道word2vec.
* heckata, 老asian, google research, 问了LR的目标函数 logloss, 还有如何求导, . 最后又问了还有没有其他的loss function (我说MSE, 其实后来想一想可以答hingeloss) 然后问了overfitting 中如何使用L1, L2. 如果feature cluster的话, L2 和 L1 对这些feature有什么影响. 我答如果使用L2对每个feature 的weight penalize会比较多. L1会让这些feature的weight 缩成0, (他又问直接这样做就能缩成0嘛, 然后又介绍可能要加个operator才能让value 缩成0). 然后他就问了recommendation. 这快我就完全弱势了. 他问了一个如何在sub-linear time里对user 来recommend 物品, 我提出了用CF, (然后被质疑数据太稀疏, 然后matrix 太大计算太复杂, 他说最后的答案是只考虑pairwise的ranking), 我提出可以使用一个category的信息来pre-filtering 只找出符合category info的物品进行比较, 然后他又说假设没有这些category的information 该怎么办. 他然后说可以使用clustering, 然后只和临近的cluster来比较. 他又说了不同cluster的embedding 不能求mean的方式来找出user的embedding, 然后改怎么办? 我说我的user feature vector是直接learn出来的. 然后被质疑如果只使用了click data, 没有使用没click的data, collaborative filtering是不是会学出来一个很奇怪的vector (不懂他在说什么) 可能还是由于sparse data, 学出来的东西, 在unknown data上可能表现不好.
* 一系列的coding question, 都感觉时间不够, 最后一个follow up没有时间做, 或者只有很少的时间来做.感觉自己在解释思路和简单问题上花的时间太多, 而他家又是要做多个题目的, 所以到最后时间不够. 对于这种开始来个简单的, 然后有几个followup的. 我的时间分配不合理. 最后的最难的问题只有最少的时间来处理. 写白板的时间也要很久.
Linkedin onsite
1. test, two questions (1) number of islands and (2) isIsomorphic string, finding isomorphic groups。 两个国人一个老一点的大哥据说是做tool 来deploy ml model的,还有一个小一点的小哥做的是performance testing,小哥貌似经常看老哥的反映, 不过小哥问的问题更困难一些。 最后让我问问题, 我问了他们是哪个组的, 然后day to day life look like。 I am not interested。我更想知道他们喜欢他们工作中的哪个部分。 所以以后可以多问问这块。在后面回答小哥的followup的时候,没有想出来更好的解决办法。 经过小哥的提示终于想出来了。[3]
2. data mining 问题, 开始用maximum log likelihood 来推硬币的分布。 这一块挣扎了很久, 因为真的不是很熟。 不过经过各种提示想到了用binomial distribution来的XDF 来计算, 然后想到了利用导数和gradient 为0时候的值。 为什么没有期望? 和之前的期望有什么关系, 之后问了一堆general的ml的问题。 中间问道GBDT和decision tree 还有random foreset的区别的时候不是很清楚。 尤其random forest是什么完全忘记了, 不是很能看见他们对自己工作的热情。 如果我是面试官可能我也没有机会表现出来这一点。 但是面试都是一些two way process。 我至少应该体现自己的passionated about my work。 recall怎么做的, 被提示sequence 很重要, 最后直接被提示用BFS 解决了这个问题.
Problem solving, 就是算法题, 问了如何判断config file是不是valid 就是不同shard的interval是否有overlap. 然后followup 是如何判断一个id 是否在任何一个shard中. 我想到merge time interval那题, 想到是不是要用复杂的segment tree和heap 来判断interval是不是会有overlap. 一直没有figure out most basic的方法. 其实就是一个个读每个segment, 然后sort by start time. 然后merge 所有有overlap的segment, 然后判断在merge的过程中是否有conflict. 因为不需要知道overlap的interval的数量完全不需要用heap这种数据结构来keep overlap的interval的数量 (我进场在面试中问第二种类型的题, 结果遇到第一种最简单的题反而直接挂了), 得到了面试官的提示, 想出来了如何解决这个问题. 并且code出了结果.
Algorithm/Data , growth team manager: 最开始了聊了一下他们的工作, 感觉他们一个重要的方向是personalization. 然后问了一个有关log的问题. 先build 然后print出aggregated的结果. 他一直在问我用什么数据结构来存储, 我想到了一个利用dictionary和找出user group 然后recursive的solution. 但是我花了很久的时间解释, 但是他还是不清楚这个recursive的方法是如何work的. 最后当我写出来code, 他明白了这个方法是如何work的, 也肯定了这个方法是可以work的. [如何解释一个算法 根据一个example, 结合现有的terms, 他当时的疑问是什么, 我提到recusion的时候, 我用了group这个概念和list这个概念, 是不是解释的时候这些term要给出具体example会比较好理解]. 最后他期待的Data structure是什么? 应该是个tree, tree中的node有content 和format信息, 然后这些信息实际上在recursion的时候可以获取, 按照preorder 遍历可以直接print 没有必要保留然后再print出来.
|