知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

如何通过自学找到一份c++相关的工作?

发表时间:2022-03-25来源:网络

我觉得可以上手项目,与同事可以协同开发就可以面试工作了。

掌握 C++ 的编程基础语法;需要学习数据结构与算法,至少掌握常见的数据结构与算法;需要学习数据库知识,因为做项目几乎离不开数据库,数据库必须掌握;至少了解学习操作系统,计算机网络,计算机组织原理、汇编、网络编程等相关专业课程;C++ 编码规范与开发常用工具软件的使用,如 git;

1、C++ 学习

提到C++,都应该视其为一个庞大的「语言联邦」,最起码包含如下几个重要的组成部分:

面向过程编程面向对象编程泛型编程元编程函数式编程STL标准库

需要掌握:

指针、引用、数组、内存引用与指针区别虚机制:虚函数、虚函数表、纯虚函数C 和 C++ 的一些区别,比如 new、delete 和 malloc、free 的区别一些关键字的作用:static、const、volatile、extern四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_castSTL部分容器的实现原理,如 vector、deque、map、hashmap类的封装,构造和析构、静态成员、对象管理;类的构造(有参构造函数、无参构造、拷贝构造、默认构造函数)和析构;对象动态管理、友元函数、友元类、操作符重载;C++编译器对象管理模型分析;运算符重载(一元运算符、二元运算符、运算符重载难点、项目开发中的运算符重载);模板特化、偏特化,萃取 traits 技巧继承、虚继承、菱形继承等多态: 动态绑定,静态多态重写、重载智能指针原理:引用计数、RAII(资源获取即初始化)思想智能指针使用:shared_ptr、weak_ptr、unique_ptr等编译链接机制、内存布局(memory layout)、对象模型C++11 部分新特性,比如右值引用、完美转发等

书籍推荐

《C++ Primer中文版》本书面向C++语言的初学者,是一本很友好的自学教材。作者把C语言的基础概念和需要注意的编程细节说得很清楚,并且例程和习题丰富,相信认真读过之后,可以完成C语言入门这个目标。

《高质量程序设计指南》,墙裂推荐,这本书看得比较过瘾,书里面有一些编程规范的东西,对于写程序的人来说,还是不错的,可以培养好的编码习惯,加深了一些知识的巩固。比较实用,也适合面试前看看。

《Essential C++》是一本内容不多但很实用的C++入门书籍,强调快速上手与理解C++编程。本书主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只学到C++的函数和结构,也会学习到它们的设计目的和基本原理。

《More effective C++》,该书围绕55条准则,每一条都介绍了一个可让你写出更好的C++程序代码的方法,并以特别设计过的例子详加讨论。

《C++ Templates中文版》,深入了解现代c ++模板的实用书籍。本书不仅是对C ++模板的权威解释,而且本书还深入地介绍了其他一般的C ++思想。

《STL源码剖析》详细地了解STL的底层实现机制,同时也可以对常用数据结构,C++内存管理拥有更深的理解。

其实还有《The C++ standard library(C++标准程序库)》、《C++并发编程实战》、《Thinking in C++(C++编程思想)》等,介绍的这些书我都买了,不过说实话,后面的几本都是泛泛的看了下,都没有认真学完。最后推荐三本最近微信读书上正在看的书。

《提高C++性能的编程技术》,本书认为20%的性能缺陷将会占用我们80%的时间。因此我们把精力集中在最有价值的地方。本书详细讨论了临时对象、内存管理、继承、虚函数、内联、引用计数以及STL等一切有可能提升C++效率的细节内容。无论你是相关领域的从业人员,还是C++程序设计爱好者,或者是渴望突破编程瓶颈、大幅提升自我修为的程序设计爱好者,本书都必将使你获益良多。

《从缺陷中学习C/C++》从本质上来说,这就是一个C/C++的错题集。全书中包括63个问题引发的错误,即书名中的缺陷。也是避坑指南。

视频

1、黑马C++课程(基础篇)

https://www.bilibili.com/video/BV18h411Q75D/

2、墙裂侯捷老师的 C++ 视频全集与陈硕大佬的网络编程:

主要包含了:

侯捷C++ 标准 11 -14侯捷STL 和 泛型编程侯捷C++ 内存管理侯捷C++面向对象高级开发侯捷STL与泛型编程侯捷 C++ Startup 揭密:C++ 程序的生前和死后陈硕第三套、Linux CC++网络编程实践-陈硕 https://mp.weixin.qq.com/s/302poB-agGUSep

2、数据结构与算法

动手去做,动手去做,动手去做。重要的话说三遍。

