orion_interview_algorithms

算法 + AI 工程师面试题

一、Web 应用常见算法

Q1: 哈希表原理?如何解决哈希冲突?

参考答案要点: - 原理:通过 Hash 函数将 Key 映射到数组索引,O(1) 查找 - 冲突解决: - 链地址法(Separate Chaining):链表/红黑树存储冲突元素(Java HashMap) - 开放地址法(Open Addressing):线性探测、二次探测、双重哈希 - 再哈希法:多个 Hash 函数

Q2: Top K 问题算法设计?

场景:找出"面积 ≥60㎡ 且 价格 ≤5000 元"的房源中,"距地铁口最近"的 Top 10。

参考答案要点: - 先过滤(面积 + 价格条件) - 维护大小为 K 的大顶堆,遍历剩余元素 - 时间复杂度:O(N log K),N 为过滤后数量 - 空间复杂度:O(K)

Q3: 排序算法选择?红黑树 vs AVL 树?

参考答案要点: - 红黑树:近似平衡,插入/删除旋转次数少(最多 2 次),适合频繁修改的场景(如数据库索引、TreeMap) - AVL 树:严格平衡,查找快但修改代价高 - 排序选择:快速排序(平均 O(N log K))、归并排序(稳定)、堆排序(Top K)


二、数据清洗

Q1: 数据清洗的核心步骤?

参考答案要点: 1. 缺失值处理:删除 / 均值填充 / 中位数填充 / 模型预测填充 / 前向填充(时间序列) 2. 异常值检测:3σ 原则、IQR 法、孤立森林 3. 重复数据处理:去重(主键 / 全字段 / 相似度) 4. 格式统一:日期格式、单位统一、文本归一化(如"南向"→"朝南") 5. 类型转换:字符串→数值、分类变量编码(One-Hot / Label / Target)

Q2: 文本数据清洗?

参考答案要点: - 去除 HTML 标签、特殊字符、多余空白 - 分词(中文:Jieba / HanLP) - 去停用词 - 词干提取 / 词形还原(英文) - 归一化(同义词合并、繁简转换)

Q3: 数据清洗质量评估?

参考答案要点: - 完整性(缺失率) - 一致性(逻辑矛盾检测) - 准确性(与权威数据源对比) - 时效性(数据新鲜度)


三、数据分析

Q1: 探索性数据分析(EDA)核心方法?

参考答案要点: - 描述性统计(均值、中位数、方差、分位数) - 分布可视化(直方图、箱线图、密度图) - 相关性分析(Pearson / Spearman / Kendall) - 交叉分析(透视表、分组统计) - 时间序列分析(趋势、季节性、周期性)

Q2: 特征工程核心方法?

参考答案要点: - 特征提取:文本 TF-IDF / Word Embedding、时间特征(星期/节假日)、空间特征(距离) - 特征选择:方差阈值、相关系数、递归消除(RFE)、L1 正则化、基于树模型的重要性 - 特征构造:交叉特征、多项式特征、统计特征(均值/方差/最大/最小) - 特征降维:PCA、t-SNE、UMAP、AutoEncoder


四、机器学习

Q1: 机器学习核心评价指标?

参考答案要点: | 指标 | 公式 | 含义 | |------|------|------| | 准确率 | (TP+TN)/(P+N) | 整体预测正确比例 | | 精确率 | TP/(TP+FP) | 预测为正的样本中真正为正的比例 | | 召回率 | TP/(TP+FN) | 真实正样本中被预测出的比例 | | F1 | 2×P×R/(P+R) | 精确率和召回率的调和平均 | | ROC-AUC | - | 分类器区分正负样本能力,越接近 1 越好 | | PR-AUC | - | 正类占比少时更合适 |

Q2: 常见回归算法对比?

算法 核心思想 优点 缺点 适用场景
线性回归 最小二乘法拟合直线 简单、可解释 对非线性敏感 明显线性关系
多项式回归 添加高次项拟合曲线 捕捉复杂模式 易过拟合 数据呈曲线趋势
决策树回归 递归分割数据区域 非线性、无需缩放 易过拟合 if-then 规则
随机森林回归 多棵树取平均 精度高、抗过拟合 失去可解释性 通用基准模型
支持向量回归 寻找间隔带 对异常值不敏感 大数据慢 异常值多、高维
梯度提升回归 串行构建纠正树 精度极高 调参复杂 竞赛/高精度场景

