亚马逊面试经历 |设置 352(用于 SDE I)
1) 45 分钟的在线编码轮次。我们有一个问题,我们必须从数据文件中读取未知数量的行。每行都有一个格式化的日期时间戳和一个人的名字。
我们应该知道某个人是否在同一日期出现了两次。对于 C++,我使用 getline 来获取输入,然后 STL Map 做到了。
2) 现场面对面第一轮
面试官问了我两个问题,然后我在讨论后编码:
他想了解这种方法背后的逻辑,而不仅仅是直觉。他要求证明该算法的工作原理。
- 捕获雨水
- 在距节点 k 距离处打印节点
3) 现场面对面第二轮
- 他向我询问了我的实习和项目。
- 然后他问我如何设计一个计算器。这涉及到关于异常处理等的讨论。
- 他问我关于后缀和前缀表达式以及如何使用表达式树等。
- 编辑距离
4) 现场面对面第三轮
- 第一个问题是这样的:
重新排列字符中的字符串,使得没有两个相邻的字符相同
他给了我字符串长度为 10^5 的输入约束。 - 然后我们讨论了检测图中的循环。我们可以使用 BFS 来检测有向图中的循环吗?他让我为有向图编写循环检测代码。
GeeksforGeeks 链接 - 最后一个问题是这样的:
给定一个二进制二维数组,找到最大的只有 1 的矩形子矩阵的面积。
GeeksforGeeks 链接
他不相信我的方法,并要求我给他测试用例会失败的地方。我们做了十到十五个案例并进行了测试,它似乎有效。
5) 提高标准 (Skype):
- 他希望我为自动完成搜索查询编写数据结构。我提到 Trie 是一种方式,然后我们讨论了 Trie 以及在 Trie 中搜索、插入等。
- GeeksforGeeks 链接
- 然后我们讨论了数据库。什么是正规形式?
- 你将如何设计一个包含书籍和作者的数据库(多对多关系)。
- 我们如何查询拥有最大书籍数量的作者?
- 什么是死锁,有什么方法可以避免它?
- 给我一个死锁的真实例子。
- 向我解释您必须在截止日期前完成的任何单个项目以及您的行动方案是什么?
然后他让我使用 Trie 对其进行编码:
在此之后还有一轮,实际上是 Bar Raser。最初的帖子中提到的第五点只是技术面试。
- 他问我为什么是亚马逊?
- 我有没有遇到过在一个项目中与我的导师发生冲突的情况,结果如何?
- 在艰难的项目中,我如何保持自己的动力?
- 如何满足最后期限?
- 如何确保你在项目中所做的工作在你离开项目后容易被人理解?
这些是编码问题:将中缀转换为后缀并评估后缀。
GeeksforGeeks Link 他希望我什么都不做(输入的字符串可能无效,代码是这样报告的)。
GeeksforGeeks 在我的准备期间对我的帮助最大。
亚马逊的所有练习题!