📜  2020 年 Apple 软件开发人员面试体验

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

背景:

我是 Microsoft 的 Microsoft 软件工程师。我在 Azure 心理服务领域工作,我非常热爱我的工作。我有 9 年的开发经验和 3 年的系统经理经验。我曾在许多团体和产品上工作过。我的开发生涯始于英特尔的设备设计师,后来转到 Microsoft 的 SQL 服务器(我不喜欢它),转到内容管理服务,然后转到认知服务 (AI)。我还在 Lyft 短暂停留(7 个月。我讨厌它。)

苹果

  • 电话屏幕:我通过 Triplebyte 去了 Apple,并跳过了电话面试。

现场(视频会议):

第1轮:

  • 给定一个井字棋盘,验证玩家是否赢得了比赛。这个问题有点含糊,但并不难。我轻松解决了。

第二轮:

  • 您将获得一个带有随机字符的网格。还为您提供了一本字典。您需要找到可以在黑板上构建的所有单词。单词可能会更频繁地出现。您可以在板上上下左右移动。返回一个以单词为关键字、以复数为数字的字典。这是编码和设计问题的组合。我被要求编写一个伪代码并设计一个 API。这个问题令人困惑、困难,并且随着对话的进行而不断变化。
  • 我通过在字典中创建 Trie 并在网格中的所有字母上启动 DFS 来解决它。

第 3 轮:

  • 这是一个非常有趣的讨论。这不是一场非技术性的回合。此次讨论由总理主持。他告诉我首相在苹果公司做了什么。然后他给了我一个猜测项目。他让我在回复 Siri 的视频时加入烂番茄的评分。如您所见,这是一个模糊的要求。他问我将如何处理这样的任务。
  • 我谈到了澄清需求、提出了性能描述、衡量项目成功的遥测,并讨论了开发阶段的日常细节。我们讨论了利益相关者参与、自上而下、利益相关者参与、冲突解决和期望管理。
  • 5-10 分钟前,你问到我想做的一个幻想项目。我讨论了数字输入气味和触摸。

第 4 轮:

  • 这是一个技术周期。我不得不使用字典。这是一个模糊的问题,我们讨论了各种问题,例如散列性能、冲突解决、加载功能和过度拥挤时的字典扩展。我在 C# 中使用列表使用了标准字典。
  • 他的最后一个问题是关于我想在黑客马拉松中使用的一个功能。我建议每个转弯的地图不应该提供已知路线的方向。

第 5 轮:

  • 使用 IsPalidrome函数。您实际上将代码用于一些输入。有很多边缘情况,但 IsPalindrome 有多难?然后他让我做一个绳索工作,比如根据你和回文的不同来安装和检索点。这是一个模糊的问题,我解释了在 Palindrome 中安装和移除电缆隐藏装置需要多长时间。我建议了一个 DP 解决方案。面试官不确定它是否有效,但不知道它是否有效。我对这个问题做了几个变体。

第 6 轮:

  • 这一轮是与经理。我们讨论了领导力、项目、团队章程、Apple 的文化、技术堆栈、薪酬、职业发展和许多其他事情。这一轮是关于我面试团队和公司。

想法:

  • 苹果的面试过程给我留下了深刻的印象。重点不是任何平台查询,而是整体软件开发。团队与众不同,非常有趣。我在字典问题上偶然发现了一些问题,但有些回合进行得很顺利。面试让我有机会展示我从经验中获得的技能。正常的软件开发并不意味着解密。它是关于你需要解决什么问题,你为什么要解决这个问题,以及你如何知道你已经成功地解决了这个问题。您只需转到代码部分并满意地回答这些问题即可。

几天后我得到了一个定位。我当时就答应了,因为我真的很喜欢这次谈话。