Q3: F1 值无限接近 1 是好事吗?

参考答案要点: 大概率不是好事,可能原因: 1. 严重过拟合:训练集表现完美,验证集断崖式下跌 2. 标签泄露:特征中包含标签信息 3. 数据分布异常:训练集和测试集高度重叠 4. 类别不平衡:模型无脑预测多数类 5. 评估方式错误:仅在训练集上评估

纠正措施:降低模型复杂度、加入正则化(L1/L2/Dropout/Early Stopping)、扩充数据、消除标签泄露、独立测试集评估

Q4: 过拟合与欠拟合的识别和解决?

参考答案要点: - 过拟合:训练集好、验证集差 → 降低复杂度、正则化、数据增强、交叉验证 - 欠拟合:训练集和验证集都差 → 增加复杂度、减少正则化、增加特征、延长训练


五、神经网络学习

Q1: 神经网络反向传播原理?

参考答案要点: - 前向传播:输入 → 隐藏层 → 输出层 - 计算损失:预测值 vs 真实值 - 反向传播:链式法则计算每个参数的梯度 - 参数更新:梯度下降(SGD/Adam)

Q2: 常见激活函数对比?

激活函数 公式 优点 缺点
Sigmoid 1/(1+e-x) 输出 [0,1],适合二分类 梯度消失、非零中心
Tanh (ex-e-x)/(ex+e-x) 零中心 梯度消失
ReLU max(0,x) 计算快、缓解梯度消失 死亡 ReLU(负区梯度为 0)
Leaky ReLU max(αx,x) 解决死亡 ReLU 效果不稳定
GELU x·Φ(x) Transformer 常用 计算略复杂

Q3: 常见优化器对比?

Q4: 防止过拟合的神经网络技巧?


六、CNN(卷积神经网络)

Q1: CNN 核心组件?

参考答案要点: - 卷积层:局部感受野 + 参数共享,提取空间特征 - 池化层:降采样(Max Pooling / Average Pooling),减少参数、增强平移不变性 - 全连接层:特征组合与分类 - 激活函数:ReLU 引入非线性

Q2: CNN 经典架构演进?

架构 特点 贡献
LeNet-5 卷积+池化+全连接 开创 CNN 应用
AlexNet ReLU + Dropout + GPU 深度学习复兴
VGG 小卷积核 (3×3) 堆叠 证明深度重要性
GoogLeNet Inception 模块 多尺度并行
ResNet 残差连接 解决梯度消失,支持极深网络
EfficientNet 复合缩放 精度与效率平衡

Q3: CNN 在图像处理中的应用?


七、Transformer

Q1: Transformer 核心架构?

参考答案要点: - 编码器-解码器架构,基于自注意力机制 - 编码器:N 层堆叠,每层含多头自注意力 + 前馈网络 + 残差连接 + LayerNorm - 解码器:N 层堆叠,每层含掩码自注意力 + 编码器-解码器注意力 + 前馈网络 - 自注意力公式:Attention(Q,K,V) = Softmax(QKT/√d_k)·V

Q2: 为什么需要位置编码?

Q3: 多头注意力的作用?

Q4: Transformer 训练常见问题及解决?

问题 原因 解决方案
显存不足 自注意力 O(n²) 复杂度 梯度累积、混合精度、量化、梯度检查点
训练速度慢 单卡、数据加载慢 分布式训练、多进程数据加载、混合精度
过拟合 数据量小、模型过大 正则化、早停、数据增强、降低复杂度
注意力失效 关键信息未聚焦 注意力掩码、对比学习、领域适配

八、BERT

Q1: BERT 核心设计?

参考答案要点: - 全称:Bidirectional Encoder Representations from Transformers - 仅使用编码器:专注语言理解(分类/NER/语义匹配),不需要生成 - 双向自注意力:每个 token 同时关注左右上下文(区别于单向 GPT) - 输入嵌入:词嵌入 + 段嵌入 + 可学习位置嵌入

Q2: BERT 预训练任务?

  1. MLM(掩码语言模型):随机掩码 15% token,预测被掩码 token → 学习双向上下文
  2. NSP(下一句预测):判断句子对是否连续 → 学习句子间逻辑关系

