知识点标签

算法面试题解析第 3 页

算法相关面试题解析,按真实面经题目沉淀核心机制、易错点和面试官追问。

170 道题 6 个岗位 16 个公司

算法相关面试题第 3 页

决策树如何生成和剪枝?

决策树如何生成和剪枝?这道腾讯牛客题的关键是围绕“决策树生成与剪枝”讲清概念、机制、取舍和边界。决策树生成是递归选择最优特征和切分点,让子节点更纯或误差更小。ID3 常用信息增益,C4.5 用信息增益率,CART 分类用 Gini 指数、回归用平方误差下降。

XGBoost 和 GBDT 有什么区别?

XGBoost 和 GBDT 有什么区别?这道腾讯牛客题的关键是围绕“XGBoost 与 GBDT 差异”讲清概念、机制、取舍和边界。GBDT 是梯度提升树的一般框架,每轮用新树拟合当前损失的负梯度;XGBoost 是工程化增强实现,在目标函数中加入正则项,并用二阶泰勒展开近似损失。

L1 正则化和 L2 正则化有什么区别?

L1 正则化和 L2 正则化有什么区别?这道腾讯牛客题的关键是围绕“L1 与 L2 正则化差异”讲清概念、机制、取舍和边界。L1 正则在损失中加入参数绝对值和,倾向于把部分权重压到 0,产生稀疏特征选择;L2 正则加入参数平方和,倾向于均匀缩小权重,降低模型复杂度和过拟合。

随机森林和 XGBoost 有什么区别?

随机森林和 XGBoost 有什么区别?这道腾讯牛客题的关键是围绕“随机森林与 XGBoost 对比”讲清概念、机制、取舍和边界。随机森林是 bagging 思路,多棵树相互独立训练,通过样本和特征随机化降低方差;XGBoost 是 boosting 思路,树按顺序训练,每一棵修正前一轮模型的误差或负梯度。

常见降维方法有哪些?

常见降维方法有哪些?这道腾讯牛客题的关键是围绕“常见降维方法与选择”讲清概念、机制、取舍和边界。降维方法可以按线性/非线性、监督/无监督、可解释/可视化来组织。常见方法包括 PCA、SVD、LDA、t-SNE、UMAP、AutoEncoder,以及特征选择类方法。

机器学习中常见采样方法有哪些?

机器学习中常见采样方法有哪些?这道腾讯牛客题的关键是围绕“机器学习常见采样方法”讲清概念、机制、取舍和边界。机器学习采样方法要按解决的问题分类:划分数据用随机采样、分层采样和时间切分;处理类别不平衡用过采样、欠采样、SMOTE 和类别权重;训练集成模型常用 bootstrap;推荐和语言模型里常见负采样。

逻辑回归为什么常用交叉熵损失而不是 MSE?

逻辑回归为什么常用交叉熵损失而不是 MSE?这道腾讯牛客题的关键是围绕“逻辑回归损失函数选择”讲清概念、机制、取舍和边界。逻辑回归常用交叉熵而不是 MSE,是因为二分类标签服从 Bernoulli 分布,交叉熵对应负对数似然;配合 sigmoid 后优化目标更自然,梯度形态也更适合概率分类。

K-means 聚类算法的流程是什么?

K-means 聚类算法的流程是什么?这道腾讯牛客题的关键是围绕“K-means 聚类流程”讲清概念、机制、取舍和边界。K-means 的流程是先选择 K 个初始中心,然后反复执行样本分配和中心更新:把每个样本分到最近中心所在簇,再用簇内样本均值更新中心,直到中心变化很小或达到迭代上限。

数组和链表的区别?

数组和链表的区别?这道腾讯牛客题的关键是围绕“数组与链表复杂度对比”讲清概念、机制、取舍和边界。数组和链表的核心差异是存储布局。数组连续存储,支持按下标 O(1) 随机访问;链表节点离散,通过指针连接,查找第 k 个节点通常 O(n),但已知前驱节点时插入删除可以 O(1)。

链表和数组查找、删除的时间复杂度?

