Uber 面试及准备

作者 QIFAN 日期 2017-02-17
Uber 面试及准备

已挂。


面试过程

💡 Jan 23 内推
💡 Jan 30 收到电面通知
💡 Feb 7 电面
💡 Feb 9 电面过,约 onsite
💡 Feb 17 Seattle onsite

电面(45 分钟)

  1. 让我 overview 简历的项目经历,我就把项目一个一个的说下去,他感兴趣的会提一些问题。
  2. 问了两个文化相关的:
    • 如果有很多个任务都要 due 了,怎么进行安排取舍
    • 有没有遇到过因为观念不同而产生的问题,怎么解决的
  3. 算法。给定一个数组,返回任意两个数相乘的最大的值。我一开始还想成 LeetCode 152 - Maximum Product Subarray 了,准备用 dp 做就卡了,然后面试官建议我先开始写起来。在写的过程中,我习惯性的先写出了所有的 corner cases ,每一个他都让我提供一个 test case 。突然间一拍大脑想通了,先 sort 再 binary search 找 0 ,再与最前面两个乘积和最后面两个乘积比较,返回最大的。这期间他又让我说几个 test case 。反正写的时候一直在交流,冷不丁问我个什么 sort 最快, int 占几个字节之类。感觉他对时间复杂度很在意,因为老问我。写出来以后竟然也没让我运行。我有一点在意的就是他问这个解法你觉得有哪些不能 exception 不能 handle ,我答了一个 integer overflow ,觉得没答好。我问他这是不是最好的解法,他说不是,但没关系,他就是想看看有没有别的解法。(黑线)
  4. 最后还有点时间,我问了下他在 Uber 的工作经历,然后聊了一会,就结束了。

我之前看面经都是挺难的题,就感觉运气又挺好的。。

Onsite

一共五轮,一个三哥四个中国小哥,除了第二轮全是问 behavior 的问题,其他套路都是面试官介绍自己的工作,再我自我介绍,然后做题,然后问问题。

第一轮竟然先问了我网络的问题,就是我在浏览器搜索以后整个流程是怎么样的,这实在是没有准备过,之前学的竟然又忘了,怪自己。代码题目我竟然忘了。

第二轮 Hiring Manager 简历的项目都问了,但是不是很细,就胡扯过了。why uber, why uber chooses you.

第三轮 设计 + merge 。用一个 timeline 同时展示 twitter 和 Instagram 的内容,先设计了数据结构,然后 merge 。Follow up 是如果有很多 source 要怎么 merge 。就是 mergeSort 的应用版。这是唯一在网上写然后跑的题。但我时间复杂度后来想想好像说错了。还问了电面的问题,如果同时有多个 deadline 怎么进行选择,举个自己的例子。

午饭。两个 recruiter 一起吃,实在是太热情了,我都不好意思大口吃饭。还有另一个一起面试的小哥,这边感觉讲话口音不一样好难懂啊。

第四轮 n x n 数独 。方法和 LeetCode 37 - Sudoku Solver 类似,不过写起来实在是太麻烦了,小哥都看不下去了,就直接在 board 上进行 valid check 。

第五轮 LeetCode 341 - Flatten Nested List Iterator 更简单一些,就是返回展开后的 List 。我一开始直接用的递归,这题我做 LeetCode 的时候是没做出来的。。然后小哥让我用 Stack 再做一遍,我这笨脑袋一时间又没转过弯来卡了半小时,后面问大哥已经表示了反差的小失望,感觉跪跪的。然后一直在问我有什么情况会 break 你的 algorithm ,我答不上来,问他又说你以后工作了就会明白的。

总的来说题不难,我反思自己的基础还是不够牢固,继续努力呀。


前期准备

一亩三分地面经

02.17 http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=225489&highlight=uber%2B%B5%E7%C3%E6
01.17 http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=229142&highlight=uber%2Bonsite
01.17 http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=224082&highlight=uber%2Bphone
12.16 http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=215054&highlight=uber%2Bphone
10.16 http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=204617&highlight=uber%2Bphone
07.16 http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=200291&highlight=uber%2Bphone

算法题

  1. 设计一个类,模拟一个游戏,输入为参与游戏的人数,所有人站一圈。编号为0的玩家起手有一把枪,拥有枪的玩家可以杀死他右边一位玩家然后把枪给再下面一个玩家。直到游戏只剩一个玩家。
  2. LC305
  3. LC419
  4. 二路归并。N 路归并。
  5. LC329
  6. Battleship 游戏
  7. 给 500k 城市 搜索 san 返回 10 个 san 开头的城市
  8. Word ladder
  9. haystack needle
  10. 返回可能的乘积组合 比如给 12 返回(2,6)(3,4)(2,2,3)
  11. LRU
  12. 给定一个字典 和 一个字符串数组 找出说有可能出现在字符串中的字符可以组成字典里面的字
  13. Write two functions to index the documents and search documents.
  14. 给两个 list 返回出交集
  15. List<List<Integer>> 找出所有在每一个里都取一个 integer 的组合。
  16. N-Queen

coding 基础

  1. sort 代码实现。insertion / merge / quick
  2. 树的三种遍历实现。

简历问题

  1. 自我介绍
    专业,职位,技能,兴趣
  2. Why Uber?
  3. project 经历,细节(数据库设计、类的设计、为什么用这个语言)
  4. 认为某个语言怎么样

Questions for the interviewer

  1. why you choose uber
  2. what is the difference compared to previous jobs
  3. 根据面试官的介绍问感兴趣的问题