一亩三分地论坛

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

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

Google MTV 电面+Onsite

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

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

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

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

x
电面:
1.      一个Dictionary,一个String,把String中去掉0或者任意多个character,得到一个字典中存在的String,求这样最长的String。
2.      给一个String,只包含d和i, d表示数值下降,i表示升高。从1到9之间选择一串数字,每个数字只用一次,找到一个符合String pattern的序列。String长度不超过8,肯定能找到一个valid序列。
比如:iii -> 1234
           ididid -> 1835294

电面后等了很久才给的Onsite,原来是电面面试官出去玩了。。。

Onsite
1.      类似MS Paint,一个matrix,格子中有不同颜色,给一个点,把周围所有连续且颜色相同的都换成新颜色。
类似System design。有非常多的书,计算出每个单词出现次数。资源包括很大的场地,无数的笔和纸,很多学生可供调配,怎么最优化单词的统计过程。
2.      要encode String以节省空间,有一个固定的decoder,会把3xe 这样的字符串decode成eee,也就是数字乘以(乘号用字母x表示的)字符decode成相应个数的字符。
decoder不能变,写一个encoder,要保证decode会得到原来的字符串。
需要考虑的例子:
                  abc2ddddefg, abc5xefg, abc55555xefg
3.      (1) 设计Stack,以及如何快速得到Stack中当前最小值。
(2) 一个Binary Tree,每个Node都有value,在树中切掉一个edge,变成两个树,找出哪里切导致两个数的Value总和差值最小。
4.      一个N-ary树,要给每个树的node都赋1-10的值,要求有edge相连的两个node数值不同,求所有node总和最大的赋值。
总体感觉都不难,碰到的几个面试官都非常nice,明天会出结果,希望能过!大家加油!
解法:
电面:
1.      用的BFS,逐渐去掉character,用Queue保存,在字典中查找,找到便返回。
2.      Greedy方法,把1-9存到array中,逐渐处理String。碰到i不管,碰到d就继续查找,看有几个d,然后把array中相应的数字逆序,就好了。
当时这题没给出这个解法,讨论了另一个算法,面试官说也许可以,他也不清楚,但是已经没时间写code了,最后我说不行就把1-9所有permutation都写出来,一个一个看是不是符合,反正也没多少。最后让过了,感谢面试官!
Onsite:
1.      用DFS就好。
就说了一些scalability的方法,讨论trade off。
2.      解决方法是对于单个数字也encode,如果5变成1x5,上面的例子就不会出产生歧义,缺陷是可能会导致encode后更长。。。
abc2ddddefg 变成 abc1x24xdefg
abc5xefg 变成 abc1x5xefg
abc55555xefg 变成 abc5x5xefg
3.      (1) 就是LeetCodeminStack。
(2) 每个Node都求子树Value总和,然后遍历所有Node,尝试切断左树和右树,求差值,记录最小值。
4.  BFS+DP,用HashMap保存每个node每个parentNode取值固定时候的可能最大值,然后遍历。

评分

1

查看全部评分

本帖被以下淘专辑推荐:

 楼主| oopghi 发表于 2015-10-16 11:12:36 | 显示全部楼层
blactangeri 发表于 2015-10-16 08:55-google 1point3acres
另外N-ary tree的解法能不能详细说下。谢谢

