一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 2935|回复: 15
收起左侧

Zenefits 9/9新鲜面经(Phone Interview + Skype Onsite)

[复制链接] |试试Instant~ |关注本帖
mgispk 发表于 2015-9-10 00:09:25 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类 本科 全职@Zenefits - 内推 - Onsite |Other在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
首先,要强调一下,楼主现在在国内,所以找湾区工作找得特别艰难。内推板块求助了很多乐于助人的小伙伴,但是可能是由于工作忙得原因,往往只有几个人回复。Zenefits地里面的小伙伴帮我内推的第一家公司(同时目前也仅此一家。。。),在此特别感谢他的帮助。
从8/18收到OA3测试开始,到今天(9/9)最后一轮onsite面试结束,整个interview过程非常平稳,而且大部分时间都是由我自己来主导和选择的,除了最后一轮onsite面试,这个后面会提到。每一次和San Francisco工程师的沟通都很顺利,而且和recruiter之间的交流也比较流畅,这可能和有些candidate的面试经历不太相同,不知道是不是他们现在有所改变。下面说一下具体的面试流程。

. from: 1point3acres.com/bbs 8/18 ~ 8/20 OA3
8/18, 地里热心的小伙伴内推了我,当天就收到了OA3的申请,感叹这效率啊,startup就是不一样。毕竟是楼主的第一次北美面试,还是感觉有些慌慌的。看到邮件上说,这个没有deadline,随时做都可以,于是楼主拖了两天,两天里刷了一下Leetcode的题目。后来想想,OA都过不了,那我后面还有啥可面的。
8/20,我开始做题目,OA3的题目基本就那几道,网上都应该可以搜到。我做的题目是String chain和八皇后改版的那一套题,两道题加起来大约花了一个小时半小时的时间。总时间有3个小时,所以时间应该很充裕。

8/20 ~ 8/28 Two Phone Interviews
8/20号做完OA3,晚上HR就发来了Phone Interview的邀请,于是让我提供一个available的时间。楼主是一个比较谨慎的人,又给自己留了点时间(嘿嘿。。。),定在8/24号。-google 1point3acres
8/24号人生第一次北美公司的Phone Interview,有些紧张。接到Skype的第一反应就是觉得完了,是小印。但后来才发现,这个小印不仅口音不中,而且还很温柔,有一种如沐春风的感觉,于是如释重负。上题:. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
Input: { 'A1' :  '=C1*(C2-C3)',  'A2' : '=A3+B3', 'A3' : '1' ... },  Output: { 'A1' : 25, 'A2' : 50, 'A3' : 1 ...}. 同时热心的小印还提供了两个可用的method: tokenize('=C1*(C2-C3)') = ['C1', 'C2', 'C3',], 和 exprEval('=C1*(C2-C3)', {'C1' : 1, 'C2' : 2, 'C3' : 3,}) = 1*(2-3) = -1。 第一个方法可以将一个表达式解析出所有的token,第二个方法则是给出一个已知value的token的map 和表达式,计算出表达式的值, 但是要求表达式中的每一个token,需要在map里存在。题目要求计算出每一个token对应的整数值。
楼主的solution:楼主觉得这个题目很眼熟,但是肯定是没有做过的,首先就直接想到了用DFS去计算出所有的token的值,这里tokenize方法十分有用,估计这也是另一种提示吧。大约20分钟code写完了,小印很快的发现了一些不足,让我想想有没有一些特殊的test case我这个算法是没办法通过的,也不知道怎么的,很快就反映出来如果A1 -> B1, B1 -> A1, 这种case会让我的算法出现stackoverflow。于是加上了一个判断。.鐣欏璁哄潧-涓浜-涓夊垎鍦
修完一些minor issue,然后时间也差不多了,小印哥也没让run code,毕竟那两个method也需要花时间去实现。总得来说,小印哥很nice,第一轮Phone Interview结束。
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
8/28 很快第二轮就来了。惊喜的是一个中国人,但是面试还是用英文的。很多地里的小伙伴都是中国人很tough,但是我遇到的这个中国人觉得是大大好人。先上题:
1) 一个刷烂的题目:Sorted Linked List, 楼主大约不到10分钟写完了
2)implement sparse matrix addittion/multiplication (大家自行wiki sparse matrix)
楼主由于刷题是很少刷到matrix的算术题,都是用matrix来做dfs之类的题目。首先就不太清楚sparse matrix的特点,其次也不太熟悉matrix的乘法,虽然知道是行*列=当前的值,但是还是手很生。楼主大约花了剩下的所有时间在上面,先是不知道这种matrix通常该用什么数据结构,然后是乘法也不太会弄。后来剩下最后10分钟,面试官给了提示,让我在5分钟内写完,我想大概是说给了你提示,5分钟搞不定,那就没救了。还好没有辜负他,等他上个厕所回来,我已经把code写完了。后来居然还剩下5分钟,于是我提议说用中文聊会吧,他还挺鼓励我的,这让我心很暖。第二轮Phone Interview结束了。

