亚马逊面试经历 |设置 291(SDE1 校内)
亚马逊参观了我们的校园 SDE_1。整个面试过程分为一轮编码和一组4轮面试。
在线编码回合:
这是一个 90 分钟的测试,包含 22 个问题(20 个 MCQ + 2 个编码),托管在 HackerRank 上。
编码问题:
1. 反转字符串中的单词。
示例:让输入字符串为“我非常喜欢这个程序”。该函数应将字符串更改为“much very program this like i”
2. 给定总和的子数组的最大长度。
MCQ 包括操作系统、几何、基础数学、C、递归等主题。
谁解决了至少两个问题,谁就被选为面试。
F2F 1(技术):
他向我询问了我在海得拉巴的微软印度开发中心的暑期实习项目,并向我询问了其中涉及的几种技术以及我为什么使用某些东西。
然后他转向两个技术问题。
1. 给定一个排序和旋转的数组,找到一个给你的元素。
我给了他一个 O(logn) 解决方案,其中包含枢轴查找,然后在任何一半中进行二进制搜索。但这是一个 O(logn) + O(logn),所以他让我将其修改为一个 O(logn) 的问题。在给他解决方案后,他让我编写考虑所有角落测试用例的生产级代码。
2. 给定一个包含班级学生分数的 BST。发现所有连排名的学生都作弊了,所以我们从他们的分数中减去k分。修改 BST 以进行标记的更改,而不考虑在此操作之后,BST 可能不再是 BST。
我给了他一个修改后的中序遍历,以便使用计数器变量对元素进行排序和解决。他要求我将其修改为既不使用静态计数器变量也不使用传递给递归调用的指针。对于这两个问题,他还问了我时间和空间的复杂性。
F2F 2(技术):
他又问了一个关于我暑期实习的简短想法。然后他又问了我2个问题。
1.给定数组中大小为 ak 的窗口,在每个窗口中查找最大元素。
https://www.geeksforgeeks.org/maximum-of-all-subarrays-of-size-k/
我和他讨论了很多关于可以使用哪种数据结构的问题,最后想出了一个 Queue 解决方案。考虑到所有极端情况,我被要求再次编码。
2.使用带有操作(Enqueue,Dequeue,IsEmpty,Size)的堆栈实现队列。
当我告诉他解决方案时,他甚至问我在制作普通队列时是否更喜欢数组或链表实现。
(两者的空间和时间复杂度)
F2F 3(技术):
他还向我简要介绍了我的暑期实习项目。
他从缺点或数组和链表的优点开始。然后是关于数组的问题:
1. 给定一个数组,所有偶数元素都出现偶数次,除了一个出现奇数次的元素。找到那个元素。