漫谈--大学期间Java Web后端成长计划,帮你斩获大厂Offer

:以下所有面试提问的热点问题的归纳都基于博主自身的应聘经历~不同年份、环境有可能不同,仅供参考!

引言

今天又碰到一个学弟问我,“我现在比较迷茫,以后想要从事 Java 后端开发的相关工作,却不知如何系统的进行学习,学长能帮忙给一点建议吗?”。

本人目前也是一枚刚毕业的本科应届生,有幸加入美团从事 Java 后端的开发工作,回想起大学时光的学习历程,不得暗自庆幸,像不知道如何进行系统的学习,毕业后到底应该从事计算机领域哪一方面的工作等等这种类似的疑惑,基本都没有产生(准确的来说,就算是产生了,也会有学长或老师及时的帮你解决(*≧▽≦))。

其实这种疑惑的产生应该是每一个在校生所必经的一个阶段,如果说你没有报班,不打算考研,又没有人系统的指导你学习,大学期间只是按部就班的按照课表进行知识与能力的提升,那么等你面临找工作,想要通过大公司的面试,进入一线互联网大厂进行工作,应该还是比较困难的。

博主在大学期间还算是比较系统的对 Java 后端进行了学习(有很多厉害的学长进行指点),加之在大三春招以及大四秋招期间,面试过不少的大厂(国内一二线互联网公司基本都有涉猎),发觉在 Java 后端这一块,他们提问所对应的知识模块都具有很高的相似性以及复用性,当时就想总结一篇大学期间 Java 后端的一个学习成长路线,解救广大莘莘学子于水火之中,帮助他们尽量不要迷失在庞大且复杂的知识体系中而觉得无从下手。

这里只是结合我大学四年的学习以及最后的面试经历,给大家提供的一份相对还算靠谱的学习计划,实际情况需要你结合自身发展以及未来规划作出相应的补充与完善,相信在你不断学习的过程中,会对 Java 后端的知识体系越来越明了,从而自行调整学习路线。

我将对知识的掌握程度分为三个级别:

  • 了解:认真学习相关知识的基础概念、使用场景以及功能特性即可。
  • 掌握:在了解的基础上需要进行实践,能够将所学知识熟练的运用到代码之中。
  • 熟悉:在了解与掌握的基础上需要深挖其实现原理以及性能优化,需要对知识的理解达到一定的深度。

然后,我将当初觉得面试官最喜欢问的问题所属的领域,分成了如下六个大类,基本上也对应了你在大学期间所要学习并掌握的一些东西。

P.S.

  1. 深挖一个知识点的实现原理以及性能优化等不一定需要通过阅读源码才能实现,学会科学上网,利用网络资源,查询优质技术文章,比直接阅读一堆枯燥的源码要好的多;
  2. 计算机方面大部分的书籍都特别的厚,你不能一个字一个字、一页一页的去阅读它,你要学会找重点目录,找重点知识模块,找你现在急需查漏补缺的地方,首先去攻克它,然后再对自己的知识体系进行不断的补充,而不是一上来就逮住一本书,想要把这本书中的每一个字都啃透,那这个过程必然是十分痛苦且耗时的;
  3. 推荐阅读书籍部分,给出的书本顺序是按照学习成本、效果产出以及正确的学习顺序综合考虑的,也就是说,第一个出现的书籍是你首先需要进行学习并且是我强推的。

基础知识

计算机网络

计算机网络通常被分为 OSI 七层模型或五层模型,说实话,你要问我为什么有了七层模型,还要设计出层级结构与之极其类似的五层模型,这个具体原因我还真说不上来,有兴趣的同学可以自行 Google。总之,我们一般学习计算机网络,都是按照五层模型进行分级学习。

