2025-2026 Duolingo 多邻国 SDE 最新面经:OA + Karat + VO 全流程解析 | 代面辅导

综合多位候选人 2025-2026 年 Duolingo SDE Recent Grad / NG 面试经历,整理从 OA 到 VO 的完整流程、真题解析及过面技巧。

Duolingo 面试全流程

一、面试流程总览

Duolingo SDE 的面试链路清晰,主要分三个阶段:

阶段 形式 时长 内容
CodeSignal OA 在线编程 ~90min General Coding,可分享代码,不开摄像头
Karat 视频面试 真人视频 ~45min 3 道简答 + 1 道 Coding
Virtual Onsite (VO) 多轮视频 4-5h Pair Coding / Code Review / Whiteboard / Coffee Chat

时间线参考:OA → 约一周后 Karat → 通过后约两周 VO → HR 反馈后出结果(通常 1-2 周,但有多位候选人反映 HR ghost 后第三周才发拒信)。


二、CodeSignal OA

  • 形式:CodeSignal General Coding 测评
  • 宽松度:极高 —— 可以分享做过的 OA、不用开摄像头、似乎没有网页检测
  • 难度:中等,General Coding 题型以中等算法为主

💡 Tip:Duolingo 的 OA 是整个流程中最宽松的一环,好好准备 General Coding 题库即可。


三、Karat 视频面试

Karat 是 Duolingo 的核心筛选环节,包含 3 道简答题 + 1 道 Coding

简答题(Behavioral)

简答题与 Duolingo 常见题库一致,建议准备:

  • 冲突解决 / 团队协作场景
  • 技术决策 / 架构权衡
  • 个人成长 / 学习能力

⚠️ 重要信息:Karat 官方邮件和面试官都表示可以对第一次不满意的话在 24h 内重新约,两次结果一起发给 Duolingo。但有候选人反馈 Karat 工作人员称是 Duolingo HR 要求不给第二次机会。建议认真对待每一轮,不要依赖"第二次机会"。

Coding 真题:麻将手牌验证

这是 Karat 中一道较新的 Coding 题:

题目描述

一副包含 1-9 的麻将手牌(字符串形式),如 "11123456",要求判断手牌是否合规。

