一亩三分地论坛

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

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

2016.2.26 2 PST Amazon 面经

[复制链接] |试试Instant~ |关注本帖
sunmoyun 发表于 2016-2-27 09:45:50 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 硕士 实习@Amazon - 网上海投 - 技术电面 |Otherfresh grad应届毕业生

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

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

x
一个native的小哥,做music player的前端,先是问了简历和behavior,没问data structure,然后就是coding
第一题:
设计两个function log()和report()
report()会返回过去60秒里调用log的次数
用了一个queue实现,问了时间复杂度,是O(n)。然后让优化成O(1),不会。。。给了hint也不会。。。就过了。。。.鏈枃鍘熷垱鑷1point3acres璁哄潧
第二题:
翻转字符串,leetcode原题.鏈枃鍘熷垱鑷1point3acres璁哄潧

然后就是问问题了

在版里看了很多面经,回馈一下。感觉要跪,但还是希望能有奇迹发生。。。
johnjavabean 发表于 2016-2-27 14:26:44 | 显示全部楼层
第一题记录下倒数第61秒log了多少条么...然后每一分钟更新一下这个previous和currentSum,这样就是o(1)了?
回复 支持 反对

使用道具 举报

 楼主| sunmoyun 发表于 2016-2-27 22:12:26 | 显示全部楼层
johnjavabean 发表于 2016-2-27 14:26
第一题记录下倒数第61秒log了多少条么...然后每一分钟更新一下这个previous和currentSum,这样就是o(1)了?

. 1point3acres.com/bbs后来想了一下,我觉得要记录一个size是60的array,每秒都要自动更新
回复 支持 反对

使用道具 举报

usa521 发表于 2016-2-28 00:04:20 | 显示全部楼层
sunmoyun 发表于 2016-2-27 22:12
后来想了一下,我觉得要记录一个size是60的array,每秒都要自动更新
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
谢谢楼主分享面经 求问这个log()也让你实现了么?怎么实现记录60秒的啊为什么用Queue?需要用那些Java里时间的库方法吗。。。
回复 支持 反对

使用道具 举报

 楼主| sunmoyun 发表于 2016-2-28 01:56:46 | 显示全部楼层
usa521 发表于 2016-2-28 00:04
谢谢楼主分享面经  求问这个log()也让你实现了么?怎么实现记录60秒的啊为什么用Queue?需要用 ...

他给了个API获取当前时间戳,queue用来记录每次登陆时间
回复 支持 反对

使用道具 举报

elvisxyu 发表于 2016-2-29 00:48:26 | 显示全部楼层
是面试官要求用queue记录吗?queue并不是适合干这个需求的data structure
回复 支持 反对

使用道具 举报

vesalius 发表于 2016-2-29 01:56:11 | 显示全部楼层
需要把访问log的时间调出来么?不需要的话不用存时间,只存次数就行吧
回复 支持 反对

使用道具 举报

 楼主| sunmoyun 发表于 2016-2-29 23:29:42 | 显示全部楼层
elvisxyu 发表于 2016-2-29 00:48
是面试官要求用queue记录吗?queue并不是适合干这个需求的data structure

啊他没要求,那应该用什么呢
回复 支持 反对

使用道具 举报

johnjavabean 发表于 2016-3-1 02:46:49 | 显示全部楼层
sunmoyun 发表于 2016-2-29 23:29
啊他没要求,那应该用什么呢

没必要用queue,用两个long就行了....一个记录倒数第61秒多少个log,一个记录过去60秒一共多少个,每次log一个新的就更新倒数61秒的值和总的值,这就是o(1)空间了
回复 支持 反对

使用道具 举报

 楼主| sunmoyun 发表于 2016-3-1 05:00:14 | 显示全部楼层
johnjavabean 发表于 2016-3-1 02:46
没必要用queue,用两个long就行了....一个记录倒数第61秒多少个log,一个记录过去60秒一共多少个,每次lo ...
-google 1point3acres
那或许要再写一个每秒更新的方法才能行吧,不然你只记两个次数,十分钟二十分钟之内都不调用log,这两个次数是无效的
回复 支持 反对

