最近, 我经历了我的梦想公司Amazon针对SDE1进行的10轮采访, 我被选中。我唯一准备的资源和库是lsbin, 这是进行技术准备的最佳网站, 如果你的目标是大人物, 例如亚马逊, 微软等, 那么我不太有信心参加采访。面试经历博客给了我勇气和编码经验, 使他们能够全面学习。请务必关注此网站以获取每次更新, 并建议你的朋友在尝试换工作以及针对大公司时遵循。
我正在分享我的面试经验, 这将对其他人有所帮助。
总回合数:10
1个在线笔试+ 4个电话+ 5个F2F筛选回合。
在F2F轮次中, 对于每个问题, 都需要完整的可执行代码+算法。
在所有回合中, 都将期望最好的解决方案(降低复杂度)
在线笔试:
1.查找数组中的最大频繁数。如果有更多具有最大频率的数字, 它们将按升序显示所有数字。升序很重要。
2.两个数字表示为链表。 (大于整数)。
返回一个链表, 它是给定两个链表的乘积
.
1-> 2-> 3->空(123)
2-> 3-空(23)
O / P:2-> 8-> 2-> 9-> Null
第一次电话筛选(45分钟):
1.
查找在其中具有圆圈的链表, 如果包含循环, 则查找循环的原点。
2.
在"链表"中, "节点"有两个指针, 一个指向链表中的下一个节点, 另一个指向链表中的任意节点。编写一个函数以返回一个新列表, 该列表是给定链接列表的克隆。
3.
将数组排序并旋转k次。在数组中查找元素。
(需要高效, 对数的时间解决方案)
第二次电话筛选(45分钟):
1.
给出两个字符串s1, s2作为输入。删除s2中存在于s1中的字符。
2.如何查找集合中的子集数量。
3.
搜索二维矩阵中按行和列排序的元素。
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8在其中找到一个元素。
4.区别合并排序和快速排序。你如何改善快速排序(考虑选择枢轴元素)。
5.给出在最坏情况下快速排序的方案。
6.如何在内存中存储集合, 我们使用什么ADT以及每个ADT的权衡取舍。
第三次电话筛选(35分钟):
1.
N-汽油铺位问题
:一个圆圈中有n个汽油铺位。我们有一辆每1升行驶1公里的卡车(行驶里程1kmpl)。给出了两个数组。汽油铺位之间的距离以一排给出。其他阵列包含每个汽油铺位可用的公升数。我们必须找到一个起点, 这样, 如果我们从该点开始, 你将能够访问整个圈子而不会用尽燃料。最初卡车没有燃料。
2.
大小为k的组中的反向链接列表。
I / P:1-> 2-> 3-> 4-> 5-> 6-> 7-> 8->空k = 3
O / P:3-> 2-> 1-> 6-> 5-> 4-> 8-> 7-> Null
第四轮(35分钟)
1.构造给定树的算法
预
和
为了
遍历。
2.一棵树的有序继承者。
3.线程二叉树(无递归顺序)
F2F第一轮(聘用经理至少60分钟):
1.介绍一下你自己以及你从事的项目。
2.关于你所经历的项目中最关键的情况。你是怎么做到的。 (他需要对该场景进行完整的说明)
3.如果他给出与面试问题相同的场景, 你将如何提高代码质量及其复杂性。
4.关于SDLC, 你关注了。你喜欢哪一个, 为什么。
5.你有任何问题要问吗(非常重要的一个问题-有关他们正在开展的项目的问题, 等等。好兆头)
F2F第二轮(与开发人员互动60分钟):
1.跟我说说你自己。
2.二叉树的锯齿形遍历。(最好的解决方案是你的期望)。应编写完整的代码, 稍后将进行检查。
3.在2D空间中有一个机器人, 该机器人可以向左移动。给定一个数组, 该数组是机器人的动作, 它从origin(0, 0)开始。找到它覆盖的矩形。
I / P:{2, 3, 4, 5, 6, 1, 3, 5, 5}从(0, 0)开始
O / P:矩形点:(-4, 4)至(4, -2)
4.关于招聘过程的随意讨论。
F2F第三轮(与开发人员互动50分钟):
1.在O(1)时间中执行插入, 删除最新项, 查找最小值, 查找最大值的数据结构。 (给了哈希, 2-D, 链表, 很多..他在这里给人留下了深刻的印象)
2.一棵树的垂直总和。(按列求和–可以在lsbin中找到相同的值)
3.在连续排序的数据流中找到第n个数字。
I / P:{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6 , 1, 7, 1, 8 ...……无限} n = 28
O / P:第28位
以上所有方面的复杂性分析。
F2F第4轮(与开发人员互动45分钟):
1.
螺旋打印矩阵。
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
O / P:1 2 3 4 5 10 15 20 25 24 23 22 21 16 11 6 6 8 9 14 19 18 17 12 13 18
2.编写一个函数来检查大括号的语法是否正确。
3.同样的问题, 如果你有k种大括号(‘(’[['‘{’, .... K种)都具有相同的优先级。
4.同样的问题, 如果你有k种大括号(‘(’[['‘{’, .... K类型)全部都是差异优先级。
5.打印k对大括号的所有有效组合。
6.返回上述组合的计数, 而不使用打印算法。
7.记忆化–你知道吗?请解释一下。
F2F第五回合(Bar Raiser回合)60分钟:
1.领导者原则, 亚马逊遵循
2.关于项目。
3.为什么要离开上一家公司, 什么会阻止你到那里。
4.一组字符串以字典顺序给出。这里的问题是顺序不是我们的字母顺序。可能会有所不同。 C可能早于a, b, x可能早于d, c。等等。你将必须使用给定的输入来查找字符的顺序。 (拓扑排序–需要完整的代码才能编写)
5.二叉搜索树成排序双链表(预期的就地算法)
注意事项:
1.对于每个问题, 请先给出一个简单的解决方案(可能会增加时间复杂度), 然后考虑寻求最佳解决方案。
2.清晰地编写代码。没有你的解释, 它应该是可以理解的。
3.可以告诉你要编写的代码的复杂性。
4.首先告诉算法或方法, 然后继续编写代码。
5.不要犹豫, 要求澄清。他们会留下深刻的印象。
这就是我的全部。祝你好运。
再次感谢lsbin, 这是一个深受技术人员欢迎的网站。
亚马逊的所有练习题
!