May 2009 - May 2017 论坛八周年-你的足迹,我的骄傲


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 5551|回复: 27
收起左侧

Snapchat全职跪经

[复制链接] |试试Instant~ |关注本帖
tong-1324 发表于 2016-8-12 12:49:04 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类 硕士 全职@Snapchat - 内推 - 技术电面 |Otherfresh grad应届毕业生

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
Snapchat的效率非常高,第一天同学帮忙投的内推,第二天就约我当周电面,内推免去了OA,杀了我一个措手不及。实习的project正进入最忙的时候,所以也还没有太多时间准备,硬着头皮就上了。.1point3acres缃
面试排在下午,一个小时时间,是个国人小哥,人很Nice。上来先自我介绍了一下,说到现在在某公司实习,面试官对我所在的这个组已经我做的项目都很感兴趣,问得非常具体。这里提一下,我暑假实习里用的主要写的语言是C#,我和面试官对这个语言做了一些讨论,聊得还挺欢,但是这为后面一个悲剧的事情留下了伏笔。然后他又在简历里挑了一个感兴趣的项目,也问的比较具体。最后问了一下为什么想加入Snapchat。没有具体看时间,但是我觉得这里大概就聊了20分钟到半个小时左右了。然后开始技术面。

Snapchat的技术面不只是白板编程,而且要能编译能自己写test。开始前我和面试官说了一下我打算用C++写,他说好的,他来帮我设置一下测试的语言环境,然后就开始了。

题目叫做function log parsing,我不太确定有没有leetcode原题,我是没有见过。大概意思是,有一个log file是一个单线程计算机产生的,记录了这个计算机里每个程序的起始和终止时间。这个log file里每行包括三个信息:程序名字,start/end,timestamp。比如这样一个例子:
f1 start 1. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
f1 start 2
f2 start 4
f2 end  8
f1 end  16
f1 end  32
f3 start 64. 鍥磋鎴戜滑@1point 3 acres
f3 end  128 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
需要输出每个程序占CPU的时间段,比如上面例子对应的输出:
f1: [1,4] [8,32]
f2: [4,8]
f3: [64,128]
我是用一个栈来做的,主要是每一个end来的时候需要判断几种情况,边写边和面试官解释他也觉得没有太多问题。最后他说那你写一个能跑的测试吧,于是又花了一些时间写测试,然后编译准备跑。然而死活编译不通过,报了很多我从来没有见过的错误。我想着可能是我自己太久没有写C++了,一下有点慌乱,想慢慢fix,但是怎么都fix不好。面试官似乎对C++也不算特别熟,他想帮帮我但是也没有解决问题。总之最后都没有编译过,时间就到了。面试官让我问了两个问题,就结束了。最后我还说了一下,不好意思,可能最近太久没有写C++了,他安慰了一下我说没事你也基本都写对了,就结束了。

然而故事的高潮在结束之后才出现,他下线之后我又对着代码看了好一会,还是没发现问题。最后打算放弃关掉页面,这时候在页面右上角默默看到了一个,当前语言设置:C#。 心中一万头草泥马奔腾而过...........

总的来说,虽然语言是面试官一开始帮我设的,但主要原因还是自己太傻比了,回头想想其实很明显,有的不可能报错的地方也报错了,而且报的错误都很诡异,线索已经很明显了,主要是当时时间本来就剩的不多,自己有点慌乱,没注意检查。最后发现的时候也没法跟面试官说了,觉得比较遗憾。


补充内容 (2016-8-16 04:42):
======================8.15 update==========================
上周发完帖子之后大家提醒我可以给HR发邮件说说情况,我就发了一个简单说明了一下,刚刚收到HR的邮件,给我再加了一轮电面

评分

3

查看全部评分

