发个Zenefits Skype面

avatar 62895
zxy4159526
2708
5
没发过什么面经,今天来发一个回报地里,现在开始找工作,这两个月会陆续发面经。

首先感谢地里同学内推的Zenefits,不过开始面经前先吐槽一下。上周和recruiter聊天,约了15分钟的电话,她直接迟到10分。她的电话信号相当不好,好几次听不见了,recruiter直接就挂了电话再打过来。一开始打电话就说“不好意思我们希望招立马能来工作的,你是年底才毕业,可能不适合,但是你也可以来面试一下”。这也够奇葩了,后面对我的实习经历她大致问了一下,后面来了个问题,问我最不喜欢实习那家公司的什么。。。这也是醉了。

好了,下面是干货。

1. 电面开始,面试官先问了一下我对各个语言的熟悉程度,然后让我谈谈Java,Python,C++等语言各自的优缺点。然后问如果有一个项目,我会如何从中选择开发语言。

2. 接下来问了我之前做过的一个项目。

3. Coding题。面经题,给一个array,判断是不是BST的preorder traversal。这道题比较熟了,很快做完,还剩一些时间,所以有了下一题。

4. Design题。设计一个计分系统,功能是能记录每个人在一个比赛中的得分,需要完成三个函数addScore(),printScoreList(), printLeaderBoard().
addScore()就是给某人加1分。
printScoreList()就是要能打印出每个人的名字和得分,比如:
person1 3
person2 2
person3 5
这时我说可以用HashMap,面试官说打印出的结果要能按照字母序排序,我说那用TreeMap,面试官说ok并继续。
printLeaderBoard()就是要能按照分数高低打印,分数高的在前面:
person3 5
person1 3
person2 2
面试官问我能不能还用TreeMap并把score当做key,我说不能,因为score可能会重复。
然后我说每次可以基于上面的score list来计算leader board,面试官说可以,但是要是printLeaderBoard()调用次数比printScoreList()多很多怎么办,我说那就每次printScoreList()时都计算一下leaderBoard并cache下来,面试官说ok。
然后问我,addScore()和printScoreList()同时调用会出现什么情况,我说会有race condition,可以加锁解决,然后叫我写了一下java加锁的代码,写了个synchronized block,结束。
  • 3
5条回复