Q3: BERT 下游任务适配?

Q4: BERT 改进模型?


九、LLM(大语言模型)

Q1: LLM 核心架构演进?

参考答案要点: - Decoder-only 架构(GPT 系列)成为主流 - 关键组件:RMSNorm、RoPE(旋转位置编码)、SwiGLU 激活、Grouped Query Attention - 模型规模从 7B → 70B → 万亿参数

Q2: LLM 预训练 vs 微调?

阶段 目的 数据 方法
预训练 学习语言和世界知识 海量无标注文本 Next Token Prediction
SFT(指令微调) 学习遵循指令 高质量指令数据 有监督微调
RLHF / DPO 对齐人类偏好 偏好对比数据 强化学习 / 直接偏好优化

Q3: LLaMA Factory 全流程工具?

参考答案要点: - 支持 100+ 主流模型(LLaMA/Qwen/ChatGLM/Mistral) - PEFT 高效微调(LoRA/QLoRA/DoRA) - 4bit 量化(消费级 GPU 可运行) - 支持 SFT/RM/PPO/DPO - WebUI + CLI 双入口


十、LangChain

Q1: LangChain 核心组件?

参考答案要点: | 组件 | 作用 | |------|------| | Model I/O | LLM/ChatModel 封装、Prompt 管理、输出解析 | | Retrieval | 文档加载、文本切分、Embedding、向量存储 | | Chains | 组件串联(如 RetrievalQA 链) | | Agents | 工具调用、ReAct 模式、决策循环 | | Memory | 对话历史管理(Buffer/Summary/VectorStore) | | Callbacks | 执行过程监控和日志 |

Q2: LangChain 常见 Chain 类型?


十一、LangGraph

Q1: LangGraph 解决什么问题?

参考答案要点: - LangChain 的线性 Chain 不足以表达复杂的多步骤、循环、条件分支逻辑 - LangGraph 基于有向图建模,支持: - 循环(Agent 决策循环) - 条件分支(根据 LLM 输出决定下一步) - 状态持久化(Checkpointer) - 人机协同(Human-in-the-loop)

Q2: LangGraph 核心概念?


十二、LangSmith

Q1: LangSmith 的作用?

参考答案要点: - LLM 应用开发的全生命周期平台 - Trace:记录每次 LLM 调用的输入/输出/延迟/Token 消耗 - Dataset:管理测试数据集 - Evaluation:自动化评估(准确率、事实一致性等) - Prompt Hub:Prompt 版本管理 - 用于调试、监控、迭代优化


十三、ReAct 模式

Q1: ReAct 核心思想?

参考答案要点: - Reasoning + Acting:让 LLM 交替进行思考行动 - 思维链(CoT)+ 工具调用相结合 - 标准格式: Thought: 我需要做什么... Action: 调用什么工具... Observation: 工具返回结果... Thought: 基于结果我下一步... ... Final Answer: 最终答案

Q2: ReAct 相比传统方法的优势?


十四、多 Agent 架构

Q1: 常见多 Agent 架构模式?

参考答案要点: | 架构 | 说明 | 适用场景 | |------|------|----------| | 管道(Pipeline) | Agent A → Agent B → Agent C | 线性处理流程 | | 路由(Router) | 根据输入选择不同 Agent | 意图识别后分流 | | 并行(Parallel) | 多个 Agent 并行处理 | 多维度分析 | | 监督者(Supervisor) | 主 Agent 协调多个子 Agent | 复杂任务分解 | | 辩论(Debate) | 多个 Agent 互相辩论 | 质量校验、减少幻觉 | | 市场(Marketplace) | Agent 竞价完成任务 | 资源分配优化 |

Q2: AutoGen / CrewAI / LangGraph 多 Agent 框架对比?


十五、Prompt Engineering

Q1: Prompt 设计核心原则?

参考答案要点: 1. 明确指令:清晰说明任务、格式、约束 2. 提供上下文:背景信息、示例(Few-shot) 3. 结构化:使用分隔符、XML 标签组织内容 4. 思维链:引导逐步推理("Let's think step by step") 5. 约束输出:指定输出格式(JSON/Markdown/列表)

Q2: Few-shot Prompting 技巧?

Q3: Prompt 安全与防护?


十六、向量数据库:Qdrant & Milvus

