一亩三分地论坛

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

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

报个facebook intern offer一枚

[复制链接] |试试Instant~ |关注本帖
honeyBear142857 发表于 2016-4-4 02:23:38 | 显示全部楼层 |阅读模式

2016(4-6月) 码农类 博士 实习@Facebook - 网上海投 - 技术电面 |Passfresh grad应届毕业生

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

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

x
上周五拿到的facebook发来的offer,下面把面试经验总结一下:. from: 1point3acres.com/bbs
第一面:. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
时间:2016.2.26
第一题是sort 3 colors变形,就是给一堆tasks,有一个API getPriority可以获得每一个task ID的优先级(low, medium, high),
要求对所有task进行排序,使得low tasks在最左边,medium的在中间,high的在最右边。
第二题是 print a linked list reversely,递归和非递归两个版本都要写出来。

两道题都要写test cases. 鍥磋鎴戜滑@1point 3 acres

第二面:
时间:2016.3.4
第一题是 divide two integers,没有corner case的要求,即不用考虑最大整数和最小整数的情况。
第二题是 implement read(char* buf, int n) 用已知的read4K函数。这道题由于没做过leetcode原题,写的时候出现了bug,
虽然后面知道怎么写了,但是时间已到。这轮的面试官给了个follow,所以才有了第三面的加面。. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

第三面:
时间:2016.3.25. 1point3acres.com/bbs
第一道题是找出离origin最近的k个points,每一个point都是坐标形式 (x, y)。 由于我是用C++编程,中间被问到了建立最大的. visit 1point3acres.com for more.
operator overloading的问题。
第二道题是 add binary digits,写的时候也出现了bug,交流之后迅速改了过来。 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

Note:技术店面个人认为交流是最重要的,当然题目写出来是前提。

team match了一周,这周二team match interview,面试的问题是个system design,之前也有帖子说machine learning相关的组
都会问到system design。个人觉得选组很重要,因为涉及到return offer以及是否对相关projects真的感兴趣。. 1point 3acres 璁哄潧

楼主当时选组的时候也是一头雾水,大家如果有team match相关的问题留言给我哈。


评分

3

查看全部评分

wtcupup 发表于 2016-4-4 05:39:44 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
那道sort color变形 , 有没有规定能不能用 std:: swap ?
回复 支持 反对

使用道具 举报

 楼主| honeyBear142857 发表于 2016-4-4 05:43:11 | 显示全部楼层
关注一亩三分地微博:
Warald
wtcupup 发表于 2016-4-4 05:39
那道sort color变形 , 有没有规定能不能用 std:: swap ?
. 鍥磋鎴戜滑@1point 3 acres
可以用swap,但是要尽量减少swap的次数
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-4-15 13:31:14 | 显示全部楼层
第一面,第一题
  1. public class Solution {-google 1point3acres
  2.   int getPriority(int id) {. from: 1point3acres.com/bbs
  3.     return id % 3;
  4.   }
  5. . 1point 3acres 璁哄潧
  6.   public void sort(int[] arr) {-google 1point3acres
  7.     int l_w = 0; // writer
  8.     int m_w = 0;
  9.     for (int r = 0; r < arr.length; r++) { // reader
  10.       int p = getPriority(arr[r]);
  11.       if (p == 0) { // low. 1point 3acres 璁哄潧
  12.         int tmp = arr[r];
  13.         arr[r] = arr[m_w];
  14.         arr[m_w] = arr[l_w];. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  15.         arr[l_w] = tmp;
    . Waral 鍗氬鏈夋洿澶氭枃绔,
  16.         l_w++;
  17.         m_w++;
  18.       } else if (p == 1) { // medium
  19.         int tmp = arr[r];
  20.         arr[r] = arr[m_w];
  21.         arr[m_w] = tmp;
  22.         m_w++;. From 1point 3acres bbs
  23.       } else if (p == 2) { // high
  24.         // nop
  25.       }
  26.     }
  27.   }

  28.   public static void main(String[] args) {
  29.     Solution s = new Solution();
  30.     List<Integer> list = IntStream.range(0, 100).boxed().collect(Collectors.toList());
  31.     Collections.shuffle(list);
  32.     int[] arr = list.stream().mapToInt(x -> x).toArray();
  33.     System.out.println(Arrays.toString(Arrays.stream(arr).map(x -> s.getPriority(x)).toArray()));
  34.     s.sort(arr);
  35.     System.out.println(Arrays.toString(Arrays.stream(arr).map(x -> s.getPriority(x)).toArray()));.1point3acres缃
  36.   }. Waral 鍗氬鏈夋洿澶氭枃绔,
  37. }
