MCPcopy Create free account
hub / github.com/Charmve/CppMaster

github.com/Charmve/CppMaster @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
206 symbols 322 edges 55 files 106 documented · 51% updated 2y ago★ 31517 open issues

Browse by type

Functions 168 Types & classes 38
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🌍 English | 简体中文| 日本語 | Українською

Click to see the more details

C++ Master Learning Roadmap Hot

  <a href="">
    <img alt="Actions Status" src="https://github.com/danielbayerlein/dashboard/workflows/CI/badge.svg">
  </a>
  <a href="https://codecov.io/github/richelbilderbeek/travis_qmake_gcc_cpp11_boost_test_gcov?branch=master">
    <img src="https://codecov.io/github/richelbilderbeek/travis_qmake_gcc_cpp11_boost_test_gcov/coverage.svg?branch=master" alt="codecov.io">
  </a>
  <a href="https://google.github.io/styleguide/cppguide.html">
    <img alt="Cpp Style Guide" src="https://img.shields.io/badge/code_style-standard-brightgreen.svg">
  </a>
  <a href="">
    <img alt="Docs Released" src="https://img.shields.io/badge/docs-released-green.svg">
  </a>
  <a href="">
    <img alt="Dependencies" src="https://img.shields.io/badge/dependencies-up%20to%20date-red.svg">
  </a>






    <a href="https://github.com/Charmve/CppMaster/tree/main/code">Quickstart</a> •
    <a href="https://github.com/Charmve/CppMaster/tree/main/notebooks">Notebook</a> •
    <a href="https://github.com/Charmve/CppMaster/issues">Community</a>  •
    <a href="https://charmve.github.io/CppMaster/">Docs</a>

Note: Please raise an issue for any suggestions, corrections, and feedback.

The goal of this repo is to buid a advanced C++ programing tech stack for a higher salary.

Waking-Up

大多数人都高估了他们一天能做的事情,但低估了他们一年能做的事情

💡 关于

📚 本仓库是面向 C/C++ 技术方向校招求职者、初学者的基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。

💡 侧边目录支持方式:📚 Docsify 文档Github + TOC 导航TOC预览.png