简介 详细
物理层 这一层级的知识,我学习的并不是很多,面试官提问的重点也不在这一层级,姑且定义为了解。
数链层 本人自觉极少数面试官会提问一些这部分的知识,但这并不影响数链层其所包含知识点的重要性:数链层的差错控制、流量控制、滑动窗口协议、交换机、路由器、网关等等…这些概念都要求掌握,也许这对你的面试结果来说并不重要,但对于你个人的提升以及对计算机网络整体的理解都有非常大的帮助。
网络层 重点以及难点,但同样不属于面试官频繁提问的范畴,如果你需要考研,或者进行计算机网络相关的笔试,那么网络层会涉及到 IP 地址、子网掩码、子网网段等等需要你进行计算的相关知识点。除此之外,IP 协议、报文格式、ARP 协议、ICMP 协议等等也都需要你去掌握。这一层还包括一些经典的路由算法,但本人没有进行过学习,面试时也没怎么碰到过,感觉学习成本以及难度较大,暂且定义为了解吧。
传输层 重点!重点!重点!重要的事情一般都会说三遍,属于面试时高频提问范畴、什么拥塞控制、滑动窗口协议、三次握手、四次挥手、TCP、UDP…各种经典的问题,各种不同的问法,都能问烂。要求这一层相关概念必须达到熟悉的程度,并能自行扩展相关问题:比如为何需要三次握手,挥手为何需要四次?三次挥手行不行?建议 Google 一些关于传输层的经典面试题,知悉面试套路。
应用层 重点!重点!重点!没错,同样属于面试官高频提问范畴,也是与用户接触最频繁的网络层级,熟悉 HTTP 协议、DNS 协议。有关 HTTP 协议,同样有大量经典的问题,下去自行了解吧,我就不再赘述了。除此之外,还有 CDN(内容分发)、P2P(对等传输)、HTTPS(对称密钥、公开密钥算法、数字签名)等扩展知识,如果你还掌握了这些(展示自己对知识学习的深度及广度),绝对会给面试官留下不错的印象!

计算机网络属于 Web 后端的基础知识,打好地基更是作为一名合格程序员所要具备的基本素养,因此不可懈怠有关计算机网络知识的学习。

推荐阅读书籍:计算机网络(第七版,谢希仁著)、计算机网络(第五版,特南鲍姆、韦瑟罗尔著,可做进阶使用)、黑皮书就算了吧,如果不打算成为网络方面的专业人才…

P.S.:额外吐槽一句,机械工业出版的黑皮书,虽然一个个大名如雷贯耳,封皮以及书本整体给人十分牛逼以及高大上的感觉,但是!对读者来说,简直就是一块难啃的硬骨头!

数据结构&算法

说到数据结构与算法,很多同学应该都会觉得这是一座阻挠普通程序员通往优秀的大山,也是将程序员这个群体划分为三六九等的标准。

我对数据结构与算法同样抱有恐惧以及排斥心理,数据结构以及算法不同于计算机领域中的其它学科。其理论基础偏数学,又要求程序员具有良好的编码能力以及思维方式,可以说是一门很吃智商的学科,其特有的学习提升途径在计算机领域中又显得独树一帜,且被中国广大莘莘学子所讨厌——刷题。没有再比这无聊、痛苦的事情了,高三一年已经刷吐了,因此再次听到这个词,绝大多数人有排斥心理也是正常反应。

对于数据结构以及算法,怎么说呢?是很重要,并且同样属于计算机科学领域中众多分支学科的基础学科,其重要性可见一斑。但是如果你大学期间不是专业打比赛的,并且未来不会从事人工智能、机器学习、大数据等偏理论、偏科研方向相关的工作,应该不用担心这东西会影响你的面试结果以及未来发展。我初入职场,但依稀记得在哪好像听过一句话:不会数据结构与算法(这里肯定不是指完全不会,应该是说不要求你这方面非常厉害),不会影响你做架构师

