Java开发大厂面试经验,Java学习路线和方法推荐

六、常用工具

非常重要!非常重要!特别是 Git和 Docker。

  1. IDEA:熟悉基本操作以及常用快捷。
  2. Maven :建议学习常用框架之前可以提前花半天时间学习一下Maven的使用。(到处找 Jar 包,下载 Jar 包是真的麻烦费事,使用 Maven 可以为你省很多事情)。
  3. Git :基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 Github 上。
  4. Docker :学着用 Docker 安装学习中需要用到的软件比如 MySQL ,这样方便很多,可以为你节省不少时间。

利用常用框架可以极大程度简化我们的开发工作。学习完了常用工具之后,我们就可以开始常用框架的学习啦!

七、常用框架

学习 Struts2(可不用学)、Spring、SpringMVC、Hibernate、Mybatis、shiro 等框架的使用, (可选) 熟悉 Spring 原理(大厂面试必备),然后很有必要学习一下 SpringBoot学好 SpringBoot 真的很重要。很多公司对于应届生都是直接上手 SpringBoot,不过如果时间允许的话,我还是推荐你把 Spring、SpringMVC 提前学一下。

Spring 真的很重要! 一定要搞懂 AOP 和 IOC 这两个概念。Spring 中 bean 的作用域与生命周期、SpringMVC 工作原理详解等等知识点都是非常重要的,一定要搞懂。

八、多线程的简单使用

多线程这部分内容可能会比较难以理解和上手,前期可以先简单地了解一下基础,到了后面有精力和能力后再回来仔细看。

学习完多线程之后可以通过下面这些问题检测自己是否掌握。

Java 多线程知识基础:

  1. 什么是线程和进程?
  2. 请简要描述线程与进程的关系,区别及优缺点?
  3. 说说并发与并行的区别?
  4. 为什么要使用多线程呢?
  5. 使用多线程可能带来什么问题?
  6. 说说线程的生命周期和状态?
  7. 什么是上下文切换?
  8. 什么是线程死锁?如何避免死锁?
  9. 说说 sleep() 方法和 wait() 方法区别和共同点?
  10. 为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?

Java 多线程知识进阶:

  1. synchronized 关键字:① 说一说自己对于 synchronized 关键字的了解;② 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗;③ 讲一下 synchronized 关键字的底层原理;④ 说说 JDK1.6 之后的 synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗;⑤ 谈谈 synchronized 和 ReentrantLock 的区别。
  2. volatile 关键字: ① 讲一下 Java 内存模型;② 说说 synchronized 关键字和 volatile 关键字的区别。
  3. ThreadLocal:① 简介;② 原理;③ 内存泄露问题。
  4. 线程池:① 为什么要用线程池?;② 实现 Runnable 接口和 Callable 接口的区别;③ 执行 execute() 方法和 submit() 方法的区别是什么呢?;④ 如何创建线程池。
  5. Atomic 原子类: ① 介绍一下 Atomic 原子类;② JUC 包中的原子类是哪 4 类?;③ 讲讲 AtomicInteger 的使用;④ 能不能给我简单介绍一下 AtomicInteger 类的原理。
  6. AQS :① 简介;② 原理;③ AQS 常用组件。

九、分布式

  1. 学习 Dubbo、Zookeeper来实现简单的分布式服务
  2. 学习 Redis 来提高访问速度,减少对 MySQL数据库的依赖;
  3. 学习 Elasticsearch 的使用,来为我们的网站增加搜索功能
  4. 学习常见的消息队列(比如RabbitMQ、Kafka)来解耦我们的服务(ActiveMq不要学了,已经淘汰);

到了这一步你应该是有基础的一个 Java程序员了,我推荐你可以通过一个分布式项目来学习。觉得应该是掌握这些知识点比较好的一种方式了,另外,推荐边看视频边自己做,遇到不懂的知识点要及时查阅网上博客和相关书籍,这样学习效果更好。

一定要学会拓展知识,养成自主学习的意识。 黑马项目对这些知识点的介绍都比较蜻蜓点水。

继续深入学习的话,我们要了解Netty、JVM这些东西。

十、深入学习

可以再回来看一下多线程方面的知识,还可以利用业余时间学习一下 NIONetty ,这样简历上也可以多点东西。如果想去大厂,JVM 的一些知识也是必学的(Java 内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM 内存管理)推荐《深入理解 Java 虚拟机:JVM 高级特性与最佳实践(最新第二版》和《实战 Java 虚拟机》,如果嫌看书麻烦的话,你也可以看我整理的文档。

另外,现在微服务特别火,很多公司在面试也明确要求需要微服务方面的知识。如果有精力的话可以去学一下 SpringCloud 生态系统微服务方面的东西。

微服务的概念庞大,技术种类也很多,但是目前大型互联网公司广泛采用的,实话实话这些东西我不在行,自己没有真实做过微服务的项目。不过下面是我自己总结的一些关于微服务比价重要的知识,选学。

十一、微服务

这部分太多了,选择性学习。

相关技术:

  1. 网关 :kong,soul;
  2. 分布式调用链: SkyWalking、Zipkin
  3. 日志系统: Kibana

Spring Cloud 相关:

  1. Eureka:服务注册与发现;
  2. Ribbon:负载均衡;
  3. Hytrix :熔断;
  4. Zuul :网关;
  5. Spring Cloud Config:配置中心;

Spring Cloud Alibaba也是很值得学习的:

  1. Sentinel :A lightweight powerful flow control component enabling reliability and monitoring for microservices. (轻量级的流量控制、熔断降级 Java 库)。
  2. dubbo :Apache Dubbo 是一个基于 Java 的高性能开源 RPC 框架。
  3. nacos :Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 可以作为 Dubbo 的注册中心来使用。
  4. seata : Seata 是一种易于使用,高性能,基于 Java 的开源分布式事务解决方案。
  5. RocketMQ :阿里巴巴开源的一款高性能、高吞吐量的分布式消息中间件。

十二、总结

我上面主要概括一下每一步要学习的内容,对学习规划有一个建议。知道要学什么之后,如何去学呢?我觉得学习每个知识点可以考虑这样去入手:

  1. 官网(大概率是英文,不推荐初学者看)。
  2. 书籍(知识更加系统完全,推荐)。
  3. 视频(比较容易理解,推荐,特别是初学的时候)。
  4. 网上博客(解决某一知识点的问题的时候可以看看)。

这里给各位一个建议,看视频的过程中最好跟着一起练,要做笔记!!!

最好可以边看视频边找一本书籍看,看视频没弄懂的知识点一定要尽快解决,如何解决?

首先百度/Google,通过搜索引擎解决不了的话就找身边的朋友或者认识的一些人。另外,一定要进行项目实战!很多人这时候就会问没有实际项目让我做怎么办?我觉得可以通过下面这几种方式:

分享

这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!

需要这份资料的朋友戳这里免费下载,整理出的内容大概如下:

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Cloud实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Boot实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

ring Cloud实战

[外链图片转存中…(img-wJjti9p5-1628281866285)]

Spring Boot实战

[外链图片转存中…(img-dxjw2DGW-1628281866286)]

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值