Java面试题:Java+并发+Spring+MySQL+分布式+Redis+算法+JVM等,仅供参考

第一部分 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 序列化中如果有些字段不想进行序列化 怎么办?
获取用键盘输入常用的的两种方法?

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 中 的 线 程 池 是 如 何 实 现 的 ?
创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?
线 程 池 中 的 线 程 是 怎 么 创 建 的 ? 是 一 开 始 就 随 着 线 程 池 的 启 动创 建 好 的 吗 ?

第二部分 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 并发的安全?

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 微服务?

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 等,需要做什么处理?

2.4 Spring Cloud

什么是 Spring Cloud?
使用 Spring Cloud 有什么优势?
服务注册和发现是什么意思?Spring Cloud 如何实现?
负载平衡的意义什么?
什么是 Hystrix?它如何实现容错?
什么是 Hystrix 断路器?我们需要它吗?
什么是 Spring Cloud Bus?我们需要它吗?
什么是 Netflix Feign?它的优点是什么?

第三部分 数据库相关

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日志)?

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)
小心“永久链接”

第四部分 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 问题
如何保证缓存与数据库双写时的数据一致性?

第五部分 分布式相关

Dubbo的底层实现原理和机制
描述一个服务从发布到被消费的详细过程
分布式系统怎么做服务治理
接口的幂等性的概念
消息中间件如何解决消息丢失问题
Dubbo的服务请求失败怎么处理
重连机制会不会造成错误
对分布式事务的理解
如何实现负载均衡,有哪些算法可以实现?
Zookeeper的用途,选举的原理是什么?
数据的垂直拆分水平拆分。
zookeeper原理和适用场景
zookeeper watch机制
redis/zk节点宕机如何处理
分布式集群下如何做到唯一序列号
如何做一个分布式锁
用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗
MQ系统的数据如何保证不丢失
列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题
zookeeper的选举策略
第六部分 JVM

JVM 内存结构
HotSpot 虚拟机对象探秘
垃圾收集策略与算法
HotSpot 垃圾收集器
内存分配与回收策略
JVM 性能调优
类文件结构
类加载的时机
类加载的过程
类加载器

第七部分 算法

编程技巧
线性表
字符串
栈和队列

排序
查找
暴力枚举法
广度优先搜素
深度优先搜素
分治法
贪心法
动态规划

细节实现题

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集: JAVA核心知识点整理-282页 Java与哈希算法.docx Java中Lambda表达式的使用.docx JAVA多线程之线程间的通信方式.docx Java注解详解.docx Java线程池.docx JDK1.8Stream操作.docx JDK8有新特性.docx JVM堆三代.docx JVM的垃圾回收机制详解和调优.docx Spring源码分析之IoC.docx 关于线程和线程池的学习与使用.docx 深入理解JVM垃圾回收机制.docx 深入理解多线程实现的另一种方式Callable.docx 红黑树简介.docx 线程死锁及解决办法.docx 线程锁之重入锁.docx 线程间的通信.docx 虚拟机内存结构和垃圾回收docx.docx 锁分类的了解.docx 集合的扩容机制.png SpringMVC部分.docx Spring部分.docx 第一题.pdf 第七题 谈谈MySQL支持的事务隔离级别 (1).pdf 第三题 对比HashTable HashMap TreeMap有什么不同.pdf 第二题 Exception Error区别.pdf 第五题 如何保证集合是线程安全的.pdf 第八题 Java并发类库提供的线程池有哪几种 分别有什么特点.pdf 第六题 synchronized和ReentLock有什么区别.pdf 第四题 ArrayList LinkedList Vector的区别.pdf docker讲得最清楚.doc Dubbo是什么?能做什么?.doc java 基于TCP协议的Socket编程和通信.doc Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别.doc MySQL千万级的大表要怎么优化(读写分离、水平拆分、垂直拆分).doc redis缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级.doc RPC (Remote Procedure Call)即远程过程调用.doc Spring 面试问题 TOP 50(干货推荐收藏必备).doc springboot常见面试题.doc svn和git的区别及适用场景.doc ZooKeeper.doc 为什么分布式一定要有Redis.doc 分布式、高并发、多线程,到底有什么区别.doc 分布式事务.doc 四款消息队列大比拼.docx 多台web服务器之间共享session.docx 消息中间件Kafka与RabbitMQ.doc 电商项目描述注意点.doc 秒杀业务的流量削峰场景如何解决.doc 面试题:Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点.doc

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值