{"id":13436234,"url":"https://github.com/Charmve/CppMaster","last_synced_at":"2025-03-18T20:31:02.880Z","repository":{"id":37206453,"uuid":"421269189","full_name":"Charmve/CppMaster","owner":"Charmve","description":"C++ Master Learning Roadmap, especially for AIoT and C++ advanced SWE","archived":false,"fork":false,"pushed_at":"2023-08-04T09:14:44.000Z","size":8110,"stargazers_count":270,"open_issues_count":18,"forks_count":49,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-23T09:32:40.384Z","etag":null,"topics":["advanced-programming","boost","c","c11","cpp","cpp11","interview","jobs","linux","shell"],"latest_commit_sha":null,"homepage":"http://charmve.github.io/CppMaster","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Charmve.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-10-26T03:43:35.000Z","updated_at":"2024-05-23T02:20:24.000Z","dependencies_parsed_at":"2023-02-17T08:45:24.105Z","dependency_job_id":"a412dcd9-bca5-498c-ab72-16fbfd63d8e5","html_url":"https://github.com/Charmve/CppMaster","commit_stats":{"total_commits":72,"total_committers":3,"mean_commits":24.0,"dds":0.02777777777777779,"last_synced_commit":"ec08c816b157790ff5d628c13b098ebad8320726"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Charmve%2FCppMaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Charmve%2FCppMaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Charmve%2FCppMaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Charmve%2FCppMaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Charmve","download_url":"https://codeload.github.com/Charmve/CppMaster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244033699,"owners_count":20386979,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advanced-programming","boost","c","c11","cpp","cpp11","interview","jobs","linux","shell"],"created_at":"2024-07-31T03:00:45.733Z","updated_at":"2025-03-18T20:31:02.855Z","avatar_url":"https://github.com/Charmve.png","language":"C++","readme":"🌍 English | [简体中文](README-zh_CN.md)| [日本語](README-jp_JP.md) | [Українською](README-uk_UA.md)\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003c!--\n\t\u003ca href=\"https://charmve.github.io/L0CV-web\"\u003e\n\t\t\u003cimg src=\"https://github.com/Charmve/CppMaster/blob/main/src/header.svg\" width=\"50%\" alt=\"Click to see the more details\"\u003e\n\t\u003c/a\u003e\n  --\u003e\n  \u003ca href=\"https://charmve.github.io/L0CV-web\"\u003e\n\t\t\u003cimg src=\"src/one-logo.jpg\" width=\"36%\" alt=\"Click to see the more details\"\u003e\n\t\u003c/a\u003e\n    \u003cbr\u003e\n    \u003cp\u003eC++ Master Learning Roadmap \u003ca href=\"https://charmve.github.io/CppMaster\"\u003e\u003csup\u003e\u003ci\u003e\u003cb\u003eHot\u003c/b\u003e\u003c/i\u003e\u003c/sup\u003e\u003c/a\u003e\u003c/p\u003e\n    \u003cp align=\"center\" alt=\"CircleCI\"\u003e\n      \u003ca href=\"\"\u003e\n        \u003cimg alt=\"Actions Status\" src=\"https://github.com/danielbayerlein/dashboard/workflows/CI/badge.svg\"\u003e\n      \u003c/a\u003e\n      \u003ca href=\"https://codecov.io/github/richelbilderbeek/travis_qmake_gcc_cpp11_boost_test_gcov?branch=master\"\u003e\n        \u003cimg src=\"https://codecov.io/github/richelbilderbeek/travis_qmake_gcc_cpp11_boost_test_gcov/coverage.svg?branch=master\" alt=\"codecov.io\"\u003e\n      \u003c/a\u003e\n      \u003ca href=\"https://google.github.io/styleguide/cppguide.html\"\u003e\n        \u003cimg alt=\"Cpp Style Guide\" src=\"https://img.shields.io/badge/code_style-standard-brightgreen.svg\"\u003e\n      \u003c/a\u003e\n      \u003ca href=\"\"\u003e\n        \u003cimg alt=\"Docs Released\" src=\"https://img.shields.io/badge/docs-released-green.svg\"\u003e\n      \u003c/a\u003e\n      \u003ca href=\"\"\u003e\n        \u003cimg alt=\"Dependencies\" src=\"https://img.shields.io/badge/dependencies-up%20to%20date-red.svg\"\u003e\n      \u003c/a\u003e\n    \u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/Charmve/CppMaster/tree/main/code\"\u003eQuickstart\u003c/a\u003e •\n        \u003ca href=\"https://github.com/Charmve/CppMaster/tree/main/notebooks\"\u003eNotebook\u003c/a\u003e •\n        \u003ca href=\"https://github.com/Charmve/CppMaster/issues\"\u003eCommunity\u003c/a\u003e  •\n        \u003ca href=\"https://charmve.github.io/CppMaster/\"\u003eDocs\u003c/a\u003e \n    \u003c/p\u003e\n\u003c/div\u003e\n\n\n----\n\u003cb\u003eNote: Please raise an issue for any suggestions, corrections, and feedback.\u003c/b\u003e\n\nThe goal of this repo is to buid a advanced C++ programing tech stack for a higher salary.\n\n\u003cbr\u003e\n\n## Waking-Up\n\n\u003e 大多数人都高估了他们一天能做的事情，但低估了他们一年能做的事情\n\n\u003cb\u003e\u003cdetails\u003e\u003csummary\u003e💡 关于\u003c/summary\u003e\u003c/b\u003e\n\n📚 本仓库是面向 C/C++ 技术方向校招求职者、初学者的基础知识总结，包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。\n\n💡 侧边目录支持方式：[📚 Docsify 文档](https://charmve.github.io/CppMaster/)、[Github + TOC 导航](https://github.com/jawil/GayHub)（[TOC预览.png](https://gitee.com/huihut/interview/raw/master/images/TOC预览.png)）\n\n📄 保存为 PDF 方式：使用 Chrome 浏览器打开 \u003ca href=\"https://charmve.github.io/CppMaster/\"\u003e📚 Docsify 文档\u003c/a\u003e 页面，缩起左侧目录-右键 - 打印 - 选择目标打印机是另存为PDF - 保存（[打印预览.png](https://gitee.com/huihut/interview/raw/master/images/打印预览.png)）\n\n🙏 仓库内容如有错误或改进欢迎 issue 或 pr。由于本人水平有限，仓库中的知识点有来自本人原创、读书笔记、书籍、博文等，非原创均已标明出处，如有遗漏，请 issue 提出。本仓库遵循 [CC BY-NC-SA 4.0（署名 - 非商业性使用 - 相同方式共享）](https://github.com/huihut/interview/blob/master/LICENSE) 协议，转载请注明出处，不得用于商业目的。\n\n\u003c/details\u003e\n\n\u003ca href=\"\"\u003e\u003cimg align=\"right\" alt=\"Go for it!\" src=\"src/i_magic_box.png\" height=\"260\" title=\"Do what you like, and do it best!\"/\u003e\u003c/a\u003e\n\n### Table of Content\n\n- [⭐️ JD Cases](#%EF%B8%8F-jd-cases)\n- [➕ C/C++](#-c)\n  - [📦 STL](#-stl)\n  - [⚙️ 链接装载库](#%EF%B8%8F-编译链接与调试)\n- [💻 操作系统](#-操作系统)\n- [☁️ 计算机网络](#%EF%B8%8F-计算机网络)\n- [💾 数据库](#-数据库)\n- [📏 设计模式](#-设计模式)\n- [🐳 容器化技术](#容器化技术)\n- [🔱 C/C++ 发展方向](#cc-development-direction)\n- [📝 面试题目经验](#interview-questions-experience)\n- [📚 书籍](#-书籍)\n- [👍 内推](https://www.nowcoder.com/discuss/786270)\n- [👬 贡献者]()\n- [📜 License](LICENSE)\n\n----\n\n\u003cbr\u003e\n\n## ⭐️ JD Cases\n\n| | | |\n|--|--|--|\n|![](/src/imgs/C++开发工程师-Momenta.jpg) |![](/src/imgs/C++资深软件工程师-Momenta.jpg) |![](/src/imgs/嵌入式开发工程师-Momenta.jpg) |\n|![](/src/imgs/嵌入式软件工程师-百度.jpg) |![](/src/imgs/嵌入式软件开发工程师-蔚来.jpg) |![](/src/imgs/智能驾驶软件开发工程师-蔚来.jpg) |\n|![](/src/imgs/高级嵌入式开发工程师-小马智行.jpg) |![](/src/imgs/高精度定位融合-腾讯.jpg) |  |\n\n[Index](#table-of-content)\n\n\u003cbr\u003e\n\n## ➕ C++\n\n问题列表，详细解答可参考: [C++面经汇总](./C++面经汇总/basic_cpp.md)\n\n1、面向对象的三大特性：封装、继承、多态\n\n2、类的访问权限：private、protected、public\n\n3、类的构造函数、析构函数、赋值函数、拷贝函数\n\n4、移动构造函数与拷贝构造函数对比\n\n5、深拷贝与浅拷贝的区别\n\n6、空类有哪些函数？空类的大小？\n\n7、内存分区：全局区、堆区、栈区、常量区、代码区\n\nhttps://blog.csdn.net/m0_37202877/article/details/126243403\n\n8、C++与C的区别\n\n9、struct与class的区别\n\n10、struct、union 内存对齐\n\n11、new/delete与malloc/free的区别\n\n12、内存泄露的情况分析\n\n13、sizeof与strlen对比\n\n14、指针与引用的区别\n\n- C语言的指针和引用和c++的有什么区别？\n\n15、野指针产生与避免\n\n16、多态：动态多态、静态多态\n\n17、虚函数实现动态多态的原理、虚函数与纯虚函数的区别\n\nhttps://johnysswlab.com/the-true-price-of-virtual-functions-in-c/\n\n18、继承时，父类的析构函数是否为虚函数？构造函数能不能为虚函数？为什么？\n\n- [C++：虚函数的详解](https://developer.aliyun.com/article/363851)\n- [C++ 虚函数优化探索简介](https://zhuanlan.zhihu.com/p/563618701)\n\n19、静态多态：重写、重载、模板\n\n20、static关键字：修饰局部变量、全局变量、类中成员变量、类中成员函数\n\n- C 语言的关键字static和 C++ 的关键字static有什么区别\n\n21、const关键字：修饰变量、指针、类对象、类中成员函数\n\n22、extern关键字：修饰全局变量\n\n23、volatile关键字：避免编译器指令优化\n\n- 一个参数可以既是const又是volatile吗\n\n24、四种类型转换：static_cast、dynamic_cast、const_cast、reinterpret_cast\n\n25、C++11 部分新特性，比如右值引用、完美转发等\n\n- 什么是右值引用，跟左值又有什么区别？\n\n- 完美转发\n\n26、std::move函数\n\n27、四种智能指针及底层实现：auto_ptr、unique_ptr、shared_ptr、weak_ptr\n\n28、shared_ptr中的循环引用怎么解决？（weak_ptr）\n\n- [shared_ptr](https://blog.csdn.net/shaosunrise/article/details/85228823) 和 unique_ptr\n\n\n29、vector与list比较\n\n- vector的底层原理\n- list的底层原理\n- vector中的reserve和resize的区别\n- vector中的size和capacity的区别\n- vector中erase方法与algorithn中的remove方法区别\n- 正确释放vector的内存(clear(), swap(), shrink_to_fit())\n- vector迭代器失效的情况\n- 什么情况下用vector，什么情况下用list，什么情况下用 deque\n\n30、priority_queue的底层原理\n\n31、STL部分容器的实现原理，如 vector、deque、map、hashmap、set、list\n\n- map与unordered_map对比\n- [set\\map机制](https://blog.csdn.net/solstice/article/details/8521946)\n- map 、set、multiset、multimap的底层原理\n- map 、set、multiset、multimap的特点\n- 为何map和set的插入删除效率比其他序列容器高\n- 为何map和set每次Insert之后，以前保存的iterator不会失效？\n- 当数据元素增多时（从 10000 到 20000），map的set的查找速度会怎样变化？\n- 为何map和set的插入删除效率比其他序列容器高，而且每次insert 之后，以前保存的iter\n- 为何map和set不能像vector一样有个reserve函数来预分配数据?\n- set的底层实现实现为什么不用哈希表而使用红黑树？\n- hash_map与map的区别？什么时候用hash_map，什么时候用map？\n\n32、set与unordered_set对比\n\n33、STL容器空间配置器\n\n- [📦 STL](http://c.biancheng.net/stl/)，\n- STL线程不安全的情况\n\n34、变量的声明和定义有什么区别\n\n35、简述``strcpy``、``sprintf``与``memcpy``的区别\n\n36、请解析`(*(void (*)( ) )0)( )`的含义\n\n37、设置地址为``0x67a9``的整型变量的值为0xaa66\n\n38、简述指针常量与常量指针的区别\n\n39、请你来说一下 C++ 中struct和class的区别\n\n40、简述`#ifdef`、`#else`、`#endif`和`#ifndef`的作用\n\n41、`typedef`和`define`有什么区别\n\n- 写一个 “标准”宏MIN\n\n42、写出int 、bool、 float、指针变量与 “零值”比较的if语句\n\n43、结构体可以直接赋值吗\n\n44、谈谈你对拷贝构造函数和赋值运算符的认识\n\n45、sizeof和strlen的区别\n\n46、关键字 override\n- 简述类成员函数的重写、重载和隐藏的区别\n\n47、C++ 自己实现一个String类\n\n48、用两个栈实现一个队列的功能\n\n49、高级数据结构\n\n- 红黑树\n- B B+树\n- 图\n\n50、编译链接机制、内存布局（memory layout）、对象模型\n\n\u003e 参考书籍：《C++ Primer》（第5版）、《STL源码剖析》、\n\n[Index](#table-of-content)\n\n\u003ca href=\"https://charmve.github.io/sponsor.html\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-red.png\" alt=\"Buy Me A Coffee\" width=\"150\" \u003e\u003c/a\u003e\n\n\u003cbr\u003e\n\n## 性能优化\n\n![image](https://user-images.githubusercontent.com/29084184/224635657-784120f2-1b4b-4044-9473-211843ba103c.png)\n\nfrom: https://www.brendangregg.com/ebpf.html\n\nhttps://cloud.tencent.com/developer/article/2134930\n\n\n主要聚焦在多线程（CPU）、内存（Memory）的优化上，以冯·诺依曼体系结构为参考。\n\n- 分析工具 [gpertool](https://github.com/gperftools/gperftools/) [profiling](https://gperftools.github.io/gperftools/cpuprofile.html)、[profiling](https://zhuanlan.zhihu.com/p/362575905)、[llvm-perf](https://releases.llvm.org/1.7/docs/CommandGuide/html/llvm-prof.html)\n- 掌握多线程优化方法，熟悉基本的资源调度方法；\n\n[coredump配置、产生、分析以及分析示例](https://www.cnblogs.com/arnoldlu/p/11160510.html)\n\n\n[深入理解 Cache 工作原理](https://www.modb.pro/db/153718)\n[CPU Cache 机制以及 Cache miss](https://www.cnblogs.com/jokerjason/p/10711022.html)\n\n### Nvidia Xavier/Orin\n- [CUDA编程之快速入门](https://www.cnblogs.com/skyfsm/p/9673960.html)\n\n## 高性能计算\n\n- CUDA 并行编程模型及常用优化方法，熟悉基于 TensorRT 编程方法；\n- 熟练掌握CUDA程序性能分析、问题定位及调试的能力，掌握对应 CUDA 工具的使用；\n- 熟悉 PTX/SASS，有编译优化经验；\n- [OpenCL \u0026 Cuda]()\n- 模型推理 TensorRT、ONNXRuntime\n\n[Index](#table-of-content)\n\n\u003cbr\u003e\n\n## 💻 操作系统\n\n1、进程与线程区别\n\n2、线程同步的方式：互斥锁、自旋锁、读写锁、条件变量\n\n- 自旋锁：原理 [实现](https://github.com/freelancer-leon/notes/blob/master/kernel/lock/Lock-3-Linux_Semaphore.md)\n- 互斥锁：原理 [实现](https://github.com/freelancer-leon/notes/blob/master/kernel/lock/Lock-4-Linux_Mutex.md)\n\n3、互斥锁与自旋锁的底层区别\n\n4、孤儿进程与僵尸进程\n\n5、死锁及避免\n\n6、多线程与多进程比较\n\n7、进程间通信：PIPE、FIFO、消息队列、信号量、共享内存、socket\n\n8、管道与消息队列对比\n\n9、fork进程的底层：读时共享，写时复制\n\n10、线程上下文切换的流程\n\n11、进程上下文切换的流程\n\n12、进程的调度算法\n\n13、阻塞IO与非阻塞IO\n\n14、同步与异步的概念\n\n15、静态链接与动态链接的过程\n\n16、虚拟内存概念（非常重要）\n\n17、MMU地址翻译的具体流程\n\n18、缺页处理过程\n\n19、缺页置换算法：最久未使用算法、先进先出算法、最佳置换算法\n\n\u003e 参考书籍：《Unix环境高级编程》、《Linux多线程服务器端编程》\n\n[Index](#table-of-content)\n\n#### 文件系统\n\n#### I/O\n#### [内存管理](https://github.com/Charmve/CppMaster/blob/master/操作系统/内存管理问题合集.md)\n##### 虚拟内存\n##### [共享内存](https://blog.csdn.net/ypt523/article/details/79958188)\n#### [进程和线程](https://github.com/Charmve/CppMaster/blob/master/操作系统/进程与线程问题合集.md)\n##### 多线程/线程池\n##### 时间轮转片\n##### [Socket问题合集](https://github.com/Charmve/CppMaster/blob/master/计算机网络/Socket问题合集.md)\n\n### Linux\n\n- [信号 signal](https://blog.csdn.net/qq_27085429/article/details/95041443)\n- [常用命令](https://www.jianshu.com/p/73556e1a1236)\n- 环境变量\n- 动态链接/静态链接\n- [正则表达式](https://www.runoob.com/regexp/regexp-metachar.html)\n- [目录挂载](https://blog.csdn.net/dear_little_bear/article/details/108474499)\n\n#### [vim](https://www.jianshu.com/p/fbb00627163c)\n\n#### [git](https://github.com/Charmve/CppMaster/tree/main/Git)\n\ngit原理：\n\n其本质上是一个key-value的数据库加上默克尔树形成的有向无环图（DAG）\n\nhttps://www.jiqizhixin.com/articles/2019-12-20\n\n![image](https://github.com/Charmve/CppMaster/assets/29084184/5d54f25a-1ecf-4556-a3eb-a7fab1d33859)\n\n\n常用使用方法：\n\n![image](https://user-images.githubusercontent.com/29084184/224634759-f74ba925-5b27-4128-91e0-6465875495bc.png)\n\n常用命令：\n\n1、执行命令git checkout br_rename_old   //切换到br_rename_old分支 （如果已经在这个分支下，可以不执行此步骤）\n\n2、执行命令git pull origin br_rename_old  //将代码更新到和远程仓库一致\n\n3、执行命令git branch -m br_rename_old br_rename_new  //将本地仓库的br_rename_old的名称修改为br_rename_new\n\n4、执行命令git push origin --delete br_rename_old  //将远程分支br_rename_old删除\n\n5、执行命令git push --set-upstream origin br_rename_new   //将本地分支push到远程仓库\n\n6、修改最近一次的commit信息 git commit --amend\n\n7、git cherry-pick \u003ccommitHash\u003e\n\n8、更新子模块 git submodule update --init --recursive\n\n9、删除远程分支 git push origin --delete \u003cbranch_name\u003e\n\n#### ⚙️ 编译、链接与调试\n\n- [链接问题合集](https://github.com/Charmve/CppMaster/blob/master/操作系统/链接问题合集.md)\n  - [C语言调用so动态库的两种方式](https://blog.csdn.net/shaosunrise/article/details/81161064)\n- [Cmake](https://www.hahack.com/codes/cmake/) - [Makefile](https://www.jianshu.com/p/442e71755643)，[CMakeLists.txt](https://blog.csdn.net/shaosunrise/article/details/121103842)\n  - [跟我一起写Makefile](https://github.com/seisman/how-to-write-makefile)\n- [GDB/CGDB]()\n  - [linux编程入门(七)-使用gdb调试程序](https://www.jianshu.com/p/8d0278ae7e07)\n  - [GDB调试入门指南](https://zhuanlan.zhihu.com/p/74897601)\n- [gtest](https://blog.csdn.net/linhai1028/article/details/81675724)\n\n- 构建框架\n  - cmake\n  - bazel [remote-cache](https://buildstream.gitlab.io/buildstream/arch_remote_execution.html) [Bazel学习记录](https://blog.gmem.cc/bazel-study-note)\n  - C++包管理器 conon \n- 编译器 \n  - clang\n  - gcc\n  - 对比 \n  - 交叉编译 https://clang.llvm.org/docs/CrossCompilation.html\n  - 编译优化 autofdo、bolt、lto、Propeller\n\n##### [Shell/bash](https://www.runoob.com/linux/linux-shell.html)\n\n##### Bootloader/Uboot/buildboot\n\n### RTOS/FreeRTOS\n\n### [ROS](http://wiki.ros.org/cn/ROS/Tutorials)\n\n### [QNX](https://blackberry.qnx.com/en)\n\n[Index](#table-of-content)\n\n### 容器化技术\n\n- [Docker](https://vuepress.mirror.docker-practice.com/)\n- K8S\n\n### 虚拟化技术\n- [Qemu](https://gitlab.com/qemu-project/qemu)\n- KVM\n- Hypervisor\n\nref: [QEMU,KVM及QEMU-KVM介绍](https://www.cnblogs.com/gzxbkk/p/10116000.html)\n\n\n[Index](#table-of-content)\n\n### ARM x86\n\n[Index](#table-of-content)\n\n\u003cbr\u003e\n\n### 缓存/并发技术\n\n- [Kafka](https://zhuanlan.zhihu.com/p/446774729)\n- Redis\n\n## ☁️ 计算机网络\n\n#### [网络基础问题合集](https://github.com/Charmve/CppMaster/blob/master/计算机网络/网络基础问题合集.md)\n#### [HTTP问题合集](https://github.com/Charmve/CppMaster/blob/master/计算机网络/HTTP问题合集.md)\n\n[Index](#table-of-content)\n\n\u003cbr\u003e\n\n## 网络编程\n\nLinux 下网络编程核心的包括\u003cb\u003e系统编程\u003c/b\u003e和\u003cb\u003e网络 IO \u003c/b\u003e两个部分：\n\n1、进程间通信方式：信号量、管道、共享内存、socket 等\n\n2、多线程编程：互斥锁、条件变量、读写锁、线程池等\n\n3、五大 IO 模型：同步、异步、阻塞、非阻塞、信号驱动 区别/联系\n\n4、线程池\n\n5、高性能 IO 两种模式：Reactor 和 Proactor（ 但是 Linux 下由于缺少异步 IO 支持，基本没有 Proactor)\n\n6、IO多路复用：select、poll、epoll的区别（非常重要，几乎必问，回答得越底层越好，要会使用）\n\n7、手撕一个最简单的server端服务器（socket、bind、listen、accept这四个API一定要非常熟练）\n\n8、边沿触发与水平触发的区别\n\n\n\u003e 参考书籍：《Unix网络编程》\n\n[Index](#table-of-content)\n\n\u003ca href=\"https://charmve.github.io/sponsor.html\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-red.png\" alt=\"Buy Me A Coffee\" width=\"150\" \u003e\u003c/a\u003e\n\n\u003cbr\u003e\n\n## 📏 [设计模式](./算法库/DesignPattern)\n- [OOP设计和设计模式](https://blog.csdn.net/weixin_45748233/article/details/106808059)\n-\n[Index](#table-of-content)\n\n\u003ca href=\"https://charmve.github.io/sponsor.html\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-red.png\" alt=\"Buy Me A Coffee\" width=\"150\" \u003e\u003c/a\u003e\n\n\u003cbr\u003e\n\n## 💾 [数据库](./数据库)\n\n关系型与非关系型\n\n#### [MySQL问题合集.md](https://github.com/Charmve/CppMaster/blob/master/数据库/MySQL问题合集.md)\n#### [MongoDB](https://www.runoob.com/mongodb/mongodb-tutorial.html)\n\n\u003cbr\u003e\n\n[Index](#table-of-content)\n\n## CI/CD\n### .yaml\n\n[Index](#table-of-content)\n\n\u003ca href=\"https://charmve.github.io/sponsor.html\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-red.png\" alt=\"Buy Me A Coffee\" width=\"150\" \u003e\u003c/a\u003e\n\n\u003ca id=\"interview-questions-experience\"\u003e\u003c/a\u003e\n\n## 自动驾驶系统架构级优化\n\n- [gPTP，自动驾驶时间同步里的“有趣灵魂”](https://mp.weixin.qq.com/s/8JWXjCqYmhR9_fxioWSXEQ)\n- [gRPC 基础概念详解](https://zhuanlan.zhihu.com/p/389328756), https://github.com/grpc/grpc/tree/master/src/cpp\n- [深入浅出eBPF｜你要了解的7个核心问题](https://developer.aliyun.com/article/947869?utm_content=m_1000346074)\n- [性能优化 | C++服务编译耗时优化原理及实践](https://segmentfault.com/a/1190000038453470)\n- [在Linux中如何利用backtrace信息解决程序崩溃的问题](https://blog.csdn.net/gongmin856/article/details/79192259)\n- 性能分析工具：gPerf\n\n\u003cbr\u003e\n\n## 📚 [书籍](./FreeEBooks)\n\n![image](https://user-images.githubusercontent.com/29084184/140617018-db60fcb7-34dd-4657-9b3c-5c2aaddd8c4b.png)\n\n链接:https://github.com/Charmve/PaperWeeklyAI/tree/master/00_GuideBooksPDF(English%2BChinese)\n\n\u003e 更多免费电子书，\u003cb\u003e公众号：迈微AI研习社\u003c/b\u003e回复 ``“电子书”`` ，可免费获取。\n\n![image](https://user-images.githubusercontent.com/29084184/190883883-6c6822ab-10c6-426a-8baf-8de2d58504d7.png)\n\n![image](https://user-images.githubusercontent.com/29084184/190883889-f6770e02-a285-4e92-be41-3dfda608c1a4.png)\n\n[Index](#table-of-content)\n\n\u003cbr\u003e\n\n## 职位要求\n(初级 -\u003e 高级)\n\n1. 熟练使用 C/C++ 编程语言，有良好的编码习惯，掌握语言级别的程序性能优化技巧\n2. 掌握至少一种脚本语言的使用 python/shell\n3. 熟悉编译过程，熟练使用 CMake 编译脚本，熟悉跨平台交叉编译（x86/ARM）\n4. 熟悉 GDB 调试、Profiling 工具使用，对于代码和性能优化有经验\n5. 了解 GPU/NPU 等并行计算芯片的使用\n6. 熟悉常见关系型数据库、非关系型mongoDb、redis、消息队列等组件，并了解其基本原理 \n7. 有高并发服务设计和实现经验、对分布式系统，微服务有深刻的了解，有良好的可靠性意识，包括不限于监控，容灾等\n8. 有良好的业务抽象能力和业务建模能力\n\n[Index](#table-of-content)\n\n\u003ca href=\"https://charmve.github.io/sponsor.html\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-red.png\" alt=\"Buy Me A Coffee\" width=\"150\" \u003e\u003c/a\u003e\n\n\u003cbr\u003e\u003ca href=\"https://github.com/Charmve/CppMaster#table-of-content\"\u003e\u003cimg align=\"right\" alt=\"Go for it!\" src=\"https://raw.githubusercontent.com/Charmve/computer-vision-in-action/dd292873828228a753a9bd2de4576dbf8cc3902c/res/ui/footer-rocket.svg\" height=\"220\" title=\"Do what you like, and do it best!\"/\u003e\u003c/a\u003e\n\n\u003ca id=\"cc-development-direction\"\u003e\u003c/a\u003e\n\n## 🔱 C/C++ 发展方向\n\n\u003e C/C++ 发展方向甚广，包括不限于以下方向， 以下列举一些大厂校招岗位要求。\n\n### 后台/服务器\n\n\u003cdetails\u003e\u003csummary\u003e【后台开发】\u003c/summary\u003e\n\n* 编程基本功扎实，掌握 C/C++/JAVA 等开发语言、常用算法和数据结构；\n* 熟悉 TCP/UDP 网络协议及相关编程、进程间通讯编程；\n* 了解 Python、Shell、Perl 等脚本语言；\n* 了解 MYSQL 及 SQL 语言、编程，了解 NoSQL, key-value 存储原理；\n* 全面、扎实的软件知识结构，掌握操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全等专业知识；\n* 了解分布式系统设计与开发、负载均衡技术，系统容灾设计，高可用系统等知识。\n\n\u003c/details\u003e\n\n### 桌面客户端\n\n\u003cdetails\u003e\u003csummary\u003e【PC 客户端开发】\u003c/summary\u003e\n\n* 计算机软件相关专业本科或以上学历，热爱编程，基础扎实，理解算法和数据结构相关知识；  \n* 熟悉 windows 操作系统的内存管理、文件系统、进程线程调度； \n* 熟悉 MFC/windows 界面实现机制，熟练使用 VC，精通 C/C++，熟练使用 STL，以及 Windows 下网络编程经验；\n* 熟练掌握 Windows 客户端开发、调试，有 Windows 应用软件开发经验优先；\n* 对于创新及解决具有挑战性的问题充满激情，具有良好的算法基础及系统分析能力。\n\n\u003c/details\u003e\n\n### 图形学/游戏/VR/AR\n\n\u003cdetails\u003e\u003csummary\u003e【游戏客户端开发】\u003c/summary\u003e\n\n* 计算机科学/工程相关专业本科或以上学历，热爱编程，基础扎实，理解算法、数据结构、软件设计相关知识；\n* 至少掌握一种游戏开发常用的编程语言，具 C++/C# 编程经验优先；\n* 具游戏引擎（如 Unity、Unreal）使用经验者优先；\n* 了解某方面的游戏客户端技术（如图形、音频、动画、物理、人工智能、网络同步）者优先考虑；\n* 对于创新及解决具有挑战性的问题充满激情，有较强的学习能力、分析及解决问题能力，具备良好的团队合作意识；\n* 具阅读英文技术文档能力；\n* 热爱游戏。\n\n\u003c/details\u003e\n\n### 测试开发\n\n\u003cdetails\u003e\u003csummary\u003e【测试开发】\u003c/summary\u003e\n\n* 计算机或相关专业本科及以上学历；\n* 一至两年的 C/C++/Python 或其他计算机语言的编程经验；\n* 具备撰写测试计划、测试用例、以及实现性能和安全等测试的能力；\n* 具备实现自动化系统的能力；\n* 具备定位调查产品缺陷能力、以及代码级别调试缺陷的能力；\n* 工作主动积极，有责任心，具有良好的团队合作精神。\n\n\u003c/details\u003e\n\n### 网络安全/逆向\n\n\u003cdetails\u003e\u003csummary\u003e【安全技术】\u003c/summary\u003e\n\n* 热爱互联网，对操作系统和网络安全有狂热的追求，专业不限；\n* 熟悉漏洞挖掘、网络安全攻防技术，了解常见黑客攻击手法；  \n* 掌握基本开发能力，熟练使用 C/C++ 语言；\n* 对数据库、操作系统、网络原理有较好掌握；  \n* 具有软件逆向，网络安全攻防或安全系统开发经验者优先。\n\n\u003c/details\u003e\n\n### 嵌入式/物联网\n\n\u003cdetails\u003e\u003csummary\u003e【嵌入式应用开发】\u003c/summary\u003e\n\n* 有良好的编程基础，熟练掌握 C/C++ 语言；\n* 掌握操作系统、数据结构等软件开发必备知识；\n* 具备较强的沟通理解能力及良好的团队合作意识；\n* 有 Linux/Android 系统平台的开发经验者优先。\n\n\u003c/details\u003e\n\n### 音视频/流媒体/SDK\n\n\u003cdetails\u003e\u003csummary\u003e【音视频编解码】\u003c/summary\u003e\n\n1. 硕士及以上学历，计算机、信号处理、数学、信息类及相关专业和方向； \n2. 视频编解码基础扎实，熟常用的 HEVC 或 H264，有较好的数字信号处理基础； \n3. 掌握 C/C++，代码能力强, 熟悉一种汇编语言尤佳； \n4. 较强的英文文献阅读能力； \n5. 学习能力强，具有团队协作精神，有较强的抗压能力。\n\n\u003c/details\u003e\n\n### 计算机视觉/机器学习\n\n\u003cdetails\u003e\u003csummary\u003e【计算机视觉研究】\u003c/summary\u003e\n\n* 计算机、应用数学、模式识别、人工智能、自控、统计学、运筹学、生物信息、物理学/量子计算、神经科学、社会学/心理学等专业，图像处理、模式识别、机器学习相关研究方向，本科及以上，博士优先；\n* 熟练掌握计算机视觉和图像处理相关的基本算法及应用；\n* 较强的算法实现能力，熟练掌握 C/C++ 编程，熟悉 Shell/Python/Matlab 至少一种编程语言；\n* 在计算机视觉、模式识别等学术会议或者期刊上发表论文、相关国际比赛获奖、及有相关专利者优先。\n\n\u003c/details\u003e\n\n## 📝 面试题目经验\n\n- [docs/C++面经汇总](./C++面经汇总/basic_cpp.md)\n\n- [如果你是一个C++面试官，你会问哪些问题？](https://www.zhihu.com/question/451327108/answer/2359217596)\n- [基础排序和查询](https://blog.csdn.net/pange1991/article/details/85460755)\n- 我的专栏 [大厂后端/算法面经分类整理](https://blog.csdn.net/charmve/category_9622929.html)\n- [华为、美团、微软、字节、阿里、360 校招研发编程测试题及答案参考](https://blog.csdn.net/charmve/category_9622929.html)\n- [竞赛科创 | 电子信息创新设计项目实践](https://blog.csdn.net/charmve/category_9577245.html)\n- [计算机视觉实战 | 练手项目，开放源码](https://blog.csdn.net/charmve/category_10595130.html)\n\n\u003cbr\u003e\n\n## :rocket: 知识星球\n\n专为求职面试中算法与数据结构的小伙伴，创了学习交流/刷题群（知识星球）！想要最快的提升算法与数据结构技能，和更多小伙伴一起来吧！\n\n进群获取互联网大厂高频coding题库，告别刷题400道，分类整理的题库，算法思路和源代码实现配套，各个类型总结出来的解题模板，远比你一个人要强！\n\n\u003cdiv align=\"center\"\u003e\n  \u003c!---\n  \u003ca href=\"https://github.com/Charmve/CppMaster\"\u003e\n\t\u003cimg src=\"https://github.com/Charmve/CppMaster/blob/main/src/header.svg\" width=\"50%\" alt=\"Click to see the more details\"\u003e\n  \u003c/a\u003e \u003cbr\u003e\n  --\u003e\n  \u003ca href=\"https://charmve.github.io/CppMaster/src/maiwei-planet.jpg\"\u003e\n\t\u003cimg src=\"https://github.com/Charmve/CppMaster/blob/main/src/maiwei-planet.jpg\" width=\"36%\" alt=\"Click to see the more details\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cfont color=red\u003eFacebook、Google、微软面试高频题总结，加我获取 🛰️ Yida_Zhang2 \u003c/font\u003e\n\n\u003cimg src=\"./src/imgs/Top100.png\" width=\"\" alt=\"Click to see the more details\"\u003e\n\n\u003cimg src=\"./src/imgs/解题模板.png\" width=\"\" alt=\"Click to see the more details\"\u003e\n\n\u003cimg src=\"./src/imgs/Microsoft_Top100.png\" width=\"\" alt=\"Click to see the more details\"\u003e\n\n\n## 参考\n\n[1] interview. https://github.com/huihut/interview\n\n[2] @Jeloys/HelloWorld. https://github.com/Jeloys/HelloWorld\n\n[3] GitHub. https://gitlab.com/nsddd/CPlusPlusThings\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCharmve%2FCppMaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCharmve%2FCppMaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCharmve%2FCppMaster/lists"}