Interview
Interview copied to clipboard
CPP面试修炼
Interview | 📚 by ericps
不定期添加和C++面试相关内容

面试题总结
常见八股面试题总结,参考
Guide文件夹
- Guide_1.md
- Guide_2.md
- Guide_3.md
- Guide_4.md
C++ 基础
C++ 基础关键字的用法,更多参考
base_code文件夹
- assert.cpp:断言语句,只有在Debug版本才有效
- c_polymorphism.c, c++_polymorphism.cpp:多态在c和c++中的实现
- C 中使用函数指针,
typedef void (*pf) ();表示重定义一个函数指针的类型 - C++ 中使用虚函数,
virtual override
- C 中使用函数指针,
- colon.cpp:C++ 中冒号的使用,包括全局变量、类成员定义
- decltype.cpp:推导表达式类型,与 using/typedef 联合使用定义类型
- const_volatile.cpp: 通过
volatile关键字修改const常量 - static_in_class.cpp: 类中定义的静态成员变量不占类的大小,在类外分配空间;静态成员函数不能调用非静态成员,因为缺乏
this指针 - 更多移步到 base_code/readme
C++ 新特性
C++11/14/17/20新特性,
C++2.0文件夹
包括但不限于:
- 智能指针
- 引入了 auto 和 decltype 这两个关键字实现了类型推导
- 基于范围的 for 循环:for(auto& i : res){}
- 类和结构体的中初始化列表
- Lambda 表达式(匿名函数)
- std::forward_list(单向链表)
- 右值引用和move语义
具体参考 C++2.0/README.md
常见 STL 库
C++ 一些标准模板库的常规使用,
STL文件夹
C++ Standard Library(标准库)包括 Standard Template Library(标准模板库),STL 分为六大类型:容器、分配器、算法、迭代器、适配器和仿函式
包括但不限于 vector, map, set, queue, queue_priority, sort 等等,具体参考 STL/README.md
实践代码
C++ 实战代码和一些备忘知识点,
practice文件夹
- unique_ptr.cpp: 独占指针
- ++i_i++.cpp:
++i和i++的区别,++i可以作为左值,i++不能作为左值(需要调用拷贝构造函数,测试之后只有一次?) - regexEx.cpp: C++正则表达式
regex的用法 - tieTuple.cpp: C++标准库函数
tie和tuple的用法 - small_big_end.cpp: 大小端问题,“大端正着看,小端反着看”
- accumulate.cpp: 标准库的求和模板函数
- virtual_public.cpp: 虚拟继承解决菱形继承问题
- itemPool.cpp: 重载 new/delete 实现对象池 :fire:
- producer_consumer.cpp: 互斥锁和条件变量实现生产者消费者模型 :fire:
- 更多参考 practice文件夹
常见算法
常见 LeetCode 算法总结,
algorithm文件夹
| :book: | :book: | :book: | :book: | :book: |
|---|---|---|---|---|
| 1.排序 :star: | 2.二分查找 | 3.回溯算法 :star: | 4.搜索算法 :star: | 5.差分数组 |
| 6.单调栈 | 7.并查集 | 8.二叉树遍历方式 | 9.二叉树路径问题 | 10.背包问题 |
| 11.线段树 | 12.字典树 | 13.双指针 :star: | 14.最长上升子序列 | 15.数位DP |
| 16.其他算法 |
自定义常见数据结构
处理链表二叉树等数据结构以及输入处理技巧,参考
memo文件夹
- ListNode.cpp: 链表
- TreeNode.cpp: 二叉树
Linux 相关
《Linux 高性能服务器编程》阅读笔记,
Linux文件夹
详见 Linux-readme.md
- 参考1:《Linux 高性能服务器编程》游双著
- 参考2:牛客——Linux高并发服务器开发
数据库
- MySQL
- Redis
设计模式
常见设计模式
- 单例模式:饿汉式、懒汉式
- 工厂模式:简单工厂、抽象工厂
- 观察者模式
参考:DesignPattern.md
流媒体相关
流媒体相关知识点,常见协议说明,包括 RTMP、RTSP、HLS、DASH 等
参考:Streaming.md
面经汇总
不同公司的面经,
review文件夹
| :book: | :book: | :book: | :book: | :book: |
|---|---|---|---|---|
| 百度 | 阿里 | 腾讯 | 字节跳动 | 快手 |
| 美团 | 京东 | 蚂蚁集团 | 小红书 | 游戏厂 |
| 国企银行 | 国企子公司 | 金融科技 | 武汉企业 | 其他面经 |
其他
- CMakeLists.txt:方便 CLion 同时编译多个文件的配置文件
- C_C++.md:C/C++八股文,大部分摘自拓跋阿秀,外加自己勘误
- CPPhelper.md:一些关于 CPP 的零碎知识,例如 g++, CMakeLists.txt, makefile 等