• Stars
    star
    262
  • Rank 156,136 (Top 4 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created about 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

C++ Master Learning Roadmap, especially for AIoT and C++ advanced SWE

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

Click to see the more details

C++ Master Learning Roadmap Hot

Actions Status codecov.io Cpp Style Guide Docs Released Dependencies

QuickstartNotebookCommunityDocs


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 <branch_name>

⚙️ 编译、链接与调试

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


📏 设计模式

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

Index


职位要求

(初级 -> 高级)

  1. 熟练使用 C/C++ 编程语言,有良好的编码习惯,掌握语言级别的程序性能优化技巧
  2. 掌握至少一种脚本语言的使用 python/shell
  3. 熟悉编译过程,熟练使用 CMake 编译脚本,熟悉跨平台交叉编译(x86/ARM)
  4. 熟悉 GDB 调试、Profiling 工具使用,对于代码和性能优化有经验
  5. 了解 GPU/NPU 等并行计算芯片的使用
  6. 熟悉常见关系型数据库、非关系型mongoDb、redis、消息队列等组件,并了解其基本原理
  7. 有高并发服务设计和实现经验、对分布式系统,微服务有深刻的了解,有良好的可靠性意识,包括不限于监控,容灾等
  8. 有良好的业务抽象能力和业务建模能力

Index

Buy Me A Coffee


Go for it!

🔱 C/C++ 发展方向

C/C++ 发展方向甚广,包括不限于以下方向, 以下列举一些大厂校招岗位要求。

后台/服务器

【后台开发】
  • 编程基本功扎实,掌握 C/C++/JAVA 等开发语言、常用算法和数据结构;
  • 熟悉 TCP/UDP 网络协议及相关编程、进程间通讯编程;
  • 了解 Python、Shell、Perl 等脚本语言;
  • 了解 MYSQL 及 SQL 语言、编程,了解 NoSQL, key-value 存储原理;
  • 全面、扎实的软件知识结构,掌握操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全等专业知识;
  • 了解分布式系统设计与开发、负载均衡技术,系统容灾设计,高可用系统等知识。

桌面客户端

【PC 客户端开发】
  • 计算机软件相关专业本科或以上学历,热爱编程,基础扎实,理解算法和数据结构相关知识;
  • 熟悉 windows 操作系统的内存管理、文件系统、进程线程调度;
  • 熟悉 MFC/windows 界面实现机制,熟练使用 VC,精通 C/C++,熟练使用 STL,以及 Windows 下网络编程经验;
  • 熟练掌握 Windows 客户端开发、调试,有 Windows 应用软件开发经验优先;
  • 对于创新及解决具有挑战性的问题充满激情,具有良好的算法基础及系统分析能力。

图形学/游戏/VR/AR

【游戏客户端开发】
  • 计算机科学/工程相关专业本科或以上学历,热爱编程,基础扎实,理解算法、数据结构、软件设计相关知识;
  • 至少掌握一种游戏开发常用的编程语言,具 C++/C# 编程经验优先;
  • 具游戏引擎(如 Unity、Unreal)使用经验者优先;
  • 了解某方面的游戏客户端技术(如图形、音频、动画、物理、人工智能、网络同步)者优先考虑;
  • 对于创新及解决具有挑战性的问题充满激情,有较强的学习能力、分析及解决问题能力,具备良好的团队合作意识;
  • 具阅读英文技术文档能力;
  • 热爱游戏。

测试开发

【测试开发】
  • 计算机或相关专业本科及以上学历;
  • 一至两年的 C/C++/Python 或其他计算机语言的编程经验;
  • 具备撰写测试计划、测试用例、以及实现性能和安全等测试的能力;
  • 具备实现自动化系统的能力;
  • 具备定位调查产品缺陷能力、以及代码级别调试缺陷的能力;
  • 工作主动积极,有责任心,具有良好的团队合作精神。

网络安全/逆向

【安全技术】
  • 热爱互联网,对操作系统和网络安全有狂热的追求,专业不限;
  • 熟悉漏洞挖掘、网络安全攻防技术,了解常见黑客攻击手法;
  • 掌握基本开发能力,熟练使用 C/C++ 语言;
  • 对数据库、操作系统、网络原理有较好掌握;
  • 具有软件逆向,网络安全攻防或安全系统开发经验者优先。

嵌入式/物联网

【嵌入式应用开发】
  • 有良好的编程基础,熟练掌握 C/C++ 语言;
  • 掌握操作系统、数据结构等软件开发必备知识;
  • 具备较强的沟通理解能力及良好的团队合作意识;
  • 有 Linux/Android 系统平台的开发经验者优先。

音视频/流媒体/SDK

【音视频编解码】
  1. 硕士及以上学历,计算机、信号处理、数学、信息类及相关专业和方向;
  2. 视频编解码基础扎实,熟常用的 HEVC 或 H264,有较好的数字信号处理基础;
  3. 掌握 C/C++,代码能力强, 熟悉一种汇编语言尤佳;
  4. 较强的英文文献阅读能力;
  5. 学习能力强,具有团队协作精神,有较强的抗压能力。

计算机视觉/机器学习

【计算机视觉研究】
  • 计算机、应用数学、模式识别、人工智能、自控、统计学、运筹学、生物信息、物理学/量子计算、神经科学、社会学/心理学等专业,图像处理、模式识别、机器学习相关研究方向,本科及以上,博士优先;
  • 熟练掌握计算机视觉和图像处理相关的基本算法及应用;
  • 较强的算法实现能力,熟练掌握 C/C++ 编程,熟悉 Shell/Python/Matlab 至少一种编程语言;
  • 在计算机视觉、模式识别等学术会议或者期刊上发表论文、相关国际比赛获奖、及有相关专利者优先。

📝 面试题目经验


🚀 知识星球

专为求职面试中算法与数据结构的小伙伴,创了学习交流/刷题群(知识星球)!想要最快的提升算法与数据结构技能,和更多小伙伴一起来吧!

进群获取互联网大厂高频coding题库,告别刷题400道,分类整理的题库,算法思路和源代码实现配套,各个类型总结出来的解题模板,远比你一个人要强!


Facebook、Google、微软面试高频题总结,加我获取 🛰️ Yida_Zhang2

Click to see the more details

Click to see the more details

Click to see the more details

参考

[1] interview. https://github.com/huihut/interview

[2] @Jeloys/HelloWorld. https://github.com/Jeloys/HelloWorld

[3] GitHub. https://gitlab.com/nsddd/CPlusPlusThings

More Repositories

1

Surface-Defect-Detection

📈 目前最大的工业缺陷检测数据库及论文集 Constantly summarizing open source dataset and critical papers in the field of surface defect research which are of great importance.
Python
2,698
star
2

computer-vision-in-action

A computer vision closed-loop learning platform where code can be run interactively online. 学习闭环《计算机视觉实战演练:算法与应用》中文电子书、源码、读者交流社区(持续更新中 ...) 📘 在线电子书 https://charmve.github.io/computer-vision-in-action/ 👇项目主页
Jupyter Notebook
2,375
star
3

BLE-Security-Attack-Defence

✨ Purpose only! The dangers of Bluetooth Low Energy(BLE)implementations: Unveiling zero day vulnerabilities and security flaws in modern Bluetooth LE stacks.
Python
264
star
4

Practicum4ECE

「一名普通电子信息本科生的项目实践管理」将大学阶段的实训内容,按照专业课程设计(包括上机实验、课程设计、下学年的毕业设计等)、竞赛项目、科创项目、小型编程项目这四个门类进行整理汇总。
C
113
star
5

LeetCode4FLAG

🔥 🔥 High frequent interview LeetCode 100 for FaceBook,Linkedin,Amazon,Google,Microsoft. More importantly, the problems' solutions are provided,include C++, Python and Java.
C++
110
star
6

VOGUE-Try-On

Personal repository for "VOGUE: Try-On by StyleGAN Interpolation Optimization" (CVPR 2021). SOTA results for garments to deform according to the given body shape, while preserving pattern and material details.
HTML
89
star
7

OpenCC

Automatic driving long tail / corner cases scenarios dataset (Anomaly detection)
87
star
8

awesome-scene-text-detection

Tracking the latest progress in Scene Text Detection and Recognition: Must-read papers well organized with code and dataset
75
star
9

OccNet-Course

国内首个占据栅格网络全栈课程《从BEV到Occupancy Network,算法原理与工程实践》,包含端侧部署。Surrounding Semantic Occupancy Perception Course for Autonomous Driving (docs, ppt and source code) 课程主页:http://111.229.117.200:7001/
Python
75
star
10

Mirror-Glass-Detection

🍸 Mirror & Glass Detection in Real-world Scenes
Python
72
star
11

PaperWeeklyAI

📚「@MaiweiAI」Studying papers in the fields of computer vision, NLP, and machine learning algorithms every week.
Jupyter Notebook
63
star
12

OpenCS-Courses

🎓 Path to a free self-taught education in Computer Science!
58
star
13

Awesome-Lane-Detection

A paper list with code of lane detection.
Python
52
star
14

Semantic-Segmentation-PyTorch

PyTorch implementation for Semantic Segmentation, include FCN, U-Net, SegNet, GCN, PSPNet, Deeplabv3, Deeplabv3+, Mask R-CNN, DUC, GoogleNet, and more dataset
Python
48
star
15

autopilot-perception

End to End Autopilot Perception Playbook
HTML
46
star
16

iQuant

HTML
40
star
17

LightCube

A Design of 3D Dynamic Display System Based on Voice Control. ✨ Purpose only! Copyright and commercial use rights are received.
C
40
star
18

Charmve

🤡 About Me.
Python
38
star
19

PyStegosploit

PoC - Exploit Delivery via Steganography and Polyglots, CVE-2014-0282
HTML
37
star
20

transparent-object-segmentation

💎 Transparent objects such as windows and bottles made by glass widely exist in the real world. Segmenting transparent objects is challenging because these objects have diverse appearance inherited from the image background, making them had similar appearance with their surroundings.
32
star
21

TimeWarp

🐶 「Updating ...」Replacing Real-Time the High-Resolution Meeting Background Freely
Python
29
star
22

StegaStamp-plus

Improved the original repo, 'Invisible Hyperlinks in Physical Photographs', embedded with longer string than the original
Jupyter Notebook
25
star
23

SNE-RoadSeg2

🌱 SNE-RoadSeg in PyTorch, ECCV 2020 by Rui (Ranger) Fan & Hengli Wang, but now we have improved it.
Python
24
star
24

AccANN

🐆 A compiler from AI model to RTL (Verilog) accelerator in FPGA hardware with auto design space exploration for *AdderNet*
15
star
25

AR-DAO

AR-DAO,A decentralized autonomous organization (DAO) that enables users to forge NFTs through augmented reality (AR) and participate in various gaming and social activities. 一个让用户通过增强现实(AR)铸造NFT并参与不同游戏等社交活动的去中心化自治组织(DAO)https://github.com/Charmve/AR-DAO/wiki
JavaScript
14
star
26

gpt-eyes

I GAVE GPT-4 EYES!
JavaScript
10
star
27

EmotionCube

🐾 EmotionCube: An intelligent companion robot is designed based on expression recognition and intelligent speech.
C
9
star
28

Charmve.github.io

I'm here! 👋 Personal Home Page 🐶
HTML
8
star
29

steganography.js

Hide secret messages with JavaScript with steganography.js
JavaScript
5
star
30

PuppyGo

vision language model and large language model powered embodied robot
5
star
31

NotOnlyPaper

PaperEasy = arXiv + code + video + tutorial + Colab/demo
JavaScript
5
star
32

AlphaFold-baseline

This package provides an basic implementation of the contact prediction network used in AlphaFold 1 for beginner, associated model weights and CASP13 dataset as used for CASP13 (2018) and published in Nature
Python
4
star
33

mapless-course

No HDMap, Only Vision Perception
4
star
34

Bluetooth-Location_2D

indoor position based-on Bluetooth low energy in 2d space
Java
3
star
35

B1ueB0y-BLE-Fuzzing

An awesome toolkit for testing the BLE device, chip and Protocol stack
2
star
36

jsFlow

🏄 A Lightweight Web Browser-based Machine Learning Framework
CSS
2
star
37

LocalPay

非接触式离线支持方案
1
star
38

NumPyCNN

Building Convolutional Neural Networks From Scratch using NumPy
Python
1
star
39

Less-is-More

🌈 Art of README in GitHub, #Less is More#.
1
star
40

ScenesGen

自动驾驶算法系列课程之《场景数据生成》
1
star
41

weather-app

SCSS
1
star
42

Wind-Pendulum-Controlling-System

2015年风力摆控制系统赛题(B题)解析+源代码开源 A Wind Pendulum Controlling System
1
star
43

SimElectronicGun

基于视觉感知的模拟电磁曲射炮 (2019年全国大学生电子设计竞赛H题) 全国二等奖作品
C
1
star
44

qbot_pro

Jupyter Notebook
1
star