一亩三分地论坛

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

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

Snapchat全职跪经

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

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

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

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

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

Snapchat的技术面不只是白板编程,而且要能编译能自己写test。开始前我和面试官说了一下我打算用C++写,他说好的,他来帮我设置一下测试的语言环境,然后就开始了。. From 1point 3acres bbs
. from: 1point3acres.com/bbs
题目叫做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
f3 end  128
需要输出每个程序占CPU的时间段,比如上面例子对应的输出:. Waral 鍗氬鏈夋洿澶氭枃绔,
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 | 显示全部楼层
贴个2 pass的解法吧(the second pass is merge) 有1 pass的吗?

  1. import java.util.*;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

  2. class Interval {
  3.     public int left;
  4.     public int right;

  5.     public Interval(int l, int r) {. visit 1point3acres.com for more.
  6.         this.left = l;
  7.         this.right = r;. 1point3acres.com/bbs
  8.     }
  9. }

  10. public class Solution {
  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"});. Waral 鍗氬鏈夋洿澶氭枃绔,
  16.         input.add(new String[]{"f2", "end", "8"});
  17.         input.add(new String[]{"f1", "end", "16"});
    . visit 1point3acres.com for more.
  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 + " : ");. more info on 1point3acres.com
  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();. from: 1point3acres.com/bbs
  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])));. 鍥磋鎴戜滑@1point 3 acres
  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.             prev = current;
  49.         }

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

  53.         return result;
  54.     }

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

  69.         List<Interval> ret = new ArrayList();
  70.         while (!stack.isEmpty()) {
  71.             ret.add(stack.pop());
  72.         }
  73. . from: 1point3acres.com/bbs
  74.         return ret;
  75.     }
  76. }
复制代码
回复 支持 1 反对 0

使用道具 举报

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

使用道具 举报

 楼主| 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
发邮件给hr啊 解释一下 大不了求他再给一次店面机会

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

使用道具 举报

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

使用道具 举报

 楼主| 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
先解释呀 到时候讲就比较弱了

解释了一下他们又加了一轮电面,再次感谢提醒~
回复 支持 反对

使用道具 举报

 楼主| 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. more info on 1point3acres.com
f1输出为啥不是[1,16],[2,32]啊
-google 1point3acres
单线程计算机,打断式工作,具体来说应该是
f1(1) : 1 - 2
f1(2) : 2 - 4
f2     : 4 - 8
f1(2) : 8 - 16
f1(1) : 16 - 32

合并下来输出就是
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. From 1point 3acres bbs
f1(2) : 2 - 4
f2     : 4 - 8
f1(2) : 8 - 16
f1(1) : 16 - 32

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

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-3 23:57

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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