从我以及身边同学春招、秋招所经历的大厂面试情况来看,如果你不满足我上一段所述的条件,想要通过数据结构以及算法部分的面试,只需要掌握大学期间应掌握的、基础的数据结构及算法,并且能够刷掉剑指 Offer 1/3(30 道左右吧,应该) 的题量,问题已经不大了,如果能够刷掉剑指 Offer 2/3 的题量,拿大厂 Offer 应该是完全没有问题的,当然,这里说的刷题,并不是指你对着书本在电脑上敲一遍就完事了,你需要完全理解,并在舍弃书本的情况下,不说每道题能够完美无瑕的写出来,能够完成 80% 左右的正确编码量已经非常不错了。

如果你在大学期间能够达到 10w 行有效代码量,你的编程能力应该会超越 70% 以上与你一同毕业的人,它将成为你强而有力的竞争手段,而刷题(一定要刷值得去刷的题,不要整天刷一些简单的,不会促进自己成长的题,这不会增加你的有效代码量,更不会提高你的编程能力)则是增加有效代码量的重要手段之一。

刷题是巩固数据结构与算法学习最好的方式之一,也是最能提升编程能力的有效途径之一。刷题应该是一个不断积累的过程,考虑到刷题所需要花费的时间,最好的方式便是从现在开始,一周七天,每隔三天,一天留出 6 个小时,专门去牛客网刷题。从现在开始每次刷题就当模拟面试笔试,把控好时间,不断提升写题的速度以及正确率,坚持到你找工作的时候,相信笔试以及现场手写代码这一块,将完全不是问题!

P.S.:关于牛客网的作用及使用,同学们自行了解。总之,基本是各大公司进行笔试的平台,其自身功能也非常强大,很适合有针对性的训练!

数据结构

简介 详细
字符串 字符串也算一种数据结构,其相关题型与算法非常多,掌握相关题型。
线性表 掌握数组、链表(双向链表、循环链表等),掌握相关题型。
栈与队列 掌握相关题型。
掌握二叉树及相关题型、哈夫曼树、二叉查找树、平衡二叉树、了解 B- 树、B+ 树、红黑树等。
如果你面试的岗位不是算法相关,大学期间也没怎么参加过竞赛,图这种数据结构在面试中基本很难被问到,但即使如此,关于图的基本概念,创建图、删除图等这些基本操作还是要掌握的。图主要涉及到一些很经典的算法,例如深搜与广搜,就算在面试中属于低频考点,但在笔试中却属于高频考点。这部分的知识博主掌握的也不是很好,学习成本比较高,总之学习的道路上,合理的时间规划也很重要。
哈希表 掌握哈希(散列)算法、哈希表、了解一致性哈希、分布式哈希表。

算法

学习算法之前,务必先理解时间、空间复杂度的概念,每个算法在学习的过程中,都需要从这两个维度对性能进行考量。

简介 详细
递归 熟悉递归算法。
排序 熟悉冒泡排序(各种变形)、选择排序、插入排序(希尔排序)、快速排序、归并排序、堆排序。后三个排序属于面试中的高频考点。
查找 熟悉二分查找。
熟悉深度优先搜索、广度优先搜索,了解最小生成树、最短路径(Dijkstra 算法)、拓扑排序等。
进阶 贪心算法、动态规划…这两个算法在一些公司的笔试题中会出,已经算是难度偏上的题型了。尤其是动态规划,博主在大学期间学过一段时间,过于抽象是我给它的定义,除了笔试需要,目前感觉,为了找到一份好工作而刻意学习,意义不大(个人看法)。

推荐阅读书籍:一句话,别买算法导论就行,啃不动的,买回来就只能吃灰或用来垫电脑了。本来想强推我大西邮的教材(数据结构与算法,王曙燕著),结果发现京东上没有卖…算法(第四版,Robert Sedgewick, Kevin Wayne 著)。应该还有很多优秀的书籍,但博主并没有真正的阅读过,也就不做推荐了。


Java

集合

简介 详细
List 了解 List,了解 List 所属下的所有集合,熟悉 ArrayList、LinkedList。
Set 了解 Set,掌握 TreeSet、熟悉 HashSet。
Map 了解 Map,掌握 TreeMap、熟悉 JDK 1.7 以及 JDK 1.8 中的 HashMap。

