能拿BAT、TMD等国内互联网大厂的C++学习过程分享~

2024-01-21 03:08

本文主要是介绍能拿BAT、TMD等国内互联网大厂的C++学习过程分享~,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,我是阿秀。
前言

上篇文章发布后,问我如何学习 C++ 的小伙伴可远比问我如何写简历刷题的多多了,思虑再三还是先把这自己的 C++ 学习路线发出来吧,从入门到入土的那种。坐好小板凳,准备发车了~

萌新入门

我在 20198 年之前对C++的认识只停留在 “Hello world” 水平上,本科时期学的全忘光了,面向对象三大特性:封装、继承、多态,我就记得一个多态。出于想要掌握一门工业级别的语言的初衷,去年这个时候我开始了C++ 的学习之路。

也有人问我为什么选择 C++ 而不是 Java ,我能说是喜欢 C++ 的严谨和不好学吗…

“我在 B 站上大学” 对我而言并不是一句玩笑话,第一反应就是去B站上看看有没有相关视频,再三选择最终确定了 黑马机构出版的 C++ 入门视频,楼主当时开着 1.5 倍速很快就看完了,还跟着视频里敲了不少代码,这个视频会教你一些最基本的 C++ 常用知识比如多态、继承之类的,但是都不是很深,只是大概提了一下。看完之后大概懂了 C++ 有哪些知识点了,可后来证明,我确实有点想多了。
黑马C++笔记

