Java目前已经不仅仅是一门开发语言,而是一整套生态体系。作为一个Java程序员,既是幸运的,也是不幸的。幸运的是我们有很多轮子可以拿过来用,不幸的是我们有太多的轮子需要学习。
但是,无论是日常工作还是面试问题,也都符合二八原则。即掌握20%的知识,就能解决80%的问题。
那么,Java程序员必须掌握的20%知识点都有哪些呢?
个人认为包括以下内容:
- Java基础知识,如集合类、IO、泛型、等。
- JVM底层知识,如类加载机制、GC、JVM内存结构等。
- Java并发编程知识,如Java内存模型、并发包、线程池、netty等。
- 开发框架知识,如Spring、mybatis、docker、springboot、springmvc等。
- 分布式相关知识,如CAP理论、分布式锁、分布式事务、Zookeeper等。
- 其他基础知识,编程语言、网络方面、数据库、数据结构和算法。
- 中间件相关知识,如Redis、rabbitMQ、Dubbo等。
- 服务器相关知识,如tomcat、jetty、jboss等。
小编认为,以上这些知识,就是最高频的面试问题,以及工作中需要用到的知识。当然,一个程序员想要掌握以上所有知识,可能需要花费很长时间。这个过程注定是漫长且孤独的。
如果你在工作中没有实际的应用场景,没有接触这些知识的渠道,小遍给你准备了一些笔记资源,可供辅助学习。
Java 基础
Java 基础 23 题
-
HashMap 的源码,实现原理,JDK8 中对 HashMap 做了怎样的优化。
-
HaspMap 扩容是怎样扩容的,为什么都是 2 的 N 次幂的大小。
-
HashMap,HashTable,ConcurrentHashMap 的区别。
-
极高并发下 HashTable 和 ConcurrentHashMap 哪个性能更好,为什么,如何实现的。
-
HashMap 在高并发下如果没有处理线程安全会有怎样的安全隐患,具体表现是什么。
-
java 中四种修饰符的限制范围。
-
Object 类中的方法。
-
接口和抽象类的区别,注意 JDK8 的接口可以有实现。
-
动态代理的两种方式,以及区别。
-
Java 序列化的方式。
-
传值和传引用的区别,Java 是怎么样的,有没有传值引用。
-
一个 ArrayList 在循环过程中删除,会不会出问题,为什么。
-
@transactional 注解在什么情况下会失效,为什么。
-
Java 集合类框架的基本接口有哪些?
-
HashSet 和 TreeSet 有什么区别?
-
HashSet 的底层实现是什么?
-
LinkedHashMap 的实现原理?
-
为什么集合类没有实现 Cloneable 和 Serializable 接口?
-
数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是 ArrayList?
-
Java 集合类框架的最佳实践有哪些?
-
Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()?它们有何区别?
-
Comparable 和 Comparator 接口是干什么的?列出它们的区别
-
Collection 和 Collections 的区别。
Java 基础题解析
JVM 与调优
JVM20 题
-
JVM 的内存结构。
-
JVM 方法栈的工作过程,方法栈和本地方法栈有什么区别。
-
JVM 的栈中引用如何和堆中的对象产生关联。
-
可以了解一下逃逸分析技术。
-
GC 的常见算法
-
CMS 以及 G1 的垃圾回收过程,CMS 的各个阶段哪两个是 Stop the world 的,CMS 会不会产生碎片,G1 的优势。
-
双亲委派模型的过程以及优势。
-
常用的 JVM 调优参数。
-
对象什么时候进入老年代?
-
什么是内存溢出, 内存泄露? 他们的区别是什么?
-
引起类加载操作的行为有哪些?
-
介绍一下 JVM 提供的常用工具
-
Full GC 、 Major GC 、Minor GC 之间区别?
-
什么时候触发 Full GC ?
-
什么情况下会出现栈溢出
-
说一下强引用、软引用、弱引用、虚引用以及他们之间和 gc 的关系
-
Eden 和 Survivor 的比例分配是什么情况?为什么?
-
什么是分布式垃圾回收(DGC)?它是如何工作的?
-
串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
-
在 Java 中,对象什么时候可以被垃圾回收?
JVM 问题解析
数据结构与算法及解析
1、B+树
2、快速排序,堆排序,插入排序(其实八大排序算法都应该了解
3、一致性 Hash 算法,一致性 Hash 算法的应用
Java 并发
Java 并发 28 题
Java 并发解析
Spring
Spring100 题
-
谈谈对 Spring IoC 的理解?
-
谈谈对 Spring DI 的理解?
-
BeanFactory 接口和 ApplicationContext 接口不同点是什么?
-
请介绍你熟悉的 Spring 核心类,并说明有什么作用?
-
介绍一下 Spring 的事务的了解?
-
介绍一下 Spring 的事务实现方式?
-
Spring 配置 Bean 实例化有哪些方式?
-
Bean 注入属性有哪几种方式
-
在 Spring 中如何实现时间处理?
-
Spring 中如何更高效的使用 JDBC ?
-
请介绍一下设计模式在 Spring 框架中的使用?
-
IoC 控制反转设计原理?
-
Spring 的生命周期?
-
Spring 如何处理线程并发问题?
-
核心容器(应用上下文)模块的理解?
-
为什么说 Spring 是一个容器?
-
Spring 的优点?
-
Spring 框架中的单例 Beans 是线程安全的么?
-
Spring 框架中有哪些不同类型的事件?
-
IoC 的优点是什么?
-
...更多省略见文档
Spring100 题解析
SpringBoot,Cloud25 题
-
什么是 Spring Boot?
-
Spring Boot 自动配置的原理?
-
Spring Boot 读取配置文件的方式?
-
什么是微服务架构?
-
Ribbon 和 Feign 的区别?
-
Spring Cloud 断路器的作用?
-
为什么要用 Spring Boot?
-
Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
-
Spring Boot 的配置文件有哪几种格式?它们有什么区别?
-
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
-
开启 Spring Boot 特性有哪几种方式?
-
Spring Boot 需要独立的容器运行吗?
-
运行 Spring Boot 有哪几种方式?
-
你如何理解 Spring Boot 中的 Starters?
-
如何在 Spring Boot 启动的时候运行一些特定的代码?
-
Spring Boot 有哪几种读取配置的方式?
-
Spring Boot 实现热部署有哪几种方式?
-
Spring Boot 多套不同环境如何配置?
-
Spring Boot 可以兼容老 Spring 项目吗,如何做?
-
什么是 Spring Cloud?
-
介绍一下 Spring Cloud 常用的组件?
-
Spring Cloud 如何实现服务注册的?
-
什么是负载均衡?有什么作用?
-
什么是服务熔断?
-
请介绍一下 Ribbon 的主要作用?
SpringBoot 问题解析
23 种设计模式文档解析
分布式相关
-
分布式事务的控制
-
分布式锁如何设计
-
分布式 session 如何设计
-
dubbo 的组件有哪些,各有什么作用。
-
zookeeper 的负载均衡算法有哪些。
-
dubbo 是如何利用接口就可以通信的。
MySQL 数据库高频 20 题解析
Redis 缓存
-
Redis 支持的数据类型
-
Redis 数据持久化
-
Redis 常见异常及解决方案
-
分布式环境下常见的应用场景
-
Redis 集群模式