一亩三分地论坛

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

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

Google new grad phone Interview

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

2015(7-9月) 码农类 硕士 全职@Google - 内推 - 在线笔试 |Otherfresh grad应届毕业生

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

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

x
下午4点半接到的电话,是一个老印,口音不算太重。
算法题(?)一道,给一个
public interface Table {
  // Set the cell at (x, y) to value.
  public void set(int x, int y, int value);

  // Compute the sum of values from (0, 0) to (x, y), inclusive.
  public int sum(int x, int y);
}
让我实现set 和sum。
给定了size,但要求dynamic fixed size.
我选了2d array. from: 1point3acres.com/bbs
[size=13.3333330154419px]实现了set, sum
[size=13.3333330154419px]要分析time complexity.
[size=13.3333330154419px]set O(1)
[size=13.3333330154419px]sum O(n^2)
[size=13.3333330154419px]问能不能优化
[size=13.3333330154419px]又建了一个表计算每一行0 到当前位置的值, 将sum变成了O(n)
[size=13.3333330154419px]又问如果是set不常用sum很常用能否优化
[size=13.3333330154419px]干脆将第二个表换成计算0,0 到当前位置的和,这样sum变成O(1) set变成O(n^2)
[size=13.3333330154419px]然后又问那第一个array还要么?想了一下不用了,可以用data[x][y] + data[x-1][y-1] - data[x-1][y] - data[x][y-1]计算原始值,然后计算差值并叠加即可。
[size=13.3333330154419px]最后又让分析了下时间复杂度,
[size=13.3333330154419px]set O(n^2)
[size=13.3333330154419px]sum O(1)

[size=13.3333330154419px]在google doc上有代码,权限不够不能发。
[size=13.3333330154419px]docs.google.com/document/d/(删掉这里)15jpoZB6UodYRGyrVvLM2Zc37ZBTZZtrdkGQytQ_vf0Q
(删掉这里)[size=13.3333330154419px]/edit[size=13.3333330154419px]为自己攒人品


. Waral 鍗氬鏈夋洿澶氭枃绔,

补充内容 (2015-7-15 05:28):
链接发错了,这个才是。请手动粘贴 docs.google.com/a/stevens.edu/document/d/(删掉这里)15jpoZB6UodYRGyrVvLM2Zc37ZBTZZtrdkGQytQ_vf0Q(删掉这里)/edit?usp=sharing

评分

2

查看全部评分

 楼主| andysim3d 发表于 2015-7-15 10:01:35 | 显示全部楼层
刚发现我的google doc权限设得是只有同校可见,现在已经开放评论权限~
回复 支持 反对

使用道具 举报

 楼主| andysim3d 发表于 2015-7-15 10:18:16 | 显示全部楼层
sorry, 这个url是可以访问的: https://docs.google.com/document/d/(删掉这里)15jpoZB6UodYRGyrVvLM2Zc37ZBTZZtrdkGQytQ_vf0Q(删掉这里)/edit?usp=sharing
回复 支持 反对

使用道具 举报

 楼主| andysim3d 发表于 2015-7-15 10:19:24 | 显示全部楼层
sorry, 这个url可以访问并评论: docs.google.com/document/d/(删掉这里)15jpoZB6UodYRGyrVvLM2Zc37ZBTZZtrdkGQytQ_vf0Q/edit
回复 支持 反对

使用道具 举报

umd2011 发表于 2015-7-15 11:01:39 | 显示全部楼层
祝你好运~~~
弱弱的问一下,电面都是怎么进行的? 1个手拿电话,一个手敲键盘写代码(和面试官共享一个页面)?
回复 支持 反对

使用道具 举报

 楼主| andysim3d 发表于 2015-7-15 12:30:27 | 显示全部楼层
