一、数据结构与算法 (Data Structures & Algorithms) 数组与字符串 (Arrays & Strings) 给你一个整数数组 nums 和一个整数 k,请你返回该数组中和为 k 的连续子数组的个数。 给定一个字符串 s,请你找出其中不含有重复字符的 最长子串 的长度。 旋转图像:给定一个 n×n 的二维矩阵表示一个图像。请你将图像顺时针旋转 90 度。 最小覆盖子串:给你一个字符串 s、一个字符串 t。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""。 三数之和:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0。请你找出所有和为 0 且不重复的三元组。 链表 (Linked Lists) 反转链表:反转一个单链表。 合并两个有序链表:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 删除链表的倒数第 N 个结点:给你一个链表的头结点 head,请你删除链表的倒数第 n 个结点,并且返回链表的头结点。 环形链表 II:给定一个链表的头结点 head,返回链表开始入环的第一个结点。 如果链表无环,则返回 null。 两数相加:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个新链表。 树与图 (Trees & Graphs) 二叉树的最大深度:给定一个二叉树,找出其最大深度。 翻转二叉树:翻转一棵二叉树。 路径总和 III:给定一个二叉树的根结点 root 和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径的数目。 最小生成树(例如 Kruskal 或 Prim 算法的应用场景和思路)。 岛屿数量:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 堆 (Heaps) 前 K 个高频元素:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 数据流的中位数:如何高效地维护一个数据流,并随时查询其中位数? 哈希表 (Hash Tables) 两数之和:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那 两个 整数,并返回它们的数组下标。 有效的字母异位词:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 排序与搜索 (Sorting & Searching) 搜索旋转排序数组:整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在某一未知索引 k 处进行了旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], ..., nums[k-1]]。给定旋转后的数组 nums 和一个整数 target,如果 nums 中存在 target,则返回它的索引,否则返回 -1。 合并区间:以数组 intervals 表示若干个区间。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组中的每个区间都恰好覆盖输入中的一个区间。 动态规划 (Dynamic Programming) 爬楼梯:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 最长公共子序列:给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。 打家劫舍:你是一个专业的强盗,计划偷窃沿街的房屋。每间房屋都存放着特定金额的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统就会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 能偷窃到的最高金额。 零钱兑换:给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 二、系统设计 (System Design) 如何设计一个 URL 短链服务(如 Bitly)? 如何设计一个分布式文件存储系统(如 S3)? 如何设计一个高可用的消息队列系统(如 Kafka)? 如何设计一个限流系统? 如何设计一个实时排行榜系统? 如何设计一个支持百万并发用户的聊天系统? 如何设计一个新闻订阅/推送系统? 如何设计一个推荐系统(如亚马逊商品推荐)? 如何设计一个分布式唯一 ID 生成器? 如何设计一个高性能的搜索服务? 如何处理大规模数据的高效排序? 如何在分布式系统中实现数据一致性? 如何设计一个负载均衡器? 如何监控大规模分布式系统的健康状况? 如何进行数据库分库分表(Sharding)? 三、行为面试 (Behavioral Interview) 这些问题通常基于亚马逊的 领导力原则 (Leadership Principles)。回答时请使用 STAR 原则(Situation, Task, Action, Result)。 客户至上 (Customer Obsession): 请举例说明你曾经为了满足客户需求,超越预期的情况。 主人翁精神 (Ownership): 请描述一次你承担了超出职责范围的任务,并确保其成功完成的经历。 创新简化 (Invent and Simplify): 请描述一个你发现并简化了现有流程或技术,从而带来显著改进的案例。 正确决策 (Are Right, A Lot): 你是如何做出一个重要决策的?当你的决策被证明是错误的时候,你是如何处理的? 学习与好奇 (Learn and Be Curious): 请谈谈你最近学习的新技术或新领域,并说明你将如何应用它。 招贤纳才,培养人才 (Hire and Develop the Best): 你是如何帮助团队成员提升技能或成长的? 坚持最高标准 (Insist on the Highest Standards): 请描述一次你拒绝接受低质量成果,并坚持达到更高标准的经历。 远见卓识 (Think Big): 请描述一个你设定了大胆目标,并努力实现它的经历。 崇尚行动 (Bias for Action): 请描述一次你在信息不完整的情况下,果断采取行动并取得成果的经历。 勤俭节约 (Frugality): 请举例说明你如何在工作中考虑到成本效益。