V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CodeTracker
V2EX  ›  C++

请各位大牛帮忙看看我做的 C++后端学习计划

  •  
  •   CodeTracker · 2022-06-09 21:00:19 +08:00 · 3721 次点击
    这是一个创建于 927 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人现在是双非研一学生,已经确定走 C++后端就业,对自己的一年学习做了一个规划。想请各位大佬们过目一下,看看我计划里优先级有没有问题或者是内容上有没有缺漏,小弟先谢过各位前辈了。

    2. 《 STL 源码剖析》第一轮 15 天
    3. LINUX C /C++开发就业课(有线程池、并发锁、数据库文件存储、DNS 请求器、高并发 TCP 服务器) 25 天
    4. 《 TCP/IP 网络编程》,会做出一个 webserver ,一轮 12 天
    5. gcc 环境配置,gcc 编译四步骤 2h C 语言基础第 01 天的视频 2h
    6. LINUX 进阶视频课内容(有红黑树、websocket 协议、redis 、nginx 网络组件的使用、一个图床项目) 7 个月
    7. acwing 算法课 18 天
    8. 《 Linux 高性能服务器编程》 游双 15 天
    9. webserver 用 C++实现 3 天
    10. QT 基础黑马视频 9 天
    11. 侯捷《 C++11 新特性》
    12. 侯捷内存管理与分析
    13. 《 C++程序的生前死后》 video ,2 天
    14. 《深度探索 C++对象模型》 8 天
    15. 《 Linux 多线程服务端编程》陈硕 25 天
    16. json 的使用方法 2h
    17. 即时通信 /图床项目 7 天
    18. 轮子项目 7 天
    19. [尚硅谷] Redis 6 入门到精通 4 天
    20. 《 Redis 设计与实现》 13 天


    本人现有的知识:
    语言
    C++
    《 C++ Primer 》阅读两遍并完成习题
    看了黑马 C++视频教程
    《 effective C++》浏览了一遍
    正在看《 STL 源码剖析》
    C 语言基本语法
    Java 基本语法
    GO (未学)
    python (未仔细学,只懂一些语法)
    计算机基础
    计算机网络
    通过考试的水平,考研期间学过

    数据结构
    LeetCode200 题
    掌握基本数据结构线性表、数组、队列、栈等
    操作系统
    考研学习过一些,知道死锁、线程进程、调度算法等基本概念理论
    数据库
    MySQL
    基本增删改查
    Redis (待学)
    项目
    C 语言版的 webserver
    无多线程多进程
    可以接受浏览器对于文件和目录请求,并返回请求的文件
    Linux
    学过基本的操作
    21 条回复    2023-09-10 19:21:56 +08:00
    CodeTracker
        1
    CodeTracker  
    OP
       2022-06-09 21:01:49 +08:00
    感谢各位大佬能抽空看我的问题
    CodeTracker
        2
    CodeTracker  
    OP
       2022-06-09 21:03:03 +08:00
    顺便还想问一下各位 C++后端的老哥怎么规划自己的 5-10 年职业生涯,做计划大概做到几年的比较合适呢?
    Buges
        3
    Buges  
       2022-06-09 21:34:30 +08:00 via Android
    先打好基础吧,那一堆培训班生产的垃圾没什么好看的。
    AX5N
        4
    AX5N  
       2022-06-09 21:35:27 +08:00
    除了那个 7 个月(虽然不知道为什么要 7 个月)的,其余所有加起来也没多少天,你就对着你这个计划学吧,规定的时间内能学完很厉害了(执行力惊人),不管有没有用,反正也没多少天,学了不亏。
    jones2000
        5
    jones2000  
       2022-06-09 21:37:11 +08:00
    学好数理化 走遍天下都不怕。
    CodeTracker
        6
    CodeTracker  
    OP
       2022-06-09 21:51:40 +08:00
    @AX5N
    @jones2000
    @Buges
    感谢各位指点,哪个视频课是我报了个线上课,那个老师给我分析了一下大概要 7 个月左右能搞得定。
    然后就是我也知道基础很重要,但是就是觉得搞个小项目也很重要,就是想两手抓,不知道怎么安排学习计划比较合理。
    Buges
        7
    Buges  
       2022-06-09 22:13:38 +08:00 via Android   ❤️ 1
    @CodeTracker 尝试写一些具体项目,并在过程中遇到某个具体领域的问题、学习这个具体领域就是打基础的过程,而不是列一堆你并不知道具体是干嘛的课程。
    培训班的课程通常来说是针对快速上岗干活和应付面试官的,学习阶段应以英文原版书和官方文档为主,不要碰这些东西。知其所以然才是最重要的,不要延续做题家应付考试的那一套方法论。
    hhjuteman
        8
    hhjuteman  
       2022-06-10 10:47:47 +08:00   ❤️ 3
    我不太确定是否能给出正确的建议,因为我是做流媒体前端和服务端的,我也不太确定这些书和培训视屏是否真的有作用。

    总体上来说,C++ 后端找到工作有比较核心 3 点吧
    1. 刷 leetcode 算法的水平
    2. C++的水平
    3. 网络编程的水平

    首先说说刷算法题的问题吧:
    我的个人建议是每天都刷 2 题,周末就不刷了,稍微总结一下做题思路和题型。保证自己找工作的时候差不多有个 300 题左右的题量,能吃透题型,差不多行了,算法相关的笔试面试基本上也不会被刷。

    C++的水平:
    我要说的是,我正儿八经看完的 C++的书就只有 4 本
    《 effective c++》
    《 effective morden c++》
    《 c++ concurrency in action 》
    《 c++ templates 》
    我连 c++ primer 之类的都没看过,刚开始入门的话,是结合一些开源项目,例如 tdesktop ,beast 之类的去看的。遇到不懂的就翻 c++ reference 。然后自己写点东西,尝试模仿这些项目的写法,然后阅读了 effective 的两本书。后面发现了 cpp coreguide line 这种好东西,以及 cppcon 。在长期阅读开源代码以及自己写代码潜移默化的过程中不知不觉的就懂了大部分 c++语法以及部分模版的用法,后来又想系统学习下模版,就看了《 c++ templates 》。

    cppcon 早年间那几届,有几个对我来说是惊雷般的演讲,例如 Mike Action 的 dod 相关的演讲。我的建议是 c++到了中级水平,多关注 cppcon ,遇到不懂的,多看看 isocpp 草案的标准定义。

    有关于 stl ,我也没有看过《 STL 源码剖析》这种比较出名的书,大部分的知识来自于一个叫做 eastl 的开源项目。

    网络编程的:
    书的话我就只看过三本
    《 tcp/ip 详解》
    《 unix 网络编程》
    《 unix 环境高级编程》
    我个人认为,asio 是所有 c++开发都应该了解的一个库,如果 c++需要一个网络标准库,那只能是 asio 。我个人建议在你的 7 个月的实验项目中尝试使用 asio ,思考 asio 到底给你提供了什么,思考一下 asio 中的异步 io 和 epoll ,iouring 之间的模式。asio 里面有一些 cpp 草案相关的内容,你也可以尝试。

    另外 nginx 也是绕不过去的,您应该在 nginx 好好下一番功夫,同时关注 envoy 这个项目。

    有关与存储缓存等内容
    说实话,我刚开始上班的时候也搞过网络编程,具体也就是一些网关,数据过滤相关的工作。没用到过 redis ,mysql 之类的。后面搞流媒体,同样也不在业务范围内。所以我虽然看过 redis 源码,但是长期不怎么使用也只记得个大概了,这方面有的后端面试也会考,看你自己啰。

    只是我自己的经验,不一定适用于你,希望有点帮助。
    harryhao
        9
    harryhao  
       2022-06-10 11:50:14 +08:00
    上来就看源码有点迷惑,很多内容是重复的,而且视频的话价值不高。不要想着大而全,打好基础后,专攻一个方向就好了,有余力再学其它的。
    xiaochao666
        10
    xiaochao666  
       2022-06-10 13:14:27 +08:00 via Android
    看着很多,实际上确很乱,没有主次,看不出来你想学什么,没有目标。还有就是时间太精确了,你会有很大对失败感和紧张感的,一般可以以两周或者月来大概计算。
    我理解你的那种突然有了很多自由支配但时间,还有对计算机领域的热爱或者学习的激情,但是人不是机器,希望你再好好想想,规划一下,你这个还是太乱了。
    直言,没有恶意,欢迎交流。
    fpure
        11
    fpure  
       2022-06-10 21:29:32 +08:00
    以我的经验来讲,别光看干书,要多写代码,先写代码,再带着实际问题去看书,看完一个知识点就继续去写代码
    CodeTracker
        12
    CodeTracker  
    OP
       2022-06-11 22:20:33 +08:00
    @hhjuteman 前辈好厉害,谢谢您的指点。我参考一下您的回答再去好好思考一下自己的规划,毕竟再学一年半左右就要面临招聘了。
    CodeTracker
        13
    CodeTracker  
    OP
       2022-06-11 22:22:21 +08:00
    @hhjuteman 前辈好厉害,十分感谢您花这么多时间给我提供意见。我参考一下您的回答再去好好思考一下自己的规划,毕竟再学一年半左右就要面临招聘了,不希望自己路走偏了。
    CodeTracker
        14
    CodeTracker  
    OP
       2022-06-11 22:28:42 +08:00
    @xiaochao666 主体的话就是 C++后端开发,QT 是因为暑假是去一家客户端开发的岗位,就加了一个 qt 的学习安排。我主要就是围绕 Linux 网络多线程编程,C++ 语法相关,具体项目,算法与数据结构,数据库。我的疑问就是我这里不知道哪些应该砍哪些应该加。不希望没有主次的瞎学一通。 感谢老哥抽空回复我。
    CodeTracker
        15
    CodeTracker  
    OP
       2022-06-11 22:29:07 +08:00
    @fpure ok ,谢谢您的意见哈
    CodeTracker
        16
    CodeTracker  
    OP
       2022-06-11 22:29:43 +08:00
    v2 上网友真的水平好强,自愧不如了。
    RanShunliu
        17
    RanShunliu  
       2023-09-10 19:12:23 +08:00
    前辈,我是刚大二的,目前情况和你有些类似
    RanShunliu
        18
    RanShunliu  
       2023-09-10 19:20:06 +08:00
    @RanShunliu
    211 本,刚大二,这一年的学习计划,争取看完下列书目,每个书目有可能的话,会配合视频学习,还有从网上找的 C++项目
    (目前还是先打好基础吧,和 OP 一样,我也喜欢跟培训班的课,目前跟了《 Essential C++》,黑马 C++的 300 个视频,力扣 100 道中等题,Mysql 跟着黑马的学到索引优化,大概 100 多个视频,Linux 本学期正在学,同时准备开始看 Effective C++,还有鸟哥的 Linux 私房菜,到时再从项目里找点对口的学一下,最迟大二上结束前,就会确定 C++具体方向)
    RanShunliu
        19
    RanShunliu  
       2023-09-10 19:20:32 +08:00
    ( 1 )书籍
    a.
    ****C++
    《 STL 源码剖析》①
    《 Effective C++》①
    《深度探索 C++对象模型》第 3 章
    《 C++ 11 新特性》
    《 C++ 内存管理》
    b.
    ****操作系统
    《鸟哥的 linux 私房菜》②
    《 Linux 高性能服务器编程》
    c.
    ****计网
    《计算机网络:自顶向下》③
    《 TCP/IP 详解卷 1 》
    d.
    ****数据库
    《 MySQL 必知必会》①
    《 MySQL 技术内幕·InnoDB 存储引擎》③
    《 Redis 设计与实现》
    e.
    ****计组
    《计算机组成原理》②
    f.
    ****设计模式
    《大话设计模式》
    g.
    ****Web 开发
    《图解 HTTP 》
    h.
    ****视频👇
    侯捷 STL 泛型编程....
    RanShunliu
        20
    RanShunliu  
       2023-09-10 19:20:52 +08:00
    ( 2 )项目
    建议“项目驱动”的学习方式
    b.
    ****编程语言
    C++实现自己的编程语言
    c.
    ****工具和应用
    开发自己的文本编辑器
    基于 C++实现一个迷你 STL
    简单 JSON 库
    轻量级 Web 服务器
    商城系统
    实现标准库部分容器和算法,对标准库进行扩充
    利用 C/C++开发基于 B+树的小型关系型数据库
    libqalculate (多功能计算器桌面应用)
    spdlog ( C++日志库)
    d.
    ****网络编程

    网络编程库 muduo
    微信 RPC 框架 phxrpc
    牛客 Linux 服务器教程
    高性能 Web 服务器
    Linux C++ WebServer
    轻量级网络框架,线程池技术,C++11
    TinyWebServer
    搭建一个 HTTP 服务器(十几行代码,重点是理解背后逻辑)
    搭建自己的 RPC 系统
    workflow (搜狗开源的 C++服务器引擎)
    e.
    ****分布式

    MIT 6.824 中文教程(分布式)

    ( 4 )****
    请教了别人,说是没必要看那么多,先看计网黑书和 tcp 卷 2 ,再看 mysql 必知必会和 redis 设计实现,在在力扣刷 stl 的题,刷完看 STL 源码剖析
    RanShunliu
        21
    RanShunliu  
       2023-09-10 19:21:56 +08:00
    目前也在想着,这里面哪些项目砍掉,因为方向还没完全确定,这学期先学了 Linux 和 Effective C++先,还有学校课程,还有四六级
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   833 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:19 · PVG 05:19 · LAX 13:19 · JFK 16:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.