Skip to content
🔗 分享本题
查看我的学习进度 →

AI白板编程从澄清边界到主链路可靠性取舍和测试的作答流程图解

🧠 图解记忆: 先确认输入输出和边界,再画接口与数据流、写最小主链路,最后用超时、重试、回退和测试体现工程深度。

💡 答案要点

AI 应用工程师白板题的特点:

传统 SDE 白板题AI 应用工程师白板题
链表/树/图LLM 调用 / Prompt 设计
算法复杂度RAG 流程设计 / Agent 架构
手工实现用 API 或框架组合
一次性写对边想边调 + 分析 tradeoff

高频题型:

题1:实现一个 LLM 包装器(类设计)

"请设计一个 LLM 调用类,支持:
- 自动重试(指数退避)
- 超时处理
- 流式输出
- 回退策略(GPT-4 失败 → DeepSeek V4-Flash)"

参考答案框架:

python
class LLMClient:
    def __init__(self, providers: list, fallback_order: list):
        self.providers = providers
        self.fallback_order = fallback_order
    
    async def generate(self, prompt, stream=False, timeout=30):
        for provider in self.fallback_order:
            try:
                return await self._call_with_timeout(provider, prompt, stream, timeout)
            except Exception as e:
                continue
        raise AllProvidersFailedError()
    
    async def _call_with_timeout(self, provider, prompt, stream, timeout):
        # 实现超时控制
        pass

题2:设计一个 RAG 检索流程

"请设计一个 RAG 系统,包含:
- 文档切分
- 向量嵌入
- 检索
- 重排
- 生成"

参考答案框架:

python
def rag_pipeline(query: str, top_k: int = 5):
    # 1. 查询改写
    rewritten_query = query_rewrite(query)
    
    # 2. 向量检索
    query_emb = embedding_model.encode(rewritten_query)
    initial_results = vector_db.search(query_emb, k=top_k*2)
    
    # 3. 重排
    reranked = cross_encoder.rerank(query, initial_results, top_k)
    
    # 4. 生成
    context = format_context(reranked)
    answer = llm.generate(f"上下文:{context}\n问题:{query}")
    
    return answer

题3:设计一个 Agent 循环

"请用 ReAct 模式实现一个 Agent,支持:
- Thought/Action/Observation 循环
- 最大循环次数限制
- 工具调用"

准备策略:

步骤内容
1刷完 LLM API 调用题(OpenAI SDK / LangChain)
2默写 RAG 流程(从 chunk 到 answer)
3实现一个最小化 Agent(ReAct Loop)
4练习 Tradeoff 分析(为什么选这个方案)

面试话术:

"AI 应用的白板题和传统 SDE 不一样,重点不是算法复杂度,而是系统设计和 API 组合能力。我会先确认需求边界(要不要流式?要不要缓存?),然后画架构图,再写核心代码,最后分析 tradeoff。边想边说是关键,不要等想完美了才开始写。"