面灵AI→

网易互娱 AI 应用开发实习一面凉经

轮次
一面
结果
已挂
时间
2026-10
来源
牛客网

《面试题目》

Agent 项目

  1. 现场画出 Agent 的整体架构和工作流程图。
  2. 顺着流程图继续追问:内部运行流程是怎么设计的?

Python 并发

  1. Python GIL 锁是什么?
  2. 异步并发和同步并发有什么区别?

操作系统

  1. 进程和线程有什么区别?
  2. 僵尸进程是怎么产生的?

计算机网络

  1. 介绍一下 HTTPS 协议及相关原理。

推荐算法

  1. 微信推荐场景中的排序算法相关问题。

算法基础

  1. 快速排序的原理与实现。

Agent Memory

  1. Agent 中的长期记忆是怎么实现的?
  2. Memory 的遗忘机制应该怎么处理?

个人项目

  1. 简历中的个人项目具体是怎么实现的?

反问环节

  1. 反问环节。

《参考解析》

把 Agent 架构画成一条能讲 10 分钟的数据流。 面试要求现场画图,说明对方想验证的是你对自己系统的真实掌控,而不是概念复述。建议按「输入 → 编排 → 能力 → 记忆 → 输出 → 观测」六层来画:入口负责会话管理与意图澄清,编排层(Planner/Workflow)决定是单轮直答还是多步规划,能力层包含工具/函数调用、检索与外部系统对接,记忆层分成短期上下文与长期存储,输出层处理流式返回与格式化,横切的是日志、Trace、评测与成本控制。画的时候标出每一层的关键取舍:为什么用工作流而不是纯 ReAct、工具集怎么裁剪、上下文超限怎么截断、失败怎么重试与兜底。追问通常集中在「并发时同一会话怎么保证顺序」「工具报错模型怎么恢复」「多轮任务中间状态存在哪」,提前准备这三问的答案,基本能接住大部分追问。

GIL 与并发模型要讲清楚「为什么还有用」。 GIL 是 CPython 解释器里的一把全局互斥锁,保证同一时刻只有一个线程执行字节码,目的是简化内存管理与 C 扩展的线程安全。它不意味着多线程没价值:IO 等待(网络、磁盘、模型调用)时线程会释放 GIL,所以 IO 密集型任务用多线程仍能显著提升吞吐;CPU 密集型任务则需要多进程(每个进程独立解释器)或者把热点下沉到 C/Rust 扩展(如 NumPy 在计算时释放 GIL)。同步并发是「一个任务阻塞等待结果」,异步并发是「发起后立刻让出控制权、在事件循环里回调继续」,对应 asyncio + async/await,适合高并发 IO、单线程即可支撑大量连接,但要求整条链路都异步(一个同步阻塞调用就会卡住事件循环)。答题时把「IO 密集 → 协程/多线程,CPU 密集 → 多进程」这条选型判据摆出来,再补一句「GIL 是 CPython 的实现细节,不是 Python 语言规范」,会显得更扎实。

进程线程与僵尸进程:先给定义,再给产生条件与回收手段。 进程是资源分配的最小单位,拥有独立地址空间;线程是 CPU 调度的最小单位,共享进程内存,因此通信便宜但需要自己处理竞态(锁、原子操作)。僵尸进程指子进程已结束、但父进程没有调用 wait/waitpid 回收其退出状态,内核里仍保留一条 task 结构(状态 Z),占用进程表项。它的成因是父进程忘了回收或长期阻塞,危害是耗尽 pid 资源;处理方式有:父进程显式 wait、用 signal(SIGCHLD) 处理或在父进程里忽略 SIGCHLD(注意这会改变 wait 语义)、以及让 init/systemd 接管孤儿进程。面试里常顺着问「孤儿进程和僵尸进程的区别」(孤儿是父进程先死、被 init 收养,不会留下僵尸),这两个概念成对出现,最好一起讲。

HTTPS 的答题骨架是「握手换密钥 + 证书防中间人 + 对称加密传数据」。 非对称加密(RSA/ECDHE)慢,只用来在握手阶段协商出一个会话密钥,之后的数据用对称加密(AES-GCM/ChaCha20)传输,兼顾安全与性能。身份认证靠证书链:服务器出示由 CA 签名的证书,客户端用内置根证书逐级验签,并校验证书域名、有效期与吊销状态(CRL/OCSP),这一步防的是中间人冒充。TLS 1.2 的握手大致是 ClientHello(含随机数、密码套件)→ ServerHello + 证书 → 密钥交换 → Finished;TLS 1.3 把往返压缩到 1-RTT 并支持 0-RTT 会话恢复。追问方向一般是「为什么不用纯非对称」「证书怎么验证」「HTTPS 能否防重放」,回答里带上随机数、时间戳与 AEAD 就够了。

Agent Memory:长期记忆的关键是「写什么、怎么取、怎么忘」。 长期记忆通常由三层构成:原始交互日志(可用于回溯与再加工)、结构化画像/事实(用户偏好、项目背景,写成键值或三元组便于精确命中)、以及向量化的经验片段(检索式记忆)。写入策略上要做重要性与新颖度判断,避免把每轮闲聊都落库;检索上常用「向量召回 + 关键词/时间过滤 + 重排」,并把召回结果压进有限的上下文预算。遗忘机制不是简单删除,而是分层处理:按 TTL 过期、按访问频率与时间做衰减(如指数衰减或 Ebbinghaus 式遗忘曲线)、把多条细节合并成摘要(summary 覆盖原文)、对相互冲突的事实以时间较新者为准并保留修订记录。还要考虑隐私与合规(可删除、可导出)与一致性(记忆写入失败不能影响主流程)。

推荐排序与快速排序:一个是业务理解,一个是代码基本功。 微信推荐场景的排序通常可以按「召回 → 粗排 → 精排 → 重排」四段来讲,精排多用多目标模型(点击、时长、互动、负反馈)加权融合,重排处理多样性、打散、频控与冷启动;面试官常追问「多目标怎么融合」「新内容怎么冷启动」「负反馈怎么处理」,答不上细节时把框架与权衡讲清楚也可以得分。快速排序要能默写并解释:选基准、分区(Hoare/Lomuto)、递归处理两侧,平均 O(n log n)、最坏 O(n²),通过随机基准或三数取中避免有序输入退化,原地排序但不稳定;再补一句小数组切换插入排序、三路分区处理大量重复元素的优化。这场整体反馈是「工程基础与项目实现问得深、不只考概念」,复盘建议是把简历里的 Agent 项目练到能白板画图并解释每个模块的取舍,同时把 Python 并发、操作系统、网络、算法这四块基础至少各过一遍高频题。