直接上代码吧,这样比较清楚!没有测试,可能有小bug,但是思路就是DFS + DP
  1. class TreeNode {
  2.     int val;
  3.     List<TreeNode> children;
  4.     public TreeNode() {
  5.         val = 0;
  6.         children = new ArrayList<TreeNode>();
  7.     }
  8. }

  9. class Wapper {.鐣欏璁哄潧-涓浜-涓夊垎鍦
  10.     TreeNode node;
  11.     int parentVal;.1point3acres缃
  12.     public Wapper(TreeNode node, int parentVal) {
  13.         this.node = node;
  14.         this.parentVal = parentVal;
  15.     } 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  16.     @Override
    . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  17.     public boolean equals(Wapper an) {
  18.     return this.node == an.node && this.parentVal == an.parentVal;
  19.     }. from: 1point3acres.com/bbs
  20. }

  21. public int maxVal(TreeNode root) {
  22.     if(root == null) return 0;
  23.     HashMap<Wapper, Integer> map = new HashMap<Wapper, Integer>();
  24.     return maxValRec(root, -1, map);
  25. }

  26. public int maxValRec(TreeNode node, int parentVal, HashMap<Wapper, Integer> map) {. more info on 1point3acres.com
  27.     if(node == null) return 0;
  28.     Wapper wa = new Wapper(node, parentVal);
  29.     if(map.containsKey(wa)) return map.get(wa);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

  30.     int bestVal = 0;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  31.     int max = 0;
  32.     for(int i=1; i<=10; i++) {
  33.         if(i == parentVal) continue;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  34.         int sum = i;
  35.         for(TreeNode child : node.children)
  36.             sum += maxValRec(child, i, map);. from: 1point3acres.com/bbs
  37.         if(sum > max) {
  38.         max = sum;
  39.         bestVal = i;
  40.         } 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  41.     }
  42.     node.val = bestVal;
  43.     map.put(wa, max);
  44.     return max;
  45. }
复制代码

评分

1

查看全部评分

回复 支持 2 反对 0

使用道具 举报

 楼主| oopghi 发表于 2015-10-16 02:03:22 | 显示全部楼层
nothingtrouble 发表于 2015-10-15 23:34
lz好厉害,应该offer到手了!~~问个问题,第四轮. N-ary tree, 为什么greedy的方法不可以?比如root给10,所有ch ...

想了半天才想到了反例,nothingtrouble这个解法不一定能得到最优解,比如这个树:
这是按照nothingtrouble给出的最佳解,总和为96:. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
                   9
                   |. 1point 3acres 璁哄潧
                  10
                 / |  \
               9  9   9
                     / / | \ \
                   1010101010

这是另一种赋值方法(不一定是最佳,没跑代码。。。),总和为97:. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                  10
                   |
                   8
                 / |  \. visit 1point3acres.com for more.
             10  10   9. Waral 鍗氬鏈夋洿澶氭枃绔,
                     / / | \ \
                   1010101010

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

宝贝忆彼岸 发表于 2015-10-15 22:55:48 | 显示全部楼层
谢分享,LZ为啥会有两个店面连个oniste?
回复 支持 反对

使用道具 举报

 楼主| oopghi 发表于 2015-10-15 22:58:12 | 显示全部楼层
宝贝忆彼岸 发表于 2015-10-15 22:55
谢分享,LZ为啥会有两个店面连个oniste?

是电面面了两道题哈~
回复 支持 反对

使用道具 举报

 楼主| oopghi 发表于 2015-10-15 22:59:43 | 显示全部楼层
宝贝忆彼岸 发表于 2015-10-15 22:55
谢分享,LZ为啥会有两个店面连个oniste?

明白你在问什么了。。。前面的是题,后面的是我当时的解法
回复 支持 反对

使用道具 举报

nothingtrouble 发表于 2015-10-15 23:34:24 | 显示全部楼层
lz好厉害,应该offer到手了!~~问个问题,第四轮. N-ary tree, 为什么greedy的方法不可以?比如root给10,所有children给9,然后children的children又给10? 每一层取与之前一层不一样的. 只有两种情况 1: root为9,所以是9,10,9,10.. 轮流取; 2: root取10, 10,9,10,9.. 轮流取.
回复 支持 反对

使用道具 举报

宝贝忆彼岸 发表于 2015-10-15 23:55:35 | 显示全部楼层
oopghi 发表于 2015-10-15 22:59
明白你在问什么了。。。前面的是题,后面的是我当时的解法
. 1point 3acres 璁哄潧
嗯嗯,看到了。。。。我真是SB了,刚起来脑子还晕着呢。。。。
回复 支持 反对

使用道具 举报

danchou 发表于 2015-10-16 00:25:44 | 显示全部楼层
多谢分享!感觉楼主offer要来的样子~~
回复 支持 反对

使用道具 举报

