分页解析
第 15 页面试题
筛选题目 公司、岗位、知识点
公司
公司岗位
岗位
标签
C++程序编译过程,哪几步?
C++程序编译过程,哪几步?这道腾讯牛客题的关键是围绕“C++ 从源码到可执行文件的构建链路”讲清概念、机制、取舍和边界。C++ 程序从源码到可执行文件通常经过预处理、编译、汇编和链接四个阶段。预处理展开头文件和宏,编译把翻译单元转成汇编或中间表示并做语义检查,汇编生成目标文件,链接解析符号并合并目标文件和库。
Go和C++有什么区别?
Go和C++有什么区别?这道腾讯牛客题的关键是围绕“语言差异与工程边界对比”讲清概念、机制、取舍和边界。比较 C、C++ 或 Go 和 C++ 时,不能只列语法差异。要从抽象能力、内存管理、类型系统、运行时、并发模型、构建部署和性能控制这些工程边界展开。
怎么实现线程之间的互斥?
怎么实现线程之间的互斥?这道腾讯牛客题的关键是围绕“线程互斥实现”讲清概念、机制、取舍和边界。线程互斥的目标是保护共享临界区,确保同一时刻只有一个线程修改共享状态。常见手段包括 mutex、spinlock、rwlock、atomic/CAS 和 semaphore,其中 mutex 是最常用的阻塞互斥原语。
线程上下文和进程上下文区别?
线程上下文和进程上下文区别?这道腾讯牛客题的关键是围绕“线程上下文与进程上下文切换”讲清概念、机制、取舍和边界。线程上下文切换和进程上下文切换都要保存/恢复寄存器、程序计数器、栈指针和调度状态;区别在于同进程线程共享地址空间,通常不需要切换完整 mm_struct 和页表,而进程切换更可能带来地址空间、TLB 和 cache 扰动。
RAII 和智能指针的原理是什么?
RAII 和智能指针的原理是什么?这道腾讯牛客题的关键是围绕“C++ 智能指针与内存泄漏治理”讲清概念、机制、取舍和边界。智能指针通过 RAII 把堆对象生命周期绑定到对象析构,能减少忘记 delete、异常路径提前返回和重复释放导致的问题。unique_ptr 表达独占所有权,shared_ptr 表达共享所有权,weak_ptr 用来观察对象并打破 shared_ptr 循环引用。
stl map是如何实现的?
stl map是如何实现的?这道腾讯牛客题的关键是围绕“std::map 底层结构与复杂度”讲清概念、机制、取舍和边界。C++ `std::map` 通常基于红黑树这类自平衡二叉搜索树实现,元素按 key 有序存储。查找、插入和删除的复杂度通常是 O(log n),迭代时能按 key 顺序遍历。
C++11有哪些新特性?
C++11有哪些新特性?这道腾讯牛客题的关键是围绕“C++11 常用新特性与解决的问题”讲清概念、机制、取舍和边界。C++11 的常用新特性包括 auto、range-for、lambda、右值引用和移动语义、智能指针、nullptr、constexpr、线程库、统一初始化和 unordered 容器。回答时要说这些特性分别解决什么问题。
C++面向对象的特性?
C++面向对象的特性?这道腾讯牛客题的关键是围绕“C++ 面向对象特性”讲清概念、机制、取舍和边界。C++ 面向对象常讲封装、继承和多态。封装把数据和行为组织成类并控制访问;继承复用和扩展基类接口;多态通过虚函数让基类指针或引用在运行时调用派生类实现。
给定一个有序数组,统计指定元素出现的次数?
给定一个有序数组,统计指定元素出现的次数?这道腾讯牛客题的关键是围绕“有序数组统计元素次数”讲清概念、机制、取舍和边界。有序数组统计 target 出现次数,最稳的方法是两次二分:lower_bound 找第一个大于等于 target 的位置,upper_bound 找第一个大于 target 的位置,次数等于 upper-lower。
树有哪几种遍历方式?
树有哪几种遍历方式?这道腾讯牛客题的关键是围绕“树的遍历方式”讲清概念、机制、取舍和边界。常见树遍历包括前序、中序、后序和层序。二叉树中前序是根-左-右,中序是左-根-右,后序是左-右-根,层序按层访问。N 叉树通常保留前序、后序和层序,中序没有统一定义。
逻辑回归的原理和推导过程是什么?
逻辑回归的原理和推导过程是什么?这道腾讯牛客题的关键是围绕“逻辑回归推导”讲清概念、机制、取舍和边界。逻辑回归用线性函数 z=w^Tx+b 得到 logit,再经 sigmoid 得到正类概率 p。把 y 看作 Bernoulli 分布,最大化似然,取负对数后得到二分类交叉熵损失。
缓存与数据库如何保证一致性?
缓存与数据库如何保证一致性?这道腾讯牛客题的关键是围绕“缓存与数据库一致性”讲清概念、机制、取舍和边界。缓存和数据库通常很难做到强一致,工程上多采用 Cache Aside 并接受短暂最终一致。常见写法是先更新数据库,提交成功后删除缓存;删除失败要有重试、消息补偿或 binlog/CDC 修正。
redis如何保证高可用的?
redis如何保证高可用的?这道腾讯牛客题的关键是围绕“Redis 高可用”讲清概念、机制、取舍和边界。Redis 高可用通常由主从复制、Sentinel 或 Cluster 实现。主从复制提供副本,Sentinel 负责监控和自动故障转移,Cluster 通过 slot 分片和副本接管提升容量与可用性。
redis与mysql如何保持一致的?
redis与mysql如何保持一致的?这道腾讯牛客题的关键是围绕“缓存与数据库一致性”讲清概念、机制、取舍和边界。缓存和数据库通常很难做到强一致,工程上多采用 Cache Aside 并接受短暂最终一致。常见写法是先更新数据库,提交成功后删除缓存;删除失败要有重试、消息补偿或 binlog/CDC 修正。
redis过期key是如何处理的?
redis过期key是如何处理的?这道腾讯牛客题的关键是围绕“Redis 过期 key 处理”讲清概念、机制、取舍和边界。Redis 过期 key 通过惰性删除和定期删除结合处理。访问 key 时先检查 TTL,过期则删除;后台周期性从 expires 字典抽样检查过期 key,控制单次删除耗时,避免阻塞主线程太久。
java内存泄露怎么排查?
java内存泄露怎么排查?这道腾讯牛客题的关键是围绕“Java 内存泄漏排查”讲清概念、机制、取舍和边界。Java 内存泄漏排查要先确认堆内存是否持续增长、Full GC 后是否无法回落,再用 heap dump 和对象引用链定位被意外持有的对象。重点不是 free 失败,而是对象仍被 GC Roots 间接引用。
redis缓存击穿、穿透、雪崩及其解决方法?
redis缓存击穿、穿透、雪崩及其解决方法?这道腾讯牛客题的关键是围绕“缓存异常流量防护”讲清概念、机制、取舍和边界。缓存穿透、击穿和雪崩都是缓存层保护后端数据源时常见的异常流量问题。穿透是请求的数据本身不存在导致反复打到后端;击穿是热点 key 过期瞬间大量请求回源;雪崩是大量 key 同时失效或缓存集群不可用导致整体回源压力暴涨。
为什么redis这么快?
为什么redis这么快?这道腾讯牛客题的关键是围绕“Redis 单线程与高性能”讲清概念、机制、取舍和边界。Redis 快主要因为数据在内存中、数据结构高效、命令执行主路径单线程避免锁竞争、事件循环配合 I/O 多路复用处理大量连接。Redis 单线程通常指命令执行线程,后台持久化、异步删除、网络 I/O 线程等并不都在同一个线程。
mysql索引类型有哪些?
mysql索引类型有哪些?这道腾讯牛客题的关键是围绕“MySQL 索引类型”讲清概念、机制、取舍和边界。MySQL 常见索引类型可按用途分为主键索引、唯一索引、普通索引、联合索引、前缀索引、全文索引和空间索引;在 InnoDB 中还要区分聚簇索引和二级索引。
mysql中的数据类型有哪些?
mysql中的数据类型有哪些?这道腾讯牛客题的关键是围绕“MySQL 数据类型选择”讲清概念、机制、取舍和边界。MySQL 数据类型可以按数值、字符串、日期时间、JSON/空间等类别回答。高质量答案不只是列类型名,还要说明存储范围、精度、排序比较、索引长度、隐式转换和业务语义。
数据库索引为什么快?
数据库索引为什么快?这道腾讯牛客题的关键是围绕“数据库索引为什么快”讲清概念、机制、取舍和边界。数据库索引快的核心是减少扫描行数和磁盘页访问。以 InnoDB B+ 树为例,高扇出让树高很低,等值查询只需从根页定位到叶子页;叶子页有序且链表相连,范围查询可以顺序扫描。
Redis 有哪些数据结构?
Redis 有哪些数据结构?这道腾讯牛客题的关键是围绕“Redis 数据结构与底层编码”讲清概念、机制、取舍和边界。Redis 常用对外数据结构包括 String、List、Hash、Set、ZSet、Bitmap、HyperLogLog、Geo 和 Stream。回答时还要区分对外类型和底层编码,例如 SDS、listpack、quicklist、dict、intset 和 skiplist。
synchronized锁,以及其和juc包中的锁有什么区别、差异?
synchronized锁,以及其和juc包中的锁有什么区别、差异?这道腾讯牛客题的关键是围绕“synchronized 与 JUC 锁差异”讲清概念、机制、取舍和边界。synchronized 是 JVM 内置监视器锁,围绕对象 monitor、进入/退出临界区和锁优化工作;JUC 中 ReentrantLock 等锁通常基于 AQS,用 state、CAS 和等待队列实现更丰富的锁语义。
Mysql索引,怎样防止回表查询?
Mysql索引,怎样防止回表查询?这道腾讯牛客题的关键是围绕“MySQL 二级索引回表与覆盖索引”讲清概念、机制、取舍和边界。防止回表的核心是让查询所需字段都能从同一个二级索引中取到,也就是覆盖索引。InnoDB 二级索引叶子节点保存索引列和主键值,如果 SELECT 或过滤条件还需要非索引列,就要按主键回到聚簇索引读取完整行。
简介 JVM 的可达性分析过程?
简介 JVM 的可达性分析过程?这道腾讯牛客题的关键是围绕“JVM 可达性分析”讲清概念、机制、取舍和边界。JVM 可达性分析从一组 GC Roots 出发,沿对象引用关系遍历对象图;能从 Roots 到达的对象判定为存活,不可达对象才有机会被回收。它解决的是对象是否还被程序间接使用的问题。
当遇到大批量数据查询时,怎么优化数据库,提高查询效率?
当遇到大批量数据查询时,怎么优化数据库,提高查询效率?这道腾讯牛客题的关键是围绕“大批量数据库查询优化”讲清概念、机制、取舍和边界。大批量数据查询优化要先定位慢 SQL 和执行计划,再从索引、分页方式、批处理、字段裁剪、流式读取、冷热数据和读写分离等方向降低扫描、排序和传输成本。
如果数据库是分布式的,如何保证数据一致性呢?
如果数据库是分布式的,如何保证数据一致性呢?这道腾讯牛客题的关键是围绕“分布式数据库一致性”讲清概念、机制、取舍和边界。分布式数据库一致性要先说明一致性目标:强一致、读己之写、单调读或最终一致。常用机制包括 Raft/Paxos 共识、quorum 读写、主从复制、2PC/TCC/Saga、幂等重试、版本冲突解决和异步对账补偿。
redis是单线程还是多线程,为什么用单线程?
redis是单线程还是多线程,为什么用单线程?这道腾讯牛客题的关键是围绕“Redis 单线程与高性能”讲清概念、机制、取舍和边界。Redis 快主要因为数据在内存中、数据结构高效、命令执行主路径单线程避免锁竞争、事件循环配合 I/O 多路复用处理大量连接。Redis 单线程通常指命令执行线程,后台持久化、异步删除、网络 I/O 线程等并不都在同一个线程。
redis是单线程还是多线程,为什么用单线程,为什么不用多线程?
redis是单线程还是多线程,为什么用单线程,为什么不用多线程?这道腾讯牛客题的关键是围绕“Redis 单线程与高性能”讲清概念、机制、取舍和边界。Redis 快主要因为数据在内存中、数据结构高效、命令执行主路径单线程避免锁竞争、事件循环配合 I/O 多路复用处理大量连接。Redis 单线程通常指命令执行线程,后台持久化、异步删除、网络 I/O 线程等并不都在同一个线程。
Mysql可串行化怎么实现的?
Mysql可串行化怎么实现的?这道腾讯牛客题的关键是围绕“MySQL Serializable 实现”讲清概念、机制、取舍和边界。MySQL InnoDB 的 Serializable 目标是让并发事务结果等价于串行执行。它会让普通读更倾向于加锁读,通过共享锁、next-key lock 和范围锁阻止其他事务插入或修改会影响当前读结果的数据。
分布式数据库怎么保证一致性?
分布式数据库怎么保证一致性?这道腾讯牛客题的关键是围绕“分布式数据库一致性”讲清概念、机制、取舍和边界。分布式数据库一致性要先说明一致性目标:强一致、读己之写、单调读或最终一致。常用机制包括 Raft/Paxos 共识、quorum 读写、主从复制、2PC/TCC/Saga、幂等重试、版本冲突解决和异步对账补偿。
动态规划与贪心有什么区别?
动态规划与贪心有什么区别?这道腾讯牛客题的关键是围绕“动态规划与贪心区别”讲清概念、机制、取舍和边界。动态规划通过状态表保存子问题结果,依靠状态转移枚举可能选择;贪心每一步只做当前最优选择,并且必须能证明局部最优能导向全局最优。
Mysql两种引擎知道吗,他们的索引有什么区别?
Mysql两种引擎知道吗,他们的索引有什么区别?这道腾讯牛客题的关键是围绕“InnoDB 与 MyISAM 索引区别”讲清概念、机制、取舍和边界。这题通常重点比较 InnoDB 和 MyISAM。InnoDB 使用聚簇索引组织数据,主键索引叶子保存完整行,二级索引叶子保存主键值;MyISAM 数据文件和索引文件分离,索引叶子通常保存数据文件地址。
tcp如何保证数据可靠性?
tcp如何保证数据可靠性?这道腾讯牛客题的关键是围绕“TCP 可靠传输机制”讲清概念、机制、取舍和边界。TCP 保证可靠传输依靠序列号、确认应答、超时重传、快速重传、校验和、滑动窗口、拥塞控制和有序重组。它保证的是可靠有序的字节流,不保证应用层消息边界。
Linux中,如何查询系统负载情况?
Linux中,如何查询系统负载情况?这道腾讯牛客题的关键是围绕“Linux 系统负载查询”讲清概念、机制、取舍和边界。Linux 查询系统负载常用 uptime、top、w 或 cat /proc/loadavg。load average 的 1/5/15 分钟值表示一段时间内处于可运行 R 或不可中断睡眠 D 状态的任务平均数。
实现消息队列(多生产者,多消费者)?
实现消息队列(多生产者,多消费者)?这道腾讯牛客题的关键是围绕“多生产者多消费者消息队列”讲清概念、机制、取舍和边界。实现多生产者多消费者队列,要先确定有界还是无界、阻塞还是非阻塞、是否需要关闭语义和背压。经典阻塞队列可用 mutex + condition variable 保护环形缓冲区或链表队列。
数据库索引的作用?
数据库索引的作用?这道腾讯牛客题的关键是围绕“数据库索引的作用”讲清概念、机制、取舍和边界。数据库索引的作用是为查询提供更高效的访问路径,减少全表扫描。它可以加速等值查询、范围查询、排序、分组和连接条件,在覆盖索引场景下还能减少回表。
如果定时任务多了单个线程处理不了,要使用多线程怎么处理?
如果定时任务多了单个线程处理不了,要使用多线程怎么处理?这道腾讯牛客题的关键是围绕“多线程任务调度与线程数配置”讲清概念、机制、取舍和边界。多线程处理任务要先把任务放进队列,再由线程池消费,避免无限创建线程。CPU 密集型线程数通常接近 CPU 核数或核数加一;I/O 密集型可以按 cores*(1+wait/compute) 估算,并通过压测校准。
如何实现多线程?
如何实现多线程?这道腾讯牛客题的关键是围绕“多线程实现方式”讲清概念、机制、取舍和边界。实现多线程要讲创建线程、任务执行、同步共享状态和生命周期收尾。C/C++ 常用 pthread_create 或 std::thread,Java 可用 Thread、Runnable、ExecutorService,Go 用 goroutine 但它是 runtime 调度的轻量协程。
要线程安全用什么Map?
要线程安全用什么Map?这道腾讯牛客题的关键是围绕“Java 线程安全 Map 选择”讲清概念、机制、取舍和边界。Java 线程安全 Map 通常优先考虑 ConcurrentHashMap。它通过分段或桶级别并发控制、CAS、volatile 和局部锁降低全表互斥成本,比 Hashtable 或 Collections.synchronizedMap 在高并发读写下更适合。
Redis 的常见数据结构有哪些?
Redis 的常见数据结构有哪些?这道腾讯牛客题的关键是围绕“Redis 数据结构与底层编码”讲清概念、机制、取舍和边界。Redis 常用对外数据结构包括 String、List、Hash、Set、ZSet、Bitmap、HyperLogLog、Geo 和 Stream。回答时还要区分对外类型和底层编码,例如 SDS、listpack、quicklist、dict、intset 和 skiplist。
协程和进程和线程的区别?
协程和进程和线程的区别?这道腾讯牛客题的关键是围绕“进程、线程与 Go 协程差异”讲清概念、机制、取舍和边界。进程是资源隔离单位,线程是内核调度实体,Go 协程 goroutine 是由 Go runtime 管理的轻量用户态执行单元。goroutine 不是 OS 线程,而是通过 GMP 调度模型以 M:N 方式复用到少量内核线程上运行。
索引是如何实现的?
索引是如何实现的?这道腾讯牛客题的关键是围绕“MySQL 索引实现与 B+ 树”讲清概念、机制、取舍和边界。MySQL InnoDB 索引主要基于 B+ 树实现。B+ 树的非叶子节点保存 key 和子页指针,叶子节点保存完整行或主键值,并按 key 有序链接,适合等值查询、范围查询和排序扫描。
io密集型和cpu密集型如何分配线程,多分配线程数量还是少?
io密集型和cpu密集型如何分配线程,多分配线程数量还是少?这道腾讯牛客题的关键是围绕“CPU 密集与 I/O 密集线程数配置”讲清概念、机制、取舍和边界。CPU 密集型任务线程数通常接近 CPU 核数或 cores+1,避免过多线程争抢 CPU;I/O 密集型任务有大量等待时间,可以按 cores*(1+wait/compute) 估算更高线程数,再用压测校准。
为什么高并发场景下用unfair锁而不是fair?
为什么高并发场景下用unfair锁而不是fair?这道腾讯牛客题的关键是围绕“高并发下非公平锁取舍”讲清概念、机制、取舍和边界。高并发场景常用非公平锁,是因为它允许刚到达的线程在锁释放瞬间直接竞争成功,减少严格排队带来的线程唤醒、挂起和上下文切换成本。它牺牲一部分公平性,换取更高吞吐和更低平均调度开销。
fair锁如何实现的?
fair锁如何实现的?这道腾讯牛客题的关键是围绕“公平锁实现机制”讲清概念、机制、取舍和边界。公平锁的核心是按等待顺序授予锁,通常通过同步队列维护排队线程。以 ReentrantLock 公平模式为例,线程获取锁前会检查队列中是否已有前驱节点,有前驱就不插队,获取失败后进入 AQS 队列等待唤醒。
TCP 黏包是什么,如何处理?
TCP 黏包是什么,如何处理?这道腾讯牛客题的关键是围绕“TCP 粘包与消息边界”讲清概念、机制、取舍和边界。TCP 粘包的根因是 TCP 提供连续字节流,不保留应用层一次 write 和一次 read 的消息边界。多个应用消息可能被合并读取,一个消息也可能被拆成多次读取,这不是 TCP 错误,而是应用协议需要定义帧边界。
MySQL 索引常用什么数据结构实现?
MySQL 索引常用什么数据结构实现?这道腾讯牛客题的关键是围绕“MySQL 索引实现与 B+ 树”讲清概念、机制、取舍和边界。MySQL InnoDB 索引主要基于 B+ 树实现。B+ 树的非叶子节点保存 key 和子页指针,叶子节点保存完整行或主键值,并按 key 有序链接,适合等值查询、范围查询和排序扫描。