當了一年的 Facebook Rotational Software Engineer 心得分享

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 2551|回复: 8
收起左侧

snapchat电面

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

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

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

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

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

import java.io.*;
import java.util.*;
. from: 1point3acres
/*-google 1point3acres
* To execute Java, please define "static void main" on a class
* named Solution.
*. 1point3acres
* If you need more classes, simply define them inline.
*/. 围观我们@1point 3 acres

class Solution {. Waral 博客有更多文章,
  public static void main(String[] args) {
    ArrayList<String> strings = new ArrayList<String>();
    strings.add("abbabc");
    strings.add("");
    strings.add("1234");
    strings.add("1243");

    for (String string : strings) {
      System.out.println(string + " is encoded as " + encode(string));
    }
  }

  /**
   "abbabc"

   a - 2
   b - 3
   c - 1 -google 1point3acres

   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) { 来源一亩.三分地论坛.
    if (input == null) {
      return "";
    } 来源一亩.三分地论坛.

    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);
      }
      else {
        statistics.put(cur, statistics.get(cur)+1);. 1point 3acres 论坛
      }
    }

    List<Node> list = new ArrayList<>();
    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;
      }. From 1point 3acres bbs
    });
. more info on 1point3acres
    HashMap<Character, String> encodeDict = new HashMap<>();.1point3acres网
    String code = "1";
    for (Node node: list) {
      encodeDict.put(node.cha, code);. 围观我们@1point 3 acres
      code = "0" + code;
    }
. 1point3acres
    //O(n^2)

    StringBuilder res = new StringBuilder();
    for (int pos = 0; pos < input.length(); pos++) {
      res.append(encodeDict.get(input.charAt(pos)));
    }

    return res.toString();.本文原创自1point3acres论坛
. From 1point 3acres bbs
  }
} 来源一亩.三分地论坛.


然后讨论了下代码风格,复杂度,排序稳定性等等。约好的1个小时只用了45分钟。。求过
. visit 1point3acres for more.

补充内容 (2015-9-29 10:07):. 牛人云集,一亩三分地
说我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).. From 1point 3acres bbs
回复 支持 反对

使用道具 举报

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还据太傲娇了
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

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

用stringbuffer
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

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

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

custom counter

GMT+8, 2018-5-21 03:56

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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