一亩三分地论坛

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

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

Facebook 电面面经

[复制链接] |试试Instant~ |关注本帖
wenchoiy 发表于 2016-6-17 05:01:06 | 显示全部楼层 |阅读模式

2016(4-6月) 码农类 博士 全职@Facebook - 猎头 - 技术电面 |Fail其他

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

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

x
Facebook 电面面经

上个月被猎头找,稍微准备了一下就店面了
. Waral 鍗氬鏈夋洿澶氭枃绔,
第一轮,国人面试官, 人很Nice
1. LC Move Zeros, 一开始写了两个loop, 面试官提醒可以一个Loop搞定,然后写了只用一个Loop的版本
2. LC search in rotated array, 写了两个binary search的版本,面试官提醒可以一个binary search搞定,然后没时间改了


第二轮,老外面试官,给一个String, 如AABACCDCD, 插入'_'使同一个字母间隔为k: 如果k=3: A___AB__AC___CD__CD, 一开始理解有误,认为是要先shuffle字母顺序然后插入'_',花了不少时间,然后面试官提示字母顺序不变,写出来,然后直接run出来有bug,在coderpad上调了一会才通过。。。


已跪


补充内容 (2016-6-18 00:46):
第二题补充 间隔至少为k

评分

1

查看全部评分

chen6145 发表于 2016-6-29 14:01:12 | 显示全部楼层
第二轮我觉得可以用一个长度为k的window,从左往右扫,同时用一个hashmap里保存window里有的字母的下标。因为window里所有字母都只能出现一次,所以每次往右移window的时候1.删除window最左边的元素2.检查右边新入元素有没有在hashmap里出现,如果有的话就在新入元素左边补足下划线使他们距离等于K.
回复 支持 1 反对 0

使用道具 举报

francisliu 发表于 2016-6-17 05:52:09 | 显示全部楼层
多谢分享,第二题直接一个hash记录每个字母上一次出现的位置?
回复 支持 反对

使用道具 举报

LearnerChao 发表于 2016-6-17 06:22:04 | 显示全部楼层
求有时间时候细说说啊
回复 支持 反对

使用道具 举报

blackrose 发表于 2016-6-17 10:51:06 | 显示全部楼层
第二轮 应该是 at least K 把。
回复 支持 反对

使用道具 举报

sansi 发表于 2016-7-17 07:02:46 | 显示全部楼层
Three temp variables should be enough. Don't need hashmap. I changed '_' to '#' for the purpose of easy check by eye. Sorry, no Chinese input.
  1. public String insert(String str) {
  2.                 if (str == null || str.length() <= 1) {
  3.                         return str;
  4.                 }
  5.                
  6.                 char ch1 = ' ';
  7.                 char ch2 = ' ';. from: 1point3acres.com/bbs
  8.                 char ch3 = ' ';
  9.                 String res = "";
  10.                 for (int i = 0; i < str.length(); i++) {
  11.                         if (i == 0) {
  12.                                 res += str.charAt(i);
  13.                                 ch3 = str.charAt(i);
  14.                         } else {
  15.                                 char ch = str.charAt(i);
  16.                                 if (ch == ch3) {
  17.                                         res += "###";
  18.                                         ch1 = '#';
  19.                                         ch2 = '#';. from: 1point3acres.com/bbs
  20.                                 } else if (ch == ch2) {
  21.                                         res += "##";
  22.                                         ch1 = '#';
  23.                                         ch2 = '#';. visit 1point3acres.com for more.
  24.                                 } else if (ch == ch1) {
  25.                                         res += "#";
  26.                                         ch1 = ch3;
  27.                                         ch2 = '#';
    . visit 1point3acres.com for more.
  28.                                 } else {
  29.                                         ch1 = ch2;
  30.                                         ch2 = ch3;
  31.                                 }
  32.                                 ch3 = ch;
  33.                                 res += ch;
  34.                         }
  35.                 }. From 1point 3acres bbs
  36.                
  37.                 return res;
  38.         }
复制代码
回复 支持 反对

使用道具 举报

Yoyo00 发表于 2016-7-22 14:17:42 | 显示全部楼层
class Solution {
  public static int getNext(String str, int index) {
    char ch = str.charAt(index);
    int next = -1;
    for(int i=index+1; i<str.length(); i++) {.1point3acres缃
      if(str.charAt(i) == ch)
        return i;
    }
    return next;
  }
  public static void main(String[] args) {
    String str = "AABACCDCD";. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
//     A___AB__AC___CD__CD
    StringBuilder sb = new StringBuilder();
    for(int i=0; i<str.length();i++) {
      int next = getNext(str, i);
      if(next - i > 3) {
        sb.append(str.charAt(i));
      }
      else {
        sb.append(str.charAt(i));
        if(next-i == 1) {.1point3acres缃
          sb.append("___");
        } else if(next-i == 2) {
          sb.append("__");
        } else if(next-i == 3)
          sb.append("_");
      }. visit 1point3acres.com for more.
    }
    System.out.println(sb.toString());
//     A___A__BAC___C__D__CD
  }
}. 1point3acres.com/bbs
回复 支持 反对

使用道具 举报

997562971@qq.co 发表于 2016-7-31 05:27:08 | 显示全部楼层
sansi 发表于 2016-7-17 07:02
Three temp variables should be enough. Don't need hashmap. I changed '_' to '#' for the purpose of e ...

感觉这样是距离为3啊。。如果是距离为k,还是要弄个HashMap方便。。
回复 支持 反对

使用道具 举报

xnature 发表于 2016-8-10 02:27:36 | 显示全部楼层
blackrose 发表于 2016-6-17 10:51
第二轮 应该是 at least K 把。

我也觉得至少为k,要么保证case肯定所有的字幕都可以被间隔为k

比如ABBA,k=2,这种情况不可能
回复 支持 反对

使用道具 举报

cicean 发表于 2016-9-7 14:24:49 | 显示全部楼层
感觉第二题想Task schedule 的字母 char[] 版本
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-11 12:17

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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