zbt78 / Interview

CPP面试修炼

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Interview | 📚 by ericps

不定期添加和C++面试相关内容

cpp_logo.png

面试题总结

常见八股面试题总结,参考 Guide 文件夹

  1. Guide_1.md
  2. Guide_2.md
  3. Guide_3.md
  4. Guide_4.md

C++ 基础

C++ 基础关键字的用法,更多参考base_code 文件夹

  1. assert.cpp:断言语句,只有在Debug版本才有效
  2. c_polymorphism.c, c++_polymorphism.cpp:多态在c和c++中的实现
    • C 中使用函数指针,typedef void (*pf) (); 表示重定义一个函数指针的类型
    • C++ 中使用虚函数,virtual override
  3. colon.cpp:C++ 中冒号的使用,包括全局变量、类成员定义
  4. decltype.cpp:推导表达式类型,与 using/typedef 联合使用定义类型
  5. const_volatile.cpp: 通过volatile关键字修改const常量
  6. static_in_class.cpp: 类中定义的静态成员变量不占类的大小,在类外分配空间;静态成员函数不能调用非静态成员,因为缺乏this指针
  7. 更多移步到 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 文件夹

  1. unique_ptr.cpp: 独占指针
  2. ++i_i++.cpp: ++ii++区别++i可以作为左值,i++不能作为左值(需要调用拷贝构造函数,测试之后只有一次?)
  3. regexEx.cpp: C++正则表达式regex的用法
  4. tieTuple.cpp: C++标准库函数tietuple的用法
  5. small_big_end.cpp: 大小端问题,“大端正着看,小端反着看”
  6. accumulate.cpp: 标准库的求和模板函数
  7. virtual_public.cpp: 虚拟继承解决菱形继承问题
  8. itemPool.cpp: 重载 new/delete 实现对象池 🔥
  9. producer_consumer.cpp: 互斥锁和条件变量实现生产者消费者模型 🔥
  10. 更多参考 practice文件夹

常见算法

常见 LeetCode 算法总结,algorithm 文件夹

  1. 背包问题
  2. 二分查找
  3. 回溯算法
  4. 搜索算法
  5. 差分数组
  6. 单调栈
  7. 并查集
  8. 二叉树遍历方式
  9. 二叉树路径问题
  10. 排序
  11. 线段树
  12. 字典树
  13. 双指针
  14. 最长上升子序列
  15. 数位DP
  16. 其他算法

ACM 模式备忘代码

处理链表二叉树等数据结构以及输入处理技巧,参考 memo 文件夹

  1. ListNode.cpp: 链表
  2. TreeNode.cpp: 二叉树

Linux 相关

《Linux 高性能服务器编程》阅读笔记,Linux 文件夹

详见 Linux-readme.md

数据库

设计模式

常见设计模式

  • 单例模式:饿汉式、懒汉式
  • 工厂模式:简单工厂、抽象工厂
  • 观察者模式

参考:DesignPattern.md

流媒体相关

流媒体相关知识点,常见协议说明,包括 RTMP、RTSP、HLS、DASH 等

参考:Streaming.md

面经汇总

不同公司的面经,review 文件夹

📖 📖 📖 📖 📖
百度 阿里 腾讯 字节跳动 快手
美团 京东 蚂蚁集团 小红书 米哈游
国企银行 手机电脑厂 其他面经

其他

  • CMakeLists.txt:方便 CLion 同时编译多个文件的配置文件
  • C_C++.md:C/C++八股文,大部分摘自拓跋阿秀,外加自己勘误
  • CPPhelper.md:一些关于 CPP 的零碎知识,例如 g++, CMakeLists.txt, makefile 等

About

CPP面试修炼


Languages

Language:C++ 69.9%Language:C 29.7%Language:Makefile 0.2%Language:CMake 0.1%Language:HTML 0.1%