首页 > Java学习经验分享(2021秋招)
头像
AC是不可能AC
编辑于 2022-03-02 09:49
+ 关注

Java学习经验分享(2021秋招)

背景

楼主本硕均为电子信息相关专业,之前使用的主要语言也是C,到研究生阶段才开始自学Java,做的两个项目也比较简单,一个是JavaGuideRPC项目还有一个是基于SpringBoot的博客项目

一、基础

1、Java基础

  • B站尚硅谷宋红康Java基础视频
  • 《Java核心技术卷Ⅰ》(10~13章可跳过)
  • 常见容器的源码剖析,包括但不限于HashMapConcurrentHashMapArrayListPriorityQueue等,基本要做到熟稔于心,可以配合常见面试题来抓重点

2、JAVA虚拟机

  • 《深入理解JAVA虚拟机》JVM圣经,建议全文精读,多次翻看。如果没时间,重点看第2、3、7章)
  • 常见的虚拟机排错与调优技巧

3、高并发

  • 《Java并发编程之美》(分析源码的书籍,建议全文精读,对于之后分析JUC包下的源码帮助很大)
  • 《Java多线程编程实战指南(核心篇)》(国人写的,写的相当好。主要讲解高并发一些思想和设计,最后两章关于内存屏障的部分建议精读)
  • JUC源码剖析,包括不限于ConcurrentHashMapAbstractQueuedSynchronizerConditionObjectCopyOnWriteArrayList、线程池原理、阻塞队列源码等(这部分重点把AQS原理和ConditionObject搞明白,再看其他源码会轻松很多)

4、计算机基础

非科班的同学需要格外注意这部分,这部分知识学起来比较枯燥,但是面试基本又是必问。如果时间充裕建议系统性的学一下,推荐B站上清华大学的操作系统课程和湖南科技大学一个老师的计算机网络课程。

  • 计算机网络,B站UP主:湖科大教书匠;公众号:小林coding的《图解网络》(基本涵盖了70%以上的面试题,建议全文精读);《图解HTTP》,可以当手册翻阅
  • 操作系统,B站:清华操作系统原理;公众号:小林coding的《图解系统》(基本涵盖了70%以上的面试题,建议全文精读)

5、数据库

  • 《MySQL必知必会》(入门经典,短小精悍,三四天就可以看完)
  • 《MySQL技术内幕:InnoDB存储引擎》(1~8章,有时间建议精读,配合《高性能MySQL》基本能解决绝大部分数据库面试题)
  • 《高性能MySQL》(第1、4、5、6章精读,其它章节看个人情况,这本书实在太厚了)

关于后两本书,初学者看起来会比较抽象,建议配合面试题和一些博客一起食用,带着问题看会好很多

6、算法与数据结构

  • 《剑指Offer》配合LeetCode(算法建议每天都刷一两道,千万不要停,需要保持手感。LC上的热题100和剑指上的原题建议多刷几遍)
  • 《大话数据结构》(二叉树、链表、队列、堆、栈等,一些经典算法一定要知道)

7、设计模式与设计原则

  • 关注一些常见的设计模式即可,包括不限于单例、工厂、代理、观察者等。最好能结合框架中的设计模式学习
  • 常见的设计原则,开闭、单一、迪米特等

8、Linux

  • B站韩顺平Linux教程
  • 常见故障排查指令

二、框架

1、SSM框架

B站尚硅谷雷丰阳的SSM全家桶

  • Spring源码重点分析IOCAOP源码、事务实现等源码和思想,同时关注一些常用注解的区别与实现。这部分建议自己debug分析
  • SpringMVC源码重点分析请求处理过程与父子容器启动过程
  • MyBatis重点关注MyBaits缓存、Mapper接口与XML文件映射实现原理以及一些常见面试题即可

2、SpringBoot

B站尚硅谷雷丰阳的SpringBoot系列视频

  • 重点关注SpringBoot自动配置原理
  • 关注一些常用注解的使用、实现与区别
  • 背一些常见面试题即可

