一亩三分地论坛

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

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

snapchat电面

[复制链接] |试试Instant~ |关注本帖
hj867955629 发表于 2015-9-26 04:49:16 | 显示全部楼层 |阅读模式

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

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

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

x
不知哪个国家的小哥,看起来人不错。发个面经求过。
问了为什么snapchat,问了project,实习经历。看我简历上提到了huffman编码,就给了一道编码题。。

import java.io.*;
import java.util.*;

/*-google 1point3acres
* To execute Java, please define "static void main" on a class
* named Solution.
*
* If you need more classes, simply define them inline.
*/

class Solution {. From 1point 3acres bbs
  public static void main(String[] args) {
    ArrayList<String> strings = new ArrayList<String>();
    strings.add("abbabc");
    strings.add("");
    strings.add("1234");
    strings.add("1243");
. From 1point 3acres bbs
    for (String string : strings) {
      System.out.println(string + " is encoded as " + encode(string));
    }
  }
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  /**
   "abbabc"
-google 1point3acres
   a - 2
   b - 3. 1point 3acres 璁哄潧
   c - 1

   b - "1"
   a - "01"
   c - "001"

   "0111011001"

   */
  static class Node{
    char cha;
    int freq;
    public Node(char cha, int freq) {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
      this.cha = cha;
      this.freq = freq;
    }
  }

  public static String encode(String input) {-google 1point3acres
    if (input == null) {
      return "";
    }. Waral 鍗氬鏈夋洿澶氭枃绔,

    HashMap<Character, Integer> statistics = new HashMap<>();
    for (int pos = 0; pos < input.length(); pos++) {
      char cur = input.charAt(pos);
      if (!statistics.containsKey(cur)) {
        statistics.put(cur, 1);. 1point3acres.com/bbs
      }
鏉ユ簮涓浜.涓夊垎鍦拌鍧.       else {
        statistics.put(cur, statistics.get(cur)+1);
      }
    }

    List<Node> list = new ArrayList<>();. 1point3acres.com/bbs
    for (Map.Entry<Character, Integer> entry : statistics.entrySet()) {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
      list.add(new Node(entry.getKey(), entry.getValue()));
    }
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
    Collections.sort(list, new Comparator<Node>(){
      public int compare(Node a, Node b) {
        return b.freq - a.freq;
      }
    });

    HashMap<Character, String> encodeDict = new HashMap<>();
    String code = "1";
    for (Node node: list) {
      encodeDict.put(node.cha, code);
      code = "0" + code;
    }

    //O(n^2)
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
    StringBuilder res = new StringBuilder();
    for (int pos = 0; pos < input.length(); pos++) {
      res.append(encodeDict.get(input.charAt(pos)));.鐣欏璁哄潧-涓浜-涓夊垎鍦
    }
.1point3acres缃
    return res.toString();

  }. 鍥磋鎴戜滑@1point 3 acres
}


然后讨论了下代码风格,复杂度,排序稳定性等等。约好的1个小时只用了45分钟。。求过. From 1point 3acres bbs
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
补充内容 (2015-9-29 10:07):. 鍥磋鎴戜滑@1point 3 acres
说我show several strengths,但是觉得不match software engineer, 不能提供具体的面试结果。唉EE真的受歧视么。。

评分

3

查看全部评分

哈哈哈大雄 发表于 2015-9-29 07:28:48 | 显示全部楼层
为什么时间复杂度是O(n^2)? 感觉是O(n)啊,假设字符集是有限的,排序是常数时间的话。
回复 支持 反对

使用道具 举报

pyemma 发表于 2015-9-29 07:58:40 | 显示全部楼层
哈弗曼编码么?
回复 支持 反对

使用道具 举报

 楼主| hj867955629 发表于 2015-9-29 09:13:29 | 显示全部楼层
pyemma 发表于 2015-9-29 07:58
哈弗曼编码么?

比huffman编码简单,按频率给编码。。
回复 支持 反对

使用道具 举报

 楼主| hj867955629 发表于 2015-9-29 09:18:04 | 显示全部楼层
哈哈哈大雄 发表于 2015-9-29 07:28
为什么时间复杂度是O(n^2)? 感觉是O(n)啊,假设字符集是有限的,排序是常数时间的话。

我感觉他就想引导我得出n^2的答案。那个给字符串编码的那段,我当时想法是,假设n个字符,k个unique,编码的时候有个字符串累加的过程,所以应该是1+……+k ~ O(k^2)。最坏情况下k~O(n),所以是O(n^2).
回复 支持 反对

使用道具 举报

xytan123 发表于 2015-10-11 05:38:51 | 显示全部楼层
hj867955629 发表于 2015-9-29 09:18
我感觉他就想引导我得出n^2的答案。那个给字符串编码的那段,我当时想法是,假设n个字符,k个unique,编 ...

编码的过程,每次累加不是O(1)么?
回复 支持 反对

使用道具 举报

 楼主| hj867955629 发表于 2015-10-11 06:07:23 | 显示全部楼层
xytan123 发表于 2015-10-11 05:38
编码的过程,每次累加不是O(1)么?

字符串相加,每次都会产生新的字符串,整个长度需要复制的
回复 支持 反对

使用道具 举报

kennethinsnow 发表于 2015-11-22 08:59:31 | 显示全部楼层
感觉把encodeDict那段抽取出来单独做一个函数更符合设计模式。除了这点lz的代码写得很漂亮,各种api用的也很熟练恰当,这样snapchat还据太傲娇了
回复 支持 反对

使用道具 举报

liurudahai 发表于 2016-11-4 22:47:22 | 显示全部楼层
hj867955629 发表于 2015-10-11 06:07
字符串相加,每次都会产生新的字符串,整个长度需要复制的

用stringbuffer
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-8 00:36

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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