第一轮:在线测评(HackerRank)
第二轮:低级设计(LLD)
题目背景:有不同类型的 Alexa 设备,有的带音频,有的带屏幕,有的同时带音频和屏幕。这些设备可能有电池,也可能没有。带电池的设备应有电池电量属性。无论是否带电池,设备都可以处于充电状态。
任务:实现一个 show 方法,如果设备有电池,则显示电池电量;如果没有,则显示“无电池”。同时,显示设备当前是否正在充电。show 方法应打印以下四种情况之一:
正在充电,且有电池 -> 打印“Charging, Battery: xx%”
正在充电,无电池 -> 打印“Charging, Battery not available”
没在充电,且有电池 -> 打印“Not charging, Battery: xx%”
没在充电,无电池 -> 打印“Not charging, Battery not available”
**要求:**使用接口驱动设计,采用合适的设计模式。
第三轮:数据结构与算法(DSA)
树的高度:
给定一个数组,每个索引代表一个节点,值为其父节点的索引(根节点为 -1)。
示例输入:[4, 3, 0, 6, 6, 3, -1, 0]
输出:4 (树的最大深度)
收银台客户排序问题:
商店只有一个收银台。每个顾客到达时间和商品数量不同,商品数量决定他们结账所需时间。
规则:
没有顾客时,收银台空闲;
有多个等待顾客时,先服务商品最少的;
商品数量相同则按到达时间先后;
一次只能服务一个顾客;
一位顾客服务完成后立即开始下一位。
输入:顾客总数 n,二维数组 customers[i] = [arrivalTimeᵢ, checkoutDurationᵢ]
输出:返回一个整数数组,表示服务顺序的顾客编号。
第四轮:Hiring Manager & 高级设计(HLD)
30分钟 Leadership Principle(领导力原则)问题:
涉及 Amazon 的行为面试,深入探讨过往经历。
30分钟高级设计:
一个用户最多可以有 10 台设备。某个设备执行“关闭灯”的操作后,需要将此操作同步到用户的所有其他设备上。
任务:设计一个同步服务,确保所有设备状态一致。
第五轮:Bar Raiser(终面) - DSA & Problem Solving
Crypto Numbers 问题:
给定两个整数 n 和 m,找出范围 [n, m] 内的所有“Crypto Numbers”。
**定义:**相邻数字的绝对差为 1。
示例:
makefile
复制
编辑
输入: n = 0, m = 15
输出: 0 1 2 3 4 5 6 7 8 9 10 12
输入: n = 20, m = 25
输出: 21 23
LeetCode 题目链接:Max Consecutive Ones III
面试体验:
每一轮都具有挑战性。Leadership Principles 的问题在每一轮都会涉及,对最终评估起着同等重要的作用。
结果:成功通过,录用