📜  Atlassian 面试经历

📅  最后修改于: 2022-05-13 01:58:31.156000             🧑  作者: Mango

Atlassian 面试经历

我正在分享我的Atlassian面试经验。整个过程分为以下几个部分:

  • 在线测试:
    • 在线测试是在 Hackerrank 上进行的。持续时间为90分钟,有3个问题。
      • 问题1:
        • 这是一个简单的问题(50 分),但R是唯一允许的编程语言。这就是我们没有人能够解决它的原因。
      • 问题2:
        • 这是一个基于树的简单 DP问题(75 分)。
        • 给定n个节点的树(一般图),每个节点的值是节点号(即:节点x具有值x)。在每个查询中,我们将获得一个节点和一个jump值。因此,我们需要计算从给定节点开始并向树的根部跳跃跳跃量时的总值。所以,如果跳转值为 3,我们从初始节点移动到它的第 3 个祖先,然后是第 6 个祖先,第 9 个,依此类推,直到你无法进一步跳转。
        • 有 q 个查询(q <= 10^5),但关键是每个查询的跳转值 <=10。换句话说,在每次跳跃中,你都不能超过它的第 10 个祖先。
      • 问题3:
        • 这是一道标准题(100 分)。
        • 给定一个数组,其中每个元素 (arr[i]) 表示位置 i 处塔的高度。
        • 对于每个 i,我们需要计算其高度小于当前塔的高度 (arr[j] < arr[i]) 的最近索引 j (j > i 或 j < i)。如果有两个这样的塔——一个在右边,一个在左边——选择离它最近的一个。
        • 可以使用两个堆栈轻松解决(一个用于右侧,另一个用于左侧)。
  • 技术第一轮:
    • 有两个面试官,两个都非常酷和了不起。我觉得和他们一起编码真的很舒服。
    • 它是在 Zoom 上进行的。我使用了我的原子编辑器和共享屏幕。
    • 所以问题是:
      • 我们必须在投票过程中决定候选人中的获胜者。基本上,你已经得到了一个字符串列表。每个字符串代表一个候选人的名字。字符串出现在列表中的次数表示他获得的票数。
      • 到目前为止非常简单。使用地图(有序或无序)并计算它们的出现次数。出现次数最多的字符串(名称)为获胜者。
      • 但是,如果出现平局,我们该如何处理?当多个候选人获得相同数量的选票时,就会出现平局。
      • 我们为此讨论了多种策略。一个重要的策略是采用加权值(因此 C1(2,2,2,1) 将胜过 C2(2,2,1,1,1))。
      • 我使用了多种数据结构,如 map、unordered_map 等。面试官要求我安排这些数据结构,因为它们看起来很复杂。
      • 然后我创建了每个候选人的结构。我把candidate_name、winner (bool)、vector votes、totol_votes 作为它的属性。最后,我创建了一个vector,它极大地简化了实现。
      • 他们真正想要测试的是我如何处理这些问题。我如何调试它们(非常重要)。如何处理极端情况?如何让事情变得简单?一直在表达你真正想做的事情,而不是安静和编码。
        https://practice.geeksforgeeks.org/problems/winner-of-an-election-where-votes-are-represented-as-candidate-names-1587115621/1
  • 第二轮技术:
    • 这一轮由一名面试官组成,在 Zoom 上进行。
    • 这是 Hackerrank 上的一轮代码对。这是最长的,而且非常详尽。
    • 也可以细分为多个阶段:
      • 阶段1:
        • 项目讨论。我提到了多个涉及 REST API、AWS 服务(AWS API Gateway、AWS Lambda、AWS CloudWatch 等)的项目。 GraphQL、golang、MongoDB、NodeJS 等。
        • 花了0.5个多小时。重点是:
          • 这是什么意思?为什么你选择这个而不是其他人?
          • 有什么优点和缺点?您面临哪些技术挑战?
          • 例如:为什么是 REST API?有 REST 时为什么要使用 GraphQL?为什么去?为什么选择 AWS Lambda 而不是其他 AWS 服务? ETC
      • 阶段2:
        • 这是一个解决问题的回合。
        • 面试官对问题的要求不是很清楚,所以花了一些时间来理解问题。所以,我建议你通过反复询问澄清问题来理解问题。
        • 您将获得一个初始字符串。问题是在一长串字符串中为每个字符串找到最长的匹配前缀。
        • 我向他介绍了 KMP 算法,并讨论了其他不同的算法。但是,他很想知道我会使用什么数据结构
        • 终于我明白了。我们需要使用TRIE来获取每个字符串的前缀。实际上,我问了一个提示,他说不要担心内存,假设我们有很多内存可供使用。特里立刻在我的脑海中响起。
        • 他似乎很高兴我的回答。他没有告诉我实施 Trie。 (但应该始终为此做好准备)。
      • 第三阶段:
        • 在前两个阶段之后,他问我最喜欢的科目。
        • 我回答:算法、数据结构和操作系统。他告诉我,我们已经测试了你的算法和 ds 技能。让我们转到操作系统。
        • 关键是:我对操作系统非常感兴趣,并且从头到尾阅读了 Silberschatz。我想这就是我在这个阶段没有遇到太多困难的原因。
        • 问题:
          • 您作为 CS 工程师使用哪个操作系统?
            • Linux。 Ubuntu。
            • 为什么选择 Linux?告诉我有关 Linux 的信息。
              • Linux 是开源操作系统。它基于Monolithic内核架构,并使用采用RB树CFS调度算法。
            • 多个后续问题:
              • 单片 VS 微内核
              • 微内核示例
              • Windows 与 Linux
          • 进程和线程的区别?
          • 内核空间与用户空间?
          • 虚拟内存?
          • 交换?虚拟内存如何映射到物理内存?
          • 进程如何通信?共享内存和消息传递?
          • 设备驱动程序?
    • 面试原定为 1 小时,但进行了 1 小时 20 分钟或更长时间。但是,这很有趣,我喜欢和面试官讨论概念。
  • 人力资源回合:
    • 最后一轮是HR轮。
    • 我必须承认他是我见过的最酷的人。他介绍了自己,并让我也介绍一下。
    • 他的沟通技巧很棒,我们进行了非常好的双向对话。
    • 问题:
      • 总结您的工程之旅。
      • 你想改变你的大学的什么?
      • 你人生中最大的失败是什么?你是怎么克服的?你后悔吗?
      • 您的个人价值观如何与 Atlassian 保持一致?
      • 你喜欢在团队中扮演什么角色?
    • 我问面试官的问题:
      • Atlassian 与其他公司有何不同?
        • 他谈到的观点对我们非常有帮助和令人兴奋。
      • 我在 Atlassian 有哪些机会?
        • 有很多机会。
    • 这是一次了不起的经历。面试官非常冷静和理解。

我对 Atlassian 的体验到此结束。希望本文有助于了解 Atlassian 的面试流程。

祝一切顺利!!