【转载 From MITBBS】Facebook On Site 面经

1. 给你一些平面的点(坐标是整数),求能够成正方形的数目。
我想了想这题大概可以这么做:把每两个点之间的距离用hashmap存下来,key是
distance, values是arraylist of point pairs, 比如(p1, p2), (p3,p4)之间距离
都是6, 把他们都放到map.get(6)的list里面。这样一共要查(n,2)pairs, time也就是
(n^2). 下一步对于每一个distance, 查看对应的list size是不是大于4(至少有4个
pairs之间距离相同)。然后对于每一个list再进一步确定有没有正方形,比如
(p1,p2), (p1,p3), (p1,p4), (p2, p3), (p2, p4), (p3, p4) 都在list里,就可以确
认这四个点可以组成正方形。。。。确认的时候可以再建一个hashmap, map p1 to (p2
, p3, p4), p2 to (p3, p4), 然后找需要的pair是不是都在map里。。。就是好麻烦这
个solution, 不知有没有简单点的解法?


2. 设计json的data structure实现json encoding 要求one line version先不考虑
indent,follow up考虑indent和括号
来自这里
http://www.mitbbs.com/article_t/JobHunting/32883371.html
没有思路,不知怎么start, 还请大家帮忙。。。

【转载 From MITBBS】Dropbox 面经

新鲜出炉的dropbox电话面经, 叫我写个计数函数,返回5分钟内hit()被运行了几次

两个function;

void hit()

long getHits() //返回五分钟内hit了几次

Google System Design Interview Question

Design a system to hand out telephone numbers for Google voice.

You want to present numbers to people such that:
a person sees 10 numbers at a time
no two people should see the same numbers at the same time
they get 2 minutes to choose one of those numbers or ask for more. If they 
choose one after the 2 minutes are expired, the request fails.


Where you would put the various data elements - in a database, application 
servers, front-ends or the browser. 
What kinds of data structures you would use.

传说中 Databricks Interview Question


有一个unfair的coin,出现head的概率是1/4, 出现tail的概率是3/4,有个对应的返

回值为boolean的function,当是head的时候返回true,是tail返回false,现在,你如

何利用原有方程,再写一个function,使得返回true和false的概率一样。

LeetCode Solution

http://blog.csdn.net/xudli

Interview Question: How to build a website: CS75 (Summer 2012) Lecture 9 Scalability Harvard Web Development David M...

Facebook Interview Question: Facebook and memcached - Tech Talk

Dropbox Interview Question: How We've Scaled Dropbox

[From MITBBS] Facebook and Google Interview Questions

Facebook:
Phone:
Input: Given a matrix of 0, there are some areas populated with 1, 2, 3s.
Output: Map<int, numOfRegions>

Onsite:
Round 1: cultural, project deep dive, things that can be done better
Round 2: Calculator, implement a function to output the current display 
based on the inputs that is already typed.
Round 3: Word Ladder II in Leetcode
Round 4: Design facebook event notification system (push on mobile app, and 
pull on web), discuss storage/api, how to generate events, prefer to use 
periodical job to scan incoming events and generate messages accordingly
Round 5: Culture fit, strength, how to deal with disputes among colleagues, 
reverse linked list in pairs

Google:
1. Given a robot and a maze, the robot supports these apis:
Turn left, move forward, checkIsExit
Write a program to make it move to the exit

2. Design Youtube access control system, storage, scales

3. Suppose there are k threads, write a multi-thread program to make them 
come to deadlock, I use semaphore at first, then was asked to implement it 
with countDownLatch

4. RunLength encoding, discuss various ways to minimize the encoded string 
under different constraints

5. Design a system to generate Ids for distributed DBs, discuss various 
Zookeeper patterns (leader elections etc).
For a given number, how to return minimum number of squares that sums up to 
this number

【转载 From MITBBS】FB 设计题

传一个大文件到几个数据中心,每个中心上千台机器。

【转载 From MITBBS】Uber面经

U家的
其实主要是聊天, 聊快玩了才问题目, culture fit是他们最看重的. 

1. Scramble Game, given some letters, and a big dictionary, how to get
all words that can be generated by combing these letters (use Trie)
2. Simulation game: 假设有一圈人(1 - N)成环状排列, 其中一个投出飞盘, 打到前
面一个, 于是前面一个倒下, 下一个接起来继续扔向前, 知道只剩下一个人为止, 求这
个人的id
3. Find min in rotated Array, design 分布式metrics 系统
5. Read4K problem, followup, how to make it work with multiple calls, 
subsequent call should starts from where the last one ends

