一亩三分地论坛

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

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

Google onsite七月面经

[复制链接] |试试Instant~ |关注本帖
keluotete 发表于 2016-9-28 06:52:58 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类 博士 全职@Google - 猎头 - Onsite |Failfresh grad应届毕业生

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

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

x


八月份Google的onsite,一直没有机会写,现在基本尘埃落定了,有时间写一些面经,希望对大家有帮助。

一共五轮面试,四轮coding加一轮PhD。

coding 1:编码解码。比如A是1,B是2。。。Z是26,第一问是一串字母(e.g.,ABACCC),编码成数字
第二问是给定一串数字(e.g.,123121452),解码成所有可能的字符串,follow up是怎么改进performance
.1point3acres缃
coding 2:matrix sum/update,是leetcode 原题,好像是308         Range Sum Query 2D - Mutable

coding 3:给定matrix数字,找出最长的increase path
. 1point 3acres 璁哄潧
coding 4:给定一个string,写两个函数addString,delString,e.g., addString(int offset, String srcStr, String destStr),是在destStr中的offset加入新的srcStr,返回String。delString(String Str, int offset, int length)就是在Str中offset的位置删除长度为length的str,自己设计数据结构,写代码,我感觉是挂在这一面了. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
. 1point3acres.com/bbs
Ph.D:就是随便聊聊Ph.D的工作

各位大神多给些金币啊,接下来还会有Facebook,Amazon,Uber,Cisco等面经,敬请期待

评分

1

查看全部评分

本帖被以下淘专辑推荐:

hanabeast 发表于 2016-9-28 07:03:05 | 显示全部楼层
怎么改进performance  LZ怎么答的
回复 支持 反对

使用道具 举报

 楼主| keluotete 发表于 2016-9-28 07:07:38 | 显示全部楼层
hanabeast 发表于 2016-9-28 07:03
怎么改进performance  LZ怎么答的

用hashtable存已经访问的路径吧
回复 支持 反对

使用道具 举报

xiaoling99 发表于 2016-9-28 07:56:52 | 显示全部楼层
楼主好人,请问有follow up的问题吗?
回复 支持 反对

使用道具 举报

tigercode 发表于 2016-9-28 08:02:42 | 显示全部楼层
4 感觉两个操作已经都是O(1)的了,还有什么其它限制么?
回复 支持 反对

使用道具 举报

hyj143 发表于 2016-9-28 08:30:32 | 显示全部楼层
楼主再接再厉!!. Waral 鍗氬鏈夋洿澶氭枃绔,

这几道题感觉难度都不是特别变态那种, hr 是什么 feedback?
回复 支持 反对

使用道具 举报

lookbackinanger 发表于 2016-9-28 08:34:08 | 显示全部楼层
求问第二问的时间复杂度要求是啥? 都要O(lgn)么?
回复 支持 反对

使用道具 举报

cicean 发表于 2016-9-28 14:49:59 | 显示全部楼层
真的考的都特别难…他们都随笔想题,偶尔重复也是因为…懒得想别的了。
回复 支持 反对

使用道具 举报

 楼主| keluotete 发表于 2016-9-29 05:05:21 | 显示全部楼层
xiaoling99 发表于 2016-9-28 07:56. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
楼主好人,请问有follow up的问题吗?

follow up一般就是怎么改进time和space,rtadeoff之类的
回复 支持 反对

使用道具 举报

 楼主| keluotete 发表于 2016-9-29 05:07:34 | 显示全部楼层
tigercode 发表于 2016-9-28 08:02
4 感觉两个操作已经都是O(1)的了,还有什么其它限制么?

关键是设计数据结构,减少内存操作,比如一个string str是abcdefgh,然后调用del(str, 1, 2),返回adffgh,怎么不重新申请内存空间做到这点
回复 支持 反对

使用道具 举报

 楼主| keluotete 发表于 2016-9-29 05:08:47 | 显示全部楼层
lookbackinanger 发表于 2016-9-28 08:34
求问第二问的时间复杂度要求是啥? 都要O(lgn)么?
.鐣欏璁哄潧-涓浜-涓夊垎鍦
不用segment tree,考官说考查重点是程序要对
回复 支持 反对