9/9 Skype Onsite 面试
因为前两轮磕磕碰碰面的也还行,于是最后拿到了Skype Onsite的面试。onsite面试总共有四轮,前三轮为Coding,最后一轮为Behavior,我想如果这次我失败的话,就是因为最后一轮的原因。我把面试的时间定在了今天(9/9),由于时差原因,我需要早上六点开始进行面试,一直要面到九点半,这正对应他们的下午3点到6点半,6点后就下班了。大家可以想象我5点睡眼惺忪的爬起来,做梦一样的刷牙洗脸然后开电脑的情景。
第一轮,还是小印哥,同样是温柔可亲,口音也是很少的。简单的问了我一些简历上的问题,然后开始coding:
1) 给一个matrix, {{'s', 'a', 't'}, {'b', 'y','e'}, {'g', 't', 'y'}, 一个字符串数组,{"say", "yet"}, 让我找出在matrix将一些相连字符串连接起来,最终能形成给的字符串数组的字符串。怎么样定义相连呢?就是matrix周围的所有字符串都是相连的(包括对角线),例如[1,1]相连的是[0,0], [0,1],[0,2],[1,0],[1,2],[2,0],[2,1],[2,2]。
Solution: 典型的DFS + TrieTree. 我第一反应就是用TrieTree也把这些words组织起来,然后再用dfs在TrieTree里面找。小印哥可能没有想到我会选用TrieTree,于是有些惊讶,估计他的solution是准备用hashmap来做了。于是他反问我,我准备实现TrieTree吗,时间够不够。楼主装逼的说给我15分钟。后来也算是在15分钟内把code写完了。小印还比较满意,后面时间还够,就又闲聊了一些zenefits的事情。-google 1point3acres
第二轮,是一个美籍或加籍的同胞。和其他面试官不同的是,他一开始问了很多技术问题,例如前端的javascript, html,然后有问了我一些java的问题。最后才开始coding。本来前面就花了不少时间,后面竟然还出了两个问题。
1)Box是一个类,然后他提供一个方法isSame(Box a, Box b) 来判断两个Box是不是相同的,题目input: 一个Box数组[Box, Box ....], 然后找出Majoriy, 也就是出现次数超过一半的Box。
Solution: 这其实就典型的Majority问题,有著名的算法,大家可以自行Google,楼主5分钟写完了 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
2)给一个matrix,R代表Robot, E代表entrance, X代表可走了路径, B代表block障碍。 然我求有几条unique的path。
[ R, B, X]. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
[ X, X, X]
[ X, X, E]
Solution: 不讲了,还是DFS, 怎么那么喜欢DFS。最花时间的是运行code,需要改一些编译错误,还是挺花时间的。建议大家多用用hackerank.
第三轮,还是一个同胞,应该是刚去美国不久的。
1)robot best merge point. 给一个matrix,1代表robot, X代表障碍,找到一个点,这个点到所有的robot的距离之和要最小(有多个robot,有可能不只2个)。
[
    0  0  0  0  0
    0  1  X  0  0
    0  X  0  0  0
    0  0  0  1  0
    0  0  0  0  0
]

