2021 程序员春招必备:Java 面试知识点 + 答案(7 大分类 5000 字解析)
轰轰烈烈的“金三银四”春招季开始啦,真是有人欢喜有人愁,不管你是喜是忧,学习总归是好的。这不,小编特地整理了一下春招面试知识点+答案(JAVA 岗),一起分享出来给大家看看~
注意注意:需要完整版的 知识点+答案 的朋友可以添加小助理 vx:mxzFAFAFA 即可!!
第一部分 Java 相关
1.1 JAVA 基础
面向对象和面向过程的区别
Java 语言有哪些特点
关于 JVM JDK 和 JRE 最详细通俗的解答
Oracle JDK 和 OpenJDK 的对比
List 和 Set 的区别
什么是 Java 程序的主类 应用程序和小程序的主类有何不同
Java 应用程序与小程序之间有那些差别
字符型常量和字符串常量的区别
Java 面向对象编程三大特性: 封装 继承 多态
构造器 Constructor 是否可被 override
Arrays.sort 实现原理和 Collection 实现原理
重载和重写的区别
String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
在一个静态方法内调用一个非静态成员为什么是非法的?
在 Java 中定义一个不做事且没有参数的构造方法的作用
import java 和 和 javax 有什么区别?
创建一个对象用什么运算符? 对象实体与对象引用有何不同?
HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?
接口和抽象类的区别是什么?
成员变量与局部变量的区别有那些?
一个类的构造方法的作用是什么若一个类没有声明构造方法, 该程序能正确执行吗 ? 为什么?
构造方法有哪些特性?
静态方法和实例方法有何不同
对象的相等与指向他们的引用相等,两者有什么不同?
在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
== 与 equals(重要)
hashCode 与 equals (重要)
为什么 Java 中只有值传递?
简述线程,程序、进程的基本概念。以及他们之间关系是什么?
线程有哪些基本状态?
Java 中的异常处理?
异常分类以及处理机制
final finally finalize
强引用 、软引用、 弱引用、虚引用
Java 序列化中如果有些字段不想进行序列化 怎么办?
获取用键盘输入常用的的两种方法?
JAVA 基础:答案
JAVA 基础:答案
1.2 JAVA 并发
Synchronized 用 过 吗 , 其 原 理 是 什 么 ?
你 刚 才 提 到 获 取 对 象 的 锁,这 个 “锁”到 底 是 什 么 ? 如 何 确 定对 象 的 锁 ?
什 么 是 可 重 入 性 , 为 什 么 说 Synchronized 是 可 重 入 锁 ?
JVM 对 Java 的 原 生 锁 做 了 哪 些 优 化 ?
为 什 么 说 Synchronized 是 非 公 平 锁 ?
什 么 是 锁 消 除 和 锁 粗 化 ?
为 什 么 说 Synchronized 是 一 个 悲 观 锁 ? 乐 观 锁 的 实 现 原 理
又 是 什 么 ? 什 么 是 CAS, 它 有 什 么 特 性 ?
既 然 提 到 可 以 通 过 配 置 不 同 参 数 创 建 出 不 同 的 线 程 池 , 那 么 Java 中 默 认 实 现 好 的 线 程 池 又 有 哪 些 呢 ? 请 比 较 它 们 的 异 同 。
如 何 在 Java 线 程 池 中 提 交 线 程 ?
什 么 是 Java 的 内 存 模 型,Java 中 各 个 线 程 是 怎 么 彼 此 看 到对 方 的 变 量 的 ?
请 谈 谈 volatile 有 什 么 特 点 , 为 什 么 它 能 保 证 变 量 对 所 有 线程 的 可 见 性 ?
既 然 volatile 能 够 保 证 线 程 间 的 变 量 可 见 性 , 是 不 是 就 意 味着 基 于 volatile 变 量 的 运 算 就 是 并 发 安 全 的 ?
请 对 比 下 volatile 对 比 Synchronized 的 异 同 。
很 多 人 都 说 要 慎 用 ThreadLocal, 谈 谈 你 的 理 解 , 使 用
乐 观 锁 一 定 就 是 好 的 吗 ?
跟 Synchronized 相 比 , 可 重 入 锁 ReentrantLock 其 实 现原 理 有 什 么 不 同 ?
那 么 请 谈 谈 AQS 框 架 是 怎 么 回 事 儿 ?
请 尽 可 能 详 尽 地 对 比 下 Synchronized 和 ReentrantLock 的 异 同 。
ReentrantLock 是 如 何 实 现 可 重 入 性 的 ?
除 了 ReetrantLock, 你 还 接 触 过 JUC 中 的 哪 些 并 发 工 具 ?
请 谈 谈 ReadWriteLock 和 StampedLock。
如 何 让 Java 的 线 程 彼 此 同 步 ? 你 了 解 过 哪 些 同 步 器 ? 请 分 别介 绍 下 。
CyclicBarrier 和 CountDownLatch 看 起 来 很 相 似 , 请 对 比下 呢 ?
Java 中 的 线 程 池 是 如 何 实 现 的 ?
创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?
线 程 池 中 的 线 程 是 怎 么 创 建 的 ? 是 一 开 始 就 随 着 线 程 池 的 启 动创 建 好 的 吗 ?
JAVA 并发:答案
JAVA 并发:答案
第二部分 Spring 相关
1.1 Spring
什么是 Spring 框架?Spring 框架有哪些主要模块?
使用 Spring 框架能带来哪些好处?
Spring 框架中有哪些不同类型的事件?
Spring 框架中都用到了哪些设计模式?
什么是控制反转(IOC)?
请解释下 Spring 框架中的 IoC ?
BeanFactory 和 和 ApplicationContext 有什么区别?
Spring 有几种配置方式?
如何用基于 XML 配置的方式配置 Spring ?
如何用基于 Java 配置的方式配置 Spring ?
怎样用注解的方式配置 Spring ?
请解释 Spring Bean 的生命周期?
Spring Bean 的作用域之间有什么区别?
什么是 Spring inner beans ?
Spring 框架中的单例 Beans 是线程安全的么?
请举例说明如何在 Spring 中注入一个 Java Collection ?
如何向 Spring Bean 中注入一个 Java.util.Properties ?
请解释 Spring Bean 的自动装配?
请解释自动装配模式的区别?
如何开启基于注解的自动装配
请举例解释 @Required 注解?
请举例解释 @Autowired 注解?
请举例说明 @Qualifier 注解?
构造方法注入和设值注入有什么区别?
FileSystemResource 和 和 ClassPathResource 有何区别?
BeanFactory 和 FactoryBean
Spring IOC 的理解,其初始化过程?
BeanFactory 和 ApplicationContext?
Spring Bean 的生命周期,如何被管理的?Spring Bean 的加载过程是怎样的?
如果要你实现 Spring AOP,请问怎么实现?
如果要你实现 Spring IOC,你会注意哪些问题?
Spring 是如何管理事务的,事务管理机制?
Spring 的不同事务传播行为有哪些,干什么用的?
Spring 中用到了那些设计模式?
Spring MVC 的工作原理?
Spring 循环注入的原理?
Spring 如何保证 Controller 并发的安全?
Spring:答案
Spring:答案
2.2 Spring Boot
什么是 Spring Boot?
Spring Boot 有哪些优点?
什么是 JavaConfig?
如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
Spring Boot 中的监视器是什么?
如何在 Spring Boot 中禁用 Actuator 端点安全性?
如何在自定义端口上运行 Spring Boot 应用程序?
什么是 YAML?
什么是 Spring Profiles?
什么是 Spring Batch?
如何集成 Spring Boot 和 ActiveMQ?
如何使用 Spring Boot 实现分页和排序?
什么是 Swagger?你用 Spring Boot 实现了它吗?
什么是 FreeMarker 模板?
如何使用 Spring Boot 实现异常处理?
您使用了哪些 starter maven 依赖项?
什么是 CSRF 攻击?
什么是 WebSockets?
什么是 AOP?
什么是 Apache Kafka?
我们如何监视所有 Spring Boot 微服务?
Spring Boot:答案
Spring Boot:答案
2.3 Spring MVC
什么是 SpringMvc?
Spring MVC 的优点:
SpringMVC 工作原理?
SpringMVC 流程?
SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决?
如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?
SpingMvc 中的控制器的注解一般用那个,有没有别的注解可以替代?
@RequestMapping 注解用在类上面有什么作用?
怎么样把某个请求映射到特定的方法上面?
如果在拦截请求中,我想拦截 get 方式提交的方法,怎么配置?
怎么样在方法里面得到 Request,或者 Session?
我想在拦截的方法里面得到从前台传入的参数,怎么得到?
如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?
SpringMvc 中函数的返回值是什么?
SpringMVC 怎么样设定重定向和转发的?
SpringMvc 用什么对象从后台向前台传递数据的?
SpringMvc 中有个类把视图和数据都合并的一起的,叫什么?
怎么样把 ModelMap 里面的数据放入 Session 里面?
SpringMvc 怎么和 AJAX 相互调用的?
讲下 SpringMvc 的执行流程
SpringMvc 里面拦截器是怎么写的?
当一个方法向 AJAX 返回特殊对象,譬如 Object,List 等,需要做什么处理?
Spring MVC:答案
Spring MVC:答案
2.4 Spring Cloud
什么是 Spring Cloud?
使用 Spring Cloud 有什么优势?
服务注册和发现是什么意思?Spring Cloud 如何实现?
负载平衡的意义什么?
什么是 Hystrix?它如何实现容错?
什么是 Hystrix 断路器?我们需要它吗?
什么是 Spring Cloud Bus?我们需要它吗?
什么是 Netflix Feign?它的优点是什么?
Spring Cloud:答案
Spring Cloud:答案
第三部分 数据库相关
3.1 MySQL 高频面试知识点
事务四大特性(ACID)原子性、一致性、隔离性、持久性?
事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL 默认是哪个级别?
MySQL 常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?
MySQL 的 MyISAM 与 InnoDB 两种存储引擎在,事务、锁级别,各自的适用场景?
查询语句不同元素(where、jion、limit、group by、having 等等)执行先后顺序?
什么是临时表,临时表什么时候删除?
MySQL B+Tree 索引和 Hash 索引的区别?
sql 查询语句确定创建哪种类型的索引?如何优化查询?
聚集索引和非聚集索引区别?
有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?
非关系型数据库和关系型数据库区别,优势比较?
数据库三范式,根据某个场景设计数据表?
数据库的读写分离、主从复制,主从复制分析的 7 个问题?
使用 explain 优化 sql 和索引?
MySQL 慢查询怎么解决?
什么是 内连接、外连接、交叉连接、笛卡尔积等?
mysql 都有什么锁,死锁判定原理和具体场景,死锁怎么解决?
varchar 和 char 的使用场景?
mysql 高并发环境解决方案?
数据库崩溃时事务的恢复机制(REDO 日志和 UNDO 日志)?
MySQL 高频面试知识点:答案
MySQL 高频面试知识点:答案
3.2 MySQL 性能调优实践
为查询缓存优化你的查询
EXPLAIN 你的 SELECT 查询
当只要一行数据时使用 LIMIT 1
为搜索字段建索引
在 Join 表的时候使用相当类型的例,并将其索引
千万不要 ORDER BY RAND()
避免 SELECT *
永远为每张表设置一个 ID
使用 ENUM 而不是 VARCHAR
从 PROCEDURE ANALYSE() 取得建议
尽可能的使用 NOT NULL
Prepared Statements
无缓冲的查询
把 IP 地址存成 UNSIGNED INT
固定长度的表会更快
垂直分割
拆分大的 DELETE 或 INSERT 语句
越小的列会越快
选择正确的存储引擎
使用一个对象关系映射器(Object Relational Mapper)
小心“永久链接”
为查询缓存优化你的查询
EXPLAIN 你的 SELECT 查询
当只要一行数据时使用 LIMIT 1
为搜索字段建索引
在 Join 表的时候使用相当类型的例,并将其索引
千万不要 ORDER BY RAND()
避免 SELECT *
永远为每张表设置一个 ID
使用 ENUM 而不是 VARCHAR
从 PROCEDURE ANALYSE() 取得建议
尽可能的使用 NOT NULL
Prepared Statements
无缓冲的查询
把 IP 地址存成 UNSIGNED INT
固定长度的表会更快
垂直分割
拆分大的 DELETE 或 INSERT 语句
越小的列会越快
选择正确的存储引擎
使用一个对象关系映射器(Object Relational Mapper)
小心“永久链接”
MySQL 性能调优实践:答案
MySQL 性能调优实践:答案
第四部分 Redis
redis 简介
为什么要用 redis /为什么要用缓存(高性能、高并发)
为什么要用 redis 而不用 map/guava 做缓存?
redis 和 memcached 的区别
redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)
redis 设置过期时间
redis 内存淘汰机制(MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?)
redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
redis 事务
Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)
分布式环境下常见的应用场景(分布式锁、分布式自增 ID)
Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)
如何解决 Redis 的并发竞争 Key 问题
如何保证缓存与数据库双写时的数据一致性?
Redis:答案
Redis:答案
第五部分 分布式相关
Dubbo 的底层实现原理和机制
描述一个服务从发布到被消费的详细过程
分布式系统怎么做服务治理
接口的幂等性的概念
消息中间件如何解决消息丢失问题
Dubbo 的服务请求失败怎么处理
重连机制会不会造成错误
对分布式事务的理解
如何实现负载均衡,有哪些算法可以实现?
Zookeeper 的用途,选举的原理是什么?
数据的垂直拆分水平拆分。
zookeeper 原理和适用场景
zookeeper watch 机制
redis/zk 节点宕机如何处理
分布式集群下如何做到唯一序列号
如何做一个分布式锁
用过哪些 MQ,怎么用的,和其他 mq 比较有什么优缺点,MQ 的连接是线程安全的吗
MQ 系统的数据如何保证不丢失
列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题
zookeeper 的选举策略
第六部分 JVM
JVM 内存结构
HotSpot 虚拟机对象探秘
垃圾收集策略与算法
HotSpot 垃圾收集器
内存分配与回收策略
JVM 性能调优
类文件结构
类加载的时机
类加载的过程
类加载器
JVM:答案
JVM:答案
第七部分 算法
编程技巧
线性表
字符串
栈和队列
树
排序
查找
暴力枚举法
广度优先搜素
深度优先搜素
分治法
贪心法
动态规划
图
细节实现题
算法:答案
算法:答案
最后
有需要文中以上分享的全部知识点+答案的完整版的小伙伴们注意啦:添加小助理 vx:mxzFAFAFA 即可!!
最后给大家分享是一些大厂面试真题,有需要的还是添加小助理 vx:mxzFAFAFA 即可!!
版权声明: 本文为 InfoQ 作者【比伯】的原创文章。
原文链接:【http://xie.infoq.cn/article/fac943effd1994f8c786271a6】。文章转载请联系作者。
评论