umd2011 发表于 2015-7-15 11:01
祝你好运~~~
弱弱的问一下,电面都是怎么进行的? 1个手拿电话,一个手敲键盘写代码(和面试官共享一个页 ...
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
恩,戴耳机啊。
回复 支持 反对

使用道具 举报

zhuli19901106 发表于 2015-7-15 21:17:52 | 显示全部楼层
二维树状数组,我还以为这种不会出现在电面里呢。。. from: 1point3acres.com/bbs

补充内容 (2015-7-15 21:21):
. From 1point 3acres bbs要在电面中成功写出二维的,感觉很难。。。面试官有要求更优化的解吗?
回复 支持 反对

使用道具 举报

 楼主| andysim3d 发表于 2015-7-15 21:26:02 | 显示全部楼层
zhuli19901106 发表于 2015-7-15 21:17
二维树状数组,我还以为这种不会出现在电面里呢。。
-google 1point3acres
补充内容 (2015-7-15 21:21):

mum,还好,我答的还蛮顺。期间有几个地方下标弄混了面试官还提示我来着。
就我目前的算法程度,面试做的话应该没有更优化解了吧。
回复 支持 反对

使用道具 举报

zhuli19901106 发表于 2015-7-15 22:25:35 | 显示全部楼层
andysim3d 发表于 2015-7-15 21:26. visit 1point3acres.com for more.
mum,还好,我答的还蛮顺。期间有几个地方下标弄混了面试官还提示我来着。
就我目前的算法程度,面试做 ...

用二位树状数组的话,求和与修改都可以到logN,请问这个面试官有要求吗?
回复 支持 反对

使用道具 举报

 楼主| andysim3d 发表于 2015-7-15 22:47:18 | 显示全部楼层
zhuli19901106 发表于 2015-7-15 22:25. from: 1point3acres.com/bbs
用二位树状数组的话,求和与修改都可以到logN,请问这个面试官有要求吗?

哦,面试官有强调set不怎么用而sum用的很频繁,所以我考虑了之后选择set O(n^2) sum O(1)的解法。
回复 支持 反对

使用道具 举报

zhuli19901106 发表于 2015-7-15 22:51:21 | 显示全部楼层
andysim3d 发表于 2015-7-15 22:47
哦,面试官有强调set不怎么用而sum用的很频繁,所以我考虑了之后选择set O(n^2) sum O(1)的解法。
. From 1point 3acres bbs
哦,那就简单多了。祝楼主好运,不过建议你把二维树状数组搞懂哦,onsite面这种难度很正常的。
回复 支持 反对

使用道具 举报

RiverZ 发表于 2015-7-15 23:12:40 | 显示全部楼层
楼主你好, 请问 sum 是指算行列式的值吗?
回复 支持 反对

使用道具 举报

 楼主| andysim3d 发表于 2015-7-15 23:57:11 | 显示全部楼层
RiverZ 发表于 2015-7-15 23:12
楼主你好, 请问 sum 是指算行列式的值吗?

计算从 0,0 到x,y所有值的和
回复 支持 反对

使用道具 举报

say543 发表于 2015-7-17 06:33:52 | 显示全部楼层
弱弱的问一下 二维树状数组 怎么进行logN的?
回复 支持 反对

使用道具 举报

zhuli19901106 发表于 2015-7-17 15:00:38 | 显示全部楼层
say543 发表于 2015-7-17 06:33
弱弱的问一下 二维树状数组 怎么进行logN的?

抱歉,当时没说仔细,单次操作应该是log N * log M
这儿有个topcoder的资料:https://www.topcoder.com/communi ... nary-indexed-trees/
回复 支持 反对

使用道具 举报

readman 发表于 2015-7-18 00:56:26 | 显示全部楼层
zhuli19901106 发表于 2015-7-17 15:00
抱歉,当时没说仔细,单次操作应该是log N * log M
这儿有个topcoder的资料:https://www.topcoder.com/ ...

.鏈枃鍘熷垱鑷1point3acres璁哄潧树状数组不会的, 用线段树啊....
某大神不说过么...树状数组能干的, 线段树都能
回复 支持 反对

使用道具 举报

 楼主| andysim3d 发表于 2015-7-18 01:34:33 | 显示全部楼层
zhuli19901106 发表于 2015-7-15 22:51
哦,那就简单多了。祝楼主好运,不过建议你把二维树状数组搞懂哦,onsite面这种难度很正常的。

多谢啦,我已经看完了树状数组的算法了。
回复 支持 反对

使用道具 举报

zhuli19901106 发表于 2015-7-18 01:54:17 | 显示全部楼层
readman 发表于 2015-7-18 00:56
树状数组不会的, 用线段树啊....
某大神不说过么...树状数组能干的, 线段树都能

但这两者编码难度还是有差别的。。线段树明显复杂了些
回复 支持 反对

使用道具 举报

readman 发表于 2015-7-18 03:12:30 | 显示全部楼层
zhuli19901106 发表于 2015-7-18 01:54
但这两者编码难度还是有差别的。。线段树明显复杂了些

public static void add(int[][] t, int r, int c, int value) {
                for (int i = r; i < t.length; i |= i + 1).1point3acres缃
                        for (int j = c; j < t[0].length; j |= j + 1)
                                t[j] += value;
        }

        public static int sum(int[][] t, int r, int c) {
                int res = 0;
                for (int i = r; i >= 0; i = (i & (i + 1)) - 1)
                        for (int j = c; j >= 0; j = (j & (j + 1)) - 1)
                                res += t[j];. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                return res;
        }

        public static int sum(int[][] t, int r1, int c1, int r2, int c2) {
                return sum(t, r2, c2) - sum(t, r1 - 1, c2) - sum(t, r2, c1 - 1) + sum(t, r1 - 1, c1 - 1);
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷        }

        public static int get(int[][] t, int r, int c) {
                return sum(t, r, c, r, c);
        }. 鍥磋鎴戜滑@1point 3 acres

        public static void set(int[][] t, int r, int c, int value) {
                add(t, r, c, -get(t, r, c) + value);
        }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

        public static void main(String[] args) {
                int[][] t = new int[4][4];
                add(t, 0, 0, 1);
                add(t, 0, 1, 1);
                add(t, 1, 0, 1);
                add(t, 1, 1, 1);

                System.out.println(4 == sum(t, 0, 0, 3, 3));// 1+1+1+1 + 0000...
        }. From 1point 3acres bbs

补充内容 (2015-7-18 03:12):
- - 好难在电面写...
回复 支持 反对

使用道具 举报

zhuli19901106 发表于 2015-7-18 03:58:25 | 显示全部楼层
readman 发表于 2015-7-18 03:12. more info on 1point3acres.com
public static void add(int[][] t, int r, int c, int value) {
                for (int i = r; i < t.length; i |= ...

嗯,如果思路很熟的话,代码简洁就是一大优势了。面试时代码一长就容易紧张,然后就容易出bug~
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-10 16:48

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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