黑马的视频很快就看完了,又开始看经典的 C++ 书籍,我选择了《C++Primer 5th》,这本书相当不错,共分为 19 章:前 8 章为变量、循环等基本知识,第 8-12 章为标准库的知识比如容器算法等,第 **13-19 **章设计拷贝重载等知识。课后习题基本都做了一下,并且从网上找了正确的习题答案,进行查漏补缺,自己也在书上也做了不少笔记,大概花了 3 个月左右的时间过了一遍这本 C++ 圣经。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JPCuyycm-1608274810209)(https://cdn.jsdelivr.net/gh/forthespada/mediaImage1@1.1/2020-12-11%20C%2B%2B学习路线大公开/笔记.jpg)]

在看前 8 章期间就已经直接去力扣开始怼题了,怂什么,就是干,干就完事了,在实战中学习进步,哈哈!大概是在 2019.9 月开始到 2019.12 月期间前前后后刷了 180 多道力扣。

2019年力扣刷题记录

11.13 号那天最疯狂,我一晚上提交了 29 次,清楚地记得刷了 7 道题,那天我是夜里三点回宿舍睡觉的,最后一道题卡了我 2 个多小时才做出来。

渐入佳境

时间来到了 2019.12 月末,在学习《C++Primer》与刷题过程中,我知道了还有 STL 这种新奇的东西,也知道了另外四本经典的 C++ 书籍《Effectcive C++ 》、《More Effectcive C++》、《STL 源码剖析》、《深度探索 C++ 对象模型》。
C++书籍
我一口气全买了回来,看完《C++Primer》后一头扎进《STL 源码剖析》这本书里看,可是看的我云里雾里,完全不知作者侯捷老师在书中所云为何物。遂转而去看《Effective C++》越看越觉得自己是头猪,也越看越了解到C++的博大精深,花了大概一个月的时间看完了这本书后又接着去看《More Effective C++》,这个时候学校也快放假了,就把两本 Effective C++ 带回家了,打算寒假在家接着看。

在坐火车回去的路上我也没闲着,把 B 站的C++ STL 体系结构与内核分析–从平地到万丈高楼的视频下载在 ipad 上,一边坐火车一边看视频。

2019年寒假期间在家刷完了两本 Effective C++,又看了侯捷老师的其他 C++ 视频:侯捷C++手把手教学(上),适合新手、侯捷手把手教学C++(下)已补充完毕、C++内存管理–从平地到万丈高楼、C++程序的生前死后–解密 CRT Startup code。除了前两个视频是开2倍速看的,其余的均是仔细慢慢看的。侯捷老师真不愧是 C++ 大师啊,真不是吹的,被侯捷老师深深折服了。

当时2019年寒假的时候家里有人生病住院了,我去陪床,把自己的ipad带着,一边陪护病人一边刷C++视频,233~

后来的事情大家也知道了,过年期间疫情爆发了,后期导致迟迟不能回学校。在此期间也知道了C++跟网络编程联系很大,决定去看看网络编程与 C++ 结合的一些案例。

持续充电

经过查阅资料,最终三本书走进了我的视线:《TCP/IP 网络编程》、《Linux 高性能服务端编程》、《Linux 多线程服务端编程:使用 muduo C++ 网络库》,最先看的是游双老师的那本《Linux 高性能服务端编程》,看了几天只有一个感觉:我去,这什么啊,这种书居然有那么多人推荐。

后来证明,还是我自己太菜了,水平不到看不懂而已233~

转而去看《TCP/IP 网络编程》,确实不错,是本很好的书,我还去 github 上找了别人做好的笔记,一边看别人的笔记一边看书,最后又在别人的笔记基础上删删改改形成了自己的笔记,把书中的例子也敲了个遍。TCPIP网络编程笔记
然后再把丢开的那本《Linux 高性能服务端编程》拿过来看,感觉真的完全不一样了,游双老师在书里说的也能理解了,一边看书一边照着书中敲代码,加深理解。

也确实感谢这两本书,后来在这两本书的基础上写了一个烂大街的 Web 服务器作为自己的项目写在简历上了,其中也参考了 tinyhttpd

兜兜转转终于可以回校了,在 2020.5 月份回的学校,回校后里面就把《STL 源码剖析》这本书捡起来看,越看越觉得跟视频中讲的一模一样,我看的很快,不到十天就看完了。然后手中就只剩下最后一本 C++ 经典书籍:《深入探索C++ 对象模型》了,我依然是先查阅了别人总结好的笔记资料,然后在别人的基础上修修改改,形成自己的笔记的。深入探索C++对象模型

至此, C++ 算是正式入门了,看了这么多书,你特么告诉我才入门?哈哈,听起来也许是个悲伤的故事,但是,是的。

后来就忙于秋招也没有继续看别的 C++ 书籍,只是把以前看的书进行二轮甚至是三轮回顾了,因为有以前的基础,所以在回顾的时候速度也是很快的,《 C++Primer 5th 》大概花了 15 天就二刷完了,两本 Effective C++ 也是的。

后期上升

上述那些 C++ 书籍基本上足够应付校招了,后面在看书过程中发现自己在 C++ 并发上欠缺不少东西,又去买了《C++ 并发编程实战》,没事就翻着看看。与此同时也在看 muduo 那本书,B 站真的是宝藏网站,只是抱着尝试的心态搜索了一下,居然真的发现B站上有作者陈硕的讲解视频:C++高性能服务器网络编程(陈硕),针不戳

以上就是我过去一年里学习 C++ 的大致历程,其实真正发力的时间是在 2019.8 - 2020.1 月期间,并没有多少时间,其余时候都是偷奸耍滑去了~~

其实学完了这些还是不足以应对比较大型的 C++ 项目开发,你可能还需要接着看《 C++ 沉思录 》与《 C++ 模版元编程 》以及其他的优秀书籍接着进阶。

好的 C++ 开发者从来不怕找不到工作,就是因为想要学好它不容易,换一种思路就是好好学好它对于你以后的裨益可能是你无法想象的,即使你日后从事 Java/Go 的工作,因为语言的原理都是相通的。

种一棵树的最好时间是十年前,其次就是现在,加油!

结语

在不知不觉间,才发现自己居然看过不少书了。有时候功夫到了自然结果就出来了,没有什么其他特别的方法和诀窍的,有时候你会觉得困惑、迷茫、不明白,可能只是时间还没到。冲就完了,哈哈。

PS:上述文中涉及到的书籍、读书笔记以及代码等已经打包分享出来了,链接如下:https://pan.baidu.com/s/127eLBH0cvYIl74Ly9o0HnQ提取码:rql3
资源分享

下期以我自身简历为例,为大家分享如何写好一份个人简历以及我是如何将简历迭代 20 多版的。

这篇关于能拿BAT、TMD等国内互联网大厂的C++学习过程分享~的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/628181

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方