面试真题

技术面 + 非技术面高频问题 · 企业真题标题 + 校招宝自研参考答案
面试真题
2508 道
技术岗
641 道
非技术岗
1867 道
当前筛选
23 道

按赛道技术岗以技术方向细分;非技术岗按「结构化 / 半结构化 / 无领导 / HR / 职能」细分

按方向/形式点选即筛,再点「全部」还原

按难度

按企业点选查看该公司全部题目

技术岗 · 难度:中等 · 企业:字节跳动23 道 · 点击进入查看参考答案

中等C++
如何定义只能在堆上生成对象的类
将析构函数设为private或protected并提供静态工厂方法,禁止栈上分配。核心要点:栈对象离开作用域需调用析构,若析构私有则编译报错;堆对象由delete显式调用,可在类内静态方法或友元中访问私有析构;也可将构造…
🎤 字节跳动
中等C++
手撕 unique_ptr
结论:unique_ptr是独占所有权智能指针,手撕需实现移动语义并禁止拷贝。核心要点:1. 内部持有裸指针T* ptr和删除器(默认delete);2. 析构调用删除器释放资源;3. 禁用拷贝构造和拷贝赋值(=dele…
🎤 字节跳动
中等C++
手撕LRUCache
结论:LRUCache由哈希表+双向链表组成,实现O(1)访问与淘汰。核心要点:1)unordered_map<int, list<pair<int,int>>::iterator>记录key到链表节点迭代器;2)lis…
🎤 字节跳动
中等C++
C++多继承是什么?有什么问题?怎么解决的?
多继承指一个派生类同时继承多个基类,可组合多类能力。问题:菱形继承引发数据冗余与二义性,如B、C继承A,D继承B和C,D内含两份A成员,访问A成员时产生歧义。解决:采用虚继承(virtual public),使公共基类在…
🎤 字节跳动
中等C++
C++多态相关
C++多态相关核心是实现机制:虚函数与虚表。基类声明virtual函数,派生类重写(签名一致);每个含虚函数的类有虚函数表(vtable)存函数指针,对象内含虚表指针(vptr)指向所属类vtable。调用虚函数时经vp…
🎤 字节跳动
中等C++
C++weak_ptr
结论:weak_ptr是弱引用智能指针,配合shared_ptr使用,不增加引用计数,解决循环引用和临时所有权。要点:1.由shared_ptr构造如auto wp=weak_ptr(sp); 2.不拥有对象,不影响生命…
🎤 字节跳动
中等C++
map是线程安全的吗?如何实现线程安全的map
结论:std::map不是线程安全的,多线程并发读写需外部同步。实现方式:1) 粗粒度锁:用std::mutex包裹所有操作,写时独占,读时共享(shared_mutex);2) 细粒度分段锁:将key空间分片,每片独立…
🎤 字节跳动
中等C++
printf是怎么实现的
结论:printf是C标准库函数,解析格式串与可变参数,格式化后通过系统调用write输出。原理:1. 用va_list取可变参数,按%d/%s从栈或寄存器取参;2. 转字符串写入用户态stdout缓冲区(行缓冲);3.…
🎤 字节跳动
中等Go
defer的作用与底层原理
结论:defer使函数延迟到当前函数返回前执行,用于资源清理和流程控制;底层由编译器插入runtime调用并维护_defer链表。作用:确保资源释放(如文件、锁)、panic恢复、代码逻辑分离。底层:Go编译器在函数调用…
🎤 字节跳动
中等Go
go中协程间通信的方法有哪些
结论:Go协程间通信主要两种方法:使用通道(channel)和共享内存加同步原语。核心要点:1.Channel是Go推荐方式,遵循“通过通信共享内存”,分为无缓冲和有缓冲,可传递数据或同步信号;2.共享内存方式需配合sy…
🎤 字节跳动
中等Go
Golang 内存逃逸现象是什么
结论:内存逃逸指局部变量本应栈分配,因生命周期超出函数而被编译器分配到堆上。核心要点:Go编译器做静态逃逸分析,若变量在函数返回后仍被引用则逃逸;常见情况:返回变量指针、被闭包捕获、赋值给接口、切片/map动态增长导致底…
🎤 字节跳动
中等Go
panic与匿名函数的异常捕获和处理
结论:Go中panic触发运行时错误导致程序终止,可通过在defer中调用recover结合匿名函数捕获处理。原理:panic会中断当前函数执行,沿调用栈向上抛出,执行延迟调用(defer);若在defer函数(常写为匿…
🎤 字节跳动
中等后端
如何设计一个朋友圈
核心要点:1.功能包括发布动态、好友Feed流、点赞评论;2.采用推拉结合Feed模型;3.存储分层与缓存加速。结构化方案:关系链服务维护好友列表(MySQL关系表);动态服务处理发布,写动态至数据库(MySQL分表或M…
🎤 字节跳动
中等操作系统
读写锁是怎么实现的
结论:读写锁采用状态拆分与等待队列实现读共享、写独占。核心要点:1. 用一个原子变量记录状态,如高位存读线程数、低位存写锁标志;2. 读锁获取时若无写者则CAS增加读计数,可重入;3. 写锁获取时CAS抢占写标志并自旋等…
🎤 字节跳动
中等数据库
10万条数据分页查询优化方案
结论:避免LIMIT大偏移,改用索引覆盖和游标分页。核心要点:原SQL SELECT * FROM t LIMIT 100000,10会扫描10万行再丢,慢;优化1:子查询定位主键 SELECT * FROM t WHE…
🎤 字节跳动
中等数据库
Redis自旋锁如何实现?
结论:利用Redis单线程原子命令SET key value NX PX timeout加锁,获取锁失败则循环重试(自旋),并设置过期时间防死锁。原理:加锁使用SET lock:resource uuid NX PX 3…
🎤 字节跳动
中等数据库
Redis如何实现分布式锁?除了setnx还有其他方法吗?
结论:Redis分布式锁常用SETNX,但有其他更优方法;除SETNX外,推荐SET key value NX PX milliseconds原子命令(Redis 2.6+)避免非原子加过期导致死锁;Redlock算法基…
🎤 字节跳动
中等算法
算法 给前序遍历和中序遍历还原二叉树
结论:给定前序遍历(根左右)和中序遍历(左根右),可唯一还原二叉树。核心要点:前序首元素为根节点;在中序中找到根位置,左侧为左子树中序,右侧为右子树中序;根据左子树节点数在前序中划分左右子树前序;递归构建左右子树。优化:…
🎤 字节跳动
中等算法
算法 求字符串位置
结论:求字符串位置通常指子串查找(如实现strStr),返回模式串在主串中首次出现的起始索引,无则返回-1;推荐KMP算法。核心要点:暴力匹配O(n*m)易超时;KMP通过预处理模式串得到next数组(最长公共前后缀长度…
🎤 字节跳动
中等算法
算法 求最长回文子串
结论:最长回文子串可用中心扩展法(O(n^2))或Manacher算法(O(n))。核心要点:中心扩展以每个字符及两字符间隙为中心,向左右扩直至不匹配,记录最大长度及起点;需分别处理奇数(中心1字符)和偶数(中心2相同字…
🎤 字节跳动
第 1 / 2 页下一页 ›
题目整理自公开面经,答案由校招宝自研生成,仅供参考