链表和数组查找、删除的时间复杂度?这道腾讯牛客题的关键是围绕“数组与链表复杂度对比”讲清概念、机制、取舍和边界。数组和链表的核心差异是存储布局。数组连续存储,支持按下标 O(1) 随机访问;链表节点离散,通过指针连接,查找第 k 个节点通常 O(n),但已知前驱节点时插入删除可以 O(1)。

二分查找时如何避免 int 型 mid 溢出?

二分查找时如何避免 int 型 mid 溢出?这道腾讯牛客题的关键是围绕“二分查找 mid 溢出处理”讲清概念、机制、取舍和边界。二分查找中如果用 (left + right) / 2 计算 mid,当 left 和 right 都很大时可能发生整数溢出。更稳的写法是 left + (right - left) / 2,或在语言允许时使用无符号右移/更大整数类型。

决策树模型如何用在实际场景中?

决策树模型如何用在实际场景中?这道腾讯牛客题的关键是围绕“决策树适用场景”讲清概念、机制、取舍和边界。决策树适合表格数据、非线性阈值规则、特征尺度差异大、需要可解释路径的场景。它能处理数值和类别特征,输出从根到叶的规则链,便于业务解释和排查。

随机森林的基本原理是什么?

随机森林的基本原理是什么?这道腾讯牛客题的关键是围绕“随机森林基本原理”讲清概念、机制、取舍和边界。随机森林通过 bootstrap 有放回采样训练多棵决策树,并在每个节点只随机选择一部分特征参与切分,最后分类投票、回归平均。核心目标是让基学习器差异化,从而降低方差。

决策树,分类特征,使用one-hot encoding和不使用的区别?

决策树,分类特征,使用one-hot encoding和不使用的区别?这道腾讯牛客题的关键是围绕“决策树处理类别特征与 one-hot 编码”讲清概念、机制、取舍和边界。决策树处理分类特征时,是否 one-hot 取决于实现是否原生支持 categorical split。原生类别切分可以按类别集合分裂;如果只能做数值二叉切分,one-hot 会把一个多类别特征拆成多个 0/1 特征,改变树深、稀疏性和类别组合表达。

快排与归并排序的区别?

快排与归并排序的区别?这道腾讯牛客题的关键是围绕“快速排序与归并排序对比”讲清概念、机制、取舍和边界。快速排序和归并排序都能做到平均 O(n log n),但思路和工程取舍不同。快排通过 partition 原地划分再递归子区间,平均快、缓存友好但通常不稳定,最坏可能 O(n^2);归并排序先递归拆分再合并有序段,稳定且最坏 O(n log n),但通常需要 O(n) 额外空间。

如何判断一个链表是否有环?

如何判断一个链表是否有环?这道腾讯牛客题的关键是围绕“链表判环与快慢指针”讲清概念、机制、取舍和边界。判断链表是否有环,常用 Floyd 快慢指针。慢指针每次走一步,快指针每次走两步;如果链表有环,快指针最终会在环内追上慢指针;如果无环,快指针会先走到 null。

如何判断单链表是否成环?

如何判断单链表是否成环?这道腾讯牛客题的关键是围绕“链表判环与快慢指针”讲清概念、机制、取舍和边界。判断链表是否有环,常用 Floyd 快慢指针。慢指针每次走一步,快指针每次走两步;如果链表有环,快指针最终会在环内追上慢指针;如果无环,快指针会先走到 null。

给定一个有序数组,统计指定元素出现的次数?

给定一个有序数组,统计指定元素出现的次数?这道腾讯牛客题的关键是围绕“有序数组统计元素次数”讲清概念、机制、取舍和边界。有序数组统计 target 出现次数,最稳的方法是两次二分:lower_bound 找第一个大于等于 target 的位置,upper_bound 找第一个大于 target 的位置,次数等于 upper-lower。

树有哪几种遍历方式?

树有哪几种遍历方式?这道腾讯牛客题的关键是围绕“树的遍历方式”讲清概念、机制、取舍和边界。常见树遍历包括前序、中序、后序和层序。二叉树中前序是根-左-右,中序是左-根-右,后序是左-右-根,层序按层访问。N 叉树通常保留前序、后序和层序,中序没有统一定义。

