TripAdvisor DaoDao Team 面试全过程

原帖地址:一亩三分地

因为最近朋友有得到TripAdvisor的面试机会,所以打算把自己今年四月份的面试经历写一写。可以给大家分享一下。首先,我得到面试机会是通过linkedin上联系已经在那里工资的中国engineer,他们帮我提供了面试的机会。还有我面的组是daodao team. 然后里面都是中国人。manager是在日本呆了很久的中国人。面试除了第一轮,都是中国人。onsite跟中国人面,都直接说中文。

第一部分: OA
1. maximal amplitude in binary tree: 给你一个tree的root节点,让你找到某一条Path, 他的amplitude最大(该条path上最小值和最大值的差值的绝对值最大)。这个貌似是leetcode原题。google有很多解法。
2.sql 问题:具体题目不记得了。大概需要利用order by 和 group by去筛选条件。很简单的一道sql。第一道题很快做出来了,第二道题会有足够的时间去查解法。

第二部分:Technical Phone Interview
就一道题 http://matchstickpuzzles.blogspo … w-many-squares.html
计算上面链接里的N X N matrix里面有多少个square. 我做的时候用的bruth force:就是先计算长度为1的square, 然后一直增加到N。
Follow up是问如果最外层的边也有不连接的部分怎么办?我说那就加一个fake outlayer进行判断。然后结束的时候提了一下,复杂的问题只用求得一个简单的值,我们可以利用dynamic programming。但我不能在短时间推出递推式,他说没有关系

第三部分:VP Skype Interview:
这一轮很简单,就是跟daodao组的VP进行视频聊天。大部分是他在说,你听着。他会介绍这个组干什么的,用了什么技术,人员构成是什么样的。

第四部分:Onsite:
第一轮:给你一个起点(0,0), 打印从里外的path: (0, 0)–>(1, 0)–>(1, 1)–>(0, 1)–>(-1, 1)–>(-1, 0)–>(-1, -1)–>(0, -1)–>(1, -1)
(1, -1)(1,0)(1, 1)
(0,-1) (0,0)(0,1)
(-1, -1) (-1,0) (-1,1)
纠结了一会,做出来了。但是做的不是很流畅。

第二轮:leetcode wildcard matching变型。只有一个*的特殊符号表示可以匹配接下来的任意字符。
我一开始就想直接用dynamic programming。但是要求我不能用额外空间,让我利用recursive解决。然后写了recursive方法。

第三轮:问了一些基础问题:exception有几类,如果try里面throw一个exception, finally里面throw一个exception,那么这个类会throw前一个exception,后一个exception还是两个都throw. 还问了currentHashMap.
然后就是best time buy and sell stock: transaction once, transaction twice and transaction k times

第四轮:一个manager,问了一下简历的项目内容,介绍了他所在的组。然后出题:一个log文件,有很多条record(record name, input time, details) 然后让你统计某一个特定的分钟,那些record正在执行。不好意思,这道题目记得不是很清楚。我用了hashmap, key是时间,value是record的对象,然后用get方法获得某一分钟的record。然后问我怎么设计这个hash function。我做的好像是24 * 60长度的array in hashmap, 然后hash是用当前的时间mod24 * 60, 获得他所在的某一个position in hashmap。但是我记不太清了。可能有错。

第五轮 VP: 问了Object是什么?Object class里面有哪些方法。然后每一个方法是什么,有什么内部机制。你站在设计的人员的角度,想想为什么要为object设计这个方法。还有finalization function是什么?garbage collection是怎么运作的?为什么要设计finalization,但是现在的程序员却不推荐release resource in finalization。还是hashcode和equals的区别。然后一道很简单的hashmap的算法题。然后升级这个算法,使之可以处理大数据。意思就是建立cache。然后建立cache的对象,怎么改写hashcode() 和 equals()。

说好的45分钟面试,我面了1个半小时。答的磕磕巴巴。被折磨的很惨。中国的manager真是对我太好了。

第六轮:HR。被送走。

这是我面过最折腾了和最不好的onsite。然后等了快2,3个星期,得到一封拒信。

TripAdvisor是一家很好的公司,只是这个组要求很高。大部分人都是full stack。我建议如果你不是full stack candidate,可以投投别的组。就这样。大家加油!