本来以为小厂(还是实习岗)不会问些太难的,确实有点超乎我的意料了。全程65分钟 没录音 说点印象深刻的吧。1、vector,at用过吗,assign用过吗,vector初始化的方式有哪些,说一下std::array和vector的区别,说一下push_back和emplace_back的区别,如何知道emplace_back拷贝次数更少的(我说构造函数打印1 观察打印出来的个数来判断 但面试官好像不太同意)2、如何让类只能在堆内存上开辟 (把析构函数放在private 写个方法手动析构 但面试官好像没听过)3、指针和引用的区别,可以定义引用的引用吗(以为是int a = 0; int &b = a; int &c = b;这种意思,但事后查了一下这个确实不能叫引用的引用)4、如何禁止默认构造函数(脑抽说了一下explicit 后来想改回delete已经晚了)5、使用过模板吗,为什么模板声明和定义不能分开写,说一下模板的特化6、听说过类的前置声明吗?有什么用7、用过override的吗,写在哪,与不写相比区别在哪?8、用过内联函数吗,一般写在头文件上还是cpp文件中9、如何计算一个类的大小10、讲一下智能指针 说一下智能指针的大小(我说得看类的内部实现 估计面试官理解成所指向的对象的内部实现了 但我其实是不清楚shared_ptr除了计数器指针和对象指针还有没有其它成员变量)11、讲一讲进程通信的方式,用过条件变量吗,如何防止虚假唤醒的情况,遇到过唤醒丢失吗?12、用const_cast吗,讲一下怎么使用的,constexpr听说过吗?和const区别在哪。13、讲一下std::move。14、构造函数列表初始化和赋值的区别,有哪些情况必须要通过列表初始化,成员变量在构造函数构造和默认初始化有什么区别(大概是int a=0;这种意思),如果int a=0;以及在构造函数中让其列表构造a(1);最后a是几?会被构造两遍吗?15、用过c++14或者17吗?16、知道编译吗,讲一下写的代码到可执行文件经历了什么过程,说一下动态库和静态库的区别,知道.o文件吗?17、平时你构建项目是用的什么(讲了cmake)反问:部门主要是做类似任务调度的工作(类似于操作系统层),比如刹车放在优先级更高的位置。#面经#