📄 保存为 PDF 方式:使用 Chrome 浏览器打开 📚 Docsify 文档 页面,缩起左侧目录-右键 - 打印 - 选择目标打印机是另存为PDF - 保存(打印预览.png

🙏 仓库内容如有错误或改进欢迎 issue 或 pr。由于本人水平有限,仓库中的知识点有来自本人原创、读书笔记、书籍、博文等,非原创均已标明出处,如有遗漏,请 issue 提出。本仓库遵循 CC BY-NC-SA 4.0(署名 - 非商业性使用 - 相同方式共享) 协议,转载请注明出处,不得用于商业目的。

Go for it!

Table of Content


⭐️ JD Cases

Index

➕ C++

问题列表,详细解答可参考: C++面经汇总

1、面向对象的三大特性:封装、继承、多态

2、类的访问权限:private、protected、public

3、类的构造函数、析构函数、赋值函数、拷贝函数

4、移动构造函数与拷贝构造函数对比

5、深拷贝与浅拷贝的区别

6、空类有哪些函数?空类的大小?

7、内存分区:全局区、堆区、栈区、常量区、代码区

https://blog.csdn.net/m0_37202877/article/details/126243403

8、C++与C的区别

9、struct与class的区别

10、struct、union 内存对齐

11、new/delete与malloc/free的区别

12、内存泄露的情况分析

13、sizeof与strlen对比

14、指针与引用的区别

  • C语言的指针和引用和c++的有什么区别?

15、野指针产生与避免

16、多态:动态多态、静态多态

17、虚函数实现动态多态的原理、虚函数与纯虚函数的区别

https://johnysswlab.com/the-true-price-of-virtual-functions-in-c/

18、继承时,父类的析构函数是否为虚函数?构造函数能不能为虚函数?为什么?

19、静态多态:重写、重载、模板

20、static关键字:修饰局部变量、全局变量、类中成员变量、类中成员函数

  • C 语言的关键字static和 C++ 的关键字static有什么区别

21、const关键字:修饰变量、指针、类对象、类中成员函数

22、extern关键字:修饰全局变量

23、volatile关键字:避免编译器指令优化

  • 一个参数可以既是const又是volatile吗

24、四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

25、C++11 部分新特性,比如右值引用、完美转发等

  • 什么是右值引用,跟左值又有什么区别?

  • 完美转发

26、std::move函数

27、四种智能指针及底层实现:auto_ptr、unique_ptr、shared_ptr、weak_ptr

28、shared_ptr中的循环引用怎么解决?(weak_ptr)

29、vector与list比较

  • vector的底层原理
  • list的底层原理
  • vector中的reserve和resize的区别
  • vector中的size和capacity的区别
  • vector中erase方法与algorithn中的remove方法区别
  • 正确释放vector的内存(clear(), swap(), shrink_to_fit())
  • vector迭代器失效的情况
  • 什么情况下用vector,什么情况下用list,什么情况下用 deque

30、priority_queue的底层原理

31、STL部分容器的实现原理,如 vector、deque、map、hashmap、set、list

  • map与unordered_map对比
  • set\map机制
  • map 、set、multiset、multimap的底层原理
  • map 、set、multiset、multimap的特点
  • 为何map和set的插入删除效率比其他序列容器高
  • 为何map和set每次Insert之后,以前保存的iterator不会失效?
  • 当数据元素增多时(从 10000 到 20000),map的set的查找速度会怎样变化?
  • 为何map和set的插入删除效率比其他序列容器高,而且每次insert 之后,以前保存的iter
  • 为何map和set不能像vector一样有个reserve函数来预分配数据?
  • set的底层实现实现为什么不用哈希表而使用红黑树?
  • hash_map与map的区别?什么时候用hash_map,什么时候用map?

32、set与unordered_set对比

33、STL容器空间配置器

  • 📦 STL
  • STL线程不安全的情况

34、变量的声明和定义有什么区别

35、简述strcpysprintfmemcpy的区别

36、请解析(*(void (*)( ) )0)( )的含义

37、设置地址为0x67a9的整型变量的值为0xaa66

38、简述指针常量与常量指针的区别

39、请你来说一下 C++ 中struct和class的区别

40、简述#ifdef#else#endif#ifndef的作用

41、typedefdefine有什么区别

  • 写一个 “标准”宏MIN

42、写出int 、bool、 float、指针变量与 “零值”比较的if语句

43、结构体可以直接赋值吗

44、谈谈你对拷贝构造函数和赋值运算符的认识

45、sizeof和strlen的区别

46、关键字 override - 简述类成员函数的重写、重载和隐藏的区别

47、C++ 自己实现一个String类

48、用两个栈实现一个队列的功能

49、高级数据结构

  • 红黑树
  • B B+树

50、编译链接机制、内存布局(memory layout)、对象模型

参考书籍:《C++ Primer》(第5版)、《STL源码剖析》、

Index

Buy Me A Coffee

性能优化

image

from: https://www.brendangregg.com/ebpf.html

https://cloud.tencent.com/developer/article/2134930

主要聚焦在多线程(CPU)、内存(Memory)的优化上,以冯·诺依曼体系结构为参考。

coredump配置、产生、分析以及分析示例

深入理解 Cache 工作原理 CPU Cache 机制以及 Cache miss

Nvidia Xavier/Orin

高性能计算

  • CUDA 并行编程模型及常用优化方法,熟悉基于 TensorRT 编程方法;
  • 熟练掌握CUDA程序性能分析、问题定位及调试的能力,掌握对应 CUDA 工具的使用;
  • 熟悉 PTX/SASS,有编译优化经验;
  • OpenCL & Cuda
  • 模型推理 TensorRT、ONNXRuntime

Index

💻 操作系统

1、进程与线程区别

2、线程同步的方式:互斥锁、自旋锁、读写锁、条件变量

3、互斥锁与自旋锁的底层区别

4、孤儿进程与僵尸进程

5、死锁及避免

6、多线程与多进程比较

7、进程间通信:PIPE、FIFO、消息队列、信号量、共享内存、socket

8、管道与消息队列对比

9、fork进程的底层:读时共享,写时复制

10、线程上下文切换的流程

11、进程上下文切换的流程

12、进程的调度算法

13、阻塞IO与非阻塞IO

14、同步与异步的概念

15、静态链接与动态链接的过程

16、虚拟内存概念(非常重要)

17、MMU地址翻译的具体流程

18、缺页处理过程

19、缺页置换算法:最久未使用算法、先进先出算法、最佳置换算法

参考书籍:《Unix环境高级编程》、《Linux多线程服务器端编程》

Index

文件系统

I/O

内存管理

虚拟内存
共享内存

进程和线程

多线程/线程池
时间轮转片
Socket问题合集

Linux

vim

git

git原理:

其本质上是一个key-value的数据库加上默克尔树形成的有向无环图(DAG)

https://www.jiqizhixin.com/articles/2019-12-20

image

常用使用方法:

image

常用命令:

1、执行命令git checkout br_rename_old //切换到br_rename_old分支 (如果已经在这个分支下,可以不执行此步骤)

2、执行命令git pull origin br_rename_old //将代码更新到和远程仓库一致

3、执行命令git branch -m br_rename_old br_rename_new //将本地仓库的br_rename_old的名称修改为br_rename_new

4、执行命令git push origin --delete br_rename_old //将远程分支br_rename_old删除

5、执行命令git push --set-upstream origin br_rename_new //将本地分支push到远程仓库

6、修改最近一次的commit信息 git commit --amend

7、git cherry-pick

8、更新子模块 git submodule update --init --recursive

9、删除远程分支 git push origin --delete

⚙️ 编译、链接与调试

Shell/bash
Bootloader/Uboot/buildboot

RTOS/FreeRTOS

ROS

QNX

Index

容器化技术

虚拟化技术

  • Qemu
  • KVM
  • Hypervisor

ref: QEMU,KVM及QEMU-KVM介绍

Index

ARM x86

Index

缓存/并发技术

☁️ 计算机网络

网络基础问题合集

HTTP问题合集

Index

网络编程

Linux 下网络编程核心的包括系统编程网络 IO 两个部分:

1、进程间通信方式:信号量、管道、共享内存、socket 等

2、多线程编程:互斥锁、条件变量、读写锁、线程池等

3、五大 IO 模型:同步、异步、阻塞、非阻塞、信号驱动 区别/联系

4、线程池

5、高性能 IO 两种模式:Reactor 和 Proactor( 但是 Linux 下由于缺少异步 IO 支持,基本没有 Proactor)

6、IO多路复用:select、poll、epoll的区别(非常重要,几乎必问,回答得越底层越好,要会使用)

7、手撕一个最简单的server端服务器(socket、bind、listen、accept这四个API一定要非常熟练)

8、边沿触发与水平触发的区别

参考书籍:《Unix网络编程》

Index

Buy Me A Coffee

📏 设计模式

- OOP设计和设计模式

Index

Buy Me A Coffee

💾 数据库

关系型与非关系型

MySQL问题合集.md

MongoDB

Index

CI/CD

.yaml

Index

Buy Me A Coffee

自动驾驶系统架构级优化

📚 书籍

image

链接:https://github.com/Charmve/PaperWeeklyAI/tree/master/00_GuideBooksPDF(English%2BChinese)

更多免费电子书,公众号:迈微AI研习社回复 “电子书” ,可免费获取。

image

![image](https://user-images.g

Core symbols most depended-on inside this repo

Shape

Function 108
Method 60
Class 37
Enum 1

Languages

C++100%

Modules by API surface

算法库/DataStructure/RedBlackTree.cpp21 symbols
算法库/DataStructure/BinaryTree.cpp15 symbols
算法库/DataStructure/SqList.cpp13 symbols
算法库/DesignPattern/AbstractFactoryPattern/concrete_product.h12 symbols
算法库/DesignPattern/AbstractFactoryPattern/concrete_factory.h9 symbols
算法库/DataStructure/HashTable.cpp9 symbols
算法库/DesignPattern/BridgePattern/refined_abstraction.h8 symbols
算法库/DataStructure/SqStack.cpp8 symbols
算法库/DataStructure/LinkList_with_head.cpp8 symbols
算法库/DataStructure/LinkList.cpp8 symbols
算法库/DesignPattern/ObserverPattern/concrete_subject.h6 symbols
算法库/DesignPattern/BridgePattern/concrete_implementor.h6 symbols

For agents

$ claude mcp add CppMaster \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page