逻辑回归的原理和推导过程是什么?

逻辑回归的原理和推导过程是什么?这道腾讯牛客题的关键是围绕“逻辑回归推导”讲清概念、机制、取舍和边界。逻辑回归用线性函数 z=w^Tx+b 得到 logit,再经 sigmoid 得到正类概率 p。把 y 看作 Bernoulli 分布,最大化似然,取负对数后得到二分类交叉熵损失。

动态规划与贪心有什么区别?

动态规划与贪心有什么区别?这道腾讯牛客题的关键是围绕“动态规划与贪心区别”讲清概念、机制、取舍和边界。动态规划通过状态表保存子问题结果,依靠状态转移枚举可能选择;贪心每一步只做当前最优选择,并且必须能证明局部最优能导向全局最优。

实现消息队列(多生产者,多消费者)?

实现消息队列(多生产者,多消费者)?这道腾讯牛客题的关键是围绕“多生产者多消费者消息队列”讲清概念、机制、取舍和边界。实现多生产者多消费者队列,要先确定有界还是无界、阻塞还是非阻塞、是否需要关闭语义和背压。经典阻塞队列可用 mutex + condition variable 保护环形缓冲区或链表队列。

为什么高并发场景下用unfair锁而不是fair?

为什么高并发场景下用unfair锁而不是fair?这道腾讯牛客题的关键是围绕“高并发下非公平锁取舍”讲清概念、机制、取舍和边界。高并发场景常用非公平锁,是因为它允许刚到达的线程在锁释放瞬间直接竞争成功,减少严格排队带来的线程唤醒、挂起和上下文切换成本。它牺牲一部分公平性,换取更高吞吐和更低平均调度开销。

fair锁如何实现的?

fair锁如何实现的?这道腾讯牛客题的关键是围绕“公平锁实现机制”讲清概念、机制、取舍和边界。公平锁的核心是按等待顺序授予锁,通常通过同步队列维护排队线程。以 ReentrantLock 公平模式为例,线程获取锁前会检查队列中是否已有前驱节点,有前驱就不插队,获取失败后进入 AQS 队列等待唤醒。

什么是动态规划?

什么是动态规划?这道腾讯牛客题的关键是围绕“动态规划定义与解题框架”讲清概念、机制、取舍和边界。动态规划适合具有最优子结构和重叠子问题的问题。回答时要讲清状态定义、转移方程、初始化、遍历顺序和结果位置,而不是先展开 DP 与贪心对比。

链表如何插入节点?

链表如何插入节点?这道腾讯牛客题的关键是围绕“链表节点插入流程”讲清概念、机制、取舍和边界。链表插入节点的核心是先保存后继,再改新节点和前驱的指针。单链表在已知前驱节点 prev 时,可以让 newNode.next = prev.next,再让 prev.next = newNode。

当文件无法一次全部加载内存时,如何对大文件内容排序?

当文件无法一次全部加载内存时,如何对大文件内容排序?这道腾讯牛客题的关键是围绕“大文件外部排序”讲清概念、机制、取舍和边界。大文件无法一次加载内存时,用外部排序:按内存上限分块读取,每块在内存中排序后写成临时有序 run,再用 k 路归并把多个有序 run 合成最终有序文件。

如何用回溯法生成全排列?

如何用回溯法生成全排列?这道腾讯牛客题的关键是围绕“回溯生成全排列”讲清概念、机制、取舍和边界。用回溯生成全排列,维护当前路径 path 和 used 标记。每一层选择一个未使用元素加入路径,递归到长度为 n 时收集一个排列,然后撤销选择继续尝试。

SVM 核函数应如何选择?

SVM 核函数应如何选择?这道腾讯牛客题的关键是围绕“SVM 核函数选择”讲清概念、机制、取舍和边界。SVM 核函数选择要看数据规模、特征维度、线性可分程度和非线性边界复杂度。线性核适合高维稀疏或近似线性数据,RBF 核适合中小规模非线性边界,多项式核适合明确存在特征交互阶数的场景。