使用道具 举报

beforelost 发表于 2016-3-1 05:41:32 | 显示全部楼层
johnjavabean 发表于 2016-3-1 02:46
没必要用queue,用两个long就行了....一个记录倒数第61秒多少个log,一个记录过去60秒一共多少个,每次lo ...

倒数第61秒的访问次数怎么更新呢?过去60秒不是根据调用report的时间往前60秒吗
回复 支持 反对

使用道具 举报

johnjavabean 发表于 2016-3-1 08:45:21 | 显示全部楼层
sunmoyun 发表于 2016-3-1 05:00
那或许要再写一个每秒更新的方法才能行吧,不然你只记两个次数,十分钟二十分钟之内都不调用log,这两个 ...

这个log肯定每分钟调用的吧....不然你用什么数据结构都没用,毕竟数据缺失了...可能是需要一个counter在第一个60秒的时候
回复 支持 反对

使用道具 举报

elvisxyu 发表于 2016-3-1 09:00:51 | 显示全部楼层
最简单的话用map来实现就好了 不过可能大部分new grad都会没听说过
sortmap有寻找floorkey方法 还有keyfrom和keyto, 用来在范围内找值最试用  :)
回复 支持 反对

使用道具 举报

beforelost 发表于 2016-3-1 09:56:22 | 显示全部楼层
elvisxyu 发表于 2016-3-1 09:00
最简单的话用map来实现就好了 不过可能大部分new grad都会没听说过
. 鍥磋鎴戜滑@1point 3 acressortmap有寻找floorkey方法 还有keyfro ...

这应该就不是O(1)了吧?
回复 支持 反对

使用道具 举报

elvisxyu 发表于 2016-3-1 11:27:58 | 显示全部楼层
beforelost 发表于 2016-3-1 09:56.鐣欏璁哄潧-涓浜-涓夊垎鍦
这应该就不是O(1)了吧?

依据是什么呢? 如果不放心可以去看下源码,或者简单google下
回复 支持 反对

使用道具 举报

beforelost 发表于 2016-3-1 12:22:07 | 显示全部楼层
elvisxyu 发表于 2016-3-1 11:27
依据是什么呢? 如果不放心可以去看下源码,或者简单google下

final Entry<K,V> More ...getCeilingEntry(K key) {. 1point3acres.com/bbs
387         Entry<K,V> p = root;
388         while (p != null) {
389             int cmp = compare(key, p.key);
390             if (cmp < 0) {
391                 if (p.left != null)
392                     p = p.left;
393                 else
394                     return p;
395             } else if (cmp > 0) { 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
396                 if (p.right != null) {
397                     p = p.right;
398                 } else {
399                     Entry<K,V> parent = p.parent;. 鍥磋鎴戜滑@1point 3 acres
400                     Entry<K,V> ch = p;
401                     while (parent != null && ch == parent.right) {
402                         ch = parent;
403                         parent = parent.parent;
404                     }
405                     return parent;
406                 }
.鏈枃鍘熷垱鑷1point3acres璁哄潧407             } else
408                 return p;. 1point 3acres 璁哄潧
409         }
410         return null;.鐣欏璁哄潧-涓浜-涓夊垎鍦
411     }


这是java treemap的源码,这个实现查找是O(logN)的。除非你说的是其他的实现
回复 支持 反对

使用道具 举报

elvisxyu 发表于 2016-3-2 07:26:40 | 显示全部楼层
beforelost 发表于 2016-3-1 12:22
final Entry More ...getCeilingEntry(K key) {
387         Entry p = root;
388         while (p ! ...
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
很高兴和你讨论。
首先,很高兴你去看了部分源码,但我想大部分人应该都知道treemap的时间复杂度。
其次,我并没有提到过用treemap实现。有许多的类都继承了sortmap,并不是只有一个treemap。所以我不太理解你在这里贴treemap代码的用意。. more info on 1point3acres.com

既然你都知道有可能说有其他的实现,你不如通过我说的方法名来搜索。. 1point 3acres 璁哄潧

回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-6 01:19

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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