面试真题

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

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

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

按难度

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

企业:字节跳动34 道 · 点击进入查看参考答案

简单C++
怎么解决C++菱形继承
结论:C++菱形继承用虚继承解决。要点:1.中间类继承公共基类加virtual关键字(如class B: virtual public A);2.虚继承使底层基类在派生类对象中仅一份实例,消除二义性;3.虚基类构造由最底…
🎤 字节跳动
简单C++
C++多态解决了什么问题
多态解决用统一基类接口操作不同派生类对象的问题,消除大量类型分支判断,提升代码扩展性与可维护性。C++含静态多态(重载、模板,编译期绑定)和动态多态(虚函数,运行期绑定)。动态多态核心:基类声明virtual函数,派生类…
🎤 字节跳动
简单C++
enum和enum class的区别?
结论:enum class是C++11强类型枚举,比传统enum更安全。核心区别:1.作用域:传统enum枚举量在外层作用域,易冲突;enum class枚举量在类作用域内,需用Enum::Val访问。2.隐式转换:传统…
🎤 字节跳动
简单Java
面向对象编程的三大核心概念和5大基本原则
结论:三大核心为封装、继承、多态;五大基本原则(SOLID)为单一职责、开放封闭、里氏替换、接口隔离、依赖倒置。原理:封装隐藏属性与实现,通过公有方法访问;继承实现代码复用并建立类层次;多态允许父类引用指向子类对象,动态…
🎤 字节跳动
简单其他
面对对象的三大特征及特性
结论:面向对象三大特征为封装、继承、多态。核心要点:1.封装:将数据和操作封装在类内,私有化属性公开方法,降低耦合保障安全;2.继承:子类通过extends获取父类非私有成员,实现复用与层次化;3.多态:父类引用指向子类…
🎤 字节跳动
简单数据库
Redis SETNX与SET NX 的区别
结论:SETNX是独立命令仅做存在则设值,SET NX是SET命令的选项可原子附带过期等参数。区别:1.SETNX key value:key不存在时设值,返回1/0,无法同时设过期,需额外EXPIRE;2.SET ke…
🎤 字节跳动
简单算法
算法 反转链表
结论:单链表反转可用迭代或递归,迭代法空间O(1)最优。核心要点:迭代用三指针prev、cur、next;初始prev=null,cur=head;循环:next=cur.next暂存,cur.next=prev反转指向…
🎤 字节跳动
简单算法
算法 镜像二叉树
结论:镜像二叉树即将每个节点的左右子树互换,得到原树的镜像。核心要点:采用递归,若当前节点为空直接返回;否则递归镜像左子树和右子树,然后交换当前节点的左右指针;也可使用层序遍历(队列)逐个交换节点左右孩子。本质是对树中所…
🎤 字节跳动
简单算法
算法 求链表相交的点
结论:求两单链表相交的起始节点,最优用双指针法,时间O(n)空间O(1)。核心要点:设链表A长度a+c,B长度b+c,c为公共尾部;指针pA从A头走,到尾后跳到B头;pB从B头走,到尾后跳到A头;因pA走a+c+b,pB…
🎤 字节跳动
中等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动态增长导致底…
🎤 字节跳动
第 1 / 2 页下一页 ›
题目整理自公开面经,答案由校招宝自研生成,仅供参考