c++合集

本文介绍了C++的基础概念,如继承、多态、封装,以及多线程编程(std::thread)和STL容器的使用。强调了学习C++的关键点,包括关键字、面向对象编程、STL源码理解,以及内存分配、智能指针、设计模式和算法的重要性。同时提供了学习资源和路径建议。
摘要由CSDN通过智能技术生成

知识点:

C++ 继承 | 菜鸟教程 (runoob.com)

继承:

多态:

封装:

多线程:

C++ 多线程编程(一):std::thread的使用 | 所念皆星河

C++ 多线程 | 菜鸟教程

==================================================================================================================================================

经验贴:

C++ 这块,重点需要学习的就是一些关键字面向对象以及 STL 容器的知识,特别是 STL,还得研究下他们的一些源码,下面我总结一下一些比较重要的知识(其实是根据面试结果来挑选)。

  1. 指针与引用的区别,C 与 C++ 的区别,struct 与 class 的区别
  2. struct 内存对齐问题,sizeof 与 strlen 区别
  3. 面向对象的三大特性:封装、继承、多态
  4. 类的访问权限:private、protected、public
  5. 类的构造函数、析构函数、赋值函数、拷贝函数
  6. 移动构造函数与拷贝构造函数对比
  7. 内存分区:全局区、堆区、栈区、常量区、代码区
  8. 虚函数实现动态多态的原理、虚函数与纯虚函数的区别
  9. 深拷贝与浅拷贝的区别
  10. 一些关键字:static, const, extern, volatile 等
  11. 四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
  12. 静态与多态:重写、重载、模板
  13. 四种智能指针及底层实现:auto_ptr、unique_ptr、shared_ptr、weak_ptr
  14. 右值引用
  15. std::move函数
  16. 迭代器原理与迭代器失效问题
  17. 一些重要的 STL:vector, list, map, set 等。
  18. 容器对比,如 map 与 unordered_map 对比,set 与 unordered_set 对比,vector 与 list 比较等。
  19. STL容器空间配置器

等等。

根据书来学就可以了,然后学到一些重点,可以重点关注一下。

书籍推荐:

1、《C++Primer》,这本书内容很多的,把前面基础的十几章先看一看,不用从头到尾全啃,后面可以字典来使用。

2、《STL 源码剖析》,必看书籍,得知道常见 STL 的原理,建议看个两三遍。

==================================================================================================================================================

STL:

STL模板库-01-20 | 阿秀的学习笔记 (interviewguide.cn)

https://cui-jiacai.gitbook.io/c++-stl-tutorial/gai-shu/guan-yu-suan-fa

书:《STL 源码剖析》 进度:26,pdf,59

==================================================================================================================================================

多线程:

10-两种多线程方式对比_哔哩哔哩_bilibili

Qt中多线程的使用 | 爱编程的大丙 (subingwen.cn)

c++11特性:

c++11新特性,所有知识点都在这了!-腾讯云开发者社区-腾讯云

=========================================================================

设计模式:

视频:哔哩哔哩_bilibili   P11

文档:

UML 类图 | 爱编程的大丙 (subingwen.cn)

设计模式简介 | 菜鸟教程 (runoob.com)

阿秀(性价比):

学弟,我给你一条最简单的路,好好按照我说的做,也是性价比最高的路:

首先是语言:《C++ Primer》要看一遍,然后侯捷老师的STL视频看一遍或者两遍,然后全部抱着我的笔记来回翻,也就是我的网站上的八股文部分:https://interviewguide.cn/notes/03-hunting_job/02-interview/01-01-01-basic.html,你要要把这些内容看的滚瓜烂熟。

然后是基础:操作系统、计网、数据库这些计算机基础你不要再从头开始看了,等你挨个学完真的黄花菜都没了。。。

你直接去看我的笔记或者你可以看下我以前写的校招基础学科学习路线中的每个科目的入门视频刷一遍过来,然后就去看我的笔记,这是这三门的学习过程。

校招基础学科学习路线:https://interviewguide.cn/notes/02-learning_route/01-basic-project/quick.html