复制代码
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-4-15 13:39:50 | 显示全部楼层
第一面,第二题 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  1. public class Solution {
  2.   ListNode reverse(ListNode head) {. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  3.     ListNode myhead = new ListNode(-1);
  4.     while (head != null) {.鏈枃鍘熷垱鑷1point3acres璁哄潧
  5.       ListNode ln = head;
  6.       head = head.next;. 1point3acres.com/bbs

  7.       ln.next = myhead.next;
  8.       myhead.next = ln;
  9.     }
  10.     return myhead.next;
  11.   }
  12. . 鍥磋鎴戜滑@1point 3 acres
  13.   public void printALinkedListReversely1(ListNode head) {. 1point3acres.com/bbs
  14.     if (head != null) {-google 1point3acres
  15.       ListNode ln = reverse(head);
  16.       for (ListNode p = ln; p != null; p = p.next) {
  17.         System.out.println(p.val);
  18.       }
  19.       reverse(ln);
  20.     }
  21.   }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  22. 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  23.   public void printALinkedListReversely2(ListNode head) {
  24.     if (head != null) {.鐣欏璁哄潧-涓浜-涓夊垎鍦
  25.       printALinkedListReversely2(head.next);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  26.       System.out.println(head.val);
  27.     }
  28.   }

  29.   public static void main(String[] args) {
  30.     Solution s = new Solution();
  31.     ListNode ln1 = new ListNode(1);. From 1point 3acres bbs
  32.     ListNode ln2 = new ListNode(2);
  33.     ListNode ln3 = new ListNode(3);
  34.     ListNode ln4 = new ListNode(4);
  35.     ListNode ln5 = new ListNode(5);. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  36.     ln1.next = ln2;
    . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  37.     ln2.next = ln3;
  38.     ln3.next = ln4;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  39.     ln4.next = ln5;
  40.     s.printALinkedListReversely1(ln1);. more info on 1point3acres.com
  41.     System.out.println();.1point3acres缃
  42.     s.printALinkedListReversely2(ln1);. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  43.   }
  44. }
复制代码
求职神器indeed - 在全球最大的求职网站找找适合你的工作?
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-4-15 14:21:52 | 显示全部楼层
第三面,第一题
  1. public class Solution {
  2.   public List<Point> kn1(List<Point> pts, int k) {
  3.     Queue<Point> maxheap =
  4.         new PriorityQueue<>((p1, p2) -> (p2.x * p2.x + p2.y * p2.y) - (p1.x * p1.x + p1.y * p1.y));
  5.     for (Point p : pts) { // nlgk
  6.       maxheap.offer(p);
  7.       if (maxheap.size() > k) {
  8.         maxheap.poll();
  9.       }. 1point3acres.com/bbs
  10.     }. 鍥磋鎴戜滑@1point 3 acres
  11.     return maxheap.stream().collect(Collectors.toList());-google 1point3acres
  12.   }

  13.   public List<Point> kn2(List<Point> pts, int k) {
  14.     Queue<Point> minheap =
  15.         new PriorityQueue<>((p1, p2) -> (p1.x * p1.x + p1.y * p1.y) - (p2.x * p2.x + p2.y * p2.y));
  16.     minheap.addAll(pts);
  17.     List<Point> ret = new ArrayList<>();.鐣欏璁哄潧-涓浜-涓夊垎鍦
  18.     for (int i = 0; i < k; i++) { // klgn
  19.       ret.add(minheap.poll());
  20.     }
  21.     return ret;
  22.   }

  23.   int comp(Point pt1, Point pt2) {.鏈枃鍘熷垱鑷1point3acres璁哄潧
  24.     return pt1.x * pt1.x + pt1.y * pt1.y - pt2.x * pt2.x - pt2.y * pt2.y;
  25.   }
  26. . 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  27.   int qs(List<Point> arr, int low, int high) {
  28.     Point p = arr.get(high); // high -> p
  29.     while (low < high) {
  30.       while (low < high && comp(arr.get(low), p) <= 0) { // <=
  31.         low++;. 鍥磋鎴戜滑@1point 3 acres
  32.       }
  33.       arr.set(high, arr.get(low)); // low -> high
  34.       while (low < high && comp(p, arr.get(high)) <= 0) { // <=
  35.         high--;
  36.       }
  37.       arr.set(low, arr.get(high)); // high -> low.1point3acres缃
  38.     }. more info on 1point3acres.com
  39.     arr.set(high, p); // p -> high
  40.     return high;
  41.   }

  42.   public List<Point> kn3(List<Point> pts, int k) {
  43.     int low = 0;
  44.     int high = pts.size() - 1;
  45.     while (low < high) {. from: 1point3acres.com/bbs
  46.       int mid = qs(pts, low, high);
  47.       if (mid < k) {
  48.         low = mid + 1;
  49.       } else if (k < mid) {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  50.         high = mid - 1;
  51.       } else { // k == mid. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  52.         return pts.subList(0, k);. visit 1point3acres.com for more.
  53.       }
  54.     }
  55.     return pts.subList(0, k); // low < high. visit 1point3acres.com for more.
  56.   }

  57.   public static void main(String[] args) {. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  58.     Solution s = new Solution();
  59.     List<Point> pts = new ArrayList<>();
  60.     pts.add(new Point(0, 1));. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  61.     pts.add(new Point(1, 1));
  62.     pts.add(new Point(2, 2));
  63.     pts.add(new Point(0, 2));
  64.     pts.add(new Point(1, 1));. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  65.     System.out.println(s.kn1(pts, 3));
  66.     System.out.println(s.kn2(pts, 3));
  67.     System.out.println(s.kn3(pts, 3));
  68.   }
  69. }