【转载 From MITBBS】Google, Microsoft, Zenefits 面经

Google
电面了2轮,题目有:
一个grid,点代表城市,边代表道路,输入是一个起始点跟一堆destination,还有哪些
路被blocked 打印所有能到的点
老题,2d matrix的row跟column都是sorted, 在里面搜某个数
oil pipeline problem, 下面这个链接的10.3-9
http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap10
补充问题是如果有2根pipeline,怎么放

Microsoft
电面了2个组,记得的题目:
best time to sell stock变种,每天只能买0或者1个,可以卖任意多个 
BST输出给定范围内的节点 
棒球比赛,有N个batter,要记录每人打中的球的数目,还要按分数排序输出batter名
字,写数据结构+伪代码
还问一些操作系统,数据结构基本概念 

Zenefits
在线做题,3个小时2道题,可以去搜面筋,重复率很高
可以在线跑test case然后改,会告诉你pass几个fail几个,但是不告诉你具体哪个
case fail
第一个题目是下面这个链接的第一题
http://www.meetqun.com/thread-7939-1-1.html
第2题 rank of permutation 

【转载 From MITBBS】FB 面经

一个月以前面的了,没什么营养,还是发给大家看看吧, 希望对大家有帮助,已经跪了。

电面: 中国大叔面的,大叔很nice,遇到我写有bug的时候都会着急的提醒我,题也很
简单。

1: 给n个点找出离远点最近的k个, k<<n。
2: 给三个 api isSmall()  isMid() isBig() 给一个array 排序,只要不被迷惑, 知
道其实是lc 上 sort color的变种就很简单了。

On Site:

1: 聊自己的research,白人manager,说自己以前是faculty,人非常nice。气场也比
较合, 我讲完之后还说把email给我,说我面试后有问题可以问他,然后问了个 two 
sum。

2:亚洲小哥,也很nice,第一道题是 Lc 上的String Multiplication。 然后出了一
个打印 tree路径的题,后来问我做过没有,只能说做过类似的,后来换了一道 的 
decode way 变形,要把所有的可能的组合都打印出来,写了一个recursion。

中午和内推我的本版汤唯姐姐吃饭,在此谢谢汤唯姐姐,大牛非常nice,大家内推可以
去找他。吃饭的时候还说,上午过了最难的两轮,下午都是国人面试官,应该简单点。

3:国人面试官,貌似气场不太合,我写code的时候尽量解释,可能人家
觉得我也做不出来,无聊的看了很久手机。出了这个题
http://www.mitbbs.com/article_t/JobHunting/32906379.html

class IntFileIterator {
  boolean hasNext();
  int next();
}

class{
  public boolean isDistanceZeroOrOne(IntFileIterator a, IntFileIterator b);

}
// return if the distance between a and b is at most 1.. 
// Distance: minimum number of modifications to make a=b
// Modification:
//   1. change an int in a
//   2. insert an int to a
//   3. remove an int from a

都怪自己事先没把本版的题都做一遍,然后就跪在这道题上了,巧的是貌似帖子的一个
妹子也是这个国人同学面的,大家记得一定把这道题做一下。

4. 国人面试官面出的 design:Shorten Url。面试官人非常nice,可是自己答的一般
,在此谢谢他。

白人经理很nice,果然当天就写了个email给我,说很enjoy 和我的talk。hr拖了很久,
上周通知,不出意料的跪了。

【转载 From MITBBS】 分享一个LeetCode解答的网站

之前找工作时自己写的blog,现在分享给大家,希望能给同在刷题的人提供一些帮助。
目前更新到228题,工作了估计就不太有时间了,但有空我还会继续更新。我对相同类
型的题做了一些归类,并且对每道题尽量给了不同解法,之前自己刷题时感觉网上的答
案比较分散,有时不太容易找,希望这个blog能对大家有一定帮助,里面的错误也欢迎
大家指正。

网址是:http://wlcoding.blogspot.com
祝大家找工作都顺利!

【转载 From MITBBS】surveymonkey面经

周二去palo alto总部onsite,周五被告知不move on,分享一下面经希望对大火有用。

店面:华人大哥,主要聊了做过的project,聊得很合拍,最后问了道很简单的题目
given a string consisting of a set of characters, return a new string of the
original characters sorted in alphabet order. e.g given 'abcabcabc' return 
'aaabbbccc'