随机森林的基本原理是什么,为什么它通常比单棵决策树更稳健?

随机森林的基本原理是什么,为什么它通常比单棵决策树更稳健?这道腾讯牛客题的关键是围绕“随机森林基本原理”讲清概念、机制、取舍和边界。随机森林通过 bootstrap 有放回采样训练多棵决策树,并在每个节点只随机选择一部分特征参与切分,最后分类投票、回归平均。核心目标是让基学习器差异化,从而降低方差。

Transformer 的核心结构和自注意力原理是什么?

Transformer 的核心结构和自注意力原理是什么?这道腾讯牛客题的关键是围绕“Transformer 结构与自注意力”讲清概念、机制、取舍和边界。Transformer 的核心由多头自注意力、前馈网络、残差连接、LayerNorm 和位置编码组成。自注意力通过 Q、K、V 计算 token 之间的相关性,再用相关性加权聚合值向量。

同题还出现在 1 个公司岗位

常见聚类算法有哪些,各自适用什么场景?

常见聚类算法有哪些,各自适用什么场景?这道腾讯牛客题的关键是围绕“常见聚类算法场景选择”讲清概念、机制、取舍和边界。常见聚类算法包括 K-means、层次聚类、DBSCAN、GMM 和谱聚类。选择时要看簇形状、是否需要指定 K、噪声/离群点、样本规模、距离度量和是否需要软分配。

如何判断单链表是否有环?

如何判断单链表是否有环?这道腾讯牛客题的关键是围绕“链表判环与快慢指针”讲清概念、机制、取舍和边界。判断链表是否有环,常用 Floyd 快慢指针。慢指针每次走一步,快指针每次走两步;如果链表有环,快指针最终会在环内追上慢指针;如果无环,快指针会先走到 null。

二叉树有哪些基本性质和特点?

二叉树有哪些基本性质和特点?这道腾讯牛客题的关键是围绕“二叉树基本性质”讲清概念、机制、取舍和边界。二叉树每个节点最多有两个孩子,可分为普通二叉树、满二叉树、完全二叉树、平衡二叉树和二叉搜索树等。常见性质包括第 i 层最多 2^(i-1) 个节点,深度为 h 的二叉树最多 2^h-1 个节点。

快速排序的过程、时间复杂度和常见优化方式是什么?

快速排序的过程、时间复杂度和常见优化方式是什么?这道腾讯牛客题的关键是围绕“快速排序流程与优化”讲清概念、机制、取舍和边界。快速排序的过程是选 pivot,执行 partition,把小于 pivot 的元素放左侧、大于 pivot 的元素放右侧,然后递归排序左右子区间。平均时间 O(n log n),最坏 O(n^2),递归栈平均 O(log n)。

编译器中的 AST 和词法分析分别是什么?

编译器中的 AST 和词法分析分别是什么?这道腾讯牛客题的关键是围绕“编译器词法分析、语法分析与 AST”讲清概念、机制、取舍和边界。词法分析负责把源代码字符流切分成 token,例如关键字、标识符、数字、运算符和分隔符;AST 是语法分析后得到的抽象语法树,保留程序结构和语义相关节点,通常会省略括号、分号等纯语法细节。

常见排序算法中哪些是稳定排序?

常见排序算法中哪些是稳定排序?这道腾讯牛客题的关键是围绕“排序稳定性”讲清概念、机制、取舍和边界。排序稳定性指相等 key 的元素在排序后仍保持原来的相对顺序。常见稳定排序包括冒泡排序、插入排序、归并排序、计数排序、基数排序和桶排序的稳定实现;常见不稳定排序包括快速排序、堆排序、选择排序和希尔排序。

树和堆这两种数据结构有什么区别?

树和堆这两种数据结构有什么区别?这道腾讯牛客题的关键是围绕“树与堆数据结构区别”讲清概念、机制、取舍和边界。树是一类层级数据结构,每个节点可以有子节点;堆通常是满足堆序性质的完全二叉树,是树的一种特殊形式。最大堆父节点不小于子节点,最小堆父节点不大于子节点。