算法工程师 · AI 面经(含回答思路

算法工程师岗考察:传统 ML 基础 + 推荐 / 搜索 / NLP / CV 业务方向 + 项目落地能力。

牛客 AI Coding笔试挑战杯

1、传统机器学习 / NLP

  • 分词 / NER 的常见算法
    • 思路:分词: HMM/CRF/BiLSTM-CRF/BERT;NER: 序列标注同上 + 大模型 ICL 直接抽取。
  • 分类 / 回归的区别
    • 思路:离散标签 vs 连续值;损失不同(交叉熵 vs MSE);评估指标不同(F1 vs MAE/MSE)。
  • 过拟合的原因和解决
    • 思路:模型容量过大/数据少/训太久;解决: 正则化 + Dropout + 早停 + 数据增强 + 简化模型。
  • 特征工程在大模型时代还重要吗
    • 思路:通用 NLP 场景下降;垂直/小数据/结构化数据仍然关键。大模型 + Prompt 替代了大部分手工特征。
  • F1 / Precision / Recall 的关系
    • 思路:P=TP/(TP+FP), R=TP/(TP+FN), F1=2PR/(P+R) 调和平均;类别不均衡看 F1 比 Accuracy 准。
  • 混淆矩阵的四个值
    • 思路:TP(真正)/FN(假负)/FP(假正)/TN(真负);所有评估指标的基础。
  • XGBoost / LightGBM 区别
    • 思路:都是 GBDT;LGBM 用直方图 + Leaf-wise 生长,更快内存少;XGB 稳定久经考验。
  • 监督 / 无监督 / 强化学习的区别
    • 思路:有标签学(分类回归) / 无标签找结构(聚类降维) / 奖励信号学策略(游戏机器人)。
  • K-Means 的原理和适用场景
    • 思路:随机 K 个中心 → 分配点 → 更新中心 → 迭代收敛;适合凸形簇 + 数值特征 + 已知 K;先归一化,K 用肘部/Silhouette 定。

2、项目深挖 / 简历

  • 介绍一下你做过的最有挑战的 AI 项目
    • 思路:选 1 个有 AI 含量(不是套壳)、有指标、有踩坑的项目;按「业务背景→技术方案→关键难点→指标」4 段讲,控制 2-3 分钟。
  • 这个项目的核心难点是什么
    • 思路:抓「非确定性」难点(评估难/数据难/对齐难/部署难),不要泛泛说「工程量大」。
  • 选型为什么是这个方案?对比过哪些
    • 思路:至少列 2 个候选方案 + 比较维度(成本/性能/可维护性/数据需求),证明做过 trade-off。
  • 项目踩了哪些坑?怎么解决的
    • 思路:选 2-3 个具体坑(幻觉/召回低/推理慢/上下文超长),每个讲「现象→根因→方案→效果」。
  • 关键指标有哪些?北极星指标是什么
    • 思路:北极星 = 真实业务指标(留存/转化/任务完成率),配代理指标(召回率/CTR);两者要能解释因果。
  • 上线后效果怎么衡量
    • 思路:A/B 实验 + 离线指标 + 用户反馈三件套;不要只说「反馈好」,要给数。
  • 如果重做你会怎么做
    • 思路:体现学习能力;选 1-2 个「现在视角看会做不同」的点(技术选型/数据策略)。
  • 你在团队里的角色是什么
    • 思路:STAR 法说清「我具体做了什么、对成果有什么影响」,别说「参与」。
  • 和业务方怎么对齐的
    • 思路:PRD → 关键指标对齐 → 双周 demo → 灰度;强调「提前对齐预期避免上线后扯皮」。
  • 项目最后真的上线了吗
    • 思路:诚实回答;没上线就讲「为什么没上线 + 学到什么」,别硬撑。
  • 项目中怎么用的?
    • 思路:结合自己项目场景讲具体用法 + 量化效果(降本/提效/指标变化)。

3、大模型基础 / 架构

  • Transformer 的核心组件
    • 思路:Self-Attention + FFN + LayerNorm + Residual + Positional Encoding;多头并行 + 残差归一化是关键。
  • 自注意力机制详解
    • 思路:Q/K/V 三个线性投影,attention=softmax(QK^T/√d)·V;O(n²) 复杂度,多头并行学不同 subspace。
  • RoPE 是什么?和绝对位置编码比有什么优势
    • 思路:Rotary Position Embedding,把位置以旋转方式编码到 Q/K;支持长度外推 + 相对位置感知。
  • MoE 的原理和优势
    • 思路:多专家 + 路由(gating)按 token 选 top-K 专家;激活参数少→推理便宜,总参数大→能力强。
  • GQA / MHA / MQA 的区别
    • 思路:MHA 每头独立 KV;MQA 所有头共用 1 组 KV(省显存);GQA 折中分组共享。Llama2 起 GQA 主流。
  • LayerNorm / RMSNorm 区别
    • 思路:LN 减均值除标准差;RMSNorm 只除 RMS 不减均值,计算少 + 效果接近,Llama/PaLM 采用。
  • 预训练 / 后训练 的区别
    • 思路:预训练学语言+世界知识(无监督);后训练学指令遵循+安全(SFT/RLHF/DPO)。能力上限看预训练,可用性看后训练。
  • Decoder-only 为什么成主流
    • 思路:见上 Decoder-only 主流原因。
  • 涌现能力是什么
    • 思路:模型规模到一定阈值后突然出现的能力(ICL/CoT/多步推理);小模型上完全没有。
  • 弱 AI vs 强 AI 的区别
    • 思路:弱 AI=专用任务(现在所有 AI 都是);强 AI=AGI 通用智力,目前不存在。
  • 为何现在的大模型大部分是 Decoder-only 结构?
    • 思路:训练简单(单向)、推理统一(自回归)、scaling law 友好、能用同一架构做多任务。
  • Encoder 编码器与 Decoder 掩码有什么区别?
    • 思路:Encoder 双向看全文;Decoder 用 causal mask 只看前面 token,保证自回归性质。
  • 为什么要进行 LN(LayerNorm)?
    • 思路:稳定训练 + 加速收敛;Transformer 用 LN 不用 BN 是因为序列长度可变 + 跨样本统计无意义。

4、RAG / 检索

  • 介绍一下 RAG 的整体流程
    • 思路:Query → 改写(可选) → Embed → 检索(向量+BM25 混合) → Rerank → 组装 context → LLM 生成。强调「检索是为生成服务」。
  • RAG 解决了大模型的什么核心问题
    • 思路:幻觉、知识过时、私有数据无法访问;本质是把「事实」从模型权重里拆出来变成可更新的外部知识。
  • 文档切片粒度怎么定?切大切小各有什么风险
    • 思路:太大→噪声多+context 浪费;太小→语义不全。500-

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AIcoding笔试挑战杯福利 文章被收录于专栏

第一届牛客AI Coding笔试挑战被,报名+完赛选手即可获得 内包含以下福利: * 校招投递时间表 * 网申助手插件 * 简历模板包 * 各公司秋招笔试真题 * AI面经题库 * 本地终端部署 AI 教程

全部评论
算法面ml推荐nlp都得碰,蹲思路
点赞 回复 分享
发布于 06-04 18:17 北京

相关推荐

06-02 17:53
东北大学 Java
1. 自我介绍2. 线程池有哪些常见参数3. RPC 调用情况下你会使用怎么配置线程池?1. IO 密集型任务线程大多时间是在等待外部资源响应,此时线程处于空闲状态,CPU 利用率较低,可以设置较大线程数2. CPU 密集型任务,例如浮点计算等,很少会有阻塞情况,此时线程数多会造成上下文切换频繁影响性能能4. ConcurrentHashMap 底层的读写是怎么处理并发冲突的1. 读:将 value 和 链表 next 指针设置为 volatile,多线程修改 volatile 变量时不会使用自己的副本,是修改公共内存中的变量,每个线程都可以取到最新的数据,读的时候不需要加锁2. 写:首先判断有无冲突,如果没有冲突的话直接 CAS 插入即可,如果有冲突的话就 synchronized 锁住头节点遍历链表进行插入3. 扩容:ConcurrentHashMap 的扩容也是并发安全的,且支持多线程协同扩容。扩容时,会将原数组的桶迁移到新数组(容量翻倍)。多个线程可以同时参与数据迁移工作。系统会将任务拆分成一个个小的“区域”(TransferRegion),线程领取任务后进行迁移。在扩容期间,读操作依然可以正常进行(可能会读到旧数据或新数据,但最终一致性有保障),写操作则会协助扩容或等待。5. Synchronized 和 ReentrantLock 两种锁的选择1. Synchronized 关键字:使用方式简单,可以加在代码块和代码上,只能实现非公平锁,多线程来了之后谁抢到谁执行,而不是排队。JDK 1.6 引入了偏向锁和锁升级机制提高了性能,性能和 ReentrantLock 相差不大。底层通过 Java 对象头中的 Mark Word 标记字实现,标记字中有 2 比特记录当前锁状态,1. 无锁状态记录 hash 值和 GC 年龄2. 偏向锁状态记录当前线程 ID,当第一个线程来时记录3. 轻量级锁,记录持有锁的线程的锁记录,每一个线程都有自己的锁记录,第二个线程来时转为轻量级锁;4. 重量级锁:记录堆中的 ObjectMonitor 对象指针,这个对象有一个队列存储没有获取锁的线程进行排队,当线程执行完毕后会唤醒队列中的线程竞争锁2. ReentrantLock:通过 AQS 抽象队列同步器实现,底层有一个 state 记录冲入次数、一个先进先出 FIFO 的 DLQ 双向链式队列记录排队线程,公平锁先查看队列再竞争锁,非公平锁先尝试获取锁操作失败才入队列等待。6. Redis 为什么快7. Redis 大 key 怎么解决8. Hive2CK 导入数据是直接 CK 导入还是使用中间件9. ClickHouse 和 MySQL 底层有什么区别10. ClickHouse 主要的使用场景在哪里11. ClickHouse 并发支持如何12. ClickHouse 物化视图是什么13. Agent 项目用户转人工拦截率这个数据口径是怎么统计的,有没有遇到过用户找不到人工 Oncall 入口而投诉的14. 讲述一下你的冷热分层项目15. 你这个 OOM 问题是怎么排查的,最后怎么解决的(OkHttpClient 没单例且没指定线程池导致的 OOM)16. Kafka LAG 一般怎么排查(从提交消息消费成功出排查,查看是线程挂掉了还是处理该消息耗时太长导致 LAG17. 算法题:翻转01字符串 k 次,找到翻转后最长相同串(eg: 10101 k=1, res=3, 翻转一个0得到111, 翻转一个1得到000
查看17道真题和解析
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务