最近有小伙伴问我,一名后端工程师的学习路线是什么?其实现在很多程序员都不是科班出生的,大学压根没学过什么计算机相关的课程。非科班出生的程序员的劣势在于基础会稍差,比如计算机基础、计算机网络等都了解的不多,不过没关系,只要你利用业余时间系统的来学习,照样可以做到后来居上。但是问题是,我们的学习路径是什么?该如何学,网上课程那么多,我到底该看哪一个?打开自己的收藏夹,数不清的资料全部在吃灰,到头来一个也没学。
其实同类型的资料我们保存1-2个就足够了,然后一段时间内专心学习一门知识,猥琐发育,最后惊艳所有人。
ok,废话不多说,我今天要分享的就是后端工程师的学习路径和相关的书籍、视频,由于后端语言居多,所以本文不会分享语言相关的内容。
首先要讲的自然就是计算机组成原理相关的知识了,当然这并不是和你单单的介绍计算机是什么组成的,不是教你如何组装电脑,而是告诉你比如计算机是如何运算我们的数据的、CPU这个大脑是如何高效处理我们的逻辑的、CPU又是如何与内存之间通信的,加快执行我们的程序在CPU维度有哪些优化以及我们运行程序的时候如何解决CPU和内存、内存和磁盘之间的速度鸿沟等等...
这里我和大家推荐 《计算机组成与设计 硬件/软件接口》 这本书
学习这本书你可以获取以下知识:
总之,学习了计算机组成之后,内功绝对可以大增。如果觉得书本知识枯燥难以阅读的话,我这里再给你推荐个视频:计算机科学速成课(https://www.bilibili.com/video/BV1EW411u7th)
非常生动形象的课,一共40集,每集大概10分钟,全部看完7个小时足矣,非常适合入门,这个视频配上书籍,简直完美。
学习计算机组成原理之后,我们会了解计算机各个硬件之间是如何协调工作的,那么接下来就是肝操作系统了,操作系统是处于计算机硬件与软件资源之间的程序。从程序员的角度来看,学习操作系统可以帮助我们更好的了解程序是如何被调度的等等。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务,操作系统也提供一个让用户与系统交互的操作界面。这里和大家推荐 《现代操作系统》 这本书
通过学习这本书你可以获得以下知识:
如果觉的书本知识难以阅读的话,这里也推荐个视频操作系统-清华大学(https://www.bilibili.com/video/BV1wq4y1M7qf)
这是由清华大学的老师讲的操作系统视频课,简单、通俗易懂,每段视频的时长也不长,大概就10来分钟。
当具备了计算机组成、操作系统的基础知识后,接下来就可以看看网络相关的内容了,计算机网络中面试官最喜欢问的就是TCP/IP相关的知识了,关于这方面的知识,我推荐一本书 《图解》TCP/IP
这本书全文基本都是图文结合的,阅读起来非常轻松,不得不说这个日本作者很牛逼,可以把很复杂的网络协议解释的这么简单,关键图文的方式更加容易记忆。
我这里还推荐一本掘金小册 《深入理解 TCP 协议:从原理到实战》
这本小册,我记得当时花了2-3天就看完了,整个阅读体验非常丝滑,也是非常通俗易懂的书籍,如果想要应付面试,这本小册绝对是个不错的选择。总之通过以上两本书,你可以获得以下知识:
总之,如果你的工作不是搞网络的,又不想花费大量时间来阅读TCP相关的知识,那么上面两本书个人觉得足够了。
这方面我看的书比较少,所以不打算推荐书籍,数据结构与算法可能大家更加注重的算法,BAT等大厂的面试离不开算法,以前听到小道消息,据说字节跳动的面试官一般算法题都会从leetcode上挑选原题,并且也不会太难,所以这方面的知识,我还是直接建议大家动手练写,直接去leetcode上刷题,比如每日2道,一个月下来就是60道
如图所示,具体的算法分类大概这么多,大家刷题的时候,注意不要把精力全部都放在一种类型上,尽量广一点,当然有很多冷门的类型,个人觉得也不必花费太多时间,像热门的算法如数组、字符串、动态规划、图、链表等可以多花点心思。
这里再推荐一个学习数据结构的有趣网站 visualgo(https://visualgo.net/zh)
这个网站通过动图的方式帮助你了解各种数据结构是怎么样的形式。
比如对于这个二叉搜索树来说,每次走到哪个节点,对应的代码还给你展示出来,确实很生动。
MySQL应该是每个后端工程师必备的技能,当然这里说的不是简单的CURD,而是稍微高级点的,比如索引知识、架构模式、高可用等等,由于现在MySQL基本都是使用InnoDB存储引擎,因此我推荐 《MySQL技术内幕 InnoDB存储引擎》
通过这本书,你可以了解到以下知识:
自古MySQL就是后端同学面试中的必考技能,并且随着互联网卷的程度越来越高了,MySQL问的姿势也多了,因此这方面是需要多花时间学习的。
当然如果条件允许的话,也推荐看林晓斌老师的《MySQL45讲》,但是这门课不适合新手小白,适合有一定MySQL基础的从业人员,看完绝对收获满满。
说了数据库,就得说缓存了,说到缓存,那就是当下最流行的NoSQL数据库Redis,Redis面试的重要程度不亚于MySQL,我这里和大家推荐 《redis的设计与实现》
通过这本书,你可以获得以下知识:
这本书侧重原理与实现,阅读起来也是通俗易懂,适合新手小白和需要进阶的工程师。
创作不易,各位的「三连」就是对作者最大的支持,也是作者最大的创作动力,我们下期见。
👇🏻 点击下方阅读原文,获取鱼皮往期编程干货。
往期推荐
我学计算机的四年,共勉!
偷偷分享下我们公司的研发规范~
腾讯云智客户端二面面经
又成长了,踩到了 Lombok 的坑!
离开大厂创业一年,从未受过这么大的打击!
挺看好的一位实习生,顶峰见!