复制代码
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-4-15 14:30:47 | 显示全部楼层
sealove999 发表于 2016-4-15 14:21
. From 1point 3acres bbs第三面,第一题
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
改了一下
  1. public class Solution {
  2.   public List<Point> kn1(List<Point> pts, int k) {
  3.     Queue<Point> maxheap =
  4.         new PriorityQueue<>((p1, p2) -> (p2.x * p2.x + p2.y * p2.y) - (p1.x * p1.x + p1.y * p1.y));
  5.     for (Point p : pts) { // nlgk. 1point3acres.com/bbs
  6.       maxheap.offer(p);
  7.       if (maxheap.size() > k) {
  8.         maxheap.poll();
  9.       }
  10.     }. more info on 1point3acres.com
  11.     return maxheap.stream().collect(Collectors.toList());
  12.   }

  13.   public List<Point> kn2(List<Point> pts, int k) {. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  14.     Queue<Point> minheap =
  15.         new PriorityQueue<>((p1, p2) -> (p1.x * p1.x + p1.y * p1.y) - (p2.x * p2.x + p2.y * p2.y));
  16.     minheap.addAll(pts);
  17.     List<Point> ret = new ArrayList<>();
  18.     for (int i = 0; i < k; i++) { // klgn
  19.       ret.add(minheap.poll());
  20.     }.鐣欏璁哄潧-涓浜-涓夊垎鍦
  21.     return ret;
  22.   }

  23.   int comp(Point pt1, Point pt2) {
    . 鍥磋鎴戜滑@1point 3 acres
  24.     return pt1.x * pt1.x + pt1.y * pt1.y - pt2.x * pt2.x - pt2.y * pt2.y;
  25.   }
  26. . visit 1point3acres.com for more.
  27.   int qs(List<Point> arr, int low, int high) {. 1point3acres.com/bbs
  28.     Point p = arr.get(high); // high -> p
  29.     while (low < high) {
  30.       while (low < high && comp(arr.get(low), p) <= 0) { // <=. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  31.         low++;
  32.       }
  33.       arr.set(high, arr.get(low)); // low -> high
  34.       while (low < high && comp(p, arr.get(high)) <= 0) { // <=. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  35.         high--;
  36.       }
  37.       arr.set(low, arr.get(high)); // high -> low. 鍥磋鎴戜滑@1point 3 acres
  38.     }
  39.     arr.set(high, p); // p -> high
  40.     return high;
  41.   }

  42.   public List<Point> kn3(List<Point> pts, int k) {. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  43.     int low = 0;-google 1point3acres
  44.     int high = pts.size() - 1;
  45.     while (low < high) {
  46.       int mid = qs(pts, low, high);
  47.       if (mid < k) {
  48.         low = mid + 1;
  49.       } else if (k < mid) {
  50.         high = mid - 1;
  51.       } else { // k == mid
  52.         return pts.subList(0, k);
  53.       }
  54.     }. 1point 3acres 璁哄潧
  55.     return pts.subList(0, k); // low < high
  56.   }

  57.   void recursion(List<Point> pts, int k, int start, int end) {
  58.     int mid = qs(pts, start, end);. From 1point 3acres bbs
  59.     if (mid < k) {.1point3acres缃
  60.       recursion(pts, k, mid + 1, end);. 鍥磋鎴戜滑@1point 3 acres
  61.     } else if (k < mid) {
  62.       recursion(pts, k, start, mid - 1);
  63.     }
  64.   }

  65.   public List<Point> kn3_(List<Point> pts, int k) {
  66.     recursion(pts, k, 0, pts.size() - 1);
  67.     return pts.subList(0, k);
  68.   }

  69.   public static void main(String[] args) {
  70.     Solution s = new Solution();. from: 1point3acres.com/bbs
  71.     List<Point> pts = new ArrayList<>();
  72.     pts.add(new Point(0, 1));
  73.     pts.add(new Point(1, 1));
  74.     pts.add(new Point(2, 2));
  75.     pts.add(new Point(0, 2));
  76.     pts.add(new Point(1, 1));.鐣欏璁哄潧-涓浜-涓夊垎鍦
  77.     Collections.shuffle(pts);
  78.     System.out.println(s.kn1(pts, 3));
  79.     Collections.shuffle(pts);
  80.     System.out.println(s.kn2(pts, 3));
  81.     Collections.shuffle(pts);
  82.     System.out.println(s.kn3(pts, 3));. more info on 1point3acres.com
  83.     Collections.shuffle(pts);
  84.     System.out.println(s.kn3_(pts, 3));. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  85.   }
  86. }