在学习好这些基本的集合之后,你还需要了解一些非常经典的能够保证线程安全的集合,如:HashTable、ConcurrentHashMap 等等,不要求你现在就能够使用,但是你要了解一下他们为何能够保证线程安全,知悉部分原理。

推荐阅读书籍:疯狂 Java 讲义(很全,很详细)、Java 学习笔记(如果你在阅读上本书的过程中觉得有困难,那就先从这本书开始,这也是博主学习 Java 时阅读的第一本书,如今觉得作为入门来说还是不错的,讲的很简单)、Effective Java(没有看过,但是书的大名如雷贯耳)。

并发

简介 详细
基础 掌握线程等相关概念,掌握并发编程,能够编写保证线程安全的并发程序。
实现线程的三种方式 属于面试高频考点!掌握 Thread & Runnable & Callable,了解 Thread、Runnable、Callable 的异同。
线程池 属于面试高频考点!属于面试高频考点!属于面试高频考点!熟悉 Executor 接口,ExecutorService 接口,Executors,ThreadPoolExecutor,线程工厂,阻塞队列,饱和策略等!
进阶 这里涉及的模块很多,Java 内存模型与 volatile 关键字,原子变量的使用、synchronized(实现原理) 与读写锁的使用,对象锁与类锁…希望在学习的过程中能达到掌握的水平,如果可以的话,熟悉是更好不过了。

并发是整个 Java 知识体系中很重要的一个模块,也是面试官很喜欢问的一个模块,更是能够体现你学习深度的一个模块,虽然这个模块的确不太好理解,但是当你得心应手之后,便会感受到并发编程的魅力。

推荐阅读书籍:Java 多线程编程核心技术(高洪岩著,很基础地一本书,适合新手看,速度要快,博主当初用了一周的时间看完的)、Java 并发编程的艺术(进阶书籍,博主也是临近毕业才入手,公司 leader 给推荐,没有细看,过了一下目录,觉得应该是非常好的一本书,广度以及深度都不错)、Java 并发编程实战(大学期间看的书籍,起初感觉也是大名如雷贯耳,但是博主在学习的过程中,觉得这本书实在是太难啃了,书籍目录的编排挺不错,但是内容…可以作为参考书籍阅读,需要较强的自学能力,推荐指数不高)。

IO/NIO

简介 详细
基础 了解 IO/NIO,了解两者之间的区别。
进阶 NIO 主要应用在 Java 网络编程中,在 Web 开发中使用场景不多,但是博主依稀记得当时面试官也喜欢提问 NIO 的相关知识,因此对于 NIO 的学习还是要有一定的深度。感觉不做网络编程的话,没必要系统的进行学习,在网络上多找一些相关的技术文章学习即可。

推荐阅读书籍:同 Java 集合

反射

简介 详细
基础 掌握反射。
进阶 如果你不了解反射的原理,学习反射的时候,是很懵逼的,并且看完书本之后印象应该也不是很深刻,所以学习反射这块的知识,我倒是建议可以先从原理入手学习,反射的原理并不难理解,在深入理解 Java 虚拟机一书中有详细的解释,具体对应的章节应该是第二章/第六章——“Java 内存区域”/”类文件结构”(记忆可能有误,如果不对的话请自行寻找对应章节)

推荐阅读书籍:同 Java 集合,可以先从基本看起,留有一个大概的印象,如果在看的过程中发现实在懵逼,可以先将这块的知识放下,等了解了反射的原理之后再回过头进行学习。


Spring

SSM(Spring + Spring MVC + Mybatis) 是如今最流行的 Web 后端框架,也是进入公司后进行编码时所要掌握的基础技术之一,基本上 70% 的企业级 Java Web 项目都基于 SSM 框架进行搭建。