cc11328 发表于 2015-10-16 05:13:17 | 显示全部楼层
字典那道题,可以回溯做(字典大),也可以用leetcode里面计算两个string距离的方法,一次比较字典里和当前字符串的距离,找最小的(字典非常大)
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_set>
  4. using namespace std;
  5. string res;. 1point 3acres 璁哄潧
  6. void backTracking(string temp, unordered_set<string> &dict) {. more info on 1point3acres.com
  7.     if(dict.find(temp) != dict.end()) {
  8.         if(temp.size() > res.size())
  9.         res = temp;
  10.         return;. 1point3acres.com/bbs
  11.     }
  12.     int n = temp.size();
  13.     for(int i = 0; i < n; i++){
  14.         string s = temp;
  15.         temp.erase(i,1);
  16.         backTracking(temp,dict);.鐣欏璁哄潧-涓浜-涓夊垎鍦
  17.         temp = s;
  18.     }
  19. }
  20. string findLongestString(string target,unordered_set<string> &dict) {
  21.     backTracking(target,dict);
  22.     return res;
  23. }
复制代码
回复 支持 反对

使用道具 举报

nothingtrouble 发表于 2015-10-16 07:49:17 | 显示全部楼层
oopghi 发表于 2015-10-16 02:03
想了半天才想到了反例,nothingtrouble这个解法不一定能得到最优解,比如这个树:. visit 1point3acres.com for more.
这是按照nothingtroub ...
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
确实是这样,谢谢lz指正.
回复 支持 反对

使用道具 举报

blactangeri 发表于 2015-10-16 08:49:51 | 显示全部楼层
请问lz
(2) 一个Binary Tree,每个Node都有value,在树中切掉一个edge,变成两个树,找出哪里切导致两个数的Value总和差值最小。

这个题你的解法是遍历每个节点,求(根节点的值 - 切断的节点的值)和(切断的节点的值)的差值的min吗
回复 支持 反对

使用道具 举报

blactangeri 发表于 2015-10-16 08:55:57 | 显示全部楼层
另外N-ary tree的解法能不能详细说下。谢谢
回复 支持 反对

使用道具 举报

 楼主| oopghi 发表于 2015-10-16 10:47:24 | 显示全部楼层
blactangeri 发表于 2015-10-16 08:49
请问lz
(2) 一个Binary Tree,每个Node都有value,在树中切掉一个edge,变成两个树,找出哪里切导致两个 ...
.鏈枃鍘熷垱鑷1point3acres璁哄潧
是这样的,当时没让写具体代码,只让写了写伪码~
回复 支持 反对

使用道具 举报

storm_hair 发表于 2015-10-16 11:14:15 | 显示全部楼层
所以有offer的都是第二天就联系么
回复 支持 反对

使用道具 举报

 楼主| oopghi 发表于 2015-10-16 11:16:51 | 显示全部楼层
storm_hair 发表于 2015-10-16 11:14
所以有offer的都是第二天就联系么

我是上周三面的,明天出结果,所以也等了10天左右。
回复 支持 反对

使用道具 举报

 楼主| oopghi 发表于 2015-10-17 10:29:17 | 显示全部楼层
还是被拒了,5555555555555555
回复 支持 反对

使用道具 举报

blactangeri 发表于 2015-10-17 11:05:58 | 显示全部楼层
oopghi 发表于 2015-10-17 10:29
还是被拒了,5555555555555555
. 1point 3acres 璁哄潧
lz加油。。。看来都答出来也没用啊。。
回复 支持 反对

使用道具 举报

 楼主| oopghi 发表于 2015-10-17 11:09:12 | 显示全部楼层
blactangeri 发表于 2015-10-17 11:05
lz加油。。。看来都答出来也没用啊。。
. 鍥磋鎴戜滑@1point 3 acres
然后就立刻从了Tableau了,找工作到此为止~
回复 支持 反对

使用道具 举报

nothingtrouble 发表于 2015-10-17 23:55:28 | 显示全部楼层
oopghi 发表于 2015-10-17 11:09. 鍥磋鎴戜滑@1point 3 acres
然后就立刻从了Tableau了,找工作到此为止~

T非常不错了,我一直想去,可惜bar太高,直接悲剧了。恭喜lz找到好工作!
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-10 01:20

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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