4 月份利用空余时间收集整理了一份《java 高级工程师面试 1000 题》,初衷也很简单,就是希望在面试复习的时候能够帮助到大家,减轻大家的负担和节省时间。
前几天定了初稿,朋友圈分享了一波,收到了很多建议,因此重新改进,写了个二稿,重新分享。
废话不多说,《java 高级工程师面试 1000 题》目前涵盖了:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈的面试高频问题+详解的解答。
《java 高级工程师面试 1000 题》
编辑
MyBatis 面试专题(27 道)
编辑
ZooKeeper 面试专题(28 道)
编辑
Dubbo 面试专题(30 道)
编辑
Elasticsearch 面试题(24 道)
编辑
Memcached 面试题(23 题)
编辑
Redis 面试专题(40 题)
- 1、什么是 Redis?
- 2、Redis 的数据类型?
- 3、使用 Redis 有哪些好处?
- 4、Redis 相比 Memcached 有哪些优势?
- 5、Memcache 与 Redis 的区别都有哪些?
- 6、Redis 是单进程单线程的?
- 7、一个字符串类型的值能存储最大容量是多少?
- 8、Redis 的持久化机制是什么?各自的优缺点?
- 9、Redis 常见性能问题和解决方案:
- 10、redis 过期键的删除策略?
- 11、Redis 的回收策略(淘汰策略)?
- 12、为什么 edis 需要把所有数据放到内存中?
- 13、Redis 的同步机制了解么?
- 14、Pipeline 有什么好处,为什么要用 pipeline?
- 15、是否使用过 Redis 集群,集群的原理是什么?
- 16、Redis 集群方案什么情况下会导致整个集群不可用?
- 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
- 18、Jedis 与 Redisson 对比有什么优缺点?
- 19、Redis 如何设置密码及验证密码?
- 20、说说 Redis 哈希槽的概念?
- 21、Redis 集群的主从复制模型是怎样的?
- 22、Redis 集群会有写操作丢失吗?为什么?
- 23、Redis 集群之间是如何复制的?
- 24、Redis 集群最大节点个数是多少?
- 25、Redis 集群如何选择数据库?
- 26、怎么测试 Redis 的连通性?
- 27、怎么理解 Redis 事务?
- 28、Redis 事务相关的命令有哪几个?
- 29、Redis key 的过期时间和永久有效分别怎么设置?
- 30、Redis 如何做内存优化?
- 31、Redis 回收进程如何工作的?
- 32、都有哪些办法可以降低 Redis 的内存使用情况呢?
- 33、Redis 的内存用完了会发生什么?
- 34、一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set 他们最多能存放多少元素?
- 35、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?
- 36、Redis 最适合的场景?
- 37、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
- 38、如果有大量的 key 需要设置同一时间过期,一般需要注意什么?
- 39、使用过 Redis 做异步队列么,你是怎么用的?
- 40、使用过 Redis 分布式锁么,它是什么回事?
MySQL 面试专题(50 题)
- 1、MySQL 中有哪几种锁?
- 2、MySQL 中有哪些不同的表格?
- 3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
- 4、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
- 5、CHAR 和 VARCHAR 的区别?
- 6、主键和候选键有什么区别?
- 7、myisamchk 是用来做什么的?
- 8、如果一个表有一列定义为 TIMESTAMP,将发生什么?
- 9、你怎么看到为表格定义的所有索引?
- 10、LIKE 声明中的%和_是什么意思?
- 11、列对比运算符是什么?
- 12、BLOB 和 TEXT 有什么区别?
- 13、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?
- 14、MyISAM 表格将在哪里存储,并且还提供其存储格式?
- 15、MySQL 如何优化 DISTINCT?
- 16、如何显示前 50 行?
- 17、可以使用多少列创建索引?
- 18、NOW()和 CURRENT_DATE()有什么区别?
- 19、什么是非标准字符串类型?
- 20、什么是通用 SQL 函数?
- 21、MySQL 支持事务吗?
- 22、MySQL 里记录货币用什么字段类型好
- 23、MySQL 有关权限的表都有哪几个?
- 24、列的字符串类型可以是什么?
- 25、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
- 26、锁的优化策略
- 27、索引的底层实现原理和优化
- 28、什么情况下设置了索引但无法使用
- 29、实践中如何优化 MySQL
- 30、优化数据库的方法
- 31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
- 32、数据库中的事务是什么?
- 33、SQL 注入漏洞产生的原因?如何防止?
- 34、为表中得字段选择合适得数据类型
- 35、存储时期
- 36、对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题:(1、索引的目的是什么?2、索引对数据库系统的负面影响是什么?3、为数据表建立索引的原则有哪些?4、什么情况下不宜建立索引?)
- 39、SQL 语言包括哪几部分?每部分都有哪些操作关键字?
- 40、完整性约束包括哪些?
- 41、什么是锁?
- 42、什么叫视图?游标是什么?
- 43、什么是存储过程?用什么来调用?
- 44、如何通俗地理解三个范式?
- 45、什么是基本表?什么是视图?
- 46、试述视图的优点?
- 47、 NULL 是什么意思
- 48、主键、外键和索引的区别?
- 49、你可以用什么来确保表格里的字段只接受特定范围里的值?
- 50、说说对 SQL 语句优化有哪些方法?(选择几条)
Java 并发编程面试专题
并发编程(一)(75 题)
编辑
编辑
- 60、什么是阻塞式方法?
- 61、Java 中的 ReadWriteLock 是什么?
- 62、volatile 变量和 atomic 变量有什么不同?
- 63、可以直接调用 Thread 类的 run ()方法么?
- 64、如何让正在运行的线程暂停一段时间?
- 65、你对线程优先级的理解是什么?
- 66、什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )?
- 67、你如何确保 main()方法所在的线程是 Java 程序最后结束的线程?
- 68、线程之间是如何通信的?
- 69、为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里?
- 70、为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?
- 71、为什么 Thread 类的 sleep()和 yield ()方法是静态的?
- 72、如何确保线程安全?
- 73、同步方法和同步块,哪个是更好的选择?
- 74、如何创建守护线程?
- 75、什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?
并发编程(二)
编辑
编辑
Java 面试专题
Java 面试(一)(95 题)
编辑
编辑
编辑
Java 面试题(二)(133 道)
- 多线程、并发及线程的基础问题
编辑
- 有经验程序员的 Java 面试题
编辑
- 数据类型和 Java 基础面试问题
编辑
- JVM 底层 与 GC(Garbage Collection) 的面试问题
编辑
- Java 基本概念面试题
编辑
- Java 集合框架的面试题
编辑
- Java IO 和 NIO 的面试题
编辑
- Java 最佳实践的面试问题
编辑
- Date、Time 及 Calendar 的面试题
编辑
- 单元测试 JUnit 面试题
编辑
- 编程和代码相关的面试题
编辑
- 关于 OOP 和设计模式的面试题
编辑
- Java 面试中其他各式各样的问题
编辑
Spring 面试专题
- 一般问题
- 1、不同版本的 Spring Framework 有哪些主要功能?
- 2、什么是 Spring Framework?
- 3、列举 Spring Framework 的优点
- 4、 Spring Framework 有哪些不同的功能?
- 5、Spring Framework 中有多少个模块,它们分别是什么?
- 6、什么是 Spring 配置文件?
- 7、Spring 应用程序有哪些不同组件?
- 8、使用 Spring 有哪些方式?
- 依赖注入(Ioc)
- 1、什么是 Spring IOC 容器?
- 2、 什么是依赖注入?
- 3、可以通过多少种方式完成依赖注入?
- 4、 区分构造函数注入和 setter 注入。
- 5、 spring 中有多少种 IOC 容器?
- 6、 区分 BeanFactory 和 ApplicationContext。
- 7、 列举 IoC 的一些好处。
- 8、 Spring IoC 的实现机制
- Beans
- 1、什么是 spring bean?
- 2、spring 提供了哪些配置方式?
- 3、spring 支持集中 bean scope?
- 4、spring bean 容器的生命周期是什么样的?
- 5、什么是 spring 的内部 bean?
- 6、什么是 spring 装配?
- 7、自动装配有哪些方式?
- 8、自动装配有什么局限?
- 注解
- 1、什么是基于注解的容器配置?
- 2、如何在 spring 中启动注解装配?
- 3、@Component, @Controller, @Repository, @Service 有何区别?
- 4、@Required 注解有什么用?
- 5、@Autowired 注解有什么用?
- 6、@Qualifier 注解有什么用?
- 7、@RequestMapping 注解有什么用?
- 数据访问
- 1、spring DAO 有什么用?
- 2、列举 Spring DAO 抛出的异常。
- 3、spring JDBC API 中存在哪些类?
- 4、使用 Spring 访问 Hibernate 的方法有哪些?
- 5、列举 spring 支持的事务管理类型
- 6、spring 支持哪些 ORM 框架?
- AOP
- 1、什么是 AOP?
- 2、什么是 Aspect?
- 3、什么是切点(JoinPoint)
- 4、 什么是通知(Advice)?
- 5、有哪些类型的通知(Advice)?
- 6、 指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处
- 7、 AOP 有哪些实现方式
- 8、Spring AOP and AspectJ AOP 有什么区别?
- 9、如何理解 Spring 中的代理?
- 10、 什么是编织(Weaving)?
- MVC
- 1、Spring MVC 框架有什么用?
- 2、 描述一下 DispatcherServlet 的工作流程
- 3、介绍一下 WebApplicationContext
微服务面试专题(50 题)
编辑
- 30、PACT 在微服务架构中的用途是什么?
- 31、什么是 OAuth?
- 33、合同测试你懂什么?
- 34、什么是端到端微服务测试?
- 35、Container 在微服务中的用途是什么?
- 36、什么是微服务架构中的 DRY?
- 37、什么是消费者驱动的合同(CDC)?
- 38、Web,RESTful API 在微服务中的作用是什么?
- 39、您对微服务架构中的语义监控有何了解?
- 40、我们如何进行跨功能测试?
- 41、我们如何在测试中消除非决定论?
- 42、Mock 或 Stub 有什么区别?
- 43、您对 Mike Cohn 的测试金字塔了解多少?
- 44、Docker 的目的是什么?
- 45、什么是金丝雀释放?
- 46、什么是持续集成(CI)?
- 47、什么是持续监测?
- 48、架构师在微服务架构中的角色是什么?
- 49、我们可以用微服务创建状态机吗?
- 50、什么是微服务中的反应性扩展?
Linux 面试题(45 题)
编辑
- 30、通过什么命令指定命令提示符?
- 31、查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
- 32、通过什么命令查找执行命令?
- 33、怎么对命令进行取别名?
- 34、du 和 df 的定义,以及区别?
- 35、awk 详解。
- 36、当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?
- 37、如果一个 linux 新手想要知道当前系统支持的所有命令的列表,他需要怎么做?
- 38、如果你的助手想要打印出当前的目录栈,你会建议他怎么做?
- 39、你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
- 40、bash shell 中的 hash 命令有什么作用?
- 41、哪一个 bash 内置命令能够进行数学运算。
- 42、怎样一页一页地查看一个大文件的内容呢?
- 43、数据字典属于哪一个用户的?
- 44、怎样查看一个 linux 命令的概要与用法?假设你在/bin 目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?
- 45、使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?
Spring Boot 面试专题(22 道)
编辑
Spring Cloud 面试专题(8 道)
编辑
RabbitMQ 面试专题(12 道)
编辑
kafka 面试专题(18 道)
最后装个逼
这次收集整理的 《java 高级工程师面试 1000 题》,不说大话,你若能啃下,轻轻松松跳个槽涨个 10K 的难不成比登天还难?那是不可能滴,不管你是在准备面试也好,学习也好,这些笔记面试资料对你来说都是很有帮助的