动手包括撸码,还包括"多画"

要边学习边画图。因为对于数据结构中的存储结构来说,尤其是树结构和图结构,存储结构确实比较复杂,仅靠空间想象难免会有披露,而通过亲手画图往往能避免很多“坑”,后面关于数据结构与算法的文章中,我也会加入一些动图。

把数据结构图形化,视觉化。在直觉上感受一个数据结构是什么样子的。使用它是什么感觉,抽象上和具体实现上是什么样子的。这就是最重要的事情。并且无论是对于简单的队列、栈还是平衡树都很重要而且有效。把数据结构画出来,在你的脑袋瓜里面就能想象出来,总之,你需要做的就是,直观的去了解这些数据结构。

另外,可以在leetcode和牛客网多刷题。

比较系统地学习数据结构的话,推荐看《大话数据结构》、《算法(第4版)》和《数据结构与算法分析》。

如果刚接触数据结构的话,可以从《算法图解》、《我的第一本算法书》入手。

网课

1、郝斌数据结构

虽然比较老,但是讲的比较详细,容易理解,对初学者非常友好。

https://www.bilibili.com/video/BV1Ut411a7rN?from=search&seid=14411767501116137153

2、数据结构-浙江大学

课程是由陈越与何钦铭共同录制,b站与慕课网都有,慕课网比较清晰一些

https://www.icourse163.org/course/ZJU-93001?from=searchPage#/info

3、数据结构与算法基础

课程由青岛大学王卓老师录制,非常适合考研,讲的题比较多。

https://www.bilibili.com/video/BV1nJ411V7bd?p=1

3、数据库

书籍

见书单

网课

MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷

https://www.bilibili.com/video/BV12b411K7Zu?from=search&seid=2779357081480449466

4.1 计算机网络

书籍

见书单

网课

1、计算机网络微课堂

https://www.bilibili.com/video/BV1c4411d7jb?p=1

2、韩立刚计算机网络 谢希仁 第7版

https://www.bilibili.com/video/BV1gV411h7r7?p=1

4.2 计算机组成原理

书籍

见书单

网课

1、计算机组成原理 清华大学刘卫东 全58讲 国家精品课程

https://www.bilibili.com/video/BV1c4411w7nd?p=1 2、计算机组成原理(哈工大刘宏伟)135讲(全)高清


https://www.bilibili.com/video/BV1t4411e7LH?p=1

4.3 操作系统

书籍

见书单

网课

1、操作系统(哈工大李治军老师)32讲(全)超清

https://www.bilibili.com/video/BV1d4411v7u7?p=1

2、2020 南京大学 “操作系统:设计与实现” (蒋炎岩)

https://www.bilibili.com/video/BV1N741177F5?p=1

4.4 网络编程

网络上也有类似的网络服务程序,比如即时聊天软件的后台服务器,网游服务器,金融交易系统,互联网企业用的分布式海量存储,微博发帖的内部广播通知等等。当然在嵌入式系统上也有移植或维护 TCP/IP 协议栈等等。

熟悉掌握一些网络模型,例如 WINDOWS 系统下使用的 IOCP。Linux系统下使用的 Epoll、select、poll模型。熟悉一些通用库例如 ocket Server,RPC Framework内存管理。重载new/delete,内存池,对象池的处理。内存泄露检测,内存访问越界警惕,内存碎片的回收。预分配池减少切换和调度,预处理的线程池和连接池,例如数据库连接池等。多进程编程、多线程编程五大 IO 模型:同步、异步、阻塞、非阻塞、信号驱动进程间通信方式: 信号量、管道、共享内存、socket 等线程安全问题,锁处理、临界资源负载均衡理念,数据的提前准备和即时计算,如果有耗时的业务可以考虑微服务,负载均衡。定时器、心跳、定时检查死链接等等

见书单

视频&源码

推荐陈硕大佬的《Linux CC++网络编程实践》以及开源的库 muduo

https://github.com/tangtangcoding/C-C- https://github.com/chenshuo/muduo

libevent 是一个轻量级的基于 event 回调机制的网络编程库,可以支持 Linux、Solaris、Windows 等系统,它本身是用 C 语言写的,比较适合入门级的阅读。

https://github.com/libevent/libevent

Asio 是 boost 里的网络编程库,是用 C++ 语言写的。里面用了很多 boost 的数据结构和技巧,包括大量模板的使用,有一定的语言难度。

https://www.boost.org/doc/libs/1_75_0/doc/html/boost_asio.html

5、C++ 编码规范与git使用

https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/

git使用:

https://zhuanlan.zhihu.com/p/94008510
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