一亩三分地论坛

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

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

Google电面。。被完虐。。

[复制链接] |试试Instant~ |关注本帖
illumi 发表于 2016-10-21 04:24:45 | 显示全部楼层 |阅读模式

2017(10-12月) 码农类 硕士 全职@Google - 网上海投 - 技术电面 |Otherfresh grad应届毕业生

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

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

x
nyc office的一个小哥面的,完全没有套路。。只有一道题,关灯开灯的问题,给一个n*n 2d array,表示light on/off,求下一个state的状态,规则是8个neighbour里,有两个on的不变,有三个on的变成on,其他变成off。。follow up:
1. after k steps,求状态
2. n is very large
3. k is very large

要求自己选数据结构写方程,我就用的vector。。除了遍历没想出别的办法。。k很大的时候可以用hashmap纪录找pattern。。n很大的时候说了bitmap,然后又说n有million级怎么办

依稀记得开关灯的题有些数学方法可以提高效率。。然而面试的时候完全想不到了== 求大神解答





补充内容 (2016-10-21 05:02):
. more info on 1point3acres.com重点不是原题。。求各位大神解答一下follow up。。

本帖被以下淘专辑推荐:

penenda 发表于 2016-10-21 04:40:52 | 显示全部楼层
这不是game of life吗,,换成灯就不认识了?
回复 支持 2 反对 0

使用道具 举报

lll_2013 发表于 2016-10-21 04:39:20 | 显示全部楼层
楼主,感觉你面的好难。我记得之前看道c++里面有unorder_map,和map,前者可以用于小数据,后者适用于ram有限,数据太大需要跟hard disk交换情况。不确定对不对。
回复 支持 反对

使用道具 举报

lll_2013 发表于 2016-10-21 04:43:28 | 显示全部楼层
楼上的,我就是那个不认识的,看样子题还是需要刷完,谢谢了
回复 支持 反对

使用道具 举报

qq547137450 发表于 2016-10-21 04:44:43 | 显示全部楼层
leetcode里有类似的题,楼主估计没刷好题啊。
回复 支持 反对

使用道具 举报

 楼主| illumi 发表于 2016-10-21 04:45:37 | 显示全部楼层
penenda 发表于 2016-10-21 04:40
这不是game of life吗,,换成灯就不认识了?

难在follow up。。。
回复 支持 反对

使用道具 举报

湾区留下来 发表于 2016-10-21 04:52:36 | 显示全部楼层
原题确实不难 关键是followUp怎么做呢
. more info on 1point3acres.com
我能想到的也是用hash存已经算过的
.1point3acres缃
n很大能不能每次拿出一块 一块一块地算呢?
回复 支持 反对

使用道具 举报

shiloh00 发表于 2016-10-21 05:00:17 | 显示全部楼层
这是leetcode的原题
回复 支持 反对

使用道具 举报

Formatmemory 发表于 2016-10-21 05:53:16 | 显示全部楼层
n is very large可不可建一个数据结构把每个点做成Node,然后链接它的8个neighbours, 这样就可以分开存了; k很大我也觉得就是把pattern给存起来,在遇到相同的pattern的时候有个hashmap一类的东西可以来lookup
回复 支持 反对

使用道具 举报

何打发123 发表于 2016-10-21 07:04:52 | 显示全部楼层
感谢楼主! 感觉就是life game~~ 然后如果n很大的话 就存亮的点坐标就好了 不用存整个matrix~ 但是k很大的话。。怎么办 不还是得做k次吗?0.0.。。。
回复 支持 反对

使用道具 举报

tailofjune 发表于 2016-10-21 07:13:20 | 显示全部楼层
follow up答题方向感觉应该是拓展到多台机器并行计算,MPI之类的.
回复 支持 反对

使用道具 举报

huai10 发表于 2016-10-21 07:28:48 | 显示全部楼层
follow-up map-reduce, 检查boundary
回复 支持 反对

使用道具 举报

 楼主| illumi 发表于 2016-10-21 07:34:33 | 显示全部楼层
tailofjune 发表于 2016-10-21 07:13
follow up答题方向感觉应该是拓展到多台机器并行计算,MPI之类的.

说了这个,他继续问只有一台machine怎么办。。
回复 支持 反对

使用道具 举报

 楼主| illumi 发表于 2016-10-21 07:45:24 | 显示全部楼层
何打发123 发表于 2016-10-21 07:04
感谢楼主! 感觉就是life game~~ 然后如果n很大的话 就存亮的点坐标就好了 不用存整个matrix~ 但是k很大的 ...

这个也说了,但是只能针对sparse的。。
回复 支持 反对

使用道具 举报

jerryzhang 发表于 2016-10-21 07:52:29 | 显示全部楼层
我觉得Follow up的问题是要用解决稀疏矩阵点积的方法来解决。. 鍥磋鎴戜滑@1point 3 acres
我想的方法是,把所有亮灯的坐标和状态存到一个hashtable(key(坐标),value(state)),遍历matrix的时候,按坐标查找周围的灯就好了。

补充内容 (2016-10-21 07:53):
检查完当前位置的状态后要更新hashtable。
回复 支持 反对

使用道具 举报

何打发123 发表于 2016-10-21 08:01:51 | 显示全部楼层
illumi 发表于 2016-10-21 07:45
这个也说了,但是只能针对sparse的。。

说了这个面试官还不满意吗?.. 如果很满的话 下一个状态就会稀疏了啊。。0.0而且如果真的很满  不管什么数据结构都需要存这么多点啊。。
回复 支持 反对

使用道具 举报

 楼主| illumi 发表于 2016-10-21 09:37:38 | 显示全部楼层
何打发123 发表于 2016-10-21 08:01
说了这个面试官还不满意吗?.. 如果很满的话 下一个状态就会稀疏了啊。。0.0而且如果真的很满  不管什么数 ...

反正他一直强调n非常大,问我怎么才能fit into memory,我说了map reduce分割文件他也不太满意的样子,最后说的每次只读一部分,他让我把code写出来但是没时间了。。其实我也不会写从特定byte开始读的方法==
回复 支持 反对

使用道具 举报

 楼主| illumi 发表于 2016-10-21 09:38:17 | 显示全部楼层
何打发123 发表于 2016-10-21 08:01
说了这个面试官还不满意吗?.. 如果很满的话 下一个状态就会稀疏了啊。。0.0而且如果真的很满  不管什么数 ...

反正他一直强调n非常大,问我怎么才能fit into memory,我说了map reduce分割文件他也不太满意的样子,最后说的每次只读一部分,他让我把code写出来但是没时间了。。其实我也不会写从特定byte开始读的方法==
回复 支持 反对

使用道具 举报

tailofjune 发表于 2016-10-21 09:58:34 | 显示全部楼层
那可能意思是让你提出来其实不用将所有的内容都放在内存里,内存里只存三行.
回复 支持 反对

使用道具 举报

pst242 发表于 2016-10-21 10:16:58 | 显示全部楼层
雖然我覺得可能對運算複雜度沒有太大幫助,但可以利用00,01,10,11 =>0,1,2,3 這四個植來記錄上一次的狀態跟這一次的狀態,省一點memory?
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-8 12:33

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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