timeline:
2.8 收到内推确认邮件
2.21 OA1
3.2 OA2
4.4 选VO时间
4.18 VO
第一轮,Senior Engineer台湾小哥。
一道设计题,需要提供两个api,一个get(),一个put()
给了个例子:
get() -> 1
get() -> 2
get() -> 3
put(2)
get() -> 2
get() -> 4
put(3)
get() -> 3
get() -> 5
follow up 是,如果get比put多很多怎么处理
BQ: tight deadline, 从我给的例子又问了一些问题。
第二轮,印度大哥,声音断断续续,让他重复了好多遍问题。
第一题,给我画了一个tree, 先让我inorder顺序打印出来,然后说我现在加一个thread,楼主当时很开心,因为以前数据结构写过threaded tree, thread指向的是当前节点的inorder successor。但是这题里thread定义不一样,thread可以指向任何的inorder traversal之后的节点。
写一个validate() 方法,判断这棵树是不是validate的threaded tree
写了好久,差不多还有三分钟结束的时候写完了。
结果,还有第二题!
写一个数据结构,要求4个操作都在O(1)完成
put()
remove()
get()
getRandom()
没有BQ(也没时间了)
第三轮,印度小哥,感觉比我还紧张。
43, 41, 3, 2, -9, 3, 4, 5, 8, 43
给了个例子,要求返回第一个重复数字的index
follow up是,如果是sorted,而且只有一个数字有重复
比如1 2 3 4 5 5 6 7,返回重复数字的index
这题挺简单,用了binary search
写完还剩20分钟,问了5分钟BQ,提前10分钟结束了
BQ:
Tell me about a time when you worked against tight deadlines and didn’t have time to consider all options before making a decision.
Speed matters in business. Many decisions and actions are reversible and do not need extensive study. We value calculated risk taking.