hhjuteman
2022-06-10 10:47:47 +08:00
我不太确定是否能给出正确的建议,因为我是做流媒体前端和服务端的,我也不太确定这些书和培训视屏是否真的有作用。
总体上来说,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 源码,但是长期不怎么使用也只记得个大概了,这方面有的后端面试也会考,看你自己啰。
只是我自己的经验,不一定适用于你,希望有点帮助。