嗨,大家好,
希望你一切都好。今天我要分享一下我在亚马逊面试SDE-1这个角色的经历。希望它可以帮助您准备下一次编码面试。因此,事不宜迟,让我们开始吧。
我通过亚马逊招聘门户申请了 SDE-1 的职位。接下来,我收到了在线评估 (OA) 的邀请。
在线评估:在线评估有两个部分。
第一部分包括几个基于数据结构和算法的问题
- 第一个问题 – https://leetcode.com/problems/maximum-units-on-a-truck/
- 第二个问题 – https://practice.geeksforgeeks.org/preview-problems/701942
第二部分主要包括行为方面。
第 1 轮:这一轮主要是对我之前参与的公司项目的讨论,一些基于亚马逊领导原则的行为问题,一些技术问题。
我能回忆起来的一些问题如下:-
- 进程和线程的区别?
- 什么是死锁以及发生死锁的必要条件是什么?
- 线程和进程的一些实际应用
- 告诉我一个你不清楚需求的时候?你做了什么,最后的结果是什么?
- 让我们讨论您参与的一个复杂项目。最后的结果是什么,你学到了什么?根据我的回答,有一些关于网络套接字的后续问题。
- 同步 I/O 和异步 I/O 的区别?
- 基于Node JS非阻塞I/O的一些问题
第 2 轮:这一轮是编码问题和行为问题的混合。
- 行为问题是:你在工作中感受到压力吗?描述这样的情况
- 二叉树中的最低共同祖先,然后是二叉搜索树中的最低共同祖先。
https://practice.geeksforgeeks.org/problem-page。 PHP?pid=700236
https://practice.geeksforgeeks.org/problem-page。 PHP?pid=700221
我们讨论了边缘情况,例如
- 如果树中不存在输入节点值怎么办
- 输入节点之一或两者都为空
- 根节点为空
- 数组中所有单词的最短唯一前缀
https://practice.geeksforgeeks.org/problem-page。 PHP?pid=706447/
我们讨论了边缘情况,例如:
- 如果输入数组为空
- 如果有一个词是空的
- 如果输入数组中有重复的单词怎么办(面试官告诉所有单词都是不同的)
第 3 轮:这一轮是编码问题和行为问题的混合。
- 行为问题是:告诉我们您错过最后期限或生产力目标的时间?业务影响是什么,你从中学到了什么?
- 给定一个递增的序列,然后递减,找到第一个开始递减的元素
假设有一个数组 [0, 10, 20, 30, 40, 10, 5, 1] -> 答案是 40,因为它从 40 开始减少
我们讨论了许多边缘情况,例如
- 系列只增加
- 系列仅在减少
- 先递减系列然后递增
- 系列首先增加然后减少然后再次增加然后减少……
假设一个数组 [0, 10, 20, 30, 25, 20, 40, 60, 50, 30] -> 首先它增加,然后减少,然后相同的重复,所以在这种情况下答案将是 30
- 给定一个整数数组,找到最大乘积三元组 – https://practice.geeksforgeeks.org/problems/three-great-candidates0515/1
让我们拿一个数组 [1, -4, 3, -6, 7, 0] -> 答案是 168 (-6 x -4 x 7)
我们讨论了边缘情况,例如
- 如果输入数组包含少于三个数字
- 仅包含负数的输入数组
- 包含正数和负数的输入数组
第 4 轮:这一轮包括编码问题、行为问题和一些技术问题
- 行为问题是:告诉我们您必须在严格的时间表下解决复杂任务的时间?你的方法是什么,你是如何解决的?
- 给定两个长度分别为 m 和 n 的字符串s 和 t,返回 s 的最小窗口子串,使得 t 中的每个字符(包括重复项)都包含在窗口中。如果没有这样的子字符串,则返回空字符串“”。
https://leetcode.com/problems/minimum-window-substring/
澄清了一些问题,如
- 如果字符串s 的长度小于字符串t 的长度
- 如果字符串s 或 t 为空
- 在数组中查找总和最接近给定数字的三元组。
https://practice.geeksforgeeks.org/problem-page。 PHP?pid=702023
让我们拿一个数组说 [-1, 2, 1, -4] 和 sum = 1 -> 三元组将 (-1, 2, 1)
我们讨论了边缘情况,例如
- 如果不存在三元组,输出将是什么
- 如果有多个三元组,那么打印哪个三元组(面试官确认你可以返回任何三元组)
- 如果输入包含少于 3 个数字,输出将是什么
技术问题:-
- 子进程与线程进程的区别
- 有哪些不同的传输层协议?
- TCP 和 UDP 之间的区别
- 二叉搜索树的实际应用
最终裁决:选择
所以我有一些技巧可以分享如下:-
- 回想一下你以前的工作经历、你的毕业天数、成就。这尤其需要回答基于行为的问题
- 在回答行为问题时使用 STAR 方法来回答。
- S – 情况(情况如何)
- T – 任务(所承担的任务是什么)
- A – 行动(你做了什么或你解决任务的方法是什么)
- R – 结果(最终结果是什么)
- 始终首先讨论蛮力方法,然后朝着最佳解决方案努力
- 讨论蛮力和最优解的时间和空间复杂度
- 也讨论边缘情况
- 对数据结构有扎实和出色的理解将在编码面试中帮助你很多
- 请每天练习 1 个编码问题。 Leetcode 和 Geeksforgeeks 是练习编码问题的绝佳平台
- 在面试时不要忘记添加你的成就
- 相信自己,你就成功了一半。
- 设定短期目标,因为今天迈出的一小步会为明天迈出更大的一步。
最后祝你一切顺利。祝你好运。谢谢并保重。