谷歌 Kirkland SDE 跳槽

一共五轮,4轮算法,一轮design。晚上没睡好,脑子昏昏沉沉就去了。
第一轮,三哥。算法题。有一数组,要求实现一个API, 输入时一段区间[start, end),输出时该区间内数的和。API会被调用很多次,数组可以预处理。一上来想用BIT来impress一下他。写了一会觉得脑子不好使,赶快说用树来做。写完后问平均复杂度和最坏复杂度。follow-up问加入数组会变呢?
第二轮 东欧人。一看就是偏底层的。要求实现一个循环每隔1秒打印当前时间,按任意键立即退出。接着问thread safe,线程同步,进程同步,多机器之间同步的问题。
午饭,饭后喝了一杯现做摩卡,休息
第三轮 白人 生成迷宫。当时没见过这题,就用BFS或者DFS做,在墙上随机开门。问这样生成的迷宫太boring了,怎么改进?胡乱说那就在随机上做文章。估计他见我的方法不上道,也就没深究下去。随便又问了到简单题。
第四轮 亚裔。实现blocking queue。queue有大小限制,实现push和pop。Q满时push会block,Q空时pop会block.
第五轮 三哥 设计。生成大致递增ID. 用时间戳加机器ID实现,算了需要的比特数,时间戳的精度。第二问了处理海量数据的问题,map reduce做。问了很多机器挂了的处理,怎么做checkpoint,怎么处理重复做,怎么防止漏做。

P.S. 狗家面试体验最好