onsite总的来说面试不难,去之前recruiter说有五轮,但当天实际面了六轮,分别来
自两个组(collect team and analysis team)

1. 组1阿三HM,刚进来一看好像还很friendly的样子,先介绍了他的组和公司的情况,
然后让我介绍自己的工作经历。我说完这问大哥点点头,然后掏出了一页纸,上面都是
问题。。。。都是很detail的问题,比如http post和put有什么区别,这个真被问到了
,就答了他们都可以用来send request to update/create data,答不出区别。。。还
有被问hadoop的archicture以及hive和pig latin有什么区别,这个可能和我简历有关
,之前工作中用过hive,pig是在学校时上课用过,实际工作没用过,磕磕碰碰说了点
区别,貌似他不太满意,但关键hive是之前工作用的,两年多了,面的职位也和hadoop
这些完全不相关。到了这里我就感觉很不好了。也算我没有准备好吧。。。最后没做题
目。

2. 组2的白人senior engineer/tech lead, 其实他刚离开组2去组建一个新的team. 还
是照例聊他们team和我的background,还有一些backend相关的知识点,然后让用queue
实现stack

3. 组2白女,fullstack or frontend engineer,不记得了。基本都是聊天,从和他们
聊还是可以看得出来这公司的culture不错,貌似很多人都很喜欢公司,公司鼓励大家
不要加班,而且说他们周四很多人都work from home。但是聊到快完了她才说要不我问
你一道问题吧,让顺时针90度旋转nxn的matrix,我说用四个变量确定当前的上下row和
左右column,然后一层层旋转,写了旋转当前上下行的代码。她说ok

4. 组1三姐和new hire白男(shadow), 很常规的先过简历再做题,leetcode 原题
Search a 2D Matrix,我给了O(M*N),O(M+N)和O(logM*N)三种思路和coding

5. 管组1的三哥director。可见三哥三姐很喜欢扎堆,组1都是三哥三姐。但好的一点
是这三位的英语都还挺好懂的,特别是三姐和这位director,感觉基本没有印度口音。
这位哥们说他加入猴子公司才三年,就从tech lead/senior升到director了,下面管
着三个team。聊了聊公司的engineering现状和当前的challenge,他们现在已经摆脱了
startup刚开始的艰难时期,现在的主要问题是scale up带来的挑战(engineering,
management)。因为他没有带我的简历,所以就只让我说说工作经验,然后把现在工作
的architecture/workflow给他讲讲。最后他说组1在找senior,我就说我可能不还不
够senior,他到是很坦率的说他也觉得我可能fit他们的要求,但其他组如果合适会考
虑,这是他们招人的policy。

6. 管组2的director,非常热情的白人大叔,先问了我的experience,说完我的
background真好符合他的组,那一瞬间我都感觉可能有offer了。。。。然后他讲了一
下他们的architecture和他多么喜欢serveymonkey,公司提供了很多opportunity,比
如那个白男本来是他的team的,他们都很喜欢他,他离开他很心疼,但也了解白男想去
做新的东西,这对他对公司都是好事。看得出来人挺nice。

说实话,除了第一轮,后面我感觉都挺好的,本来还以为能有offer,昨天被据了还是
有点小难过。不过想想自己确实有些准备不足,也不能怪别人,只能move on了。

【转载 From MITBBS】FLGU面经offer及杂谈

上点新鲜面经回馈版面

F家phone
中年亚裔,比较注重细节
3sum, 每个元素可用多次
ksum, 讨论了下理论最优解法和复杂度,面试官说空间复杂度太大而且不好code,就用
简单方法写了个recursive的

约onsite时recruiter说entry level招满了,要把onsite推到10月,只能放弃了

L家

phone

两个老美都挺nice 一个主面一个shadow
第一题lowest common ancestor in binary tree with parent pointer
第二题find minimum distance between two words in a string array
e.g (“the”, “quick”, “brown”, “fox”, “quick”)
distance(“fox”,”the”) = 3
distance(“quick”, “fox”) = 1

onsite

1.host manager面,国人大叔,主要是些背景和behavior question

