程序员您好,这是我在亚马逊 (2019) 担任 SDE1 职位的面试经历。
第 1 轮(在线轮): 2 个编码问题和 28 个 MCQ
- 让1代表’A’,2代表’B’等。给定一个数字序列,计算给定数字序列可能的解码次数。 (https://practice.geeksforgeeks.org/problems/total-decoding-messages1235/1)
- 给定字符串形式的 num1、num2 和 X 的等式,您必须在字符串找到 X 的值。
Ex- String is 100000+200000=X X will be 300000 String is 100000+X=500000 X will be 400000
我解决了两个编码问题。
准备好所有指针概念以及如何返回字符字符串等。
第二轮(算法轮):我被告知要自我介绍。然后他就直接上题了。问题是:
- 给定一个 N×N 大小的正方形棋盘,给出骑士的位置和目的地。您需要找出骑士到达目的地所需的最少步骤并打印相同的路径。 (https://practice.geeksforgeeks.org/problems/steps-by-knight5927/1)
最初,他们给了我一个基本的 BFS 解决方案,该解决方案查看所有需要 O (N × N) 时间的 8 K Knight 模式。
有人告诉我,作为一个明智的决策者,我在代码方面做得很好。我不知道面试官在期待什么。我在考虑放弃特定组合但丢失解决方案的 A * 搜索算法(意味着它在很短的时间内接近解决方案,由谷歌地图使用)。
我没想到有资格参加这个周期。但幸运的是我被召唤到下一轮。
第三轮(算法轮):面试官很冷。一开始,我给她介绍了自己,然后她介绍了自己。我应该简要描述我的任何一个项目(10 分钟)。
- 给定一个链表,编写一个函数来反转每个 k 节点。 (https://practice.geeksforgeeks.org/problems/reverse-a-linked-list-in-groups-of-given-size/1)
- 给定一棵二叉树,找到其父节点的左子节点的最深叶节点。 (https://www.geeksforgeeks.org/deepest-left-leaf-node-in-a-binary-tree/)
第 4 轮(基础 + 算法):最初,我介绍了自己。面试官很淡定。他问我关于我的科目。然后深入检查基础知识。前任-
- 分页/虚拟内存
- CPU调度算法
- 死锁/信号量/临界区
- OSI 层的工作 (CN)
- 如果我输入“google.com”作为 URL,会发生什么。解释整个过程。
第 5 轮(技术轮):你面试的人知识渊博。首先我自我介绍。我被要求描述我的任何项目,他告诉我他现在将如何改进项目。
然后他问了我一个关于树的问题——我摇头,我只是微笑,我的面试官以为我知道这个问题,问我是否知道这个问题,我说是(即使这个问题很陌生)但不要这样做 我当时很幸运
然后他交换了问题。并问了这个——
- https://www.geeksforgeeks.org/check-whether-the-two-binary-search-trees-are-identical-or-not/
我应该只是口头告诉算法。然后他问了我的兴趣。