首页 > 亚马逊的研发岗面试经验总结(一年社招)
头像
流光之城~~
编辑于 2021-05-13 16:47
+ 关注

亚马逊的研发岗面试经验总结(一年社招)

亚马逊的研发岗位叫做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,为什么想要换工作,工作不注重稳定性吗?想去哪里工作。

更多模拟面试

全部评论

(7) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