2.technical communication,亚裔小哥,讲自己的project 
这里一点个人的经验是如果面试官不熟悉你的领域的话不一定要讲自己亲手做的东西,
但一定要懂细节(因为不是每个人都有拿得出手又适合展示的project),我就是讲自
己组产品的框架。重点是不要让面试官觉得你做的东西很简单没挑战性,但是也不能太
晦涩要让他能听懂。所以最好先讲大的框架不要抠细节,他如果对那个具体细节感兴趣
自己会问,然后你再和他讨论效果会比较好。最好从他感兴趣的某个点上展开体现下你
的知识深度。另外如果面试官问哪块是你做的可以适当吹牛。

3.lunch interview
陪同你吃饭的人要提供feedback所以开始以为会吃得很不自在,结果碰到超nice的国人
大哥,直接和我中文聊让我放松,最后一路聊天加饭后散步水过,非常感谢!

4. system design,两位国女面试官,经典题url shortener。
开始上网上看过的一个做法,直接被shadow面试官全盘否定。主面试官大姐人很好帮我
打圆场,重新开始设计。这里一点个人经验是有些面试官喜欢否定面试者,这样的人往
往不是大牛但自傲,这种时候哪怕你知道自己是对的也千万不要与之硬扛,否则必死无
疑。最好顺着他来拍个马屁什么的,还有一线生机。

5. coding interview one,面试官是酷酷的国人小哥和新来的印度小哥。
warm up 如果两个linked list intersect的话如何找到merge point。 
follow up 有环的情况 
假设给一排n个房子paint,有m种不同颜色可选,相邻房子不能同色,给定一个mxn的
cost matrix,求最小cost的染色方法。

6. coding interview two,白人小哥。
algorithm game,两个玩家从一组数里轮流取数,取过就从数组拿走,如果某个玩家取
数后所有已经取出的数和超过给定值则胜出,要求判断第一个拿是否能赢写函数
boolean isWin(Set<Integer> choosable,target)
判断一个数组里是否存在三个数可以组成一个三角形 
lc原题all permutation of array,array 可以有重复元素,结果不允许重复

G家

内部哥们强推,跳过phone

onsite
1. card shuffler:shuffle的程序是一个简单的array,array里的值代表当前位置卡
片的下一个位置 
e.g 当前卡片位置ABCDE shuffle array是01234的话下个卡片位置还是ABCDE,43210的
话下个卡片位置是EDCBA。
问给定一个shuffle array,不断用这个array去shuffle,能否得到最初的card deck,
能得话要多少次。 
吐槽下,面试官是个三哥,全程非常严肃/黑脸,我说句话就用小本子记下搞得我很紧
张。我说用java写可以吗,曰可以,刚写了两行问我add是啥意思,不知道是想考我基
础知识还是不懂java。

2. 给定一个binary search tree,返回range内所有key,key可以有重复。 
版上出现了多次的把一个数拆成任意个平方和的最小拆法。
面试官是中年国人大叔,除了告诉我题目是啥就在电脑上自顾自工作,问话要问两遍才
有反应。写完说我程序有问题,查了半天查不出bug,然后指出我漏了个尖括号,跪了
。。

3. 版上出现多次的longest consecutive sequence in tree 
follow up 如何加速,memory放不下怎么办。
国人小哥比较nice,但是只要我不和他主动说话绝不主动和我说话,因为前两场心情略
糟糕写完题目在白板前发呆,哥们就望着我啥也不说,尴尬。。当然也不怪他我自己比
较紧张,回家发现有很弱智的bug但小哥没提不知道怎么回事,可能放我水了

4. 设计个用bit形式表示时间(小时:分钟)的clock,
e.g 10:15可以写作1010:1111,每个bit是一个小灯泡,打印所有有且仅有n盏灯亮着的
时间,
e.g. n=0就只有0:0一种可能。

面试官是亚裔年轻mm,话不多人很cool,但是思路清晰会引导面试者,感觉碰到懂得引
导面试者或冷漠面试官对面试人表现会有很大影响,真的是看运气了。

5.算法游戏,给一个只有+-两种字符的array,两个玩家,轮到某个玩家他可以任选
两个连续的--将他们变成++,如果某个玩家发现自己无法行动则赢得游戏,要求写
isWin(String s)判断先行动的玩家能否赢。
followup 如何优化,时间上和空间上。
面试官是做android前端的白人mm,非常活泼健谈,一路聊天愉快,面完就感觉她会给
强推。

之前发过了U的店面,最后签了offer,就不发onsite面筋了。

