📜  SDE-1 的亚马逊面试体验

📅  最后修改于: 2021-11-18 01:53:37             🧑  作者: Mango

嗨,大家好,

希望你一切都好。今天我要分享一下我在亚马逊面试SDE-1这个角色的经历。希望它可以帮助您准备下一次编码面试。因此,事不宜迟,让我们开始吧。

我通过亚马逊招聘门户申请了 SDE-1 的职位。接下来,我收到了在线评估 (OA) 的邀请。

在线评估:在线评估有两个部分。

第一部分包括几个基于数据结构和算法的问题

  1. 第一个问题 – https://leetcode.com/problems/maximum-units-on-a-truck/
  2. 第二个问题 – https://practice.geeksforgeeks.org/preview-problems/701942

第二部分主要包括行为方面。

第 1 轮:这一轮主要是对我之前参与的公司项目的讨论,一些基于亚马逊领导原则的行为问题,一些技术问题。

我能回忆起来的一些问题如下:-

  • 进程和线程的区别?
  • 什么是死锁以及发生死锁的必要条件是什么?
  • 线程和进程的一些实际应用
  • 告诉我一个你不清楚需求的时候?你做了什么,最后的结果是什么?
  • 让我们讨论您参与的一个复杂项目。最后的结果是什么,你学到了什么?根据我的回答,有一些关于网络套接字的后续问题。
  • 同步 I/O 和异步 I/O 的区别?
  • 基于Node JS非阻塞I/O的一些问题

第 2 轮:这一轮是编码问题和行为问题的混合。

  1. 行为问题是:你在工作中感受到压力吗?描述这样的情况
  2. 二叉树中的最低共同祖先,然后是二叉搜索树中的最低共同祖先。

    https://practice.geeksforgeeks.org/problem-page。 PHP?pid=700236

    https://practice.geeksforgeeks.org/problem-page。 PHP?pid=700221

    我们讨论了边缘情况,例如

    • 如果树中不存在输入节点值怎么办
    • 输入节点之一或两者都为空
    • 根节点为空
  3. 数组中所有单词的最短唯一前缀

    https://practice.geeksforgeeks.org/problem-page。 PHP?pid=706447/

    我们讨论了边缘情况,例如:

    • 如果输入数组为空
    • 如果有一个词是空的
    • 如果输入数组中有重复的单词怎么办(面试官告诉所有单词都是不同的)

第 3 轮:这一轮是编码问题和行为问题的混合。

  1. 行为问题是:告诉我们您错过最后期限或生产力目标的时间?业务影响是什么,你从中学到了什么?
  2. 给定一个递增的序列,然后递减,找到第一个开始递减的元素

    假设有一个数组 [0, 10, 20, 30, 40, 10, 5, 1] -> 答案是 40,因为它从 40 开始减少

    我们讨论了许多边缘情况,例如

    • 系列只增加
    • 系列仅在减少
    • 先递减系列然后递增
    • 系列首先增加然后减少然后再次增加然后减少……

    假设一个数组 [0, 10, 20, 30, 25, 20, 40, 60, 50, 30] -> 首先它增加,然后减少,然后相同的重复,所以在这种情况下答案将是 30

  3. 给定一个整数数组,找到最大乘积三元组 – https://practice.geeksforgeeks.org/problems/three-great-candidates0515/1

    让我们拿一个数组 [1, -4, 3, -6, 7, 0] -> 答案是 168 (-6 x -4 x 7)

    我们讨论了边缘情况,例如

    • 如果输入数组包含少于三个数字
    • 仅包含负数的输入数组
    • 包含正数和负数的输入数组

第 4 轮:这一轮包括编码问题、行为问题和一些技术问题

  1. 行为问题是:告诉我们您必须在严格的时间表下解决复杂任务的时间?你的方法是什么,你是如何解决的?
  2. 给定两个长度分别为 m 和 n 的字符串s 和 t,返回 s 的最小窗口子串,使得 t 中的每个字符(包括重复项)都包含在窗口中。如果没有这样的子字符串,则返回空字符串“”。

    https://leetcode.com/problems/minimum-window-substring/

    澄清了一些问题,如

    • 如果字符串s 的长度小于字符串t 的长度
    • 如果字符串s 或 t 为空
  3. 在数组中查找总和最接近给定数字的三元组。

    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 是练习编码问题的绝佳平台
  • 在面试时不要忘记添加你的成就
  • 相信自己,你就成功了一半。
  • 设定短期目标,因为今天迈出的一小步会为明天迈出更大的一步。

最后祝你一切顺利。祝你好运。谢谢并保重。