但是我并不建议在大学期间将主要精力放在如何掌握众多框架的使用上,像博主大学期间就只学过 Spring(Spring MVC 是 Spring 的一个子集)。我一直觉得,框架这种东西,版本迭代日新月异,甚至今天还很流行的框架,在下个月就有可能被更好用的框架所替代,因此对于框架的学习,绝不在多,而在精。除此之外,面试官比较注重你对技术理解的深度,凡事喜欢问原理,如果你对框架的掌握程度都停留在使用层面,那必定是无法让面试官满意的。

基本上同种类框架的设计思想、实现方式背后都能够提炼出众多共性,当你深入理解了一种类型的框架后,就算有新的框架被设计出来,你也能够比别人更迅速的掌握。

简介 详细
IOC 熟悉 IOC,最好可以自己用 Java 实现一个简易的 IOC,不难,也就 1000 行带一点的代码量(可以从网上找找灵感)。推荐阅读优质博客先快速了解 IOC 的基本概念,然后阅读 “Spring 实战” 第 1 章 1.1 节的内容。
Bean 熟悉 Bean、了解 Spring 容器。推荐阅读优质博客快速了解 Bean 的概念,然后阅读 “Spring 实战” 第 2 章,第 3 章的内容。
AOP 熟悉 AOP 及两种实现原理(Java 动态代理以及 CGLIB 动态代理)。推荐阅读优质博客快速了解 AOP 的概念,然后阅读 “Spring 实战” 第 4 章的内容。
Spring MVC 掌握 DispatcherServlet,掌握 Spring MVC 的使用。阅读 “Spring 实战” 第 5 章。
推荐阅读 “Spring 实战” 章节 除了上述提到的章节,推荐阅读第 7 章 7.1 节,7.3 节,第 16 章,第 17 章的内容(第 16 章以及第 17 章的具体内容我并没有读过,只不过是想让大家了解一下 REST 接口以及异步消息等概念,企业级应用中用的挺多的)。

推荐阅读书籍:Spring 实战(第 4 版,Craig Walls 沃尔斯著,看这本书的时候,里面的大量内容,甚至大量章节可以跳过,看完没用)、Spring 技术内幕:深入解析 Spring 架构与设计原理(第 2 版,计文柯著,听说挺不错的,博主没看过)。

P.S.:对于框架的掌握必须要快,并且能够抓住重点(这时候如果有人能带着你入门 Spring,便会得到事半功倍的效果),你才能腾出时间去了解框架背后的原理。博主当初就是自学 Spring 框架,看 Spring 实战(现在觉得这本书里废话简直不要太多)的时候花费了大量的时间,现在回过头来看,当初学到的很多东西已经过时,而 Spring 最核心的三个概念:Bean、IOC、AOP,哪至于用那么久的时间去掌握。


JVM

说起 JVM,那应该属于博主在大学期间的强项了,当时对 Java 虚拟机一直抱有敬畏以及探索之心,觉得学好 Java 虚拟机就相当于抓住了 Java 语言的根源,要说整个 Java 体系中的基础,还有什么能比 JVM 更基础的呢?当然这个观点并不正确的,并且非常偏激,博主只是在这里提一下,以回味大学时的美好时光。

事实(面试经历)证明,面试官对于 JVM,并不会问的特别详细,其所问知识的所属范畴也具有非常强的规律性,博主就直接根据大学时阅读过的 “深入理解 Java 虚拟机” 一书中的目录,给大家总结出需要掌握的重要知识点。

阅读 “深入理解 Java 虚拟机” 一书之前,我先帮助大家剔除不需要阅读的章节:

章节 章节名
第 1 章 走近 Java。
第 4 章 虚拟机性能监控与故障处理工具(可以了解一下 JVM 中的一些常用命令:jstack、jmap 等,防止面试时被问到)。
第 5 章 调优案例分析与实战。
第 6 章 第 4、5、6 节 字节码指令简介(可以进行了解,好像在阅读字节码文件时会用到,面试时不问)、公有设计和私有实现、Class 文件结构的发展。
第 8 章 第 4 节 基于栈的字节码解释执行引擎。
第 9 章 类加载及执行子系统的案例与实战。
第 10 章 早期(编译期)优化。
第 11 章 晚期(运行期)优化。

