📌  相关文章
📜  亚航高级移动应用程序开发人员面试经验(Android)

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

我参加了 2019 年 11 月 14 日的 AirAsia – Senior Mobile Developers 职位面试。这个职位总共有五轮,每一轮都太具有挑战性。这些回合是

第 1 轮(与 Lead Tech Recruiter 讨论 15 分钟) :这一轮是候选人与 Lead Tech Recruiter 之间的一对一讨论,此轮可以通过 Skype 或电话交谈进行。

期望:

  • 应聘者对这个职位和公司了解多少。
  • 候选人目前在做什么以及他在这个职位上有多少经验。
  • 了解 Kotlin 和 Android 开发的总体工作经验。
  • 下一轮候选人的可用性
  • 为什么候选人有兴趣加入这家公司以及寻找新工作的原因。

第 2 轮(Android 评估,1 周):在这一轮中 Lead Tech Recruiter 将提供一个 android 技术任务,候选人必须在给定的时间内完成此任务,并需要在 GitHub / bitbucket 等上提交。

期望:

  • 你的算法、你应用的使应用程序更快的技术等有多好?
  • 可扩展性
  • 可测试性
  • 设计模式
  • 可演示代码
  • 明确的关注点分离(良好的类设计)
  • 功能正确性和完整性
  • 可读性
  • 模块化和可扩展性
  • 异常处理

背景: X公司所有工程师轮流支持业务,每次半天。目前,生成一个显示轮到谁来支持业务的时间表是手动完成的,我们需要自动化!

任务:你的任务是设计和建造一个在线的“命运之轮”。这应该重复随机选择两名工程师,分别完成半天的支持(轮班),最终生成一个时间表,显示轮到谁来支持业务。

从返回以下响应的 API 中获取工程师列表:

{
 "engineers": [
   {
     "id": 0,
     "name": "Bogdan"
   },
   {
     "id": 1,
     "name": "Nic"
   },
   {
     "id": 2,
     "name": "Tung"
   },
   {
     "id": 3,
     "name": "Gautam"
   },
   {
     "id": 4,
     "name": "Bala"
   },
   {
     "id": 5,
     "name": "Nazih"
   },
   {
     "id": 6,
     "name": "Huteri"
   },
   {
     "id": 7,
     "name": "Aldy"
   },
   {
     "id": 8,
     "name": "Ankur"
   },
   {
     "id": 9,
     "name": "Chinh"
   }
 ]
}  

(*) 您应该能够通过 Apiary 等服务创建模拟 API 或在云中的某处创建您自己的 API

假设:您可以假设 X 公司有 10 名工程师。您可以假设计划将跨越两周并从下一周的第一个工作日开始。

规则:目前有4条规则:

  • 每天只有两个支持班次,一个白班,一个夜班。
  • 一个工程师一天最多只能做一个班次。
  • 一个工程师在任何连续的日子里不能有一个以上的班次。
  • 每个工程师应该在任何 2 周内完成 2 个支持班次。

重要的提示:

  • 这些规则在未来可能会发生变化,因此请确保您的设计具有足够的灵活性和可扩展性,以便能够添加新规则。
  • 所有代码都必须附有发行说明,其中包括对构建中使用的任何资源、工具或框架的引用。
  • 代码不得包含任何专有的第三方代码或组件。
  • 开发商不能就任何提交的材料向亚航提出任何永久权利

可交付成果:根据本文档中描述的工作范围,使用提供的格式的 API(您应该使用 Apiary 之类的服务自行模拟或自行构建 API),提供一个功能性移动应用程序(连同 git 中的源代码)在 AWS 中),在给定的时间内完成作业。

该应用程序具有 UI 来显示提取的工程师列表和开发算法生成的时间表。 UX/UI 由您决定;但是,应包括以下两个屏幕:

  • 工程师列表屏幕:显示提取的工程师列表的屏幕,在 UI 的某处带有“生成时间表”按钮。单击“生成计划”按钮应导航到计划屏幕。
  • 时间表屏幕:显示生成的时间表的屏幕。用户应该能够通过单击后退按钮导航回工程师的列表屏幕

非功能性需求:代码质量最重要。请向我们展示代码质量对您意味着什么。您做的越多,您就越能拥有我们的服务。我们将具体看以下几个因素:

  • 性能——你的算法有多好,你应用的技术如何使应用程序更快,等等。
  • 可扩展性
  • 可测试性
  • 可读性
  • 设计模式

第三轮(HR 30min):第三轮是人力资源轮,讨论薪资和一些技术问题等。

第 4 轮(CEO 30 分钟):最后一轮是 CEO 或公司的任何更高权力机构与候选人讨论未来计划,以及候选人如何为公司带来好处。