Q1: Qdrant vs Milvus 对比?

维度 Qdrant Milvus
语言 Rust Go + C++
部署 单节点 / 分布式 分布式优先
索引 HNSW 为主 IVF/IVF_SQ8/HNSW/DiskANN
过滤 强(Payload 过滤) 支持
适用场景 中小规模、开发友好 大规模、企业级
生态 相对轻量 云原生、Attu 管理工具

Q2: 向量索引算法?

Q3: 向量数据库优化?


十七、Neo4j(图数据库)

Q1: Neo4j 核心概念?

参考答案要点: - 属性图模型:节点(Node)、关系(Relationship)、属性(Property)、标签(Label) - Cypher 查询语言:声明式图查询,类似 SQL 但面向图 - 索引:节点属性索引、全文索引、向量索引(5.0+)

Q2: 图数据库 vs 关系型数据库?

维度 图数据库 关系型数据库
关联查询 原生支持,性能好 JOIN 操作,深关联性能差
灵活 Schema
适用场景 社交网络、知识图谱、推荐系统 事务处理、报表统计

Q3: Neo4j 在 RAG 中的应用?


十八、RAG(检索增强生成)

Q1: RAG 核心流程?

参考答案要点: 1. 文档处理:加载 → 清洗 → 切分 → Embedding → 向量入库 2. 检索:用户 Query → Embedding → 向量相似度检索 → Top-K 文档 3. 生成:检索结果 + Query + Prompt → LLM → 生成答案

Q2: RAG 核心缺点及解决措施?

缺点 解决措施
检索精度低 混合检索(向量 + BM25)、语义切分、Cross-Encoder 精排
生成幻觉 强制引用标注、事实校验、结构化 Prompt、CoT 提示
工程维护成本高 增量更新、版本管理、自动化清洗、轻量向量库选型
复杂推理不足 RAG + Agent 架构、Self-RAG 自优化机制

Q3: RAG 四要素制约关系?

数据特点 → 分块切片 → 向量维度 → 模型选型 → 反向适配

  1. 数据特点决定分块:短文本 50-100 tokens,长文档 200-500 tokens(按语义边界)
  2. 分块决定向量维度:小粒度 768 维足够,大粒度需 1024+ 维
  3. 分块 + 维度决定模型:小粒度 + 低维 → 轻量模型(BERT-base);大粒度 + 高维 → 大模型
  4. 模型反向要求数据适配:通用模型处理专业数据需强化领域关键词

十九、Graph RAG

Q1: Graph RAG vs 传统 RAG?

维度 传统 RAG Graph RAG
知识表示 文本块向量,无显式结构 实体-关系三元组,图结构
检索机制 纯向量相似度匹配 向量匹配 + 图遍历
推理能力 擅长单跳、细节查询 适配多跳、因果/关联推理
可解释性 高(子图、路径展示)
构建成本 高(NER + 关系抽取 + 图谱)
适用场景 通用问答、文档检索 多跳问答、实体推理、复杂摘要

Q2: Graph RAG 实施步骤?

  1. 从文本提取实体和关系(NER + 关系抽取)
  2. 构建知识图谱(Neo4j / NebulaGraph)
  3. 检索时结合向量匹配与图遍历
  4. 生成时融合图谱信息和文本块信息

Q3: 融合方案(推荐)?


二十、MM RAG(多模态 RAG)

Q1: MM RAG 核心概念?

参考答案要点: - 传统 RAG 仅处理文本,MM RAG 处理文本 + 图像 + 音频 + 视频等多模态数据 - 核心:多模态 Embedding(CLIP、BLIP、Qwen-VL) - 检索:跨模态检索(文本搜图、图搜文、图文联合检索)

Q2: MM RAG 技术方案?


二十一、召回方法

Q1: 常见召回方法?

方法 原理 特点
向量召回 Embedding + 相似度(Cosine/IP) 语义匹配,泛化能力强
BM25 召回 词频-逆文档频率 精确匹配,术语友好
关键词召回 倒排索引精确匹配 快速、精确
规则召回 业务规则过滤(如标签、分类) 精准控制
协同过滤召回 用户行为相似度 推荐场景
图召回 图遍历找关联实体 多跳关联

Q2: 召回策略设计原则?


二十二、重排方法(Reranking)