下表便是我觉得大家在本科期间需要掌握并熟悉的 JVM 相关知识,标粗的知识点是面试时可能会问的,需要重点关注下。下表中知识点的出现顺序可以作为学习顺序,感觉会更快的入门 JVM。

简介 详细
类文件结构 对应第 6 章内容,属于面试低频考点,但阅读完后会使你对 Java 类的认识更加深刻。
虚拟机类加载机制 对应第 7 章内容,属于面试低频考点,类加载过程以及双亲委派模型在面试中可能略有涉及,阅读完后会对 Java 类文件被 JVM 加载至内存然后运行这一过程有比较清晰的认识。
Java 内存区域与内存溢出异常 对应第 2 章内容,属于笔试高频考点,Java 内存区域属于面试高频考点,应该就是这一章会使你明白反射的原理,阅读完后会对 Java 变量,Java 对象有全新的认识。
垃圾收集器与内存分配策略 对应第 3 章内容,属于面试高频考点!属于面试高频考点!属于面试高频考点!在这一章中你需要十分熟悉分代收集算法内存分配与回收策略,考烂了都!除此之外,还需掌握一些垃圾收集器的概念以及功能特性,以防面试时被问到。
虚拟机字节码执行引擎 对应第 8 章内容,属于面试低频考点,阅读后会对方法调用的过程以及多态有全新的认识。
Java 语法糖的味道 对应第 10 章 10.3 小节内容,属于面试低频考点,笔试高频考点,整天都在用 Java 语法糖,你确定不去深入的了解它吗?
Java 内存模型与线程 对应第 12 章内容,Java 内存模型属于面试高频考点,也是难点,学好 Java 内存区域/Java 内存模型,你便可以设计出线程安全的并发程序!
线程安全与锁优化 对应第 13 章内容,属于面试低频考点,但如果在面试过程中能够讲到锁优化,那绝对会带给面试官不少的惊喜。

推荐阅读书籍:深入理解 Java 虚拟机:JVM 高级特性与最佳实践(第 2 版,周志明著)。


数据库

数据库在 Java Web 后端中的地位绝对比你想象中的要高得多得多,Java + 框架 + 数据库是组成每一个 Web 应用的基本单元,数据库对于 Java Web 的重要性,不压于 JVM 对于 Java 的重要性,数据结构与算法对于整个计算机科学的重要性!

数据库的种类非常多,可以将所有类型的数据库分为两种,一种就是以 MySQL 为代表的关系型(持久化)数据库,另一种便是以 Redis 为代表的内存型(键值对存储)数据库。

MySQL 以及 Redis 也是面试时的高频考点。

MySQL

简介 详细
SQL 语句 属于面试及笔试高频考点,除基本的增删改查语句之外,子查询、联结查询、聚集函数….都是需要掌握的。平时不建议刻意去记忆,能读懂 SQL 语句就行,但是面试及笔试时经常要手写 SQL 语句,这时候你就要做一个充分的准备了。
存储引擎 属于面试高频考点,了解 InnoDB 与 MyISAM 的异同。
索引 属于面试高频考点,熟悉索引的适用场景以及功能特性,了解索引的实现原理。
外键约束 属于面试高频考点,熟悉外键适用场景、功能特性。
事务 属于面试中频考点,但很重要。熟悉事务适用场景、功能特性,熟悉事务的隔离级别(脏读、幻读等)、死锁等。
乐观锁 & 悲观锁 属于面试高频考点,熟悉乐观锁 & 悲观锁的适用场景、功能特性。
范式 属于面试低频考点,但有必要进行掌握。
实践 必须要学会简易数据库的设计!建议做一个 Web 项目,数据库中表的数量不少于 5(如何设计好实体表以及关系表,数据什么时候可以适当冗余?)。
进阶 如果有额外的时间精力,了解 B- 树,B+ 树,B+ 树应该是 MySQL 目前所采用的数据结构,了解一些亿级数据存储所需要掌握的高级技术——主从复制、分库分表…。

