程序员您好,这是我在亚马逊 (2019) 担任 SDE1 职位的面试经历。
第 1 轮(在线轮): 2 个编码问题和 28 个 MCQ
- 让1代表’A’,2代表’B’等。给定一个数字序列,计算给定数字序列可能的解码次数。 (https://www.geeksforgeeks.org/count-possible-decodings-given-digit-sequence/)
- 给定字符串形式的 num1、num2 和 X 的等式,您必须在字符串找到 X 的值。
Ex: String is 100000+200000=X X will be 300000 String is 100000+X=500000 X will be 400000
我解决了两个编码问题。
准备好所有指针概念以及如何返回字符字符串等。
第二轮(算法轮):我被告知要自我介绍。然后他就直接上题了。问题是:
- 给定一个 N x N 大小的方形棋盘,给出骑士的位置和目的地。您需要找出骑士到达目的地所需的最少步骤并打印相同的路径。 (https://www.geeksforgeeks.org/minimum-steps-reach-target-knight/)
最初,他们给了我一个基本的 BFS 解决方案,该解决方案查看所有需要 O (N * N) 时间的 8 K Knight 模式。
有人告诉我,作为一个明智的决策者,我在代码方面做得很好。我不知道面试官在期待什么。我在考虑放弃特定组合但丢失解决方案的 A * 搜索算法(意味着它在很短的时间内接近解决方案,由谷歌地图使用)。
我没想到有资格参加这个周期。但幸运的是我被召唤到下一轮。
第三轮(算法轮):面试官很冷。一开始,我给她介绍了自己,然后她介绍了自己。我应该简要描述我的任何一个项目(10 分钟)。
- 给定一个链表,编写一个函数来反转每个 k 节点。 (https://www.geeksforgeeks.org/reverse-a-list-in-groups-of-given-size/)
- 给定一棵二叉树,找到其父节点的左子节点的最深叶节点。 (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/
我应该只是口头告诉算法。然后他问了我的兴趣。