互联网大厂算法工程师面试题汇总与核心原理解析
本文整理了科大讯飞、小米、百度等互联网大厂的算法工程师面试真题,涵盖自然语言处理、大模型架构、深度学习框架及经典算法题。内容旨在帮助求职者深入理解技术原理,提升面试通过率。
一、科大讯飞 NLP 方向 AI 算法工程师
问题 1:jieba 分词的原理
jieba 分词是一款流行的中文文本分词工具,其核心基于词频统计和词典匹配。主要实现机制包含以下几点:
- 前缀词典与 DAG 构建:利用前缀词典对句子进行扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)。这避免了暴力穷举,提高了效率。
- 动态规划查找最大概率路径:在 DAG 上采用动态规划算法,找出基于词频的最大概率切分组合,确保分词结果最符合语言习惯。
- 未登录词处理:对于词典中不存在的词,采用基于汉字成词能力的 HMM(隐马尔可夫)模型,结合 Viterbi 算法进行识别,有效解决新词发现问题。
问题 2:word2vec 的原理及训练方式
word2vec 是一种将词语映射为稠密向量表示的模型,核心思想是通过预测上下文或目标词来学习词向量。它包含两种主要训练架构:
- CBOW(Continuous Bag-of-Words):给定一个窗口大小,将目标词的上下文词作为输入,预测目标词本身。输入是上下文词向量的累加,通过浅层神经网络训练得到词向量。
- Skip-gram:给定一个目标词,将其作为输入,预测其上下文词。相比 CBOW,Skip-gram 在处理低频词时表现更好。
训练细节:通常使用大规模语料库迭代训练,采用梯度下降优化参数。为了加速训练,常引入负采样(Negative Sampling)或层次 Softmax 替代全连接层输出计算。
问题 3:ChatGPT 是怎么训练出来的
ChatGPT 基于 GPT-3.5 架构,训练过程分为两个关键阶段:
- 预训练(Pre-training):使用海量互联网文本数据(网页、书籍、维基百科等),通过自监督学习让模型掌握语言模式。任务包括掩码语言建模(MLM)或下一词预测(Next Token Prediction),使模型具备基础的语言理解和生成能力。
- 微调(Fine-tuning):
- 有监督微调(SFT):使用人工编写的对话数据集,由人类操作员扮演用户与模型交互,生成高质量问答对,调整模型参数以适应对话场景。
- 强化学习(RLHF):虽然文中未详述,但 ChatGPT 实际还引入了人类反馈强化学习,通过奖励模型对齐人类价值观,进一步提升回答质量。
问题 4:BERT 模型简述
BERT(Bidirectional Encoder Representations from Transformers)是基于 Transformer 编码器架构的预训练模型。与传统单向语言模型不同,BERT 采用双向编码器,同时利用左侧和右侧上下文信息。
- 预训练任务:
- 掩码语言建模(MLM):随机掩盖部分词,要求模型根据上下文预测被掩盖的词。
- 下一句预测(NSP):判断两个句子是否连续(注:Bert 后续版本如 RoBERTa 已移除 NSP)。
- 下游应用:通过微调,BERT 可广泛应用于文本分类、命名实体识别、问答系统等 NLP 任务。
问题 5:PyTorch 中的 train 和 eval 模块
在 PyTorch 中,train() 和 eval() 用于切换模型的训练与评估状态:
- train() 模式:启用 Dropout 和 BatchNorm 的训练行为。每次迭代计算损失,执行反向传播更新参数。需配合优化器和学习率调度器使用。
- eval() 模式:关闭 Dropout 和 BatchNorm 的动态特性,固定权重。用于验证集或测试集推理,通常配合 上下文管理器以节省显存并加速计算。