pingfanzhilu 发表于 2016-8-31 10:43:49 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
贴个2 pass的解法吧(the second pass is merge) 有1 pass的吗?.鐣欏璁哄潧-涓浜-涓夊垎鍦

  1. import java.util.*;

  2. class Interval {
  3.     public int left;. more info on 1point3acres.com
  4.     public int right;. From 1point 3acres bbs

  5.     public Interval(int l, int r) {
  6.         this.left = l;
  7.         this.right = r;
  8.     }
  9. }
    . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

  10. public class Solution {-google 1point3acres
  11.     public static void main(String[] args) {
  12.         List<String[]> input = new ArrayList();
  13.         input.add(new String[]{"f1", "start", "1"});
  14.         input.add(new String[]{"f1", "start", "2"});
  15.         input.add(new String[]{"f2", "start", "4"});. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  16.         input.add(new String[]{"f2", "end", "8"});
  17.         input.add(new String[]{"f1", "end", "16"});
  18.         input.add(new String[]{"f1", "end", "32"});
  19.         input.add(new String[]{"f3", "start", "64"});
  20.         input.add(new String[]{"f3", "end", "128"});

  21.         Solution sol = new Solution();
  22.         Map<String, List<Interval>> result = sol.solve(input);
  23.         for (String k : result.keySet()) {
  24.             System.out.print(k + " : ");
  25.             for (Interval itv : result.get(k)) {
  26.                 System.out.print("[" + itv.left + ", " + itv.right + "]");
  27.             }
  28.             System.out.println();
  29.         }
  30.     }

  31.     public Map<String, List<Interval>> solve(List<String[]> input) {
  32.         Map<String, List<Interval>> result = new HashMap();
  33.         String[] prev = null;
  34.         for (String[] current : input) {
  35.             if (current[1].equals("start")) {
  36.                 if (prev != null && prev[1].equals("start")) {
  37.                     if (!result.containsKey(prev[0])) {
  38.                         result.put(prev[0], new ArrayList<>());
  39.                     }

  40.                     result.get(prev[0]).add(new Interval(Integer.valueOf(prev[2]), Integer.valueOf(current[2])));
  41.                 }
  42.             } else { // end
  43.                 if (!result.containsKey(prev[0])) {
  44.                     result.put(current[0], new ArrayList<>());
  45.                 }

  46.                 result.get(current[0]).add(new Interval(Integer.valueOf(prev[2]), Integer.valueOf(current[2])));
  47.             } 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

  48. . 鍥磋鎴戜滑@1point 3 acres
  49.             prev = current;
  50.         }

  51.         for (String key : result.keySet()) {
  52.             result.put(key, merge(result.get(key)));
  53.         }

  54.         return result;
  55.     }

  56.     private List<Interval> merge(List<Interval> list) {
  57.         Stack<Interval> stack = new Stack();
  58.         for (Interval itv : list) {
  59.             if (stack.isEmpty()) {
  60.                 stack.push(itv);-google 1point3acres
  61.             } else {
  62.                 if (stack.peek().right < itv.left) {. From 1point 3acres bbs
  63.                     stack.push(itv);
  64.                 } else {
  65.                     Interval top = stack.pop();
  66.                     stack.push(new Interval(Math.min(top.left, itv.left), Math.max(top.right, itv.right)));
  67.                 }
  68.             }
  69.         }

  70.         List<Interval> ret = new ArrayList();. From 1point 3acres bbs
  71.         while (!stack.isEmpty()) {
  72.             ret.add(stack.pop());
  73.         }

  74.         return ret;
  75.     }
  76. }
复制代码
回复 支持 1 反对 0

使用道具 举报

wtcupup 发表于 2016-8-12 16:29:43 | 显示全部楼层
关注一亩三分地微博:
Warald
谢谢楼主分享,能贴个当时写的代码看看嘛?
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-12 23:59:37 | 显示全部楼层
wtcupup 发表于 2016-8-12 16:29
谢谢楼主分享,能贴个当时写的代码看看嘛?

页面关掉了没有存下来哦
回复 支持 反对

使用道具 举报

芥末青豆 发表于 2016-8-13 01:53:33 | 显示全部楼层
so any feedback?
回复 支持 反对

使用道具 举报

cx00001 发表于 2016-8-13 02:03:58 | 显示全部楼层
发邮件给hr啊 解释一下 大不了求他再给一次店面机会
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-13 03:41:33 | 显示全部楼层