使用道具 举报

 楼主| keluotete 发表于 2016-9-29 05:09:08 | 显示全部楼层
hyj143 发表于 2016-9-28 08:30
楼主再接再厉!!

这几道题感觉难度都不是特别变态那种, hr 是什么 feedback?

hr说欢迎六个月后再投
回复 支持 反对

使用道具 举报

lookbackinanger 发表于 2016-9-29 09:53:59 | 显示全部楼层
第四题lz怎么做的呢? 感觉很tricky啊
回复 支持 反对

使用道具 举报

virpro 发表于 2016-10-3 00:58:48 | 显示全部楼层
keluotete 发表于 2016-9-29 05:07
关键是设计数据结构,减少内存操作,比如一个string str是abcdefgh,然后调用del(str, 1, 2),返回adffgh ...

如果是用Java,String都是Immutable类型,返回的string必然占用新的内存空间啊...
回复 支持 反对

使用道具 举报

LynKang 发表于 2016-10-3 01:48:43 | 显示全部楼层
keluotete 发表于 2016-9-29 05:07
关键是设计数据结构,减少内存操作,比如一个string str是abcdefgh,然后调用del(str, 1, 2),返回adffgh ...

首先在Java里,String是immutable的。如果你要manipulate一个String,一旦产生了一点变化,你都需要生成一个新的instance。所以in-place是不可能的。
而且Java里,literal的String建立,生成的instance是存在于jvm heap里的一个constant string pool里的,而用constructor创立的instance是存在于heap里的。前者始终返回同一个instance,后者每次建立一个新的instance。可以借鉴前者。
可以想到的一个方法是:
1. manipulate的时候用StringBuffer和StringBuilder。或者自己写数据结构用char[]。
2. 自己管理一个constant String pool,每次有新的String instance需要生成的时候检查是不是存在于这个pool里了。可以想到建立一个trie tree字典,然后用char[]去匹配。如果存在直接返回那个instance。
这个方法可以保证一个字符串永远只有一个或者零个instance存在于内存里。
回复 支持 反对

使用道具 举报

virpro 发表于 2016-10-3 02:09:43 | 显示全部楼层
LynKang 发表于 2016-10-3 01:48
首先在Java里,String是immutable的。如果你要manipulate一个String,一旦产生了一点变化,你都需要生成 ...

StringBuilder的toSting调用的就是new String()所以应该是不行。按照你的思路,貌似只能用"" + char1 + char2之类的...

说实话,不知道这个题的考点是什么。
回复 支持 反对

使用道具 举报

LynKang 发表于 2016-10-3 02:30:05 | 显示全部楼层
virpro 发表于 2016-10-3 02:09
StringBuilder的toSting调用的就是new String()所以应该是不行。按照你的思路,貌似只能用"" + char1 + c ...

不不不,你误会了。你不能用toString,也不能用char[]来生成String。
这个题目的考点是你自己实现一个instance的management system
Trie tree在这里是用来搜索,储存和删除String instance的。


补充内容 (2016-10-3 02:32):
这里不管你用StringBuffer还是char[],这只是临时的一个可以重用的内存空间。除非是第一次生成这个String instance,否则你永远都不用生成任何instance。如果该instance被删除了,把它从trie tree里“删除”

补充内容 (2016-10-3 02:34):
“”+ char1 + char2 + ... 更是不可取。会生成一堆短命的instance。造成young gc, full gc。完蛋。。。
回复 支持 反对

使用道具 举报

LynKang 发表于 2016-10-3 02:49:26 | 显示全部楼层
LynKang 发表于 2016-10-3 02:30
不不不,你误会了。你不能用toString,也不能用char[]来生成String。
这个题目的考点是你自己实现一个in ...

所以ultimately,你的目标是避免造成full gc。这题java基本概念考的很多。建议去读一读effective java和java performance这两本书。
回复 支持 反对

使用道具 举报

liurudahai 发表于 2016-10-3 06:01:45 | 显示全部楼层
第一问是不是其实就是LC 的EXCEL的字母列和数字列转换的问题?
回复 支持 反对

使用道具 举报

liurudahai 发表于 2016-10-3 06:02:31 | 显示全部楼层
第三题也是LEETCODE原题吧,就是BFS加DP?
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-8 06:25

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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