Google:
因为暑假在G家实习过,所以仅仅是简单面了2轮。
后来跟曾经的
intern host吃饭得知,他和还有一个reviewer对我的实习工作都给了不错的评价,所以面试的时候面试官都放水了。题目出得异常简单,每题都是10行代码搞定的那种。
第1轮:
1. 实现一个hangman游戏,给定一个词作为答案,然后进行推測。推測的时候仅仅知道这个词的长度。每次能够从26个字母里的猜一个字母,假设该单词存在该字母,这些字母都会明白出在单词中的位置,而且能够进行下一轮推測,否则算错。假设一共错了六次就不能再猜了。怎样能够最大化猜对的几率。
比如答案为
hangman。一開始的字符串为"*******",假设猜n,正确,能够显现"**n***n",再猜a,正确,能够显现"*an**an"。
我用的DFS。依照字典里字母出现频率由高往低去猜。
2. 给一个List<Integer>,去除全部的偶数,要求仅仅扫一遍而且不使用额外空间。Follow up是怎样generalize这个函数,做成一个library。第二问假设用c++写就用template,而且把推断奇偶的那个部分做成函数指针(C++11里还能够用bind)。或者用virtual
function。
假设用
java,就泛型 + abstract method。
第2轮:
这个证明了面试没有最水,仅仅有更水。。
。
两个问题各自是:1)实现pow(int a, int b)。2)比較DFS和BFS。
Twitter:
问题都不难。因为签了NDA,这里就不透露细节了。
1. 质数问题变种。
2. 各种sampling的问题,大数据的,分布式的。
3. LeetCode原题:Clone a linkedlist with random pointers。
4. 设计怎样分布式存储tweets。包含保持排序性质什么的。
5. 字符串匹配问题。都还没涉及到什么fancy的方法比如KMP什么的时间就完了。
6. 设计一个Timer class。
预计因为项目经历。非常多问题最后都延伸到了分布式实现和用MapReduce实现。