背景:phd1年多经验,非互联网养老公司
工作c/c++为主做软件性能优化比较多,为了面试专门去coursera上了java(之前有人
推荐的Princeton的算法课)和python的课,感觉多会几种语言后对水平帮助很大,准
备过程中有什么不懂就stackoverflow,
也很有帮助。之前没有任何互联网经验,唯一经验就是自己在aws上做一个小blog网站
,aws构架是scalability的经典教科书,值得学习一下

干货结束,之后是对各个公司和offer的看法,有很多主观因素,不喜勿喷。

G家
很多人觉得g家面试官总体素质很高,不过个人最近面试中的不愉快经历基本都是在g家
发生的,没有明显觉得g家面试官比别家水平高,可能是我运气不好或第一个面的太紧
张。

g家offer流程不确定性很大,快的一周内搞定,慢的要一个月也不稀奇(我自己亲身经
历没有team match还用了快一个月,中间recruiter换过一次,第一个面的g但别家
offer deadline都过了才出结果)。所以最好把g排在最早面试,但是坏处是拿g热身风
险太大,面专门的热身公司对骑驴找马的同学cost又比较高。

个人对g的看法比较neutral,觉得5年之内还是稳稳的业界老大,但是增长已经放缓,
暂时看不到第二春的迹象。坏处就是有明显的刷简历和养老公司的趋势,碰到许多ex-
googler对自由度低和没有存在感颇有微词。很多人升T5不久就走了。

g家默认发low ball offer,但是如果你有好的competing offer可以给的range比任何
一家都大,就看想不想抢你了。从我自己搜集的资料来看,T4的range大概是(括号我
自己的number做参考)
base : 130-140K (130)
GSU:300-800  (670)
signon:0-50K    (50)
基本原则就是没好的competing offer往下限看齐,否则往上限看齐,当然可以更多,
但那基本是极少数牛人,不在讨论范围内。base是HC定的,negotiate空间很小,GSU和
signon有很大空间,senior的recruiter给个几万signon完全可以自己决定。所以有
competing尽管开口要不会有问题。

g家刷题还是有些用处的,但不是决定性的。对非大牛来说g offer运气成分很大,g家
的挑人原则和别人不一样,有strong hire很重要,有个把not hire不影响大局,总体
是1 strong hire + 1 not hire 》1 hire + 1 hire。如果一个strong没有哪怕全是
hire也可能过不了HC。从我自己的base可以推断feedback平均分很一般,但有人力挺我
才拿到的offer,因为recruiter专门和我提到impress some interviewer,并且自己感
觉很有可能有一个面试官给了我not hire。

L家
个人对L家印象不错,recruiter很热情,感觉对面试人比狗家上心,面完后两天就告诉
过了HC可以有offer,专门找了hm和director和我约谈,感觉都不错,最后据offer的时
候很不好意思。

L家是我面过所有里面coding比重较小的,它家题库不大,career cup和论坛上把他家
题都刷熟再加leetcode过coding面一点问题都没有。L家的重头戏在design和
communication,一定要好好准备,我有认识acm大牛没拿到L offer估计就是栽在这些
上面。

L家感觉作为第一份工作非常好:entry level package高,不low ball;app track很
多职位做的事情类似full stack engineer,从mobile到后端都管,是学习的好机会;
总体氛围不错,worklife balance好。缺点是:senior拿的/refresh不如g; 烙印hm
多,干活的都是老中;在普通人群中牌子不如g硬。当然每个人感受不同,其中很多缺
点也算不上缺点。个人聊过的烙印hm感觉人还不错。最后拿的包裹:
base: 145K
RSU: 300K
signon: 50K

U家
对U家最深刻的印象是里面每个人都对公司有超乎寻常的热情。后来才知道对他家没热
情的面试就被刷了。他家很看重这个,如果有人面试中觉得你对他们公司没信心,基本
是一票否决。U家大概是近几十年争议最大的公司了,如果你去网上看新闻评论,各种
负面报道和谩骂基本是铺天盖地,看不见什么好评论,光看这些感觉这个公司分分钟要
倒闭的样子,但事实是它的business还在以惊人的速度增长,鲜明对比下的问题值得深
思。网上有很大的一部分负面评论和customer service有关,它家只有邮件没有电话客
服让很多人很抓狂,另外负面宣传让很多没怎么用过uber的民众觉得它就是个黑车公司
,根本不知道它后面的mission。还有一个很有意思的是我生活中认识的用过uber的人
基本都说好,没见过一个说不好的,但网上骂的那么多真的让人怀疑是不是出租车司机
或水军。

