写在最后
为了这次面试,也收集了很多的面试题!
以下是部分面试题截图
2.3 MyBatis面试题汇总
================
-
1. 什么是 MyBatis?讲下 MyBatis 的缓存
-
2. Mybatis 是如何进行分页的?分页插件的原理是什么?
-
3. 简述 Mybatis 的插件运行原理,以及如何编写一个插件?
-
4. Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
-
5. #{}和${}的区别是什么?
-
6. 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
-
7. Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
-
8. MyBatis 与 Hibernate 有哪些不同?
-
9. MyBatis 的好处是什么?
-
10. 简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?
-
11. 什么是 MyBatis 的接口绑定,有什么好处?
-
12. 接口绑定有几种实现方式,分别是怎么实现的?
-
13. 什么情况下用注解绑定,什么情况下用 xml 绑定?
-
14. MyBatis 实现一对一有几种方式?具体怎么操作的?
-
15. Mybatis 能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别?
-
16. MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?
-
17. Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
-
18. Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
-
19. 当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定 pojo?
-
20. 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, Dao 的工作原理,是否可以重载?
-
21. Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?
-
22. Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
-
23. Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?
-
24. Mybatis 中如何指定使用哪一种 Executor 执行器?
-
25. Mybatis 执行批量插入,能返回数据库主键列表吗?
-
26. Mybatis 是否可以映射 Enum 枚举类?
-
27. 如何获取自动生成的(主)键值?
-
28. 在 mapper 中如何传递多个参数?
-
29. resultType resultMap 的区别?
-
30. 使用 MyBatis 的 mapper 接口调用时有哪些要求?
-
31. Mybatis 比 IBatis 比较大的几个改进是什么?
-
32. IBatis 和 MyBatis 在核心处理类分别叫什么?在细节上的不同有哪些?
MyBatis面试题-答案解析
第三部分:性能调优(JVM+MySQL+Tomcat)
===========================
第三部分:性能调优(JVM+MySQL+Tomcat)
3.1 JVM面试题汇总
============
-
1. Java 类加载过程?
-
2. 描述一下 JVM 加载 Class 文件的原理机制?
-
3. Java 内存分配
-
4. GC 是什么? 为什么要有 GC?
-
5. 简述 Java 垃圾回收机制
-
6. 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
-
7. 垃圾回收的优点和原理。并考虑 2 种回收机制
-
8. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
-
9. Java 中会存在内存泄漏吗,请简单描述
-
10. 深拷贝和浅拷贝
-
11. System.gc() 和 Runtime.gc() 会做什么事情?
-
12. finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?
-
13. 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
-
14. 什么是分布式垃圾回收(DGC)?它是如何工作的?
-
15. 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
-
16. 在 Java 中,对象什么时候可以被垃圾回收?
-
17. 简述 Java 内存分配与回收策略以及 Minor GC 和 MajorGC
-
18. JVM 的永久代中会发生垃圾回收么?
-
19. Java 中垃圾收集的方法有哪些?
-
20. 什么是类加载器,类加载器有哪些?
-
21. 类加载器双亲委派模型机制?
JVM面试题-答案解析
3.2 MySQL面试题汇总
==============
-
MySQL21个最佳性能优化实践
-
1. 为查询缓存优化你的查询
-
2. EXPLAIN你的SELECT查询
-
3. 当只要一行数据时使用LIMIT 1
-
4. 为搜索字段建索引
-
5. 在Join表的时候使用相当类型的例,并将其索引
-
6. 千万不要 ORDER BY RAND()
-
7. 避免 SELECT *
-
8. 永远为每张表设置一个 ID
-
9. 使用 ENUM 而不是 VARCHAR
-
10. 从 PROCEDURE ANALYSE() 取得建议
-
11. 尽可能的使用 NOT NULL
-
12. Prepared Statements
-
13. 无缓冲的查询
-
14. 把 IP 地址存成 UNSIGNED INT
-
15. 固定长度的表会更快
-
16. 垂直分割
-
17. 拆分大的 DELETE 或 INSERT 语句
-
18. 越小的列会越快
-
19. 选择正确的存储引擎
-
20. 使用一个对象关系映射器(Object Relational Mapper)
-
21. 小心“永久链接”
-
MySQL高频面试题汇总
-
1. 事务四大特性(ACID)原子性、一致性、隔离性、持久性?
-
2. 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?
-
3. MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?
-
4. MySQL的MyISAM与InnoDB两种存储引擎在,事务、锁级别,各自的适用场景?
-
5. 查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序?
-
6. 什么是临时表,临时表什么时候删除?
-
7. MySQL B+Tree索引和Hash索引的区别?
-
8. sql查询语句确定创建哪种类型的索引?如何优化查询?
-
9. 聚集索引和非聚集索引区别?
-
10. 有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?
-
11. 非关系型数据库和关系型数据库区别,优势比较?
-
12. 数据库三范式,根据某个场景设计数据表?
-
13. 数据库的读写分离、主从复制,主从复制分析的 7 个问题?
-
14. 使用explain优化sql和索引?
-
15. MySQL慢查询怎么解决?
-
16. 什么是 内连接、外连接、交叉连接、笛卡尔积等?
-
17. mysql都有什么锁,死锁判定原理和具体场景,死锁怎么解决?
-
18. varchar和char的使用场景?
-
19. mysql 高并发环境解决方案?
-
20. 数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)?
MySQL21个最佳性能优化实践
MySQL高频面试题-答案解析
3.3 Tomcat面试题汇总
===============
-
1. 你怎样给 tomcat 去调优?
-
2. 如何加大 tomcat 连接数
-
3. tomcat 中如何禁止列目录下的文件
-
4. 怎样加大 tomcat 的内存
-
5. Tomcat 有几种部署方式
-
6. Tomcat 的优化经验
-
7. Tomcat 的缺省端口是多少,怎么修改?
-
8. tomcat 有哪几种 Connector 运行模式( 优化) ?
-
9. Tomcat 有几种部署方式?
-
10. tomcat 容器是如何创建 servlet 类实例?用到了什么原理?
-
11. tomcat 如何优化?
-
12. 内存调优
-
13. 垃圾回收策略调优
-
14. 添加 JMS 远程监控
-
15. 专业点的分析工具有
-
16. 关于 Tomcat 的 的 session 数目
-
17. 监视 Tomcat 的内存使用情况
-
18. 打印类的加载情况及对象的回收情况
-
19. Tomcat 一个请求的完整过程
-
20. Tomcat 工作模式?
Tomcat面试题-答案解析
第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
============================================================
第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
4.1 分布式限流之ZK面试题汇总
=================
-
1. ZooKeeper 是什么?
-
2. ZooKeeper 提供了什么?
-
3. Zookeeper 文件系统
-
4. 四种类型的 znode
-
5. Zookeeper 通知机制
-
6. Zookeeper 做了什么?
-
7. zk 的命名服务(文件系统)
-
8. zk 的配置管理(文件系统、通知机制)
-
9. Zookeeper 集群管理(文件系统、通知机制)
-
10. Zookeeper 分布式锁(文件系统、通知机制)
-
11. 获取分布式锁的流程
-
12. Zookeeper 队列管理(文件系统、通知机制)
-
13. Zookeeper 数据复制
-
14. Zookeeper 工作原理
-
15. zookeeper 是如何保证事务的顺序一致性的?
-
16. Zookeeper 下 Server 工作状态
-
17. zookeeper 是如何选取主 leader 的?
-
18. 分布式通知和协调
-
19. 机器中为什么会有 leader?
-
20. zk 节点宕机如何处理?
-
21. Zookeeper 同步流程
-
22. zookeeper 负载均衡和 nginx 负载均衡区别
-
23. zookeeper watch 机制
分布式限流之ZK面试题-答案解析
4.2 分布式限流之Nginx面试题汇总
====================
-
1. 请解释一下什么是 Nginx?
-
2. 请列举 x Nginx 的一些特性。
-
3. 请列举 x Nginx 和 和 Apache 之间的不同点
-
4. 请解释 x Nginx 如何处理 P HTTP 请求。
-
5. 在 x Nginx 中,如何使用未定义的服务器名称来阻止处理请求?
-
6. 使用 “ 反向代理服务器 ”
-
7. 请列举 x Nginx 服务器的最佳用途。
-
8. 请解释 x Nginx 服务器上的 r Master 和 和 r Worker 进程分别是什么?
-
9. 请解释你如何通过不同于 0 80 的端口开启 Nginx?
-
10. 请解释是否有可能将 x Nginx 的错误替换为 2 502 错误?
-
11. 在 x Nginx 中,解释如何在 L URL 中保留双斜线? ?
-
12. 请解释 e ngx_http_upstream_module 的作用是什么?
-
13. 请解释什么是 K C10K 问题?
-
14. 请陈述 s stub_status 和 和 r sub_filter 指令的作用是什么?
-
15. 解释 x Nginx 是否支持将请求压缩到上游?
-
16. 解释如何在 x Nginx 中获得当前的时间?
-
17. 用 x Nginx 服务器解释s -s 的目的是什么?
-
18. 解释如何在 x Nginx 服务器上添加模块?
分布式限流之Nginx面试题-答案解析
4.3 分布式缓存之Redis面试题汇总
====================
-
1. redis 简介
-
2. 为什么要用 redis /为什么要用缓存(高性能、高并发)
-
3. 为什么要用 redis 而不用 map/guava 做缓存?
-
4. redis 和 memcached 的区别
-
5. redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)
-
6. redis 设置过期时间
-
7. redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
-
8. redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
-
9. redis 事务
-
10. Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)
-
11. 分布式环境下常见的应用场景(分布式锁、分布式自增 ID)
-
12. Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)
-
13. 如何解决 Redis 的并发竞争 Key 问题
-
14. 如何保证缓存与数据库双写时的数据一致性?
分布式缓存之Redis面试题-答案解析
4.4 分布式缓存之MongoDB面试题汇总
======================
-
1. 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用NoSQL 数据库?说一说 NoSQL 数据库的几个优点?
-
2. NoSQL 数据库有哪些类型?
-
3. MySQL 与 MongoDB 之间最基本的差别是什么?
-
4. 你怎么比较 MongoDB、CouchDB 及 CouchBase?
-
5. MongoDB 成为最好 NoSQL 数据库的原因是什么?
-
6. 32 位系统上有什么细微差别?
-
7. journal 回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?
-
8. 分析器在 MongoDB 中的作用是什么?
-
9. 名字空间(namespace)是什么?
-
10. 如果用户移除对象的属性,该属性是否从存储层中删除?
-
11. 能否使用日志特征进行安全备份?
-
12. 允许空值 null 吗?
-
13. 更新操作立刻 fsync 到磁盘?
-
14. 如何执行事务/加锁?
-
15. 为什么我的数据文件如此庞大?
-
16. 启用备份故障恢复需要多久?
-
17. 什么是 master 或 primary?
-
18. 什么是 secondary 或 slave?
-
19. 我必须调用 getLastError 来确保写操作生效了么?
-
20. 我应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB 环境?
-
21. 分片(sharding)和复制(replication)是怎样工作的?
-
22. 数据在什么时候才会扩展到多个分片(shard)里?
-
23. 当我试图更新一个正在被迁移的块(chunk)上的文档时会发生什么?
-
24. 如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?
-
25. 我可以把 moveChunk 目录里的旧文件删除吗?
-
26. 我怎么查看 Mongo 正在使用的链接?
-
27. 如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?
-
28. 如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?
-
29. 当更新一个正在被迁移的块(Chunk)上的文档时会发生什么?
-
30. MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗?
-
31. 如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?
-
32. MongoDB 支持存储过程吗?如果支持的话,怎么用?
-
33. 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?
分布式缓存之MongoDB面试题-答案解析
4.5 分布式缓存之memcached面试题汇总
============================
-
1. memcached 是怎么工作的?
-
2. memcached 最大的优势是什么?
-
3. memcached 和服务器的 local cache (比如 PHP 的 的 APC 、mmap 文件等)相比,有什么优缺点?
-
4. memcached 和 和 MySQL 的 的 query cache 相比,有什么优缺点?
-
5. memcached 的 的 cache 机制是怎样的?
-
6. memcached 如何实现冗余机制?
-
7. 我需要把 memcached 中的 item 批量导出导入,怎么办?
-
8. memcached 如何处理容错的?
-
9. 如何将 memcached 中 中 item 批量导入导出?
-
10. memcached 是如何做身份验证的?
-
11. memcached 的多线程是什么?如何使用它们?
-
12. memcached 能接受的 key 的最大长度是多少?
-
13. memcached 对 对 item 的过期时间有什么限制?
-
14. memcached 最大能存储多大的单个 item ?
-
15. 为什么单个 item 的大小被限制在 1M byte 之内?
分布式缓存之memcached面试题-答案解析
4.6 分布式通讯之MQ面试题汇总
=================
-
1. 什么是 ActiveMQ?
-
2. ActiveMQ 服务器宕机怎么办?
-
3. 丢消息怎么办?
-
4. 持久化消息非常慢
-
5. 消息的不均匀消费。
-
6. 死信队列?
-
7. ActiveMQ 中的消息重发时间间隔和重发次数吗?
-
8. RabbitMQ 中的 broker 是指什么?cluster 又是指什么?
-
9. 什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布的?
-
10. RAM node 和 disk node 的区别?
-
11. RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?
-
12. RabbitMQ 概念里的 channel、exchange 和 queue 这些东东是逻辑概念,还是对应着进程实体?这些东东分别起什么作用?
-
13. vhost 是什么?起什么作用?
-
14. 在单 node 系统和多 node 构成的 cluster 系统中声明 queue、exchange ,以及进行 binding 会有什么不同?
-
15. 客户端连接到 cluster 中的任意 node 上是否都能正常工作?
-
16. cluster 中 node 的失效会对 consumer 产生什么影响?若是在 cluster 中创建了mirrored queue ,这时 node 失效会对 consumer 产生什么影响?
-
17. 能够在地理上分开的不同数据中心使用 RabbitMQ cluster 么?
-
18. 为什么 heavy RPC 的使用场景下不建议采用 disk node ?
-
19. 向不存在的 exchange 发 publish 消息会发生什么?向不存在的 queue 执行consume 动作会发生什么?
-
20. routing_key 和 binding_key 的最大长度是多少?
-
21. RabbitMQ 允许发送的 message 最大可达多大?
-
22. 什么情况下 producer 不主动创建 queue 是安全的?
-
23. “dead letter”queue 的用途?
-
24. 为什么说保证 message 被可靠持久化的条件是 queue 和 exchange 具有durable 属性,同时 message 具有 persistent 属性才行?
-
25. 什么情况下会出现 blackholed 问题?
-
26. 如何防止出现 blackholed 问题?
-
27. Consumer Cancellation Notification 机制用于什么场景?
-
28. Basic.Reject 的用法是什么?
-
29. 为什么不应该对所有的 message 都使用持久化机制?
-
30. RabbitMQ 中的 cluster、mirrored queue,以及 warrens 机制分别用于解决什么问题?存在哪些问题?
分布式通讯之MQ面试题-答案解析
4.7 分布式通讯之Kafka面试题汇总
====================
-
1. Kafka的用途有哪些?使用场景如何?
-
2. Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么
-
3. Kafka中的HW、LEO、LSO、LW等分别代表什么?
-
4. Kafka中是怎么体现消息顺序性的?
-
5. Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?
-
6. Kafka生产者客户端的整体结构是什么样子的?
-
7. Kafka生产者客户端中使用了几个线程来处理?分别是什么?
-
8. Kafka的旧版Scala的消费者客户端的设计有什么缺陷?
-
9. “消费组中的消费者个数如果超过topic的分区,那么就会有消费者消费不到数据”这句话是否正确?如果正确,那么有没有什么hack的手段?
-
10. 有哪些情形会造成重复消费?
-
11. 哪些情景下会造成消息漏消费?
-
12. KafkaConsumer是非线程安全的,那么怎么样实现多线程消费?
-
13. 简述消费者与消费组之间的关系
-
14. 当你使用kafka-topics.sh创建(删除)了一个topic之后,Kafka背后会执行什么逻辑?
-
15. topic的分区数可不可以增加?如果可以怎么增加?如果不可以,那又是为什么?
-
16. topic的分区数可不可以减少?如果可以怎么减少?如果不可以,那又是为什么?
-
17. 创建topic时如何选择合适的分区数?
-
18. Kafka目前有哪些内部topic,它们都有什么特征?各自的作用又是什么?
-
19. 优先副本是什么?它有什么特殊的作用?
-
20. Kafka有哪几处地方有分区分配的概念?简述大致的过程及原理
-
21. 简述Kafka的日志目录结构
-
22. Kafka中有哪些索引文件?
-
23. 如果我指定了一个offset,Kafka怎么查找到对应的消息?
-
24. 如果我指定了一个timestamp,Kafka怎么查找到对应的消息?
-
25. 聊一聊你对Kafka的Log Retention的理解
-
26. 聊一聊你对Kafka的Log Compaction的理解
-
27. 聊一聊你对Kafka底层存储的理解
-
28. 聊一聊Kafka的延时操作的原理
-
29. 聊一聊Kafka控制器的作用
-
30. Kafka的旧版Scala的消费者客户端的设计有什么缺陷?
-
31. 消费再均衡的原理是什么?(提示:消费者协调器和消费组协调器)
-
32. Kafka中的幂等是怎么实现的?
-
33. Kafka中的事务是怎么实现的?
-
34. 失效副本是指什么?有哪些应对措施?
-
35. 多副本下,各个副本中的HW和LEO的演变过程
-
36. Kafka在可靠性方面做了哪些改进?(HW, LeaderEpoch)
-
37. 为什么Kafka不支持读写分离?
-
38. Kafka中的延迟队列怎么实现
-
39. Kafka中怎么实现死信队列和重试队列?
-
40. Kafka中怎么做消息审计?
-
41. Kafka中怎么做消息轨迹?
-
42. 怎么计算Lag?(注意read_uncommitted和read_committed状态下的不同)
-
43. Kafka有哪些指标需要着重关注?
-
44. Kafka的哪些设计让它有如此高的性能?
分布式通讯之Kafka面试题-答案解析
第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
======================================
第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
5.1 SpringBoot面试题汇总
===================
-
1. Spring Boot、Spring MVC 和 Spring 有什么区别?
-
2. 什么是自动配置?
-
3. 什么是 Spring Boot Stater ?
-
4. 你能否举一个例子来解释更多 Staters 的内容?
-
5. Spring Boot 还提供了其它的哪些 Starter Project Options?
-
6. Spring 是如何快速创建产品就绪应用程序的?
-
7. 创建一个 Spring Boot Project 的最简单的方法是什么?
-
8. Spring Initializr 是创建 Spring Boot Projects 的唯一方法吗?
-
9. 为什么我们需要 spring-boot-maven-plugin?
-
10. 如何使用 SpringBoot 自动重装我的应用程序?
-
11. 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?
-
12. 如何在 Spring Boot 中添加通用的 JS 代码?
-
13. 什么是 Spring Data?
-
14. 什么是 Spring Data REST?
-
15. path=”users”, collectionResourceRel=”users” 如何与 Spring Data Rest 一起使用?
-
16. 当 Spring Boot 应用程序作为 Java 应用程序运行时,后台会发生什么?
-
17. 我们能否在 spring-boot-starter-web 中用 jetty 代替 tomcat?
-
18. 如何使用 Spring Boot 生成一个 WAR 文件?
-
19. 如何使用 Spring Boot 部署到不同的服务器?
-
20. RequestMapping 和 GetMapping 的不同之处在哪里?
-
21. 为什么我们不建议在实际的应用程序中使用 Spring Data Rest?
-
22. 在 Spring Initializer 中,如何改变一个项目的包名字?
-
23. 可以配置 application.propertierde 的完整的属性列表在哪里可以找到?
-
24. JPA 和 Hibernate 有哪些区别?
-
25. 业务边界应该从哪一层开始?
-
26. 使用 Spring Boot 启动连接到内存数据库 H2 的 JPA 应用程序需要哪些依赖项?
-
27. 如何不通过任何配置来选择 Hibernate 作为 JPA 的默认实现?
-
28. 指定的数据库连接信息在哪里?它是如何知道自动连接至 H2 的?
-
29. 我们如何连接一个像 MySQL 或者Orcale 一样的外部数据库?
-
30. Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?
-
31. 如果 H2 不在类路径里面,会出现上面情况?
-
32. 你能否举一个以 ReadOnly 为事务管理的例子?
-
33. 发布 Spring Boot 用户应用程序自定义配置的最好方法是什么?
-
34. 配置文件的需求是什么?
-
35. 如何使用配置文件通过 Spring Boot 配置特定环境的配置?
SpringBoot面试题-答案解析
5.2 SpringCloud面试题汇总
====================
-
1. 什么是 Spring Cloud?
-
2. 使用 Spring Cloud 有什么优势?
-
3. 服务注册和发现是什么意思?Spring Cloud 如何实现?
-
4. 负载平衡的意义什么?
-
5. 什么是 Hystrix?它如何实现容错?
-
6. 什么是 Hystrix 断路器?我们需要它吗?
-
7. 什么是 Spring Cloud Bus?我们需要它吗?
-
8. 什么是 Netflix Feign?它的优点是什么?
SpringCloud面试题-答案解析
5.3 Dubbo面试题汇总
==============
-
1. Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
-
2. Dubbo 超时时间怎样设置?
-
3. Dubbo 有些哪些注册中心?
-
4. Dubbo 集群的负载均衡有哪些策略
-
5. Dubbo 是什么?
-
6. Dubbo 的主要应用场景?
-
7. Dubbo 的核心功能?
-
8. Dubbo 的核心组件?
-
9. Dubbo 服务注册与发现的流程?
-
10. Dubbo 的架构设计?
-
11. Dubbo 的服务调用流程?
-
12. Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
-
13. Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?
-
14. Dubbo 与 Spring 的关系?
-
15. Dubbo 使用的是什么通信框架?
-
16. Dubbo 集群提供了哪些负载均衡策略?
-
17. Dubbo 的集群容错方案有哪些?
-
18. Dubbo 和 Spring Cloud 的区别?
-
19. Dubbo 在安全机制方面是如何解决?
-
20. Dubbo 中 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
-
21. dubbo 服务负载均衡策略?
-
22. Dubbo 在安全机制方面是如何解决的?
-
23. dubbo 连接注册中心和直连的区别?
-
24. dubbo 服务集群配置(集群容错模式)?
-
25. dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多?
-
26. dubbo 通信协议 dubbo 协议为什么不能传大包?
-
27. dubbo 通信协议 dubbo 协议适用范围和适用场景?
Dubbo面试题-答案解析
Dubbo面试题-答案解析
第六部分:其他:并发编程+设计模式+数据结构与算法+网络
============================
第六部分:其他:并发编程+设计模式+数据结构与算法+网络
6.1 并发编程面试题汇总
=============
-
1. Java中守护线程和本地线程区别
-
2. 线程与进程的区别
-
3. 什么是多线程中的上下文切换
-
4. 死锁与活锁的区别,死锁与饥饿的区别
-
5. Java中用到的线程调度算法是什么
-
6. 什么是线程组,为什么在Java中不推荐使用
-
7. 为什么使用Executor框架
-
8. 在Java中Executor和Executors的区别
-
9. 什么是原子操作,在Java Concurrency API中有哪些原子类(atomic classes)
-
10. Java Concurrency API中的Lock接口(Lock interface)是什么,对比同步它有什么优势
-
11. 什么是Executors框架
-
12. 什么是阻塞队列,阻塞队列的实现原理是什么,如何使用阻塞队列来实现生产者
-
13. 什么是Callable和Future
-
14. 什么是FutureTask,使用ExecutorService启动任务
-
15. 什么是并发容器的实现
-
16. 多线程同步和互斥有几种实现方法,都是什么
-
17. 什么是竞争条件?你怎样发现和解决竞争
-
18. 如何使用thread dump,如何分析Thread dump
-
19. 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法
-
20. Java中你怎样唤醒一个阻塞的线程
-
21. 在Java中CycliBarriar和CountdownLatch有什么区别
-
22. 什么是不可变对象,它对写并发应用有什么帮助
-
23. Java中用到的线程调度算法是什么
-
24. 什么是线程组,为什么在Java中不推荐使用
-
25. 为什么使用Executor框架比使用应用创建和管理线程好
-
26. Java中有几种方法可以实现一个线程
-
27. 如何停止一个正在运行的线程
-
28. notify()和notifyAll()有什么区别
-
29. 什么是Daemon线程,它有什么意义
-
30. Java如何实现多线程之间的通讯和协作
-
31. 什么是可重入锁(ReentrantLock)
-
32. 当一个线程进入某个对象的一个synchronized的实例方法后,其它线程是否可进入此对象的其它方法
-
33. 乐观锁和悲观锁的理解及如何实现,有哪些实现方式
-
34. SynchronizedMap和ConcurrentHashMap有什么区别
-
35. CopyOnWriteArrayList可以用于什么应用场景
-
36. 什么叫线程安全,servlet是线程安全吗
-
37. volatile有什么用,能否用一句话说明下volatile的应用场景
-
38. 为什么代码会重排序
-
39. 在java中wait和sleep方法的不同
-
40. 一个线程运行时发生异常会怎样
-
41. 如何在两个线程间共享数据
-
42. Java中notify 和 notifyAll有什么区别
-
43. 为什么wait, notify 和 notifyAll这些方法不在thread类里面
-
44. 什么是ThreadLocal变量
-
45. Java中interrupted 和 isInterrupted方法的区别
-
46. 为什么wait和notify方法要在同步块中调用
-
47. 为什么你应该在循环中检查等待条件
-
48. Java中的同步集合与并发集合有什么区别
-
49. 什么是线程池,为什么要使用它
-
50. 怎么检测一个线程是否拥有锁
-
51. 你如何在Java中获取线程堆栈
-
52. JVM中哪个参数是用来控制线程的栈堆栈小的
-
53. Thread类中的yield方法有什么作用
-
54. Java中ConcurrentHashMap的并发度是什么
-
55. Java中Semaphore是什么
-
56. Java线程池中submit() 和 execute()方法有什么区别
-
57. 什么是阻塞式方法
-
58. Java中的ReadWriteLock是什么、
-
59. volatile 变量和 atomic 变量有什么不同
-
60. 可以直接调用Thread类的run ()方法么
-
61. 如何让正在运行的线程暂停一段时间
-
62. 你对线程优先级的理解是什么
-
63. 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )
-
64. 你如何确保main()方法所在的线程是Java 程序最后结束的线程
-
65. 线程之间是如何通信的
-
66. 为什么线程通信的方法wait(), notify()和notifyAll()被定义在Object 类里
-
67. 为什么wait(), notify()和notifyAll ()必须在同步方法或者同步块中被调用
-
68. 为什么Thread类的sleep()和yield ()方法是静态的
-
69. 如何确保线程安全
-
70. 同步方法和同步块,哪个是更好的选择
-
71. 如何创建守护线程
-
72. 什么是Java Timer 类,如何创建一个有特定时间间隔的任务
6.2 23种设计模式知识要点汇总
=================
-
1.单例模式(Singleton Pattern)
-
2.工厂模式
-
3.抽象工厂模式(Abstract Factory Pattern)
-
4.模板方法模式(Template Method Pattern)
-
5.建造者模式(Builder Pattern)
-
6.代理模式(Proxy Pattern)
-
7.原型模式(Prototype Pattern)
-
8.中介者模式
-
9.命令模式
-
10.责任链模式
-
11.装饰模式(Decorator Pattern)
-
12.策略模式(Strategy Pattern)
-
13.适配器模式(Adapter Pattern)
-
14.迭代器模式(Iterator Pattern)
-
15.组合模式((Composite Pattern))
-
16.观察者模式(Observer Pattern)
-
17.门面模式(Facade Pattern)
-
18.备忘录模式(Memento Pattern)
-
19.访问者模式(Visitor Pattern)
-
20.状态模式(复杂)
-
21.解释器模式(Interpreter Pattern)(少用)
-
22.享元模式(Flyweight Pattern)
-
23.桥梁模式(Bridge Pattern)
23种设计模式知识要点-解析
6.3 数据结构与算法面试题汇总
================
-
1. 设计一个有getMin功能的栈
-
2. 由两个栈组成的队列
-
3. 如何仅用递归函数和栈操作逆序一个栈
-
4. 猫狗队列
-
5. 用一个栈实现另一个栈的排序
-
6. 用栈来求解汉诺塔问题
-
7. 生成窗口最大值数组
-
8. 构造数组的MaxTree
-
9. 求最大子矩阵的大小
-
10. 最大值减去最小值小于或等于num的子数组数量
-
11. 打印两个有序链表的公共部分
-
12. 在单链表和双链表中删除倒数第K 个节点
-
13. 删除链表的中间节点和a/b 处的节点
-
14. 反转单向和双向链表
-
15. 反转部分单向链表
-
16. 环形单链表的约瑟夫问题
-
17. 判断一个链表是否为回文结构
-
18. 将单向链表按某值划分成左边小、中间相等、右边大的形式
-
19. 复制含有随机指针节点的链表
-
20. 两个单链表生成相加链表
-
21. 两个单链表相交的一系列问题
-
22. 将单链表的每K个节点之间逆序
-
22. 删除无序单链表中值重复出现的节点
-
24. 在单链表中删除指定值的节点
-
25. 将搜索二叉树转换成双向链表
-
26. 单链表的选择排序
-
27. 一种怪异的节点删除方式
-
28. 向有序的环形单链表中插入新节点
-
29. 合并两个有序的单链表
-
30. 按照左右半区的方式重新组合单链表
-
31. 分别用递归和非递归方式实现二叉树先序、中序和后序遍历
-
32. 打印二叉树的边界节点
-
33. 如何较为直观地打印二叉树
-
34. 二叉树的序列化和反序列化
-
35. 遍历二叉树的神级方法
-
36. 在二叉树中找到累加和为指定值的最长路径长度
-
37. 找到二叉树中的最大搜索二叉子树
-
38. 找到二叉树中符合搜索二叉树条件的最大拓扑结构
-
39. 二叉树的按层打印与ZigZag打印
-
40. 调整搜索二叉树中两个错误的节点
-
41. 判断t1 树是否包含t2 树全部的拓扑结构
-
42. 判断t1 树中是否有与t2 树拓扑结构完全相同的子树
-
43. 判断二叉树是否为平衡二叉树
-
44. 根据后序数组重建搜索二叉树
-
45. 判断一棵二叉树是否为搜索二叉树和完全二叉树
-
46. 通过有序数组生成平衡搜索二叉树
-
47. 在二叉树中找到一个节点的后继节点
-
48. 在二叉树中找到两个节点的最近公共祖先
-
49. Tarjan算法与并查集解决二叉树节点间最近公共祖先的批量查询问题
-
50. 二叉树节点间的最大距离问题
-
先序、中序和后序数组两两结合重构二叉树
-
通过先序和中序数组生成后序数组
-
统计和生成所有不同的二叉树
-
统计完全二叉树的节点数
-
斐波那契系列问题的递归和动态规划
-
矩阵的最小路径和
-
换钱的最少货币数
-
换钱的方法数
-
最长递增子序列
-
汉诺塔问题
-
最长公共子序列问题
-
最长公共子串问题
-
最小编辑代价
-
字符串的交错组成
-
龙与地下城游戏问题
-
数字字符串转换为字母组合的种数
-
表达式得到期望结果的组成种数
-
排成一条线的纸牌博弈问题
-
跳跃游戏
-
数组中的最长连续序列
-
N皇后问题
-
判断两个字符串是否互为变形词
-
字符串中数字子串的求和
-
去掉字符串中连续出现k 个0 的子串
-
判断两个字符串是否互为旋转词
-
将整数字符串转成整数值
-
替换字符串中连续出现的指定字符串
-
字符串的统计字符串
-
判断字符数组中是否所有的字符都只出现过一次
-
在有序但含有空的数组中查找字符串
-
字符串的调整与替换
-
翻转字符串
-
数组中两个字符串的最小距离
-
添加最少字符使字符串整体都是回文字符串
-
括号字符串的有效性和最长有效长度
-
公式字符串求值
-
0 左边必有1 的二进制字符串数量
-
拼接所有字符串产生字典顺序最小的大写字符串
-
找到字符串的最长无重复字符子串
-
找到被指的新类型字符
-
最小包含子串的长度
-
回文最少分割数
-
字符串匹配问题
-
字典树(前缀树)的实现
-
认识布隆过滤器
-
只用2 GB 内存在20 亿个整数中找到出现次数最多的数 .
-
40 亿个非负整数中找到没出现的数
-
找到100 亿个URL 中重复的URL 以及搜索词汇的top K 问题
-
40 亿个非负整数中找到出现两次的数和所有数的中位数
-
一致性哈希算法的基本原理
-
不用额外变量交换两个整数的值
-
不用任何比较判断找出两个数中较大的数
-
只用位运算不用算术运算实现整数的加减乘除运算
-
整数的二进制表达中有多少个1
-
在其他数都出现偶数次的数组中找到出现奇数次的数
-
在其他数都出现k 次的数组中找到只出现一次的数
-
转圈打印矩阵
-
将正方形矩阵顺时针转动90 °
-
找到无序数组中最小的k 个数
-
需要排序的最短子数组长度
-
在数组中找到出现次数大于N/K 的数
-
在行列都排好序的矩阵中找数
-
最长的可整合子数组的长度
-
不重复打印排序数组中相加和为给定值的所有二元组和三元组
-
未排序正数数组中累加和为给定值的最长子数组长度
-
未排序数组中累加和为给定值的最长子数组系列问题
-
未排序数组中累加和小于或等于给定值的最长子数组长度
-
计算数组的小和
-
自然数数组的排序
-
奇数下标都是奇数或者偶数下标都是偶数
-
子数组的最大累加和问题
-
子矩阵的最大累加和问题
-
在数组中找到一个局部最小的位置
-
数组中子数组的最大累乘积
-
打印N 个数组整体最大的Top K
-
边界都是1 的最大正方形大小
-
不包含本位置值的累乘数组
-
数组的partition 调整
-
求最短通路值
-
数组中未出现的最小正整数
-
数组排序之后相邻数的最大差值
-
从5 随机到7 随机及其扩展
-
一行代码求两个数的最大公约数
-
有关阶乘的两个问题
-
判断一个点是否在矩形内部
-
判断一个点是否在三角形内部
-
折纸问题
-
蓄水池算法
-
设计有setAll功能的哈希表
-
最大的leftMax与rightMax之差的绝对值
-
设计可以变更的缓存结构
-
设计RandomPool结构
-
调整[0 ,x)区间上的数出现的概率
-
路径数组变为统计数组
-
正数数组的最小不可组成和
面试准备+复习分享:
为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦
到被指的新类型字符
-
最小包含子串的长度
-
回文最少分割数
-
字符串匹配问题
-
字典树(前缀树)的实现
-
认识布隆过滤器
-
只用2 GB 内存在20 亿个整数中找到出现次数最多的数 .
-
40 亿个非负整数中找到没出现的数
-
找到100 亿个URL 中重复的URL 以及搜索词汇的top K 问题
-
40 亿个非负整数中找到出现两次的数和所有数的中位数
-
一致性哈希算法的基本原理
-
不用额外变量交换两个整数的值
-
不用任何比较判断找出两个数中较大的数
-
只用位运算不用算术运算实现整数的加减乘除运算
-
整数的二进制表达中有多少个1
-
在其他数都出现偶数次的数组中找到出现奇数次的数
-
在其他数都出现k 次的数组中找到只出现一次的数
-
转圈打印矩阵
-
将正方形矩阵顺时针转动90 °
-
找到无序数组中最小的k 个数
-
需要排序的最短子数组长度
-
在数组中找到出现次数大于N/K 的数
-
在行列都排好序的矩阵中找数
-
最长的可整合子数组的长度
-
不重复打印排序数组中相加和为给定值的所有二元组和三元组
-
未排序正数数组中累加和为给定值的最长子数组长度
-
未排序数组中累加和为给定值的最长子数组系列问题
-
未排序数组中累加和小于或等于给定值的最长子数组长度
-
计算数组的小和
-
自然数数组的排序
-
奇数下标都是奇数或者偶数下标都是偶数
-
子数组的最大累加和问题
-
子矩阵的最大累加和问题
-
在数组中找到一个局部最小的位置
-
数组中子数组的最大累乘积
-
打印N 个数组整体最大的Top K
-
边界都是1 的最大正方形大小
-
不包含本位置值的累乘数组
-
数组的partition 调整
-
求最短通路值
-
数组中未出现的最小正整数
-
数组排序之后相邻数的最大差值
-
从5 随机到7 随机及其扩展
-
一行代码求两个数的最大公约数
-
有关阶乘的两个问题
-
判断一个点是否在矩形内部
-
判断一个点是否在三角形内部
-
折纸问题
-
蓄水池算法
-
设计有setAll功能的哈希表
-
最大的leftMax与rightMax之差的绝对值
-
设计可以变更的缓存结构
-
设计RandomPool结构
-
调整[0 ,x)区间上的数出现的概率
-
路径数组变为统计数组
-
正数数组的最小不可组成和
面试准备+复习分享:
为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦
[外链图片转存中…(img-WxvYA0cQ-1715778137463)]