3、Netty

Netty主要是项目需要所学,这部分看个人所需

  • Netty的线程模型、IO模型,事件处理过程等
  • 推荐简书闪电侠的Netty源码分析博客
  • Netty的应用场景以及开源框架了解

三、中间件

1、Redis

  • B站尚硅谷Redis视频

  • 《Redis设计与实现》(必看,建议全文精读,能够解决80%以上的Redis面试题)

  • 业务中常见的缓存问题,包括不限于一致性、数据倾斜等,这部分建议多看面经

2、消息中间件

主流消息中间件包括RabbitMQRocketMQKafka等。时间充裕的同学可以多了解,楼主对于后两者了解不多,对于时间不够的同学,熟练掌握一种消息中间件即可

  • B站编程不良人RabbitMQ
  • 《RabbitMQ实战指南》
  • 常见消息队列场景题,包括不限于异步重试、解耦、削峰等,这部分建议多看面经和博客

3、Zookeeper

  • B站黑马Zookeeper教程
  • ZAB协议、Leader选举、一致性、分布式锁等相关面试题

四、项目

  • 基于Netty和Zookeeper的RCP框架
  • 基于SpringBoot的博客项目
  • 慕课网秒杀项目
  • 不管什么项目,如果写在简历上一定要搞清楚其中的难点和优化点,如果能加入自己的思想和优化策略更是再好不过。如果一个项目只知道怎么做,但不明所以建议不要写在简历上

五、其他

  • 微服务相关的一些基本概念,包括不限于服务治理、设计思想等。这部分楼主掌握的也不多,故不做推荐
  • 分布式事务与理论,包括不限于2PC3PCCAP理论、BASE理论、分布式锁等。这部分重点在于理解与抽象,建议多看博客
  • 一些常见的排错技能,包括不限于CPU负载过高、死锁、FullGC、慢查询、内存泄漏等
  • 常见海量数据处理题目,这部分网上博客有很多分享,主要思路是分而治之或者借用一些中间件等
  • 常见业务场景题

六、学习渠道推荐

0、B站

  • 尚硅谷(基本上主流技术栈都有)
  • 黑马
  • ...(基本上能想到的技术都能找到学习视频)

1、公众号

  • 小林coding
  • Java面试题精选
  • JavaGuide
  • Java知音

2、网站博客

七、建议

  • 提前准备,提前准备,提前准备。现在Java后台是越来越卷了,秋招的金九银十基本不太适合互联网大厂。根据今年的秋招情况,应该改为金七银八,基本上到九月大厂的HC就被提前批和实习的同学占满了。有鉴于此,如果有机会实习的同学一定要去实习,首先实习的面试经历能够帮助自己在秋招时提前进入状态(即使不能去实习,也可以进行实习面试,这样在准备秋招时更能抓住重点);其次,对于非科班的同学实习的经历在简历筛选中具有较大的优势,如果在实习期间能做一些实际业务,在面试的时候也能更好的吹水
  • 保持心态,不要受身边同学的影响对自己否定,秋招一般坚持到最后的都能拿到不错的offer
  • 眼光不要局限于大厂,近两年制造业的崛起,很多制造企业开的薪资不比大厂低(比如海康、TP、汇顶、大华等今年薪资都很顶,楼主前期眼光就局限于大厂,最后到9月开奖时已经高攀不起了)
  • 对于非科班的同学,除了Java技术栈外,一定要重点注意计网和操作系统,大厂很重视基础,反而对框架这些问的不是特别多
  • 每场面试一定要复盘,总结自己不会的点和回答的不利索的地方。在面试中除了专业知识外还要要注重逻辑和表达,不要一股脑的将所有知识揉在一起
  • 写在简历上的项目的知识一定要弄懂,否则很影响面试官的印象

全部评论

(20) 回帖
加载中...
话题 回帖