u家非senior面试主要还是coding加一点点design,题目感觉中等偏难。如果senior的
话design类问题比重大大增加,而且会有些很难回答的非算法问题,感觉比较考全方位
的软实力。u家基本是一票否决,所以不能弄砸某一轮。最近还在大量招人,不过面的
人也很多,所以还是比较挑剔的导致议价空间也很小。

u家面试很高效,onsite当天或第二天给offer,过两天没消息基本就是挂了,它家
经过5月最新50b估值后standard package慢慢开始low ball了,最近的2级(比senior
低一级)standard range大概是
base: 125-130K
rsu:12000-14000 unit 按39/unit来的
传说中它家基本不negotiate,但个人经验还是可以的,但是你要有比较好的competing
offer。它家现在和g抢人抢的挺凶,所以有好的GF之类的offer还是可以讲的但是操作
空间也不是很大,最后g家给的包裹基本快赶上u了而且全是cash(签uber的第二天g股
票就飙了),选他家主要是在养老公司呆怕了,希望能有点impact,但愿以后不会后悔。

[转载 From MITBBS] Google Interview Questions

1. 二维matrix,含0,1。  1是障碍。
  00011
  11100 
  从左上角出发到右下角, 可以往上,往下,往右移动。
  把1变成0,使得你可以从左上角到右下角。
  求最小的变化数字。

2。 两个区间,左闭右开。数字可以是整数或者浮点,
     要你判断两个区间是否相交。
     特殊例子需要你自己定义。

[From MITBBS] Google Interviews Experience

Myself:
Definitely middle-aged.I am now over 40. I graduated long time ago. I am not
very successful in my career. My spoken English is BAD. I came from Canada 
to Bay Area six months ago with TN visa. I received a call from recruiter 2 
months ago, and started to prepare for interview. Had phone interview one 
month ago, and had onsite interview recently. 

Interview process
Phone Interview: Sparse Matrix Addition.

after this, I asked to schedule onsite interview one month later so I could 
have time to prepare.

I am interviewed for front-end position. onsite interview has 5 sessions. 
All of them are conducted by native-speakers. Four of them are front-end 
questions(html/javascrpt/css/web security) mixed with with some algorithms. 
One of them was system design(or data structure design). I did bad in this 
one.  This design question can be easily reduced to a tree construction/
traversal question. But I am so used to List/map in my daily coding. I didn'
t recognize that it is a tree problem.  Anyone will have this problem after 
he works after a while. Think how many time you use tree/graph in your daily
program. I used none. 


Lessons
I was given a mock interview by one developer manager in G家。He told me 
that each interviewer has about 3 or four questions in reserve. The 
interviewer will select one of them from his reserve to question applicant. 
Interviewer does not change his reserve unless some of them are exposed in 
internet and banned by company. Very useful information, isn't it?

he told me that the question should be relative easy and coding can be 
finished in 20 to 30 minutes. It does NOT test your knowledge in graph, etc.
So what does it test? It tests whether you can find a simple(or brute force
) solution and code them correctly. 1) finding simple solution is not easy. 
It really needs some intuition and luck. 2) He may not be correct since I 
saw so many graph and other algorithm questions in this board and leetcode. 

lesson 1: I was given some relative simple algorithm questions. two of them 
appeared in this board and leetcode. But I only started checking this board 
2 days before onsite interview. I didn't pay attention and think them over 
before interview. Luckily I have correct solution for them during interview.
  So the lesson is allocating sometime to go over the questions in this 
board or leetcode before interview! It could be helpful.

Lesson 2: you definitely don't need to remember how to construct red-black 
tree, suffix tree, max-flow algorithm. They are too complicated to fit in 
one interview session and couldn't test anything of the applicant. I spent 
about more than two weeks on them! What a waste!

Lesson 3: communication! I lack communication in the system design session. 
I rushed to coding. I only have about 3 to 4 eye contacts. Try to read the 
interviewer face expression to guess you are on the right track or not. 
Developer manager told me this. But I am really bad at this aspect. 

Lesson 4: interview for front-end engineer is easier than back-end or full-
stack engineer. It is my feeling.

This link is in the guide from recruiter: https://www.topcoder.com/community
/data-science/data-science-tutorials/. it is pretty good. If you have time, 
you can go over it. 

I can't point out what questions were asked since I signed NDA. I hope these
lessons are helpful to others.