亚马逊面试经历 |设置 142(SDE-1 校外)
第一轮:电话
Q1。实现扫雷的一些功能,如连接组件搜索和游戏终止检查等。
Q2。链表随机指针问题:克隆带有下一个和随机指针的链表
Q3。给定一个由 0 和 1 组成的矩阵,找出包含最大数量 1 的行。
Q4。给定二叉树中的一个节点,找出距离它为 K 的所有节点。还给出了根节点。
第二天,我接到了现场面试的电话。
第 2轮:SDE 现场轮 – 1
Q1。给定大量不同大小的空箱子,我们需要为给定物品找到最合适的箱子并分配它。需要为这个场景设计一个数据结构。涉及的操作:
- 插入一个板条箱
- 搜索最合适的箱子
- 分配后删除箱子。
例如,有 3 个重量为 10、20 和 30 的板条箱。出现一个大小为 15 的项目,然后我们将分配大小为 20 的箱子并将其删除。
溶胶。使用二叉搜索树(使用红黑标准或任何标准进行平衡)并实现 ceil函数。
所有操作都是 O (log(n))。
Q2。针对亚马逊有很多箱子但搜索操作非常少的周末优化上述数据结构。
Q3。给定一个函数boolisValidWord(字符串 str),您需要检查一个字符串是否是正确的字符串。例如 iloveicecream 是有效的:我喜欢冰淇淋。
第三轮:其他团队的经理
对项目进行深入讨论。
在一个项目中,我使用了 EC2 服务,所以他问了我很多细节以及为什么我更喜欢 EC2 而不是其他可能的选项。
买卖股票问题。
连接同一级别的节点
关于虚拟内存的一般讨论。
第 4 轮: 2 个 SDE-1
Q1。给定 1 和 0 的矩阵,其中 0 是水,1 是陆地。找出岛屿的数量。
Q2。给出上述问题中所有岛屿的大小。
Q3。所有大小为 k 的子数组的最大值
第 5 轮:开发经理,6 年经验。 (可能是提高标准我仍然不确定:P)
Q1。我们开始讨论非常普遍的问题,我们有很长的字符流,我们需要从该流中提取所有模式。可以有整数、分数、单词或任何东西。
我解释了编译器设计的词法分析阶段使用的整个过程,我们给出正则表达式,最后将它们转换为 NFA,最后转换为单个 DFA。
然后讨论了我们将如何从头开始实施这个系统。
有许多算法可以将正则表达式转换为 NFA,最后是 DFA,还有一些关于自然语言处理的一般性讨论。
http://algs4.cs.princeton.edu/54regexp/
Q2。给定 M 个大小为 N 的排序链表,我们需要将它们合并为大小为 M x N 的单个链表,而不使用额外的空间。
第二天我接到电话,他们想为我提供 SDE-1 配置文件的报价。
重要提示:
- 彻底准备数据结构。
- 效率较低的解决方案比没有解决方案要好得多。
- 采用增量方法解决问题。