【通知】7月22,工业界资深数据科学家教你破解各大公司面试!


一亩三分地论坛

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

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

[实习] Facebook Intern 面经

[复制链接] |试试Instant~ |关注本帖
invinsibility 发表于 2016-2-10 03:28:42 | 显示全部楼层 |阅读模式

2016(1-3月)-[]EE博士+<3个月短暂实习/全职 - 内推| 码农类实习@Facebookfresh grad应届毕业生

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

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

x
刚刚面完facebook intern 第一轮。 题目的是cvs formatting coding and decoding. coding: 给List<String>, 变成cvs形式。例如:
1. ['ab', 'cd', 'ef'] => ab,cd,ef
2. ['a,b', 'cd'] => "a,b",cd
3. ['a"b', 'cd'] => "a""b",cd

数组里面有逗号或者双引号都要在最外面加双引号做特殊处理。没做过这个题,感觉写得磕磕碰碰的。来地理发面经攒人品,希望大家祝福我进入第二面~~

. 1point 3acres 璁哄潧

补充内容 (2016-2-12 10:09):
csv是用逗号区别一个一个string的。这里有两种特殊情况:
(1)当string里面本身就含有逗号的时候,这时候变成csv格式时需要在这个string外面加双引号。e.g. [‘ab,cd’, 'cat', 'w'] -> "ab,cd",cat,w
.1point3acres缃
补充内容 (2016-2-12 10:11):
(2)当string里面含有双引号的时候,先把这个双引号变成两个双引号,再在外面加上双引号(天啦,这也太变态了吧!!)。e.g. ['ab"cd', 'cat', 'w'] -> "ab""cd",cat,w

评分

5

查看全部评分

本帖被以下淘专辑推荐:

woshixuyoudan 发表于 2016-2-19 10:32:22 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
感觉好奇怪的题目。。
祝lz好运!
回复 支持 1 反对 0

使用道具 举报

kamia 发表于 2016-2-10 03:51:30 | 显示全部楼层
关注一亩三分地微博:
Warald
给你加一点大米并祝福!
回复 支持 反对

使用道具 举报

iwofr 发表于 2016-2-18 14:44:58 | 显示全部楼层
试着写了一下csv的那个,确实挺麻烦的。。。
  1. string encode(string str) {. 1point 3acres 璁哄潧
  2.   string ret;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  3.   bool special = false;
  4.   for (char c: str) {
  5.     if (c == ',') {
  6.       special = true;
  7.       ret += c;
  8.     } else if (c == '"') {
  9.       special = true;
  10.       ret += "\"\"";
  11.     } else {
  12.       ret += c;
  13.     }
  14.   }
  15.   if (special) {. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  16.     ret = "\"" + ret + "\"";
  17.   }
  18.   return ret;
  19. }.1point3acres缃
  20. . From 1point 3acres bbs
  21. string csvEncode(vector<string> &strs) {
  22.   ostringstream oss;
  23.   for (auto str: strs) {
  24.     oss << encode(str);
  25.     oss << ",";
  26.   }
  27.   string ret = oss.str();
  28.   ret.pop_back();-google 1point3acres
  29.   return ret;
  30. }. From 1point 3acres bbs

  31. vector<string> csvDecode(string str) {
  32.   vector<string> ret;
  33.   int curr = 0;
  34.   while (curr < str.size()) {
  35.     ostringstream oss;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  36.     if (str[curr] == '"') {
  37.       curr++; // skip over starting "                                                                   .鐣欏璁哄潧-涓浜-涓夊垎鍦
  38.       while (curr < str.size()) {
  39.         if (str[curr] == '"') {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  40.           if (curr+1 < str.size() && str[curr+1] == '"') {. from: 1point3acres.com/bbs
  41.             oss << '"';. visit 1point3acres.com for more.
  42.             curr++;
  43.           } else { // end quote                                                                        
  44.             ret.push_back(oss.str());
  45.             curr++;
  46.             break;
  47.           }
  48.         } else {
  49.           oss << str[curr];
  50.         }
  51.         curr++;
  52.       }
  53.       curr++; // skip ,                                                                                 
  54.     } else {
  55.       while (curr < str.size() && str[curr] != ',') {
  56.         oss << str[curr++];
  57.       }
  58.       curr++;
  59.       ret.push_back(oss.str());
  60.     }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  61.   }. more info on 1point3acres.com
  62.   return ret;
  63. }

  64. void testCSVCoding() {
  65.   vector<string> strs{"1991", "Fo\"rd", "E350", "Super\",\" luxurious"};
  66.   string encodestr = csvEncode(strs);-google 1point3acres
  67.   vector<string> destrs = csvDecode(encodestr);
  68.   assert(strs == destrs);
  69. }
复制代码
回复 支持 反对

使用道具 举报

yanggao1119 发表于 2016-2-24 13:44:56 | 显示全部楼层
还好吧,用stringbuilder不难的。

  public String listToCVS(List<String> input) {
    if (input == null) {
      return "";
    }
    StringBuilder result = new StringBuilder();
    for (int i = 0; i < input.size(); i++) {.鏈枃鍘熷垱鑷1point3acres璁哄潧
      String word = input.get(i);
      StringBuilder temp = new StringBuilder();
      boolean needsQuoteWrapper = false;
      for (char c : word.toCharArray()) {
        if (c == '"' || c == ',') {
          needsQuoteWrapper = true;
        }
        temp.append(c);
        if (c == '"') {. Waral 鍗氬鏈夋洿澶氭枃绔,
          temp.append(c);-google 1point3acres
        }
      }
      if (needsQuoteWrapper) {
        result.append('"');
        result.append(temp);
        result.append('"');-google 1point3acres
      } else {
        result.append(temp);
      }
      if (i < input.size() - 1) {
        result.append(',');
      }
    }
    return result.toString();
  }
回复 支持 反对

使用道具 举报

 楼主| invinsibility 发表于 2016-2-25 00:20:15 | 显示全部楼层
yanggao1119 发表于 2016-2-24 13:44
还好吧,用stringbuilder不难的。

. 鍥磋鎴戜滑@1point 3 acres  public String listToCVS(List input) {

你再写个CSVtoList()试试看看。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-7-23 03:04

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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