Q1: Reranking 方法?

方法 原理 特点
Cross-Encoder 精排 Query + 文档联合编码,输出匹配分数 精度高,速度慢
规则重排 时间、权威度、距离等业务规则加权 灵活可控
LLM 重排 LLM 判断相关度排序 灵活但成本高
学习排序(Learning to Rank) 训练排序模型(LambdaMART) 可训练优化

Q2: Reranking 流程?

  1. 粗排:向量检索 / BM25 召回 Top-50~100
  2. 精排:Cross-Encoder 计算 Query-文档匹配分
  3. 业务加权:时间衰减、权威度、用户偏好
  4. 输出 Top-10 送入 LLM

二十三、多路融合方法

Q1: 多路召回融合方法?

方法 原理 适用场景
简单拼接 多路结果直接拼接去重 快速实现
加权融合 各路结果按权重排序合并 有明确优先级
RRF(Reciprocal Rank Fusion) 1/(k + rank) 倒数排名融合 无明确权重时效果好
学习融合 训练模型学习多路结果权重 有标注数据时最优
Borda Count 排名投票制 多路均衡时

Q2: RRF 公式?

RRF_score(d) = Σ 1/(k + rank_i(d))

二十四、模型训练

Q1: 模型训练完整流程?

参考答案要点: 1. 数据准备:收集 → 清洗 → 标注 → 划分(7:2:1) 2. 模型选型:根据任务选择(分类/回归/生成/检索) 3. 训练:选择优化器、学习率、Batch Size、Epoch 4. 验证:监控验证集指标,早停 5. 测试:在独立测试集上评估 6. 部署:导出模型(ONNX/TensorRT),服务化(FastAPI/TorchServe)

Q2: 训练调参技巧?

Q3: 分布式训练?


二十五、模型微调

Q1: 全量微调 vs PEFT 微调?

维度 全量微调 PEFT(参数高效微调)
训练参数 全部 少量(< 5%)
显存需求
效果 上限高 接近全量微调
适用场景 有充足算力 消费级 GPU / 快速验证

Q2: 常见 PEFT 方法?

方法 原理 特点
LoRA 低秩矩阵旁路更新 显存低、效果好、可插拔
QLoRA LoRA + 4bit 量化 消费级 GPU 可跑 7B 模型
Prefix-Tuning 在输入前添加可训练前缀 适合生成任务
P-Tuning v2 Prompt 可训练版本 通用性强
DoRA 分解权重更新 比 LoRA 更稳定

Q3: 微调最佳实践?

  1. 数据质量优先:少量高质量数据 > 大量低质量数据
  2. 学习率:PEFT 用 1e-4 ~ 5e-4,全量用 1e-5 ~ 5e-5
  3. Epoch:3 ~ 5 轮,避免过拟合
  4. 评估:多维度评估(准确率/F1/人工评测)
  5. 模型合并:LoRA 权重合并到基座模型或保持分离

二十六、命名实体识别(NER)

Q1: NER 任务类型与标注体系?

任务类型:Flat NER(扁平)、Nested NER(嵌套)、Discontinuous NER(不连续)

标注体系: | 体系 | 说明 | 示例 | |------|------|------| | BIO | B-开头 I-内部 O-非实体 | B-PER 张,I-PER 三,O 在 | | BIOES | 增加 E-结尾 S-单字符 | 更精准区分边界 | | BMES | B-M-E-S | 适合中文等细粒度语言 |

Q2: NER 模型架构?

Q3: NER 工程优化?


二十七、面试官评分指南

维度 不合格 (Junior) 合格 (Mid) 优秀 (Senior/Lead)
算法基础 仅知道基本排序 能分析复杂度、选合适算法 能设计自定义算法解决业务问题
机器学习 仅调用 API 理解原理、能调参 能从头实现、解决过拟合等难题
深度学习 知道 CNN/RNN 概念 理解 Transformer、能微调 能设计架构、优化训练效率
LLM/RAG 仅会使用 ChatGPT 能搭建 RAG 系统、微调模型 能设计多 Agent 架构、优化全链路
工程能力 无部署经验 能用 FastAPI 部署模型 能设计高可用推理服务、性能优化
业务理解 不了解业务场景 能将算法映射到业务需求 能主动发现算法优化业务的机会

Page Source