一亩三分地论坛

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

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

Google On Campus 面经

[复制链接] |试试Instant~ |关注本帖
面假空虚 发表于 2015-11-5 17:39:01 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类 硕士 全职@Google - 网上海投 - 校园招聘会 |Passfresh grad应届毕业生

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

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

x
两轮On Campus面试,每轮45分钟。
运气比较好遇上一男一女两位面试官都是中国人,人特别好,中间得到很多有用的hint和帮助,受益良多。基本都是简单说三两分钟简历之类的,介绍下自己就开始面技术问题。

第一轮主要是考binary search,第一题是问在一个排了序的array里,给一个target number,如果target在array里,返回target,否则返回最大的那个小于target的数。会让你自己写一些特殊的test case之类的。然后这题的follow up是,有一堆数据,每个数据是<key,index,value> 这样的形势,一个key下会存很多个value,每个value都有一个distinct的index值,现在希望你设计一个方案,来很好的存放这些数据,并且高效地实现一个get(key, index) 的操作, 返回的是: 如果这些数据里对应的key下有对应的index,那就返回该index对应的value;如果对应key下没有这个index,那就返回最大的那个小于index的index‘对应的value'。 一些corner case最好自己提一下。

第二轮主要是搞min heap。第一题是给了一堆字符串,找k most longest string。我先说了用size为k的minHeap做的复杂度 n(lgk) 的做法,然后面试官又问能不能用maxHeap做,我说了复杂度 n+k(lgn) 的做法。之后follow up是让自己实现一个minHeap。我知道维护minHeap的原理但是没自己写过,就先说了原理和思路,后来在他的提示下写了部分代码,时间不够了没有写完。. from: 1point3acres.com/bbs
. from: 1point3acres.com/bbs
运气蛮好的,拿到了onsite,但愿一切顺利咯~



补充内容 (2015-11-7 05:55):
感谢各位加米的盆友!!!

评分

5

查看全部评分

 楼主| 面假空虚 发表于 2015-11-7 03:49:05 | 显示全部楼层
宝贝忆彼岸 发表于 2015-11-7 00:05
了解了,那难道要用HashMap?请问LZ是什么解法?
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
对的,我也是这样弄的,这样只要调 floor() 就好了,不用自己实现二分查找。面试官也接受。
回复 支持 1 反对 0

使用道具 举报

宝贝忆彼岸 发表于 2015-11-6 08:24:15 | 显示全部楼层
请问第一题的数据结构是HashMap<key,value[]>吗?
回复 支持 反对

使用道具 举报

 楼主| 面假空虚 发表于 2015-11-6 18:46:27 | 显示全部楼层
宝贝忆彼岸 发表于 2015-11-6 08:24
请问第一题的数据结构是HashMap吗?

可能我没说清楚题目要求,你这样漏掉了index的信息。index不一定是连续的,比如说一个key ‘a’ 它对应的可能有 index 为 1, 4,15, 20 的这样四个数据。然后让你找一个get('a', 8)这样的操作。
回复 支持 反对

使用道具 举报

宝贝忆彼岸 发表于 2015-11-7 00:05:59 | 显示全部楼层
面假空虚 发表于 2015-11-6 18:46
可能我没说清楚题目要求,你这样漏掉了index的信息。index不一定是连续的,比如说一个key ‘a’ 它对应的 ...
. 鍥磋鎴戜滑@1point 3 acres
了解了,那难道要用HashMap<key,TreeMap>?请问LZ是什么解法?
回复 支持 反对

使用道具 举报

liuyue952 发表于 2015-11-7 00:34:33 | 显示全部楼层
谢谢楼主!想请教一下第二题maxheap的思路
回复 支持 反对

使用道具 举报

 楼主| 面假空虚 发表于 2015-11-7 03:52:26 | 显示全部楼层
宝贝忆彼岸 发表于 2015-11-7 00:05
了解了,那难道要用HashMap?请问LZ是什么解法?

对了我看你也去onsite了,怎么样呀
回复 支持 反对

使用道具 举报

 楼主| 面假空虚 发表于 2015-11-7 03:53:58 | 显示全部楼层
liuyue952 发表于 2015-11-7 00:34
谢谢楼主!想请教一下第二题maxheap的思路

maxHeap就是很直接地建一个大小为 n 的maxHeap,然后pop() k次得到前k个最大的。pop()部分的复杂度是k(lgn),然后建heap时候可以O(n) 建立,所以复杂度是 n + k(lgn)
回复 支持 反对

使用道具 举报

