面试真题

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

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

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

按难度

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

技术岗641 道 · 点击进入查看参考答案

简单C++
enum和enum class的区别?
结论:enum class是C++11强类型枚举,比传统enum更安全。核心区别:1.作用域:传统enum枚举量在外层作用域,易冲突;enum class枚举量在类作用域内,需用Enum::Val访问。2.隐式转换:传统…
🎤 字节跳动
简单C++
explicit` 的作用?
结论:explicit修饰C++构造函数,禁止隐式类型转换。原理:1.单参数构造函数默认允许隐式转换如A a=10;调用构造。2.加explicit后只能显式A a(10);阻止意外转换。3.提升类型安全,避免如bool…
🎤 百度
简单C++
if/switch中的初始化器
结论:C++17起支持if/switch初始化器,允许在条件前声明并初始化变量,其作用域仅限控制结构内部。原理:语法扩展为if (init; cond)和switch (init; cond),编译器先执行init再判断…
🎤 阿里巴巴
简单C++
map和unordered_map相关
结论:二者均为关联式键值容器,禁止重复key(multimap允许),主要差异在底层与有序性。核心要点:map以红黑树实现,迭代器遍历得到升序序列,查找稳定O(log n);unordered_map以哈希桶实现,遍历顺…
🎤 腾讯
简单C++
map可以寻址吗?
结论:map不支持像数组那样的常数时间随机寻址(按整数下标访问),但提供按键查找的operator[]。原理:map底层红黑树节点分散在堆上,内存不连续,仅提供双向迭代器而非随机访问迭代器,因此不能通过索引直接跳转;op…
🎤 Momenta
简单C++
new和malloc的区别?
结论:new是C++运算符,malloc是C标准库函数,二者在类型、构造、失败处理等方面不同。要点:1.new自动计算所需内存大小并返回对应类型指针,malloc需显式传入字节数且返回void*需强转;2.new分配内存…
🎤 美团
简单C++
std::sort 使用了哪种排序算法?
结论:std::sort通常实现为内省排序(introsort),混合快速排序、堆排序和插入排序。原理:1. 先以快排递归分区;2. 当递归深度超过2*log2(N)时改用堆排,避免快排最坏O(N^2);3. 数据量小(…
🎤 金山
简单C++
关键字override,final的作用
结论:C++中override显式标记函数重写基类虚函数,编译器强制检查签名匹配;final修饰类阻止继承,修饰虚函数阻止进一步重写。原理:override是上下文关键字,用于编译期多态检查,若未真正重写则报错;fina…
🎤 腾讯
简单C++
C++ 编译过程(四个阶段)
结论:C++编译分为预处理、编译、汇编、链接四个阶段。核心要点:预处理处理#指令,展开宏、包含头文件、条件编译,生成.i文件;编译将预处理代码进行词法、语法、语义分析及优化,翻译成汇编代码生成.s文件;汇编把汇编指令逐条…
🎤 百度
简单C++
vector和array的区别
结论:array是编译期固定大小的栈数组封装,vector是运行时动态大小的堆数组。核心要点:1. 大小:array<T,N>大小N编译确定不可变;vector可动态resize;2. 内存:array通常在栈(或全局区…
🎤 Momenta
简单Go
1000个 goroutine 进行 IO 处理会发生什么?
结论:Go运行时可高效调度1000个goroutine进行IO,不会阻塞OS线程,资源占用低。核心要点:goroutine轻量(初始栈2KB),创建和切换成本低;网络IO时,goroutine阻塞触发runtime.ne…
🎤 网易
简单Go
发给10个协程,如何打出升序的数字
结论:通过channel控制协程结果按序输出,避免并发乱序。核心要点:1.启动10个协程并发执行,各自生成数字但完成顺序不确定;2.主协程预建10个channel,协程i向ch[i]发送数字i;主协程按索引0~9依次接收…
🎤 滴滴
简单Go
讲讲defer关键字
结论:Go中defer用于延迟函数调用,在所在函数返回前按后进先出执行。原理:defer注册函数并拷贝参数压栈,函数return或panic时弹出。场景:资源释放(关文件、解锁)、错误日志;示例:f,_:=os.Open…
🎤 百度
简单Go
结构体中的tag有什么作用
结论:结构体tag是字段的元信息字符串,主要用于反射场景下的序列化、校验、ORM映射等。原理:以Go为例,tag用反引号附在字段后如`json:"name"`;encoding/json等包通过反射读取tag,决定编码键…
🎤 大华股份
简单Go
开辟多个写协程向一个channel中写数据 是有序吗?
结论:多个写协程并发向同一个channel写数据,写入顺序不保证有序;channel本身不提供跨协程的写入顺序保证。 要点: - Go channel的发送操作是原子且互斥的,但哪个协程先获得发送机会由调度器决定; - …
🎤 京东
简单Go
切片的复制过程
结论:切片复制分两种,切片表达式仅复制元数据(浅拷贝),copy函数复制元素值(表层拷贝)。过程:使用copy(dst,src)时,系统取min(len(dst),len(src))个元素,将src对应索引处的元素逐个赋…
🎤 大华股份
简单Go
切片和数组的区别
结论:数组是固定长度的值类型,切片是动态长度的引用类型。区别:1. 数组长度编译期确定且属于类型([2]int与[3]int不同),赋值传参时整体拷贝;切片长度运行时可变,赋值时仅拷贝切片头。2. 数组在内存中直接连续存…
🎤 百度
简单Go
如何判断一个结构是否实现了某个接口?
结论:Go接口为隐式实现,判断结构体是否实现接口可用编译期断言或运行时类型断言。核心:1. 编译期检查:在包中声明 var _ MyInterface = (*MyStruct)(nil),若未实现则编译报错;2. 运行…
🎤 大华股份
简单Go
channel在项目中的4种典型应用
结论:channel典型应用有4种:1.数据传递:主协程与子协程通过chan传值,如go func(){ch<-res}();2.工作池:用任务chan分发,多个worker消费,控制并发,jobs:=make(chan…
🎤 百度
简单Go
defer的应用场景与defer的执行顺序
结论:defer用于延迟执行,常用于资源释放、异常恢复和退出前操作;执行顺序为后进先出(LIFO)。应用场景:1.关闭文件句柄;2.解锁互斥锁;3.recover捕获panic;4.记录函数耗时。执行顺序:函数内多个de…
🎤 百度
题目整理自公开面经,答案由校招宝自研生成,仅供参考