个人2022秋招知识点总结、C++/Linux
个人求职方向涉及了嵌入式、后端基础架构、Linux系统层开发(内核)。拿到了大厂的offer,具体我就不透露了。
之前一直看牛客老哥们的面经分享,所以我也整理了一些我认为比较重要的C++和Linux的知识点给大家参考。
秋招结束,完结撒花
C++
- makefile问题,如果你的岗位是Linux下的C++,这个务必要会,并且要真正敲过一遍
- 常量与引用
- 右值引用有什么用
- 转发、完美转发、万能引用、std::move
- 结构体对齐,如何设置和取消结构体对齐
- 函数参入传入过程,什么是寄存器传参和内存传参
- 堆、栈。各自保存什么?栈保存的哪些东西?
- 内存分为几个段
- 虚函数表,虚函数指针,虚函数各自放在哪个段中
- 空类大小是多少,空结构体大小是多少
- 什么是多态,如何实现的?
- RTTI和RAII是什么
- 智能指针:为何不用auto_ptr?有哪些弊端?shared_ptr如何设计的?是否线程安全?
- STL相关
- sort如何设计的
- map和unordered_map底层实现
- 自己实现一个vector
- #define和const区别
- #define和inline区别
- NULL和nullptr区别
- const与constexpr区别
- __attribute__关键字
- C如何调用C++,C++如何调用C
- struct和class区别
- 编译过程
- gdb使用
- 初始化列表与构造函数区别
- 函数指针如何指向类的静态方法和动态方法
- 如何暴露static函数
- 临时对象销毁时机,可能引发的问题
- 重载操作符
- C++关键字
- asmlinkage关键字
- 萃取、元编程
- 不用final如何设计不能被继承的类
- 无锁编程如何实现
- void (*f[3])(int)是什么意思
- int(*fun())()是什么意思
- 函数传参和返回值,调用哪个构造函数?
- 编译器默认生成的4个成员函数
- C++11和C++14新特性
- 一个容器能用上 for( : )循环,需要做什么
- 多重继承的问题,如果使用多重继承,那么二义性如何解决?
- 析构函数为什么要是虚函数,构造函数为什么不能是虚函数
- 静态多态和动态多态
- 如果用空指针调用成员函数,会怎么样
- 什么是类型安全
- 数组名也是指针,那么它和指针有什么不一样?可能造成什么问题?
- 为什么dynamic_cast需要类中有虚函数?
- 抽象类和普通类区别,如何定义抽象类?
- 如何实现无锁队列
- 深拷贝、潜拷贝
- 模板全特化、偏特化
- 如何在mian函数之前,之后,运行特定的代码
- 如何定位段错误、如何定位内存泄漏
- 如何实现一个内存池?
Linux&操作系统
- MAN手册使用
- Linux信号、不可忽略的信号
- 进程同步机制、线程同步机制
- 进程调度算法、线程调度机制
- CFS完全公平调度、时间片轮转调度
- 进程调度、线程调度的区别与损耗对比
- 进程退出的几方式
- 陷入内核态的途径有哪些
- 进程状态模型、Linux几种进程状态
- 僵尸进程、孤儿进程、守护进程等
- 缺页中断发生的时机,处理办法(kmalloc会发生缺页中断吗、vmalloc会发生缺页中断吗)
- 死锁必要条件
- 内存管理问题(段、页、段页式、slab、ptmalloc)
- fork、vfork、clone以及写时拷贝
- Linux 5种IO模型
- Linux 文本处理三剑客awk、grep、sed
- Linux 重定向、软连接、硬链接、inode
- Linux 7种文件类型
- 常用命令考查(vim、ls、cd、pwd、df、top、ps)
- 系统调用过程(以read为例)
- 中断过程、判别中断+各种锁的使用情况,以及可能出现的问题
- malloc申请40G、0字节 分别会发生什么
- 虚拟内存(MMU、TLB)
- Linux 信号实现机制
- 利用/proc目录计算CPU利用率
- select、poll、epoll特点、区别
总结
每个问题面试官都有可能深挖,这样光背诵八股文是完全不够的。每个问题最好问自己三个问题:
- 为什么要这样用?你会怎么设计?
- 这样的好处有哪些,缺点有哪些,特点有哪些,适合做什么。
- 是否在实际项目中用过?
以上三个问题只是非常典型的深入下去的问题,如果没有准备,一看就知道你是背诵的,没有实际经验。
差不多就这么多啦!!!
#面经##C/C++##学习路径#