/Interview-1

CPP面试修炼

Primary LanguageC++

Interview | 📚 by ericps

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

cpp_logo.png

Guide Dir

不同公司的面试总结

  1. ByteDanceGuide.md:字节面试指南

  2. KuaishouGuide.md:快手面试指南

  3. Baidu.md:百度面试指南

STL Dir

C++一些标准库的常规使用

包括但不限于 vector, map, set, queue, queue_priority, sort 等等,具体参考 STL/README.md

algorithm dir

常见的LeetCode算法总结

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

base_code dir

C++基础关键字的用法,C++_base.md 中第二部分有相关描述

  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. 更多参考 base_code文件夹 ...

c++2.0 dir

C++11/14/17/20新特性

包括但不限于:

  • 智能指针
  • 引入了 auto 和 decltype 这两个关键字实现了类型推导
  • 基于范围的 for 循环:for(auto& i : res){}
  • 类和结构体的中初始化列表
  • Lambda 表达式(匿名函数)
  • std::forward_list(单向链表)
  • 右值引用和move语义

具体参考 c++2.0/README.md

memo dir

处理链表二叉树等数据结构以及输入处理技巧

  1. listnode.cpp: 链表
  2. treenode.cpp: 二叉树

practice dir

C++实战代码和一些备忘知识点

  1. unique_ptr.cpp:智能指针
  2. const_volatile.cpp:通过volatile关键字修改const常量
  3. static_in_class.cpp:类中定义的静态成员变量不占类的大小,在类外分配空间;静态成员函数不能调用非静态成员,因为缺乏this指针
  4. ++i_i++.cpp++ii++区别++i可以作为左值,i++不能作为左值(需要调用拷贝构造函数,测试之后只有一次?)
  5. regexEx.cpp:C++正则表达式regex的用法
  6. tieTuple.cpp:C++标准库函数tietuple的用法
  7. small_big_end.cpp: 大小端问题,“大端正着看,小端反着看”
  8. accumulate.cpp:标准库的求和模板函数
  9. 更多参考 practice文件夹 ...

Streaming Media

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

参考:streaming.md

Review dir

不同公司的面经

  1. 百度面经
  2. 字节面经
  3. 快手面经
  4. 阿里巴巴
  5. 蚂蚁集团
  6. 美团
  7. 米哈游
  8. 红海无线
  9. 其他面经

其他

  • CMakeLists.txt:方便CLion同时编译多个文件的配置文件
  • C_C++.md:C/C++八股文,摘自拓跋阿秀
  • CPPhelper.md:一些关于 CPP 的零碎知识,例如 g++, CMakeLists.txt, makefile 等
  • C++_base.md:来自北邮《C++面向对象程序设计实践》课程知识点和基础关键字代码