一个转开发路线图
2021.3.6 更新
没想到有这么多人看,今天和某个学弟交流之后,感觉自己可能不太成熟,才会写前半部分,反省一波感觉自己当时写这篇文章的时候还是很浮躁,经历的险境完全是因为没有进行合理的提前规划自作自受,只应该庆幸自己没有掉下悬崖。
这只是一个起点,只能说自己很幸运,第一步没有卷输,后面还有很多事情要做。
前半部分删除了,后面部分路线图继续保留吧,祝21届的同学和22届的学弟学妹求职顺利!
路线图部分:
本人的基本情况是本硕c9,本科是仪器专业,研一跳到算法,研二下学期跳到后台开发,一段腾讯的实习经历。
说在前面的是,首先,本路线图适用的是后台开发方向,且不保证是最优路线,个人观点,仅供参考,因人而异;第二,不要局限于此,有能力就尽早多留点儿时间,有时间就多学,千万不要觉得时间还有很多;第三,实习真的非常非常非常重要,如果很不幸你没有拿到暑期实习或者客观条件不允许,需要用这段时间补充其他的项目经历;第四,扔掉python,扔掉python,扔掉python,首选Java或C++,有余力的话可以熟悉一下golang。
首先介绍的是操作系统,操作系统分为三个部分,概念、操作和开发。
操作的话,主要是熟悉基于命令行的Linux开发环境,入门的话可以申请一台云服务器(阿里腾讯9.9每月就可以),推荐使用《鸟叔的Linux私房菜》入门。
概念的话,主要是熟悉操作系统的运行机制,例如虚拟内存、进程通讯、进程和线程模型、编译原理等等。推荐的书籍是首先《现代操作系统》,随后是《深入理解计算机系统》。
开发的话,主要是通过写程序实现操作系统的相关概念,属于略高级的层面,推荐的书籍是《Unix环境高级编程》和《Unix网络编程》。
这一部分可以先熟悉“操作”和“概念”,至于“开发”,可以搞定会更好。
第二介绍的是数据结构与算法。
数据结构部分本人没有系统的学习,推荐B站王道考研的数据结构,但战线不要拖太长,看视频课会给人一种安逸的感觉,这是不好的。
算法部分,推荐的书籍是《算法》,当然,直接刷leetcode也是可以的。这一部分可能会非常的折磨人,需要持续努力,保持刷题的习惯。笔试和面试前《剑指offer》必须非常非常非常熟练。
第三介绍的是计算机网络,计算机网络分为两个部分,网络模型和概念和网络开发。
网络模型和概念的核心是七层(或者五层)模型以及TCP/IP协议栈。这一部分推荐的数据是首先用《计算机网络:自顶向下方法》,完成第一本书之后,可以通过《图解TCP/IP》和《图解HTTP》对面试最常考的几个协议进行细节的补充,同时,公众号“腾讯技术工程”里面有一篇很长的文章,叫《彻底弄懂TCP协议:从三次握手说起》,是我目前看过的最棒的一篇文章,强烈推荐收藏。最后,有时间可以试一下《TCP/IP详解》系列,非常棒的书。
网络开发部分,没有来得及具体做一些的东西,实习的时候内部推荐使用《Linux多线程服务端编程:使用muduo C++网络库》,或者看一些项目去复现一下也是不错的。
第四介绍的是数据库,此处数据库仅指MySQL关系型数据库,不涉及Redis等,数据库也分为两个部分,概念与底层实现方式以及MySQL语法。
首先,先说MySQL语法,这一部分相对比较简单,配一下环境之后(在服务器上用MariaDB即可),跟着《MySQL必知必会》,三四天时间就可以上手,后面只要保持手感即可。
相比于操作,概念与底层实现部分是面试中更常被问到的。包括事务、锁、并发机制、隔离级别、索引的数据结构、索引的匹配原则、索引的种类及区别、不用引擎之间的区别等。推荐使用《数据库系统概念》(作者是外国人的那本)。
第五介绍的是语言,推荐的是Java和C++二选一,有余力的话试一下Golang,大胆预言一下,这应该是后面的趋势之一。以下的路线适用于C++。
C++和Java,以及Python的恩怨情仇和具体特点就不说了,只给结论,C需要了解,C++和Java熟练运用,Python的话,如果不会就先别碰了。
首先是需要入门以下C。推荐的数据有《C Primer Plus》,如果你是零基础的话,可能要多花些精力,Python肯定更简单些,但学习C是为了更好的了解程序的运作模式。
随后进入C++的学习,第一本书应该是《C++ Primer》或《C++ Primer Plus》,二者都可以,这本书通完之后,应该就可以刷算法题了。
随后进入进阶,进阶的话,分为两个part,第一个part是语言自身的特性,第二个part是标准模板库(STL)。针对语言自身的特性,视频推荐B站上侯捷老师的《C++面向对象高级编程》,书推荐《Effective C++》,有能力可以挑战一下《More Effective C++》。针对STL,视频推荐B站上侯捷老师的《C++ STL体系结构与内核分析》,书推荐侯捷老师的《STL源码剖析》。(在班车上看的视频课就是上面提到的!)
最后,由于C++11相比于C++98出现了比较大的更新,需要去了解几个新特性,例如智能指针、列表初始化、lambda表达式(从来没有答出来过)等等。
最后一项是设计模式,这一部分主要出现在笔试中多一些,个人的面试感觉是,你直接告诉面试官你不会应该也无伤大雅,毕竟在学校可能大型程序接触的也比较少,当然,技多不压身。
上述内容都啃完之后,首先可以先恭喜一下了(啃不完也可以恭喜,毕竟是走在正确的道路上)!最后3-4月(最早二月底)投一波实习,刷一下面经,一边笔试面试,一边及时复盘自己面试或笔试时的失误,就可以越来越好的。至于从实习到秋招,相信各位会在实习的时候,找到适合自己的路线。
本文有遗漏之处,或者有其他问题需要交流,欢迎来找Henry讨论,我的邮箱是henry_king96@qq.com。
最后,祝大家都有好offer!
#面经##学习路径#