推荐阅读书籍:《阿里巴巴 Java 开发手册》– MySQL 数据库 小节,希望能知悉每条规范背后产生的原因。

再推荐一本被称作是 MySQL 数据库的圣经给大家:高性能 MySQL(第 3 版,Baron Schwartz,Peter Zaitsev,Vadim Tkachenko 著),这本书肯定不适合入门,听说读完这本书在 MySQL 领域就能达到专家级别…之前有学长读过,据说只需读完两章内容就可以给面试官吹逼…

Redis

数据库其实一直是博主的弱项,对于 MySQL 以及 Redis 都没有进行过系统的学习,都是在网络上找的技术博客进行零散的学习,尤其是 Redis,博主也只是稍有了解,当初面试的时候,基本上只要面试官提起 Redis,我都会尴尬的一笑(不会),因此这里目前无法给大家提供有用的建议,大家如果有好的建议,欢迎在评论区留言~

推荐阅读书籍Redis 设计与实现(黄健宏著)、Redis 实战(约西亚 L.卡尔森(Josiah,L.,Carlson)著)。Redis 实战是博主买的一本书,大概翻了一下,类似于 Spring 实战,内容偏实践,基本没有涉及 Redis 的设计思想以及实现原理,至于 Redis 设计与实现身边有好多同学都在看,听说很不错,内容也很有深度,如果有时间有兴趣的话,强烈推荐阅读~


设计模式

有许多种设计模式,以下列出来的是博主目前掌握的,其中前 4 个设计模式是项目中最常用也是面试官最常考的,对付面试掌握前 4 个足矣。

简介 详细
单例模式 熟悉单例模式,熟悉如何在多线程下安全的创建单例,熟悉创建单例的各种方式(目前使用枚举进行单例的创建是最好的方式)。
工厂模式 熟悉工厂模式,熟悉工厂模式在线程池中的应用。
观察者模式 熟悉观察者模式,了解观察者模式与发布-订阅模式的异同。
代理模式 熟悉代理模式,熟悉代理模式在 AOP 实现原理中的应用。
其他模式 了解装饰者模式、策略模式、行为模式。

推荐阅读书籍:无。我觉得设计模式的学习是不需要买一本书细细去看的,这东西在了解过后要真正的实践,是需要技术、经验、工程、业务等多方面能力的沉淀。起码,现在我们只需要掌握这些设计模式的思想就行。


项目&实习经历

一般来说,想要在本科期间拿到大厂的 Offer,除了有扎实的基本功外,简历上还需要有 2-3 个拿的出手的项目(至少有一个项目是值得去讲给面试官听的)。这些项目不一定要求有多少代码量,更好的选择是这个项目解决了什么问题、或是项目中使用了哪些比较可讲的技术,甚至是我上面所说的,自己实现一个简易的 IOC 等等,都可以作为一个项目。

除了项目之外,如果你在大三下学期参加春招,能够找到一份不错的实习,那么这份经历在秋招的时候也会成为你一个强而有力的竞争点,毕竟在春招的时候就能进入大厂工作,本身就是对你能力的一份证明。不过在实习的时候也别光傻傻的干活了,毕竟咱们的主战场仍然是秋招,自身技术上的提升可不能因为实习而耽搁了。


总结

说了这么多,事实上只要你大学期间好好学习,在追求技术广度的同时不放过深度,最后的结果都不会太差。然后,如果经济条件允许的话,报个好的培训班吧(差的就别去了),真的会事半功倍,也不用愁没项目可做。

最后,欢迎大家对本篇博客作出补充及提出批评~

大四秋招应聘简历

坚持原创技术分享,您的支持将鼓励我继续创作!
0%