合规规则:

  1. 必须包含一组且仅一组"将"(两张相同的牌,如 11
  2. 剩余牌可组成任意多组顺子(连续三张,如 123)和刻子(相同三张,如 111

共 15 个测试用例,无 hidden test case。

解题思路:回溯法(Backtracking)

def is_valid_mahjong(hand: str) -> bool:
    """判断麻将手牌是否合规"""
    counts = [0] * 10  # 1-9 的计数
    for ch in hand:
        counts[int(ch)] += 1
    
    n = len(hand)
    if n % 3 != 2:  # 合法手牌长度必须满足 3k+2
        return False
    
    def backtrack(start):
        # 基础情况:所有牌已用完
        if all(c == 0 for c in counts):
            return True
        
        # 找到第一个有剩余的非零牌
        i = start
        while i <= 9 and counts[i] == 0:
            i += 1
        if i > 9:
            return False
        
        # 尝试刻子 (triplet)
        if counts[i] >= 3:
            counts[i] -= 3
            if backtrack(i):
                return True
            counts[i] += 3
        
        # 尝试顺子 (sequence)
        if i <= 7 and counts[i+1] > 0 and counts[i+2] > 0:
            counts[i] -= 1
            counts[i+1] -= 1
            counts[i+2] -= 1
            if backtrack(i):
                return True
            counts[i] += 1
            counts[i+1] += 1
            counts[i+2] += 1
        
        return False
    
    # 枚举每一对作为"将"
    for pair in range(1, 10):
        if counts[pair] >= 2:
            counts[pair] -= 2
            if backtrack(pair):
                counts[pair] += 2
                return True
            counts[pair] += 2
    
    return False

复杂度分析

  • 时间:,枚举将牌 ,回溯分支最多 2 种(刻子/顺子)
  • 空间: 递归深度

💡 关键坑点:一定要包含一组且仅一组将。有 2 个测试用例专门考察这一点 —— 比如 "111111" 虽然全是刻子但没有将牌,应返回 False

麻将手牌回溯算法

🎯 Duolingo Karat 偏好:多位候选人反映 Duolingo 非常喜欢考 Backtracking 题型,建议重点准备排列组合、子集枚举、回溯搜索类题目。


四、Virtual Onsite (VO) 全流程

VO 总时长约 4-5 小时,分 5 个环节,每轮开始都有简单的双方自我介绍,没有拷打简历环节。可选语言为 Python 和 Java。

Round 1: HR Welcome Session(15min)

  • 介绍 timeline 和面试流程
  • HR 会特别关注 GPA —— 有候选人反馈 HR 主动询问 GPA,说明 Duolingo 可能比较看重学历背景
  • 建议准备几个自己的问题

Round 2: Pair Coding(75min)⭐ 核心轮

形式:VSCode Live Share,面试官在其前端网页实时查看你的代码运行结果。

真题

给一句英文句子,每个单词有多个可选的西语翻译(称作 "hints")。要求按以下规则对 hints 排序:

  1. Step 1:按字典序排序
  2. Step 2:给定整句的最佳翻译和可选翻译,据此生成 hints 的优先级并重新排序
from collections import defaultdict

def sort_translation_hints(sentence: str, hints: dict, best_translation: str) -> dict:
    """
    sentence: 英文原句
    hints: {word: [hint1, hint2, ...]} 每个单词的可选翻译
    best_translation: 最佳西语翻译
    """
    result = {}
    best_words = best_translation.split()
    
    for i, word in enumerate(sentence.split()):
        word_hints = hints.get(word, [])
        best_hint = best_words[i] if i < len(best_words) else None
        
        # Step 1: 字典序排序
        sorted_hints = sorted(word_hints)
        
        # Step 2: 最佳翻译优先
        if best_hint and best_hint in sorted_hints:
            # 将最佳翻译移到第一位
            sorted_hints.remove(best_hint)
            sorted_hints.insert(0, best_hint)
        
        result[word] = sorted_hints
    
    return result

⚠️ 极其重要的 Tip:一定要非常注意标点符号的处理!多位候选人提到这道题中标点符号(逗号、句号、感叹号等)是容易出错的地方。建议和面试官充分 clarify 细节。

Round 3: Code Review(1h)

形式:不需要写代码,只需在代码旁加 comments。

真题

Review 两个函数,功能是 filter 用户在给定时间段内上过的课程。需要阅读的代码行数和文件不多,理解 context 约 5-10 分钟。

考察点

  • Bug 识别(多位候选人表示光是找 bug 就快用完时间)
  • 改进 / 重构建议
  • 至少需要找出 bug 并提出一些 High-Level 的 refactor 建议

💡 好消息:虽然是 "Backend Code Review",但不需要任何 Backend 知识。重点在于代码阅读能力和 review 方法论。

Round 4: Whiteboard(1h)⭐ 核心轮

真题:LeetCode 329 最长上升路径的变种 —— 最长下降路径(Longest Decreasing Path in a Matrix)。

题目:给定一个 整数矩阵,找出最长严格下降路径的长度。可以从任一单元格开始,向上下左右四个方向移动。

def longest_decreasing_path(matrix: list[list[int]]) -> int:
    if not matrix or not matrix[0]:
        return 0
    
    m, n = len(matrix), len(matrix[0])
    memo = {}
    
    def dfs(r, c):
        if (r, c) in memo:
            return memo[(r, c)]
        
        max_len = 1
        for dr, dc in [(-1,0), (1,0), (0,-1), (0,1)]:
            nr, nc = r + dr, c + dc
            if 0 <= nr < m and 0 <= nc < n and matrix[nr][nc] < matrix[r][c]:
                max_len = max(max_len, 1 + dfs(nr, nc))
        
        memo[(r, c)] = max_len
        return max_len
    
    return max(dfs(r, c) for r in range(m) for c in range(n))

复杂度

  • 时间:,每个单元格只计算一次
  • 空间:,memo 表 + 递归栈

Follow Up 1:输出最长路径本身(而非仅长度)

解法:对每个点额外记录从该点出发的最长路径方向(上下左右),最后根据记录的方向遍历矩阵即可重建路径。

Follow Up 2:有 次机会可以忽略高度限制,从一个点跳到任意相邻点

解法:DFS 过程中加入参数 ,扩展 memo 维度为 memo[r][c][k],记录剩余次数为 时从 出发的最长路径长度。复杂度变为 。

最长下降路径算法

Round 5: Coffee Chat(15min)

与入职不久的 SWE 闲聊。建议多准备几个问题,不然很快就没话说了。可以问:

  • 团队日常 workflow
  • 技术栈和代码规范
  • 新人 onboarding 体验
  • 公司对 Recent Grad 的成长支持

五、Duolingo 面试经验总结

通过技巧

  1. Karat 重点练 Backtracking:Duolingo Karat 非常偏好回溯类题目
  2. Pair Coding 注意标点符号:这是最容易翻车的地方
  3. Code Review 找 Bug + 提 Refactor:不要只找 bug,high-level 重构建议同样重要
  4. Whiteboard 准备 DFS/Memo 经典题:矩阵路径问题是高频考点
  5. 充分 Clarify:每轮留 10 分钟问答,善用这个时间

注意事项

  • Duolingo 面试基本都是原题,难度和区分度不高,刷面经效果显著
  • 有候选人反映 Duolingo 会根据学校背景筛选,即使 VO 面完也可能因学校被拒
  • 多人反映感觉面得很好但最终被拒,Duolingo 的 bar 比较玄学,不必因被拒而自我怀疑
  • HR 可能 ghost 消息,出结果时间不确定,保持耐心

六、Duolingo 代面 / 辅导服务

Duolingo SDE 面试流程相对固定,题目复用率高,是可以通过充分准备高效通过的。我们的代面团队有多位 Duolingo VO 成功通过经验,覆盖 Pair Coding、Code Review、Whiteboard 各轮。

如果你正在准备 Duolingo 面试或希望获得一站式代面服务,欢迎联系我们 👉 点击咨询

我们也提供

  • Duolingo OA 代做 | Karat 代面 | VO 代面
  • 简历修改 | 面试辅导 | 一对一模拟面试
  • 更多公司面经:浏览博客
Next
Next

2026 eBay 电面 Coding 面经:数组平衡和 + 二叉树子树计数 | 代面辅导