第 1 轮(Mettl 1 小时 30 分钟):评估由软件测试、SQL/数据库、算法、Linux、伪代码、数据结构、编码和网络等 9 个组件组成。
- 编码部分有一个问题: Count Derangements(排列使得没有元素出现在其原始位置)
从 804 名学生中,有 32 名学生入围,其中 8 名被选为系统开发工程师角色。
第 2 轮(Amazon Chime 和 Live code 1 小时 10 分钟):面试开始时我真的很紧张,但面试官是一个非常好的人,他一开始就介绍,然后我们继续我的,我完全适应这次。
他开始讨论我的一个项目(一个基于 Linux 的安全文件共享系统),并随心所欲地问了几个问题。
然后我们转向实时代码,提出了一些问题:
- https://leetcode.com/problems/two-sum/。我使用无序映射解决了它,其中我遍历数组两次,他问是否可以在一次遍历中完成,我能够提供一个有效的解决方案,然后他询问了空间和时间复杂度,最后他很满意我的方法。
- 为了不递归地遍历树。我先用递归解决了这个问题,他让我解释递归的概念和函数调用堆栈,然后他让我不用递归来做,我无法编码,但我向他解释了一个双栈方法,我又一次向他解释了无法完成,他对此非常友好,并告诉我不要担心,然后继续下一个问题。
- 基于场景的问题:我的一个项目涉及管理一个站点,所以他问我,如果我的站点流量很大,我必须管理大量数据,我将如何处理,我告诉他我将如何使用索引和数据库分片如果实现数据库分片,数据是在单个服务器上还是分布式服务器上,我可以向他解释,他对我的回答很满意。
- 操作系统问题:假脱机和其他一些我不记得的问题。
- 网络问题:解释OSI模型的所有层以及每一层的协议,传输层的协议是什么,解释什么是TCP和UDP,解释TCP机制是如何工作的。
你会如何发现传输中的网络错误,以及存在哪些类型的错误,我告诉他我们可以在 Wireshark 中分析 pcap 文件中的 ICMP 数据包,并告诉他各种错误,例如零窗口、dup ack 等。
Linux:他问了我所有我能想到的 Linux 命令并解释了它们的用法,我给了他 10-15 个命令以及它们的用法,然后他问了关于 chmod、读写权限、它们的外观以及什么表示什么在读写权限结构中,我能够解释一切,他对我的回答很满意。
其他问题:
- 什么是不可变对象,覆盖和重载之间的区别,什么是运算符重载,运行时和编译时多态之间的区别,除了不变性我能够用一个例子解释其他一切?
- 然后他解释了不变性的含义。
- 第一轮结束他问我有没有什么问题要问他,我问了几个,等了2个小时后,从32名学生中选出了8名学生,我就是其中之一。
第 2 轮:(Amazon Chime 和 Live code 50 分钟):他从介绍开始,然后让我给出我的介绍,我做到了,而我在解释时他阻止了我,并就我的一个项目问了几个问题作为他不清楚它的实用性,我又换了一种方式解释了一遍,听着他的声音,他不太满意。然后他继续现场代码:
编码问题:给定一个形式为(“name”,”percentage”,”age”) 的数组列表,例如 (abc,96,24),(cdb,34,23)…………学生。
为此,我能够使用地图提供 o(nlogn) 解决方案。
他问我 auto 变量是什么意思,map 如何对其键进行排序,map 和无序 map 工作之间的区别,并写下每次迭代的输出,然后他问了代码的时间复杂度和空间复杂度,我能够解释一切都好,他很满意。
其他问题:
- 您将如何检查站点是否可访问?
- 什么是DNS,解释它是如何工作的。
- 当我在 URL 中输入 amazon.com 时会发生什么
- 解释TCP/IP和3次握手,什么是SYN、ACK包
- API 如何工作,解释搜索查询如何在 espncricinfo 网站上工作
我能够回答所有问题并以结构良好的方式进行解释。
基于场景的问题:您将如何修复损坏的站点或无法访问的站点?我告诉他我们会在损坏的站点上获得一个状态代码,然后我向他解释了不同的状态代码,例如 1xx、2xx、3xx、4xx、5xx,每个状态代码的含义,以及我们如何可能知道什么和哪个一方造成错误,并根据推论纠正它。他对我的做法很满意。
假设您的 Linux 服务器运行缓慢,您将如何推断导致它的原因以及您将如何纠正它,我告诉他有关在 Linux 中使用 htop 命令监控资源并查看哪个资源被使用得更多,因为服务器正在运行缓慢 可以安全地假设服务器由于 CPU 使用率高而运行缓慢,并且基于此我们可以在配置文件中进行一些调整,他询问了我无法回答的确切调整,因为我不确定,他说没关系,并告诉我他已经完成了我的采访,并问我是否有任何问题要问他。
我问了几个问题,就是这样。第二天宣布了部分结果,选择了 3 名学生,我是其中之一,也是系统开发配置文件中唯一的一个。
判决:被选中。
提示:
- 始终对面试官诚实。
- 随意向面试官询问任何提示或建议,亚马逊的面试官非常乐于助人和友善。
- 尽量不要被别人的面试经历所淹没,尽力而为,不要担心结果。
- 相信你自己和你的能力,即使没有其他人相信。
- 思考和说话,要求额外的时间,不要胡言乱语。