Apple 2025 Fall SDE/SWE 面试真题复盘

108次閱讀

这次帮同学复盘了一下 Apple 的两轮纯 Coding,整体节奏挺快的,题目虽然都是常规套路,但考察的都是“写代码 → 推思路 → 抗追问能力”这一整套链路。下面我把两轮的题目、关键思路、以及面试官追问方向都整理出来,大家刷题/准备时可以对照下重点。

Apple 2025 Fall SDE/SWE 面试真题复盘

第 1 轮|Subarray Sum Equals K

面试官给的题很直接:
给定数组 nums 和整数 k,找出所有和恰好等于 k 的连续子数组数量。

思路拆解

这题最容易犯的错误就是想用 sliding window。但只要数组里有负数或 0,窗口法就直接不可用。所以真正稳定的解法只有一个:

前缀和 + 哈希表

  1. 遍历数组,维护当前前缀和 sum
  2. 如果之前出现过 prefix = sum – k,则说明从 prefix 的位置到当前的这段子数组和为 k
  3. 哈希表记录每个前缀和出现过几次
  4. 初始化 {0:1},代表“从头到当前位置正好等于 k”也能计数

一句话:前缀和负责定位,哈希表负责统计数量。

代码示例(Python)

def subarray_sum(nums, k):
    from collections import defaultdict
    cnt = defaultdict(int)
    cnt[0] = 1
    s = 0
    ans = 0
    for x in nums:
        s += x
        ans += cnt[s - k]
        cnt[s] += 1
    return ans

复杂度

时间 O(n),空间 O(n)

面试官追问

1)负数或 0 会不会影响你这个算法?

不会影响前缀和方案,但会让 sliding window 彻底失效。能把这个点讲清楚,面试官会直接认可你对问题结构的理解。

2)空间能不能优化?

如果题目要求“统计数量”,基本无法从 O(n) 降下来。
如果只是“判断是否存在某个子数组和为 k”,那可以用集合,但不适合计数。

3)为什么哈希表中存的是“前缀和出现次数”?

因为不同前缀位置都可能构成一个新的子数组,所以要统计出现次数,而不是只记录有没有出现。

第 2 轮|二叉树中序遍历迭代器

题目要求设计一个中序遍历的迭代器,不能提前把整棵树遍历完,必须是惰性的。

思路拆解

这题本质是在考你能不能把“递归中序遍历的过程”改成“显式栈 + 惰性逻辑”。

核心做法:维护一条从当前节点往左走到底的路径

初始化:把根节点一路往左的节点全部入栈
next():

  1. 弹栈
  2. 如果有右子树,把右子树一路往左 push 进栈
  3. 返回当前节点的值

代码示例(Python)

class InorderIterator:
    def __init__(self, root):
        self.st = []
        self._push_left(root)

    def _push_left(self, node):
        while node:
            self.st.append(node)
            node = node.left

    def hasNext(self):
        return bool(self.st)

    def next(self):
        node = self.st.pop()
        if node.right:
            self._push_left(node.right)
        return node.val

复杂度

next() 均摊 O(1)
空间 O(h)

面试官追问方向

1)多个迭代器同时访问同一棵树会不会有问题?

  • 如果树是只读的(面试一般默认只读),多个迭代器各自维护自己的栈,没有问题
  • 如果树会被写,需要加:
    • 版本号(fail-fast)
    • 读写锁
    • 或 snapshot 策略
      能把优缺点说明白即可

2)如果树退化成链表,会不会很耗空间?

会,但这是中序遍历的下界,不可避免。只要你能解释“为什么无法减少空间”,面试官就不会继续深挖。

3)跟递归中序遍历相比,有什么改进?

递归不是惰性的,而且有系统栈限制;迭代器是可控空间,按需访问。

为什么选择 ProgramHelp?你的 Offer,我们来保驾护航。

我们是精英团队的“代言人”:

  • Elite Background: 团队由来自 Google、Meta、Amazon 的前资深工程师、以及 CMU、Stanford、清华、北大 校友组成。
  • 绝对掌控力: 我们拥有北美 CS/Quant/Data 市场最新的题库,对各大公司的面试风格和 Gating Factor 了如指掌。

拒绝廉价低端,我们提供的是 High-End 解决方案:

服务项目 市场平均水准(低端) ProgramHelp.net (High-End / 零风险)
OA 辅助 (CodeSignal/HackerRank) 脚本/廉价枪手;代码风格差;查重风险高 真人实时原创代码;过查重;保你 All Cases Passed
VO 辅助 延迟高;沟通障碍;被发现风险大 无延迟实时屏幕/语音辅助;配合默契;教你 “Think Aloud” 完美应付面试官
ROI 浪费 $500,Offer 仍然不稳 投资 $400+/小时,换取 $180k+ 的北美高薪 Offer
author avatar
Alex Ma Staff Software Engineer
目前就职于Google,10余年开发经验,目前担任Senior Solution Architect职位,北大计算机本硕,擅长各种算法、Java、C++等编程语言。在学校期间多次参加ACM、天池大数据等多项比赛,拥有多项顶级paper、专利等。
正文完