不过总体来说,我认为对于校招求职者(举Java方向为例),整体上需要准备如下几部分的内容:
-
算法:校招第一关就是笔试算法题,笔试通不过,后面的多轮技术面试也就无从谈起。算法这部分,我觉得没啥好的学习方法,就是要多刷题(LeetCode、AcWing、牛客网等等),反复刷题。题量上去了,解题思路也更多了。
- 可能有些小伙伴认为,算法跟技术栈相比,校招找工作肯定优先考虑技术栈广的,而且算法学习成本高,不如技术栈性价比高。这里我说下我自己的经历和看法,我校招投递的简历差不多200多家,面试也有将近100轮了,面了差不多40多家公司。实际情况就是,小公司不重视算法,笔试只是做一些填空、选择题,和一些简单的场景题,但是大公司,哪怕是一家小独角兽,他们的校招笔试内容也是包含算法题的。
- 提高算法水平重在平时积累,我记得大一的时候,一个打ACM比赛的学长说过,如果从大一开始每天刷一道LeetCode,坚持到毕业,校招求职笔试的算法题根本不成问题!实际情况也确实如此,我们学院隔壁班一个打ACM的大佬,他今年秋招拿到字节GoLang后端岗位的意向书,他在参加校招笔试时,美团、字节等公司的笔试算法题基本上都是全A通过,这种题对他来说就是小CASE。
-
计算机基础课:数据结构、操作系统、计算机网络,计算机组成原理(目前面试考察的地方少了,可以不作为主要内容),这几门课B站上有很多不错的教程资源,比如王道考研的操作系统/计算机网络、韩顺平老师的Java数据结构算法等。这部分内容网上有很多八股文面试题,可以去牛客网上找一些面经,或者去收集一些面试题总结一下。
-
Java基础知识
这里说的Java基础知识不仅仅是JavaSE的语法知识,还有一些理论概念,比如面向对象三大特征、重载重写的区别、八大基本类型的取值范围、内部类匿名内部类静态内部类的区别等,这些Java基础概念方面的八股文,该背的背一下,该理解的理解一下。除了这种八股文概念,还有一些需要自己去钻研的内容,即JDK源码和JVM虚拟机两个部分。
- JDK源码:JDK源码并不是所有的都是校招重点,也是有侧重方向的,比如最常问的HashMap、ArrayList、LinkedList等源码就是属于 包下的源码,除了 util 包,还需要去熟悉一下 包下的一些源码(即,我们常说的JUC源码),这部分源码需要重点了解一下锁(ReentrantLock、AQS、synchronized关键字等)、线程安全集合(ConcurrentHashMap等)、原子类(LongAdder、AtomicXXX,底层都是和CAS挂勾)、多线程相关的源码(比如ThreadLocal、Thread)等几部分。最后还需要看一下比较简单的 包下的常见源码,例如 String/StringBuilder/StringBuffer、Object等。对于JDK源码学习,我暂时还没有发现完全成体系的网课,即使有也多数是付费课,所以建议以博客学习为主,也可以买一本相关书籍(《Java并发编程实战》),看书学习。
- JVM虚拟机:JVM在校招中主要考察运行时数据区域、类加载机制、垃圾回收器、垃圾回收机制、回收算法、JMM内存模型等几部分。这里推荐入门学习的话去看黑马的网课入门,然后看书巩固复习(《深入理解Java虚拟机》)。
-
数据库基础:这里说的数据库其实主要指MySQL数据库,校招主要考察点是索引原理、存储引擎、日志(8种常见日志的作用)、数据库事务、锁、隔离级别、SQL场景题编写等几部分。
-
后端框架
对于校招生来说,其实框架考察主要是SSM三大框架,也会问到一些SringBoot相关问题,以及少部微服务一站式解决方案。所以,这部分我建议分三个阶段去学习。
- 入门阶段,可以在哔哩哔哩上找一些网课学一下(比如硅谷、黑马、编程不良人,狂神,百知等);
- 应用阶段,可以在 GitHub/Gitee 上找一些综合案例来来练手(比如若依、ElAdmin、Mail、以及一些电商、博客项目),如果看开源项目吃力,也可以从视频网课入手(我之前看过觉得还不错的给大家推荐几个:小而美博客,Spring Boot聊天App,仿牛客论坛项目,还有硅谷的谷粒商城,传智的乐优商城、青橙商城,畅购商城,点餐小程序等),除了找开源大型项目和视频网课项目之外,也非常推荐距离校招还有足够长时间的小伙伴,尽量自己去动手做一个项目出来,从前端到后端,包括数据库,中间件自己搞一套整合应用,我相信收获也是颇丰的;(我认为,应用阶段不一定必须要做一个完整的项目案例出来,也可以是某个小功能,或者某个小模块。例如:秒杀抢购模块,SpringBoot整合微信/支付宝支付模块,SpringBoot + OSS/FastDFS 个人图床搭建,基于SpringBoot + Nginx + Thymleaf的页面静态化功能,动手实现一个低配的RPC框架等等,这些耗费时间少,也能提高熟练使用框架的能力)
- 沉淀阶段,如果常用框架的使用非常熟悉了,自己也能动手搭建一个项目骨架出来。那么下面就可以试着深挖一下框架和中间件的原理。比如Java后端开发的灵魂 Spring 框架的核心模块(IOC、AOP、Bean加载等等)的实现原理。同样的,越是偏底层的东西学习来越难一些,这里推荐一本书:《Spring源码深度解析》,可以跟着书一步一步的去debug,去反复理解、吃透校招重点考察的几个模块即可。
- 框架阶段的学习建议:不要过分依赖网课,不要快餐式学习,不到重复堆积技术栈的使用!要逐步学习,重视原理(我想应该很多人,甚至学完了SpringBoot,都不知道 Spring 框架底层不是基于 Maven 而是基于 Gradle 来管理依赖的吧?)
众所周知,B 站是一个神奇的网站,上面有各种各样的视频资源,可以说是包罗万象、应有尽有。很多人在上面跟着 UP 主上自习、考研、学编程,还真的能学有所成。
这其中的关键,就是如何筛选出真正优质的视频。这很难,不仅需要一双发现美的眼睛,还需要花时间去检验。当然了,要掌握这种能力,并不是一件容易的事。因为海量的信息意味着嘈杂、纷乱、烦恼,稍有不慎,就有可能被其吞噬,迷失了方向、浪费了时间,不仅没有学习到知识,甚至会误入歧途。下面是集B站好评如潮的视频于一身的完整Java学习路线以及地址链接。
1.计算机网络微课堂
https://www.bilibili.com/video/BV1c4411d7jb?p=1
讲师:湖科大教书匠
评价:通俗易懂,重点知识十分细致,配合实验,而且有考研408 的难题的讲解,也是非常适合考研党,除了课程内容外还有很多习题讲解视频。
2.王道计算机考研 计算机网络
https://www.bilibili.com/video/BV19E411D78Q?p=1
UP:王道论坛
评价:小姐姐声音非常好听,百听不厌,内容与考研高度贴合,非常适合考研党和声音控
【郝斌】-数据结构入门
https://www.bilibili.com/video/BV11s41167h6?p=1
老师:郝斌
评价:思路是以初学者的思路来思考的,非常适合小白
【C语言描述】《数据结构和算法》(小甲鱼)
https://www.bilibili.com/video/BV1jW411K7yg?p=1
UP:鱼C-小甲鱼
评价:良心 up ,授课风格相比大学教授,语言风趣幽默,不死板,用例子带知识点,容易听得进去,亲和力拉满
【尚硅谷】Java 数据结构与 Java 算法(Java数据结构与算法)
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/18213.html