互联网大厂算法工程师面试题汇总
本文整理了科大讯飞、小米、百度等知名互联网企业的算法工程师面试真题,涵盖自然语言处理、深度学习模型原理、工程实践及经典算法题解。
一、科大讯飞 NLP 方向 AI 算法工程师
1. jieba 分词的原理
jieba 分词是一款高效的中文文本分词工具,其核心基于前缀词典匹配与动态规划。主要实现机制如下:
- 前缀词典与 DAG:利用前缀词典对句子进行扫描,生成所有可能的成词路径构成的有向无环图(DAG)。
- 最大概率路径:采用动态规划算法在 DAG 上查找概率最大的切分组合,通常结合词频统计信息。
- 未登录词处理:对于词典中不存在的词,使用基于汉字成词能力的 HMM(隐马尔可夫模型),并通过 Viterbi 算法解码最优状态序列,从而识别新词。
2. Word2Vec 的原理与训练
Word2Vec 是一种将词语映射为稠密向量的模型,通过预测上下文或目标词来学习语义表示。包含两种主要架构:
- CBOW(连续词袋模型):输入是目标词周围的上下文词向量累加,输出是目标词的概率分布。适合捕捉局部上下文信息。
- Skip-gram:输入是目标词,输出是上下文的词向量。更适合处理长距离依赖和低频词。 训练过程通常使用大规模语料库,通过负采样(Negative Sampling)或层次 Softmax 优化梯度下降效率,更新神经网络参数以最小化预测误差。
3. ChatGPT 的训练流程
ChatGPT 基于 GPT-3.5 架构,训练分为两个关键阶段:
- 预训练(Pre-training):使用海量无标注文本数据(网页、书籍、维基百科等),通过自监督学习(如掩码语言建模或下一词预测)学习语言模式与结构。此阶段模型掌握通用语言能力。
- 微调(Fine-tuning):使用人工编写的对话数据集进行有监督训练。人类标注员扮演用户与模型交互,生成高质量问答对。模型通过对比预期输出调整参数,提升对话的连贯性与准确性。部分版本还会引入 RLHF(基于人类反馈的强化学习)进一步优化对齐效果。
4. BERT 模型简述
BERT(Bidirectional Encoder Representations from Transformers)是基于 Transformer 的双向编码器模型。与传统单向语言模型不同,BERT 同时利用左侧和右侧上下文信息。
- 预训练任务:
- MLM(掩码语言建模):随机掩盖输入中的部分词,要求模型根据上下文预测被掩盖的词。
- NSP(下一句预测):判断两个句子是否连续,增强句子间关系理解。
- 下游应用:在分类、命名实体识别、问答等任务上,通过微调特定层参数即可适配。
5. PyTorch 中的 train 和 eval 模块
PyTorch 中 train() 和 eval() 用于控制模型的运行模式:
- train():启用训练模式。此时 Dropout 层会随机丢弃神经元,BatchNorm 层会使用当前批次的统计量并更新全局均值方差。主要用于计算损失和反向传播更新参数。
- eval():启用评估模式。Dropout 层关闭(保留所有神经元),BatchNorm 层使用训练期间累积的全局统计量。主要用于验证集或测试集的推理,确保结果确定性。
6. Python 字典的结构及实现方式
Python 字典(dict)是键值对的集合,键必须唯一且不可变,值可重复。底层基于哈希表(Hash Table)实现:
- 哈希函数:将键转换为固定大小的整数索引。
- 冲突解决:采用开放寻址法(Open Addressing)处理哈希冲突。