宝贝忆彼岸 发表于 2015-11-7 04:09:18 | 显示全部楼层
面假空虚 发表于 2015-11-7 03:52. 鍥磋鎴戜滑@1point 3 acres
对了我看你也去onsite了,怎么样呀

我还没去,下下周呢,我拖了好久的说。。。。捂脸。。。现在好怕没坑了
回复 支持 反对

使用道具 举报

 楼主| 面假空虚 发表于 2015-11-7 05:53:31 | 显示全部楼层
宝贝忆彼岸 发表于 2015-11-7 04:09
我还没去,下下周呢,我拖了好久的说。。。。捂脸。。。现在好怕没坑了

额,这么晚。。。我报上去的时间是下周五和下下周的,不知道他们给安排什么时候,没准还是同一天 :)
回复 支持 反对

使用道具 举报

 楼主| 面假空虚 发表于 2015-11-7 05:55:17 | 显示全部楼层
感谢各位加米的盆友!!!
回复 支持 反对

使用道具 举报

 楼主| 面假空虚 发表于 2015-11-25 08:20:52 | 显示全部楼层
宝贝忆彼岸 发表于 2015-11-7 04:09
我还没去,下下周呢,我拖了好久的说。。。。捂脸。。。现在好怕没坑了

你Google现在什么情况啦
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2015-12-3 04:16:06 | 显示全部楼层
第一轮第二题是用HashMap<key, BST>吗?, 第二轮是要用array实现minheap?
回复 支持 反对

使用道具 举报

 楼主| 面假空虚 发表于 2015-12-3 06:14:21 | 显示全部楼层
bobzhang2004 发表于 2015-12-3 04:16.鏈枃鍘熷垱鑷1point3acres璁哄潧
第一轮第二题是用HashMap吗?, 第二轮是要用array实现minheap?

1. 嗯,就是那样,然后我偷了个懒里头的BST直接用现成的TreeSet了
2. 是用array搞minheap
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2015-12-3 06:20:56 | 显示全部楼层
面假空虚 发表于 2015-12-3 06:14.1point3acres缃
1. 嗯,就是那样,然后我偷了个懒里头的BST直接用现成的TreeSet了
2. 是用array搞minheap
.鐣欏璁哄潧-涓浜-涓夊垎鍦
有点难啊,楼主厉害!

补充内容 (2015-12-3 06:27):
是Treemap吧?
回复 支持 反对

使用道具 举报

 楼主| 面假空虚 发表于 2015-12-3 08:33:21 | 显示全部楼层
bobzhang2004 发表于 2015-12-3 06:20
有点难啊,楼主厉害!

补充内容 (2015-12-3 06:27):

. more info on 1point3acres.com嗯是TreeMap,然后index做key就好了。太久没看这个随手写了个TreeSet不好意思
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2015-12-3 23:10:14 | 显示全部楼层
第一题代码,如果可以用treemap的话代码其实不长
  1. public class DataStructureKeyIndexValue {

  2.         HashMap<Integer, TreeMap<Integer, Integer>> map;
  3.         public DataStructureKeyIndexValue() {
  4.                 map = new HashMap<Integer, TreeMap<Integer, Integer>>();
  5.         }
  6.         public void put(int key, int index, int value) {
  7.                 if (map.containsKey(key)) {
    . 1point 3acres 璁哄潧
  8.                         map.get(key).put(index, value);
  9.                 }  else {
    .鐣欏璁哄潧-涓浜-涓夊垎鍦
  10.                         TreeMap<Integer, Integer> treeMap = new TreeMap<Integer, Integer>();
  11.                         treeMap.put(index, value);
  12.                         System.out.println(treeMap.containsKey(index));
  13.                         map.put(key, treeMap);
  14.                 }
  15.         }
  16.        
  17.         public int get(int key, int index) throws Exception  {
  18.                 if (map.containsKey(key) && map.get(key).containsKey(index)) {
  19.                         return map.get(key).get(index);
  20.                 } else {
  21.                         throw new Exception();
  22.                 }
  23.         }
  24.        
  25.         -google 1point3acres
  26.         public static void main(String[] args) throws Exception {
  27.                 DataStructureKeyIndexValue ds = new DataStructureKeyIndexValue();. more info on 1point3acres.com
  28.                 ds.put(1, 2, 9);
  29.                 ds.put(1, 3, 8);. Waral 鍗氬鏈夋洿澶氭枃绔,
  30.                 ds.put(2, 1, 9);. 鍥磋鎴戜滑@1point 3 acres
  31.                 System.out.println(ds.get(1, 2));
  32.                 System.out.println(ds.get(1, 3));
  33.                 System.out.println(ds.get(2, 1));
  34.         }
  35. }
复制代码
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

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

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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