面试真题

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

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

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

按难度

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

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

中等C++
如果让你实现菱形继承,你怎么做?
使用虚继承解决菱形继承的二义性和数据冗余。核心要点:在中间基类继承顶层基类时加virtual关键字,使顶层基类子对象在最终派生类中只有一份;非虚继承会导致两份基类成员,访问时产生二义性;虚继承通过虚基类表指针共享同一实例…
🎤 京东
中等C++
如何定义只能在堆上生成对象的类
将析构函数设为private或protected并提供静态工厂方法,禁止栈上分配。核心要点:栈对象离开作用域需调用析构,若析构私有则编译报错;堆对象由delete显式调用,可在类内静态方法或友元中访问私有析构;也可将构造…
🎤 字节跳动
中等C++
手撕 std::vector
结论:std::vector是连续内存动态数组,手撕需实现内存管理、扩容和常用接口。核心要点:1. 内部维护起始指针data、大小sz、容量cap;2. 构造可分配cap空间,析构释放;3. push_back:若sz=…
🎤 拼多多
中等C++
手撕 unique_ptr
结论:unique_ptr是独占所有权智能指针,手撕需实现移动语义并禁止拷贝。核心要点:1. 内部持有裸指针T* ptr和删除器(默认delete);2. 析构调用删除器释放资源;3. 禁用拷贝构造和拷贝赋值(=dele…
🎤 字节跳动
中等C++
手撕有界环形队列
结论:用固定数组+头尾索引+计数实现有界环形队列,支持入队出队且满时拒绝。核心要点:1)成员含数组buf、容量cap、头head、尾tail、大小sz;2)入队若sz<cap则buf[tail]=x, tail=(tai…
🎤 腾讯
中等C++
手撕LRUCache
结论:LRUCache由哈希表+双向链表组成,实现O(1)访问与淘汰。核心要点:1)unordered_map<int, list<pair<int,int>>::iterator>记录key到链表节点迭代器;2)lis…
🎤 字节跳动
中等C++
手撕ringbuffer
结论:ringbuffer是环形缓冲区,用数组+读写指针高效缓冲字节流。核心要点:1)成员含char buf[N]、读r、写w指针;2)若容量为2幂可用位掩码&替代取模提升性能;3)写入时若剩余空间不足可选择覆盖或阻塞,…
🎤 微软
中等C++
手撕string
结论:手撕string需实现动态字符数组管理,支持构造、拷贝、赋值、析构。核心要点:1)成员char* s、size_t len、cap;2)构造从C串深拷贝并分配cap;3)拷贝构造深拷贝避免浅拷贝悬垂;4)赋值用co…
🎤 腾讯
中等C++
手撕weak_ptr
结论:weak_ptr是配合shared_ptr的弱引用智能指针,不增加强引用计数,用于解决循环引用。核心原理:内部持有指向控制块(含强、弱计数)的指针;构造从shared_ptr来,只增弱计数;析构减弱计数;lock(…
🎤 私募机构
中等C++
为什么要内存对齐?
结论:内存对齐提升CPU访问效率并保证硬件兼容。要点:CPU按字长读取,对齐可单次取数据,未对齐需多次拼接且某些架构(ARM)报错;编译器按最大成员填充padding,如struct{char;int;}占8字节;对比不…
🎤 百度
中等C++
虚函数表和虚函数表指针的创建时机
结论:虚函数表在编译时创建,虚函数表指针在对象构造时(运行时)设置。要点:虚函数表(vtable)由编译器在编译期为每个有虚函数的类生成静态表,存于只读数据段,存放虚函数地址;虚函数表指针(vptr)在对象实例化调用构造…
🎤 京东
中等C++
智能指针常见问题
结论:智能指针常见问题有循环引用、线程安全、性能与误用。要点:1.shared_ptr循环引用导致控制块计数不归零内存泄漏,需用weak_ptr打破,如双向链表或父子节点;2.线程安全仅保证引用计数原子,对象本身读写需加…
🎤 百度
中等C++
智能指针相关面试题,shared_ptr底层实现
结论:shared_ptr底层由一个原生指针和一个指向控制块的指针组成。原理:控制块含强引用计数、弱引用计数、删除器、分配器;对象构造时(或make_shared)分配控制块,强计数初1;拷贝shared_ptr时强计数…
🎤 西山居
中等C++
atomic应用场景以及五种操作方法
结论:std::atomic提供多线程无锁原子操作,避免数据竞争;应用场景:1.并发计数器;2.线程间标志位(如退出标志);3.无锁栈/队列等结构;五种常用操作:1.store(val)原子写;2.load()原子读;3…
🎤 亚信安全
中等C++
auto,auto&,auto&& 的作用和区别
结论:auto按值类型推导,auto&为左值引用,auto&&为转发引用(万能引用);核心要点:1.auto声明变量拷贝初始化,忽略顶层const和引用;2.auto&必须绑定左值,可修改原对象且零拷贝;3.auto&&…
🎤 阿里巴巴
中等C++
C++多继承是什么?有什么问题?怎么解决的?
多继承指一个派生类同时继承多个基类,可组合多类能力。问题:菱形继承引发数据冗余与二义性,如B、C继承A,D继承B和C,D内含两份A成员,访问A成员时产生歧义。解决:采用虚继承(virtual public),使公共基类在…
🎤 字节跳动
中等C++
C++多态相关
C++多态相关核心是实现机制:虚函数与虚表。基类声明virtual函数,派生类重写(签名一致);每个含虚函数的类有虚函数表(vtable)存函数指针,对象内含虚表指针(vptr)指向所属类vtable。调用虚函数时经vp…
🎤 字节跳动
中等C++
C++什么时候生成默认的构造函数?
编译器在需要时合成默认构造函数(无参):1.类有虚函数(需初始化vptr);2.有虚继承(需设虚基类指针);3.基类无默认构造或默认不可访问;4.成员对象无默认构造。若用户已定义任意构造函数,编译器不再合成默认版(可用=…
🎤 百度
中等C++
C++什么时候生成默认拷贝构造函数?
默认拷贝构造在用户未定义且被调用时由编译器合成,执行成员级浅拷贝。触发场景:同类型对象初始化(A a2=a1;)、函数按值传参、返回非引用对象。合成条件:类无用户拷贝构造;若类含虚函数,合成版会正确复制vptr指向同类型…
🎤 大疆
中等C++
C++中const和static的使用
结论:const表示只读不可修改,static表示静态存储或类级共享,二者常结合。要点:const修饰变量只读,修饰指针分顶层/底层const,修饰成员函数保证不修改对象;static修饰局部变量延长生命周期至程序结束,…
🎤 网易
题目整理自公开面经,答案由校招宝自研生成,仅供参考