暂时还没有
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-13 03:42:12 | 显示全部楼层
cx00001 发表于 2016-8-13 02:03.1point3acres缃
发邮件给hr啊 解释一下 大不了求他再给一次店面机会

恩恩,要是被拒了的话准备argue一下,但是不抱太大希望:(
回复 支持 反对

使用道具 举报

cx00001 发表于 2016-8-13 04:47:25 | 显示全部楼层
先解释呀 到时候讲就比较弱了
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-13 04:50:42 | 显示全部楼层
cx00001 发表于 2016-8-13 04:47
先解释呀 到时候讲就比较弱了

有道理!我赶紧去说一下,谢谢提醒~
回复 支持 反对

使用道具 举报

sadfcbasy 发表于 2016-8-14 22:59:10 | 显示全部楼层
求问snapchat现在就开始了吗?因为刚问了内推的说还没开始。。
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-15 09:26:32 | 显示全部楼层
sadfcbasy 发表于 2016-8-14 22:59
求问snapchat现在就开始了吗?因为刚问了内推的说还没开始。。

你面的是全职还是实习?全职肯定开始了,我好几个朋友都开始面了已经,实习的话我就不太清楚了。
回复 支持 反对

使用道具 举报

小逻辑 发表于 2016-8-15 23:42:17 | 显示全部楼层
楼主当时怎么判断的,偶觉得iterate的时候遇到跟上一个function不一样的,或者function一样是end的话,就可以标记区间了呀?? 为啥要用stack呢
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-16 04:38:55 | 显示全部楼层
小逻辑 发表于 2016-8-15 23:42
楼主当时怎么判断的,偶觉得iterate的时候遇到跟上一个function不一样的,或者function一样是end的话,就可 ...

大概就是这样,不过比如你说的跟上一个function不一样的,标记完区间以后,上一个function和这个function的信息都还是要保存下来做后面的判断,这个过程其实就是和stack类似了?
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-16 04:39:30 | 显示全部楼层
cx00001 发表于 2016-8-13 04:47
先解释呀 到时候讲就比较弱了

. 鍥磋鎴戜滑@1point 3 acres解释了一下他们又加了一轮电面,再次感谢提醒~
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-16 04:40:12 | 显示全部楼层

最后结果是加一轮电面
回复 支持 反对

使用道具 举报

cx00001 发表于 2016-8-17 02:30:48 | 显示全部楼层
tong-1324 发表于 2016-8-16 04:39
解释了一下他们又加了一轮电面,再次感谢提醒~

不客气呀 加油:)
回复 支持 反对

使用道具 举报

sevenwonder 发表于 2016-8-31 09:26:27 | 显示全部楼层
f1输出为啥不是[1,16],[2,32]啊
回复 支持 反对

使用道具 举报

bbmbill 发表于 2016-8-31 10:03:39 | 显示全部楼层
同问楼主,例子中的结果是如何得到的, 感觉看不出f1 : [1, 4], [8, 32]啊
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-31 10:36:37 | 显示全部楼层
sevenwonder 发表于 2016-8-31 09:26
f1输出为啥不是[1,16],[2,32]啊

单线程计算机,打断式工作,具体来说应该是. From 1point 3acres bbs
f1(1) : 1 - 2. 鍥磋鎴戜滑@1point 3 acres
f1(2) : 2 - 4
f2     : 4 - 8. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
f1(2) : 8 - 16
f1(1) : 16 - 32
. more info on 1point3acres.com
合并下来输出就是
f1: [1,4] [8,32]
f2: [4,8]
回复 支持 反对

使用道具 举报

 楼主| tong-1324 发表于 2016-8-31 10:36:51 | 显示全部楼层
bbmbill 发表于 2016-8-31 10:03
同问楼主,例子中的结果是如何得到的, 感觉看不出f1 : [1, 4], [8, 32]啊

单线程计算机,打断式工作,具体来说应该是
f1(1) : 1 - 2 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
f1(2) : 2 - 4
f2     : 4 - 8
f1(2) : 8 - 16. 鍥磋鎴戜滑@1point 3 acres
f1(1) : 16 - 32

合并下来输出就是
f1: [1,4] [8,32]
f2: [4,8]
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-5-24 21:51

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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