但是你要注意,数据中的SQL不可以,这个你要自己学,不能直接去看我以前的笔记。面试中不会让你画三握四挥的流程图,但是可能会让你写left join或者嵌套where查询的SQL语句的,你去看下我网站上的校招基础学科学习路线,在学习路线那一栏,其中有数据库的学习,把其中SQL的学习你要自己走一遍过来。

还有一点,就是你没有系统的打基础,而是直接看我的笔记,如果不尝试去理解,那你面试会很痛苦,即使同一个知识点的问法也多种多样,你如果不理解的话,面试官换个问法你就不会了。。所以很多面试都会在一面挂掉,因为一面就是考察基础的,就是考察你基础的广度的,他会东问一点西问一点,你不打基础,所以一面很容易挂掉。。越是大厂一面考察基础就越凶,六七十分钟问基础都很正常

所以你看我网站的时候前期可以死记硬背,但第二遍过来的时候你要试着能够把它理解,用自己的话把每个问题表述出来,第一遍会很痛苦,后面就好多了。

你要像我以前一样,我以前看自己的笔记的时候在七月份的时候基本每周我都会看一遍过来,八月份的时候甚至每三天就会看一遍过来,很多内容都是越看越懂,也是越看越快的。

还有算法:算法你得自己练,要坚持每天刷题,算法是很重要,但不代表面试中只考算法。

《剑指offer》这本书确实有用,可能很多大厂都会出新题或者用一些比较新的题改编一下再让你们做,但一些中小厂真的会直接拿剑指offer上的原题让你做的,很多人都看不上这本书,其实这是不对的。。。这本书上真的有很多原题。

你也可以参考我以前刷过的题:https://interviewguide.cn/notes/03-hunting_job/03-algorithm/01-basic-algorithm/01-introduce.html,我当初是刷了两三遍的剑指offer + 600多道的力扣题,我把我的刷题笔记都分享在我的网站上了。

然后就是项目,五月的时候你就要去做项目,最迟不要超过五月中旬,要不七月份的校招正式开启你就不赶趟了。

差不多就是七月份左右会开始,每年的提前批大概就是在6-7月,正式批开启则是在7-8月份,所以如果你五月中旬还不开始做项目的话,你可能真的不赶趟了。

还有WebServer服务器这个项目确实有点烂大街,跳表也有点拉胯,可以看看我推荐的一些别的项目,比如Redis客户端这些会比WebServer服务器好一些,有的选的话尽量别做WebServe服务器了。

你可以直接看下星球置顶帖知识图谱里有个C++项目推荐,我写了很多内容,你可以去看看,选一两个做一下。

对阿秀笔记c++部分的补充

堆和栈的区别:

  1. 内存分配方式

    • 堆(Heap)是动态分配的内存空间,通常用于存储程序运行时动态创建的数据,比如使用newmalloc()函数分配的内存。堆的大小不固定,可以动态增加或缩减。
    • 栈(Stack)是静态分配的内存空间,用于存储函数调用时的局部变量、函数参数、函数返回地址等信息。栈的大小在程序启动时就确定,并且通常是有限的。
  2. 管理方式

    • 堆的内存由程序员显式分配和释放,需要手动管理内存的分配和释放,如果没有释放堆上分配的内存,可能会导致内存泄漏。
    • 栈的内存由编译器自动分配和释放,无需手动管理。当一个函数执行完毕时,其在栈上分配的内存会自动释放,因此不存在内存泄漏的问题。
  3. 访问方式

    • 堆上的内存可以通过指针进行访问,程序员可以在需要的时候通过指针来访问和操作堆上的数据。
    • 栈上的内存只能通过函数调用和返回来访问,函数内部的局部变量在函数调用时被分配到栈上,在函数返回时被销毁。
  4. 数据生命周期

    • 堆上分配的内存的生命周期由程序员控制,可以在任何时候分配和释放内存。
    • 栈上分配的内存的生命周期与函数的调用关系密切相关,当函数返回时,其在栈上分配的内存会被自动销毁。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值