可能是肉身***的好机会:亚马逊面经分享


国庆前亚马逊来我科开宣讲会,之前笔试过了,本来人已经回老家了,结果收到亚麻的电话。

当时以为可以推迟,就让HR帮我延后。但是后来听说可能过了这村就没这店了,所以我赶紧让同学帮我找HR联系,最后好不容易让HR帮我安排了面试,赶紧从家里买车票回学校参加现场面试。

不得不说亚马逊的工作人员的联系方式真是隐蔽得非常好,官网和其他渠道都找不到联系方式,最后还是托同学才安排上了面试,总之还是很庆幸,能够参加这次面试。

为什么这么看重亚马逊呢。一来是因为work life balance的诱惑,二来是肉身***的好机会。而且亚马逊的整体难度比微软要低,应该算是非常不错的机会。

但是!十月中旬就要出结果了,如果还没有offer call可能就是凉了。所以,现在心里还是很慌的。

下面分享一波面经,顺带提一下,之前笔者在6月底参加了一次亚马逊的实习生面试(为提前批面试做准备),感觉面试难度比正式批要大一点。

亚马逊秋招面经

亚马逊的研发岗位叫做SDE,我面试的就是这个岗位。

一面:

1 多线程的通信,同步方式。面试官问我volatile和synchronized的区别。

我从底层原理方面讲了两者的实现方式,主要解释了synchronized基于mutex lock实现,重量级锁,需要从用户态切换到内核态。volatile则是通过插入内存屏障的方式,保证变量读写的可见性。

2 集合类用过哪些

当时回答的是ArrayList,linkedlist,hashmap这类简单的集合类,于是面试官就问了hashmap的实现原理,以及和chm的比较,不同版本JDK的区别。也是比较老生常谈的问题了。

3 JVM的内存模型

说完内存模型的主要情况,面试官开始问我关于内存泄漏和内存溢出相关的问题,也比较简单,另外还问了GC相关的问题。

4 NIO和BIO的区别

主要就是讲述BIO的阻塞式IO读写,然后讲一下NIO的实现原理,相关类,并且说到IO多路复用的实现方式,底层的epoll实现方式等等。

5 算法题:实现一个LRU

只要求实现超过容量时的缓存淘汰,不用处理缓存超时的问题,所以只要写一个双向链表来存节点即可。另外,不能直接使用linkedhashmap实现,所以直接用hashmap作为成员变量,另外写一个含有容量参数的构造方法即可,也是比较常见的问题了。

6 n个有序链表合并,怎么实现。

刚开始说的是直接合并,然后优化使用多机进行。后来看了一下,可以用最小堆实现。

二面:

这轮是经理面

1 项目

2 项目的多线程问题

3 项目的架构

4 项目的数据库使用,部署方式,缓存部署方式。

5 项目的实际场景

6 讲一下JVM的内存分区

7 秒杀系统架构设计

秒杀系统设计也是一个比较常见的问题了。一般可以分几个方面作答。

首先,前端限制访问时间,以及同一IP的访问次数。

然后,第一层的服务做负载均衡,比如使用nginx,然后服务器做集群。

接着,可以用消息队列做削峰和限流,然后做一层缓存,最后只有少量请求到达数据库。

面试官问nginx怎么做高可用,前一层能不能再做负载均衡,我回答的是nginx也做集群,前一层可以用硬件负载均衡或者dns服务器做第一层负载均衡。

另外面试官还问了如果有ddos攻击怎么办,我刚好想到通过人机验证来避免大量肉鸡的攻击,于是就说了验证码的方式,面试官也说可以。

8 Redis的分布式部署

说了Redis cluster的部署方式,其实就是分片加哨兵的部署方式,另外Redis还可以使用codis这类***来做分布式。

9 MySQL的主从部署,读写分离。

这个就是比较常见的MySQL部署方案了,稍微说了一下实现方式就没再问了。

10 cap定理

讲了一下为什么三者只能选两者,这个问题还是挺绕的。

11 负载均衡怎么做

12 kafka的作用,持久化,其他问题

kafka之前看了一些比较好的文章,但是时间一久就忘了,于是我就说了读写性能好,以及多个副本的部署方式。

13 前端解决一些无效的请求过滤,怎么做

14 有什么offer,想去哪里工作。

15 有什么问题想问我的

亚马逊实习生面经

一面

1 聊项目20分钟,难点,重构特点。

2 写题,跳台阶的递归和dp方式。

3 如何查找一个数组中的局部最小值。