复制代码
回复 支持 反对

使用道具 举报

carthus 发表于 2016-4-15 14:33:47 | 显示全部楼层
fb的summer intern面到这么晚啊
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-4-15 14:34:49 | 显示全部楼层
求问system design是啥题目?
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-4-15 14:41:27 | 显示全部楼层
第三问,第二题
  1. public class Solution {
  2.   public String addBinaryDigits(String s1, String s2) {
  3.     StringBuilder sb = new StringBuilder();
  4.     int i = 1;
  5.     int carry = 0;
  6.     while (s1.length() - i >= 0 && s2.length() - i >= 0) {
  7.       int b1 = s1.charAt(s1.length() - i) - '0';
    .鏈枃鍘熷垱鑷1point3acres璁哄潧
  8.       int b2 = s2.charAt(s2.length() - i) - '0';
  9.       int sum = b1 + b2 + carry;
  10.       sb.insert(0, sum % 2);. from: 1point3acres.com/bbs
  11.       carry = sum / 2;
  12.       i++;
  13.     }
  14.     while (s1.length() - i >= 0) {
  15.       int b1 = s1.charAt(s1.length() - i) - '0';
  16.       int sum = b1 + carry;
  17.       sb.insert(0, sum % 2);
  18.       carry = sum / 2;
  19.       i++;
  20.     }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  21.     while (s2.length() - i >= 0) {. 鍥磋鎴戜滑@1point 3 acres
  22.       int b2 = s2.charAt(s2.length() - i) - '0';
  23.       int sum = b2 + carry;
  24.       sb.insert(0, sum % 2);
  25.       carry = sum / 2;. From 1point 3acres bbs
  26.       i++;
  27.     }
  28.     if (carry > 0) {
  29.       sb.insert(0, carry);
  30.     }
  31.     return sb.toString();. From 1point 3acres bbs
  32.   }
  33. . 1point 3acres 璁哄潧
  34.   public static void main(String[] args) {
  35.     Solution s = new Solution();
  36.     System.out.println(s.addBinaryDigits("1010111000011100110", "1111001000000110000100"));
  37.   }
  38. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| honeyBear142857 发表于 2016-4-16 06:38:09 | 显示全部楼层
carthus 发表于 2016-4-15 14:33
fb的summer intern面到这么晚啊

我面的是PhD intern,master intern应该早就面完啦!听说PhD intern现在还有人在面试
回复 支持 反对

使用道具 举报

 楼主| honeyBear142857 发表于 2016-4-16 06:38:57 | 显示全部楼层
sealove999 发表于 2016-4-15 14:34
求问system design是啥题目?

做一个用户推荐系统,recommender system
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-4-16 13:17:33 | 显示全部楼层
honeyBear142857 发表于 2016-4-16 06:38
做一个用户推荐系统,recommender system

求教楼主how to做
根据什么推荐呢。,。是图里面的连接还是发表的帖子的内容近似度还是其他神马
回复 支持 反对

使用道具 举报

 楼主| honeyBear142857 发表于 2016-4-19 07:23:27 | 显示全部楼层
sealove999 发表于 2016-4-16 13:17
求教楼主how to做
根据什么推荐呢。,。是图里面的连接还是发表的帖子的内容近似度还是其他神马

给facebook用户推荐 video
回复 支持 反对

使用道具 举报

xiaohui5319 发表于 2016-4-20 04:20:18 | 显示全部楼层
请问楼主team match面完后等了多久来的offer?
回复 支持 反对

使用道具 举报

 楼主| honeyBear142857 发表于 2016-4-20 10:02:35 | 显示全部楼层
xiaohui5319 发表于 2016-4-20 04:20
请问楼主team match面完后等了多久来的offer?

我当时等了两天哈
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2017-2-24 19:07

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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