Solution: Again DFS. 但是这道题有些厉害的地方是,需要从哪里开始进行DFS,DFS得到什么结果。楼主反正是在面试官的提示下找到这个重要的point。. From 1point 3acres bbs
第四轮,一个口音很重的大印哥,估计是boss。.鏈枃鍘熷垱鑷1point3acres璁哄潧
没有coding,主要是问楼主在现在公司做什么,做了那些最proud的project,平时都是怎么做的, 怎么scrum的。为什么选择zenefits等等之类的话。我们聊的十分开心,我也有些忘乎所以了,在大印哥的温水煮青蛙的询问中,我们的时间快到了,但就在剩下5分钟的时间,大印哥提出来说,我来给你出一个puzzle的题目吧,我有点错愕,说好。然后接下来,我觉得我脑子卡壳了,怎么也找不到solution。然后大印哥说,ok, I think I know enough about you。这句话让心都死了,问我还有什么问题,我木讷的说没有了。如果说整个面试中有哪些不顺利的地方,这是最大一个,而且如果我被rejected,这可能占有很重要的比例。-google 1point3acres

楼主再等1两天,看看是拒信还是offer,如果拒信,我就把题目放出来,让大家看看我当时到底是脑子卡壳成啥样才连这个问题也想不出来。



补充内容 (2015-9-16 08:28):
收到拒信了,他们自己都说bar设置的"incredibly high"。不过我表现也没有那么好,拒掉也是情有可原。

补充内容 (2015-9-16 08:49):.1point3acres缃
履行一下承诺:最后一道题我估计大家有可能见过:四个人过河,有一根蜡烛能烧15分钟,每个人分别花1,2,5,8分钟过河,每次过两个人,每次过桥必须拿着蜡烛。问,能在蜡烛烧完前所有人都可以过河嘛?

评分

4

查看全部评分

本帖被以下淘专辑推荐:

brian8759 发表于 2015-9-10 07:57:56 | 显示全部楼层
第二轮, 第二题,这个和LC上面的那个unique path一样的吧,DP应该可以吧。
第三轮,这个好像是K-MEANS 算法的第二步,adjust cluster center
回复 支持 反对

使用道具 举报

douya 发表于 2015-9-11 10:02:46 | 显示全部楼层
brian8759 发表于 2015-9-10 07:57. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
第二轮, 第二题,这个和LC上面的那个unique path一样的吧,DP应该可以吧。
第三轮,这个好像是K-MEANS 算 ...
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
K-means 难道是machine learning 里的那个k-means?
回复 支持 反对

使用道具 举报

brian8759 发表于 2015-9-12 00:16:56 | 显示全部楼层
douya 发表于 2015-9-11 10:02
K-means 难道是machine learning 里的那个k-means?

N维空间,如果用Euclidean distance,那么Centroid, 就是距离所有点最近的那个
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-9-16 07:02:35 | 显示全部楼层
so hard problems.

. 鍥磋鎴戜滑@1point 3 acresSo strong lz. how about the result? good luck, lz

how to deal with loop in token problem in that token problem of ur phone interview? I mean when we found map.get(some input) == map.get(map.get(input)) we should ignore them and go to check the next? 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

Thanks,. from: 1point3acres.com/bbs

also, very interested in the problem the last manager gave you:)
回复 支持 反对

使用道具 举报

 楼主| mgispk 发表于 2015-9-16 08:24:49 | 显示全部楼层
tiantiana 发表于 2015-9-16 07:02. from: 1point3acres.com/bbs
so hard problems.

So strong lz. how about the result? good luck, lz

用一个map保存token->value的集合,当遇到一个map里面已经有的token,我们就可以ignore当前这个token的计算了
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-9-16 11:44:52 | 显示全部楼层
很不错了,onsite到最后脑子一般都是不work了的,boss还出智力竞赛太没意思了。
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-9-16 11:48:17 | 显示全部楼层
lz 拿到很难的店面我这样做的,能帮我大致看看吗,和你的solution好像不大一样,我建立了一个图关系,用map;用了一个inDegree map表示流入的个数,然后把0的先add到queue里面做的。