直接遍历复杂度是O(N),但不是最优。

使用二分查找优化,逼近局部最小值,复杂度是O(logn),有一些问题,并且写出死循环了。

不过面试官挺好的,让我过了。

二面

1 聊聊项目中的重构,数据表设计的方式。谈到了索引。

2 使用索引和不使用索引的区别,何时使用索引的查询效率不如不使用索引的查询效率。

这个问题懵了好久,以前没有遇到过。

面试官提醒了我一下,因为索引需要logn次IO找叶节点,然后再一次IO去真正找数据。

而不用索引每次查找都要一次IO,所以数据行为N时,不使用索引要N次IO,使用索引,假设索引包括M行数据,则需要(logn + 1)* N/M次,当两者相等时效率相近,否则不同。

3聚簇索引,最左前缀匹配索引,B+树。

4 算法题 版本号的大小比较

首先正则表达式过滤非法输入,并且拆成数组进行判断。

这个就不难了,就是比如1.1和2.2.1这种类型的版本号比较。

5 算法题 一个单词变成另一个单词。

一次只能变一个字母,并且中间过程需要是一个合法的单词。并且每一个位置都可以修改多次。文最少需要变化几次能变成指定单词。

刚开始在纠结判断合法的问题,后来面试官说这个可以放放。于是开始考虑DFS方式,巴拉巴拉说了一下,后来发现单词不是按顺序修改字母的,所以dfs根本行不通,想了半天只写了个大概的dfs模型。当然其中还有很多交流,但是最后也没写对。

现在看来应该是用BFS来做,每次把所有的修改情况找出来,然后分别进队,接着每次拿出一种方案继续做下去,最后成功到达结果时就是最小的变化次数了。

总结

当时亚马逊实习生给了offer,不过没时间去等转正了,于是就拒了。外企的校园招聘时间也确实是要到10月左右了,也就是说转正要等9月底,这比国内互联网公司还要晚上一个月。

对于正式秋招来说,大部外企的面试时间大概是10月初,基本上此时国内大厂已经结束战斗了,所以对于要参加外企校招的同学来说,可能要做好拉长战线的准备了,至少你要复习到十月份。譬如大摩,微软这一类外企是在十月中旬展开面试,后续笔者也会献上有关面经供大家参考。

总体来说,亚马逊的面试难度不及bat等大厂,也对英文没有太大要求,所以其实是一个性价比非常高的公司,如果是比较看重work life balance或者是***机会的同学,一定要把握住机会哦。

关注微信公众号「黄小斜」后回复「Java」、「Python」、「C++」、「大数据」、「机器学习」、「算法」、「AI」、「Android」、「前端」、「iOS」、「考研」、「BAT」、「校招」、「笔试」、「面试」、「面经」、「计算机基础」、「LeetCode」 等关键字可以获取对应的免费学习资料。
#面经##亚马逊##秋招##春招##Java工程师#
全部评论
感谢大佬 这么快就发出来了
点赞 回复
分享
发布于 2018-12-17 10:37
补充一下,拿到offer了。
1 回复
分享
发布于 2018-12-17 12:55
阅文集团
校招火热招聘中
官网直投
面试是中文还是英文呀?
1 回复
分享
发布于 2018-12-17 12:17
拿到offer了吗?
点赞 回复
分享
发布于 2018-12-17 12:46
亚马逊面试问算法不多吗?
点赞 回复
分享
发布于 2018-12-17 13:05
面了亚马逊的实习,说是一周给消息,这都快两周了,也没消息,emmm
点赞 回复
分享
发布于 2018-12-17 23:23
最近2周亚马逊aws解决方案架构师又打电话让我笔试面试,还要做个web的demo和ppt,我应该是被调剂到这个岗了,不知道有没有同学了解这个岗的相关信息的?
点赞 回复
分享
发布于 2018-12-21 10:59
有算法或者类似机器学习的岗位校招吗?
点赞 回复
分享
发布于 2018-12-23 21:46
请问一下amazon的暑期实习怎么投递?现在是不是还没开始呀?
点赞 回复
分享
发布于 2019-01-16 18:09
请问下楼主,实习offer大概多长时间给回复的呢,我周二面的,现在还没有回复,是不是凉了。
点赞 回复
分享
发布于 2019-03-15 16:49
楼主是JAVA吧?请问如果是c++的话应该就是问c++基础知识吧?
点赞 回复
分享
发布于 2019-03-27 19:39

相关推荐

18 231 评论
分享
牛客网
牛客企业服务