public class tokenizeAndCalculation {
    public Map<String, Integer> tokenCal(Map<String, String> input) {. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
    Queue<String> q = new LinkedList<>();
    Map<String, Integer> inDegree = new HashMap<>();. From 1point 3acres bbs
    Map<String, List<String>> dict = new HashMap<>();
    Map<String, Integer> res = new HashMap<>();
    for (String curr : input.keySet()) {
        String expr = input.get(curr);
        //if (curr = input.get(expr)) continue;
        if (tokenize(expr) == null) {
            res.put(curr, Integer.parseInt(expr));
        } else {
            List<String> strList = tokenize(expr);
            inDegree.put(curr, strList.size());
            for (String str : strList) {
                List<String> dictList = dict.get(str);
                if (dictList == null) {
                      dictList = new ArrayList<>();
                      dict.put(str, dictList);
                }-google 1point3acres
                dictList.add(curr);
            }
        }
    }
    for (String curr : input.keySet()) {
        if (!inDegree.containsKey(curr)) {
            q.add(curr);
        }
    }
    while (!q.isEmpty()) {.鐣欏璁哄潧-涓浜-涓夊垎鍦
        String curr = q.poll();
        for (String str : dict.get(curr)) {
            int num = inDegree.get(str);. 1point3acres.com/bbs
            if (num == 1) {
                int currRes = cal(str, input, res);
                res.put(str, currRes);
                inDegree.remove(str);
                q.add(str);
           } else {
               inDegree.put(str, inDegree.get(str) - 1);
           }
       }
   }   
   return res;
}. From 1point 3acres bbs

public int cal(String s, Map<String, String> input, Map<String, Integer> res) {
     Map<String, Integer> tbl = new HashMap<>();
     List<String> strList = tokenize(input.get(s));
     for (String str : strList) {
. visit 1point3acres.com for more.        tbl.put(str, res.get(str));
    }
    return exprEval(s, tbl);
}
回复 支持 反对

使用道具 举报

kelvinzhong 发表于 2015-9-22 11:20:44 | 显示全部楼层
tiantiana 发表于 2015-9-16 11:48.鏈枃鍘熷垱鑷1point3acres璁哄潧
lz 拿到很难的店面我这样做的,能帮我大致看看吗,和你的solution好像不大一样,我建立了一个图关系,用map ...

我也想的是你这种方法 topological sort
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-9-22 14:46:48 | 显示全部楼层
蜡烛过河谁知道怎么回事啊?
lz每两个人过河拿一个蜡烛吗?

能再说的详细些吗?

谢谢。
回复 支持 反对

使用道具 举报

flexwang 发表于 2015-9-23 10:37:40 | 显示全部楼层
从robot为起点做bfs比较好吧
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-9-23 12:48:01 | 显示全部楼层
请问,这个题:
2)给一个matrix,R代表Robot, E代表entrance, X代表可走了路径, B代表block障碍。 然我求有几条unique的path。
[ R, B, X]
[ X, X, X]
[ X, X, E]
是只允许向下向右走吗?谢谢。
回复 支持 反对

使用道具 举报

kelvinzhong 发表于 2015-10-5 14:01:15 | 显示全部楼层
这个puzzle其实最重要的就是把最慢的两个捆绑在一起且只走一次.. 所以是 1,2 -> || 1 <- || 5,8 -> || 2 <- || 1,2 -> 刚好15mins
回复 支持 反对

使用道具 举报

字母比较低调 发表于 2015-10-5 14:19:11 | 显示全部楼层
最后一个题应该是不可能吧
回复 支持 反对

使用道具 举报

tiantiana 发表于 2015-10-5 14:24:38 | 显示全部楼层
字母比较低调 发表于 2015-10-5 14:19. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
最后一个题应该是不可能吧

能解释一下你的理解吗?我不确定我理解了lz的题。
回复 支持 反对

使用道具 举报

xytan123 发表于 2015-10-6 15:37:52 | 显示全部楼层
tiantiana 发表于 2015-10-5 14:24
能解释一下你的理解吗?我不确定我理解了lz的题。

这道题其实是选一个最小的messenger, 让他陪伴剩下的所有人过河。
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-8 22:43

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表