内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、
Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、
Linux 等技术栈
目录
互联网 Java 工程师面试题..........................................................................................1
........................................................................................................................................1
MyBatis 面试题........................................................................................................ 33
1、什么是 Mybatis?............................................................................... 33
2、Mybaits 的优点:............................................................................... 33
3、MyBatis 框架的缺点:....................................................................... 34
4、MyBatis 框架适用场合:................................................................... 34
5、MyBatis 与 Hibernate 有哪些不同?.............................................. 35
第 2 页 共 485 页
6、#{}和${}的区别是什么?.....................................................................35
7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?........... 35
8、 模糊查询 like 语句该怎么写?...........................................................36
9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,
这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,
方法能重载吗?..........................................................................................37
10、Mybatis 是如何进行分页的?分页插件的原理是什么?.............38
11、Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有
哪些映射形式?..........................................................................................38
12、如何执行批量插入?...........................................................................39
13、如何获取自动生成的(主)键值?........................................................ 40
14、在 mapper 中如何传递多个参数?.................................................. 40
15、Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?.......42
16、Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之
外,还有哪些标签?..................................................................................42
18、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别
在哪里?......................................................................................................43
19、 一对一、一对多的关联查询 ?.....................................................43
20、MyBatis 实现一对一有几种方式?具体怎么操作的?...................45
21、MyBatis 实现一对多有几种方式,怎么操作的?............................45
22、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?46
23、Mybatis 的一级、二级缓存:............................................................46
24、什么是 MyBatis 的接口绑定?有哪些实现方式?........................47
25、使用 MyBatis 的 mapper 接口调用时有哪些要求?...................47
26、Mapper 编写有哪几种方式?.........................................................47
27、简述 Mybatis 的插件运行原理,以及如何编写一个插件。........50
ZooKeeper 面试题...................................................................................................50
1. ZooKeeper 面试题?.......................................................................... 50
2. ZooKeeper 提供了什么?................................................................... 51
3. Zookeeper 文件系统............................................................................51
4. ZAB 协议?............................................................................................ 52
第 3 页 共 485 页
5. 四种类型的数据节点 Znode..............................................................52
6. Zookeeper Watcher 机制 -- 数据变更通知..................................53
7. 客户端注册 Watcher 实现.................................................................. 54
8. 服务端处理 Watcher 实现.................................................................. 55
9. 客户端回调 Watcher........................................................................... 55
10. ACL 权限控制机制.............................................................................. 56
11. Chroot 特性.........................................................................................57
12. 会话管理..............................................................................................57
13. 服务器角色..........................................................................................58
14. Zookeeper 下 Server 工作状态..................................................... 58
15. 数据同步..............................................................................................59
16. zookeeper 是如何保证事务的顺序一致性的?..............................61
17. 分布式集群中为什么会有 Master?................................................61
18. zk 节点宕机如何处理?......................................................................61
19. zookeeper 负载均衡和 nginx 负载均衡区别................................. 62
20. Zookeeper 有哪几种几种部署模式?............................................. 62
21. 集群最少要几台机器,集群规则是怎样的?....................................62
22. 集群支持动态添加机器吗?..............................................................62
23. Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永
久的?............................................................................................................63
24. Zookeeper 的 java 客户端都有哪些?............................................63
25. chubby 是什么,和 zookeeper 比你怎么看?..............................64
26. 说几个 zookeeper 常用的命令。....................................................64
27. ZAB 和 Paxos 算法的联系与区别?.................................................64
28. Zookeeper 的典型应用场景............................................................. 64
Dubbo 面试题.......................................................................................................... 68
1、为什么要用 Dubbo?......................................................................... 68
2、Dubbo 的整体架构设计有哪些分层?.............................................. 69
3、默认使用的是什么通信框架,还有别的选择吗?............................. 70
4、服务调用是阻塞的吗?....................................................................... 70
5、一般使用什么注册中心?还有别的选择吗?................................... 70
第 4 页 共 485 页
6、默认使用什么序列化框架,你知道的还有哪些?........................... 71
7、服务提供者能实现失效踢出是什么原理?....................................... 71
8、服务上线怎么不影响旧版本?........................................................... 71
9、如何解决服务调用链过长的问题?................................................... 71
10、说说核心的配置有哪些?.................................................................71
11、Dubbo 推荐用什么协议?..............................................................72
12、同一个服务多个注册的情况下可以直连某一个服务吗?.............72
13、画一画服务注册与发现的流程图?.................................................73
14、Dubbo 集群容错有几种方案?......................................................73
15、Dubbo 服务降级,失败重试怎么做?..........................................74
16、Dubbo 使用过程中都遇到了些什么问题?..................................74
17、Dubbo Monitor 实现原理?......................................................... 74
18、Dubbo 用到哪些设计模式?..........................................................75
19、Dubbo 配置文件是如何加载到 Spring 中的?........................... 76
20、Dubbo SPI 和 Java SPI 区别?................................................... 77
21、Dubbo 支持分布式事务吗?..........................................................77
22、Dubbo 可以对结果进行缓存吗?..................................................77
23、服务上线怎么兼容旧版本?.............................................................78
24、Dubbo 必须依赖的包有哪些?.......................................................78
25、Dubbo telnet 命令能做什么?......................................................78
26、Dubbo 支持服务降级吗?..............................................................79
27、Dubbo 如何优雅停机?..................................................................79
28、Dubbo 和 Dubbox 之间的区别?...............................................79
29、Dubbo 和 Spring Cloud 的区别?.............................................80
30、你还了解别的分布式框架吗?.........................................................81
Elasticsearch 面试题............................................................................................... 81
1、elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据
大小,分片有多少,以及一些调优手段 。............................................81
2、elasticsearch 的倒排索引是什么......................................................83
3、elasticsearch 索引数据多了怎么办,如何调优,部署.................84
4、elasticsearch 是如何实现 master 选举的.......................................85
第 5 页 共 485 页
5、详细描述一下 Elasticsearch 索引文档的过程................................. 86
6、详细描述一下 Elasticsearch 搜索的过程?..................................... 87
7、Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法..........88
8、lucence 内部结构是什么?................................................................88
9、Elasticsearch 是如何实现 Master 选举的?...................................89
10、Elasticsearch 中的节点(比如共 20 个),其中的 10 个选了一个
master,另外 10 个选了另一个 master,怎么办?............................90
11、客户端在和集群连接时,如何选择特定的节点执行请求的?.....90
12、详细描述一下 Elasticsearch 索引文档的过程。...........................90
13、详细描述一下 Elasticsearch 更新和删除文档的过程。...............92
14、详细描述一下 Elasticsearch 搜索的过程。...................................92
15、在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?
......................................................................................................................94
16、Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?....94
17、对于 GC 方面,在使用 Elasticsearch 时要注意什么?............... 96
18、Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?....97
19、在并发情况下,Elasticsearch 如果保证读写一致?....................97
20、如何监控 Elasticsearch 集群状态?...............................................97
21、介绍下你们电商搜索的整体技术架构。.........................................98
22、介绍一下你们的个性化搜索方案?.................................................98
23、是否了解字典树?.............................................................................98
24、拼写纠错是如何实现的?...............................................................100
Memcached 面试题.............................................................................................. 102
1、Memcached 是什么,有什么作用?.............................................102
2、Memcached 服务分布式集群如何实现?.....................................104
3、Memcached 服务特点及工作原理是什么?.................................105
4、简述 Memcached 内存管理机制原理?........................................105
5、memcached 是怎么工作的?.........................................................107
6、memcached 最大的优势是什么?.................................................107
7、memcached 和 MySQL 的 query................................................. 107
8、memcached 和服务器的 local cache(比如 PHP 的 APC、mmap
第 6 页 共 485 页
文件等)相比,有什么优缺点?............................................................108
9、memcached 的 cache 机制是怎样的?........................................109
10、memcached 如何实现冗余机制?...............................................109
11、memcached 如何处理容错的?...................................................110
12、如何将 memcached 中 item 批量导入导出?...........................110
13、如果缓存数据在导出导入之间过期了,您又怎么处理这些数据呢?
....................................................................................................................111
14、memcached 是如何做身份验证的?...........................................111
15、memcached 的多线程是什么?如何使用它们?.......................112
16、memcached 能接受的 key 的最大长度是多少?......................112
17、memcached 最大能存储多大的单个 item?.............................113
18、memcached 能够更有效地使用内存吗?...................................113
19、什么是二进制协议,我该关注吗?...............................................113
20、memcached 的内存分配器是如何工作的?为什么 不适用
malloc/free!?为何要使用 slabs?................................................... 114
21、memcached 是原子的吗?...........................................................114
22、如何实现集群中的 session 共享存储?.......................................115
23、memcached 与 redis 的区别?................................................... 116
Redis 面试题........................................................................................................... 118
1、什么是 Redis?....................................................................................118
2、Redis 的数据类型?..........................................................................119
3、使用 Redis 有哪些好处?.................................................................119
4、Redis 相比 Memcached 有哪些优势?........................................ 120
5、Memcache 与 Redis 的区别都有哪些?.......................................120
6、Redis 是单进程单线程的?..............................................................120
7、一个字符串类型的值能存储最大容量是多少?............................. 120
8、Redis 的持久化机制是什么?各自的优缺点?..............................121
9、Redis 常见性能问题和解决方案:..................................................122
10、redis 过期键的删除策略?.............................................................122
11、Redis 的回收策略(淘汰策略)?..................................................123
12、为什么 edis 需要把所有数据放到内存中?................................. 124
第 7 页 共 485 页
13、Redis 的同步机制了解么?........................................................... 124
14、Pipeline 有什么好处,为什么要用 pipeline?.......................... 124
15、是否使用过 Redis 集群,集群的原理是什么?.......................... 125
16、Redis 集群方案什么情况下会导致整个集群不可用?............... 125
17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?......... 125
18、Jedis 与 Redisson 对比有什么优缺点?..................................... 125
19、Redis 如何设置密码及验证密码?............................................... 126
20、说说 Redis 哈希槽的概念?.......................................................... 126
21、Redis 集群的主从复制模型是怎样的?....................................... 126
22、Redis 集群会有写操作丢失吗?为什么?................................... 126
23、Redis 集群之间是如何复制的?................................................... 126
24、Redis 集群最大节点个数是多少?............................................... 127
25、Redis 集群如何选择数据库?....................................................... 127
26、怎么测试 Redis 的连通性?.......................................................... 127
27、怎么理解 Redis 事务?.................................................................. 127
28、Redis 事务相关的命令有哪几个?............................................... 127
29、Redis key 的过期时间和永久有效分别怎么设置?....................128
30、Redis 如何做内存优化?............................................................... 128
31、Redis 回收进程如何工作的?....................................................... 128
32、都有哪些办法可以降低 Redis 的内存使用情况呢?.................. 128
33、Redis 的内存用完了会发生什么?............................................... 128
34、一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set
他们最多能存放多少元素?....................................................................129
35、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证
redis 中的数据都是热点数据?............................................................. 129
36、Redis 最适合的场景?................................................................... 130
37、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定
的已知的前缀开头的,如果将它们全部找出来?................................131
38、如果有大量的 key 需要设置同一时间过期,一般需要注意什么?132
39、使用过 Redis 做异步队列么,你是怎么用的?.......................... 132
40、使用过 Redis 分布式锁么,它是什么回事?.............................. 133
第 8 页 共 485 页
MySQL 面试题........................................................................................................133
1、MySQL 中有哪几种锁?...................................................................134
2、MySQL 中有哪些不同的表格?.......................................................134
3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别............... 134
4、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间
的区别?....................................................................................................136
5、CHAR 和 VARCHAR 的区别?........................................................136
6、主键和候选键有什么区别?............................................................. 136
7、myisamchk 是用来做什么的?.......................................................137
8、如果一个表有一列定义为 TIMESTAMP,将发生什么?.............137
9、你怎么看到为表格定义的所有索引?............................................. 137
10、LIKE 声明中的%和_是什么意思?................................................ 138
11、列对比运算符是什么?...................................................................138
12、BLOB 和 TEXT 有什么区别?........................................................ 138
13、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?138
14、MyISAM 表格将在哪里存储,并且还提供其存储格式?..........139
15、MySQL 如何优化 DISTINCT?.....................................................139
16、如何显示前 50 行?........................................................................ 139
17、可以使用多少列创建索引?...........................................................140
18、NOW()和 CURRENT_DATE()有什么区别?.................... 140
19、什么是非标准字符串类型?...........................................................140
20、什么是通用 SQL 函数?................................................................. 140
21、MySQL 支持事务吗?.................................................................... 141
22、MySQL 里记录货币用什么字段类型好........................................ 142
23、MySQL 有关权限的表都有哪几个?............................................ 142
24、列的字符串类型可以是什么?.......................................................142
25、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计
运维三年,怎么优化?...............................................................................143
26、锁的优化策略...................................................................................143
27、索引的底层实现原理和优化...........................................................144
28、什么情况下设置了索引但无法使用...............................................144
第 9 页 共 485 页
29、实践中如何优化 MySQL................................................................ 144
30、优化数据库的方法...........................................................................145
31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,
对数据库的性能有什么影响(从读写两方面)....................................146
32、数据库中的事务是什么?.................................................................146
33、SQL 注入漏洞产生的原因?如何防止?...................................... 147
34、为表中得字段选择合适得数据类型...............................................148
35、存储时期...........................................................................................148
36、对于关系型数据库而言,索引是相当重要的概念,请回答有关索
引的几个问题:........................................................................................149
37、解释 MySQL 外连接、内连接与自连接的区别........................... 150
38、Myql 中的事务回滚机制概述........................................................ 150
39、SQL 语言包括哪几部分?每部分都有哪些操作关键字?.......... 151
40、完整性约束包括哪些?...................................................................151
41、什么是锁?.......................................................................................152
42、什么叫视图?游标是什么?...........................................................152
43、什么是存储过程?用什么来调用?...............................................153
44、如何通俗地理解三个范式?...........................................................153
45、什么是基本表?什么是视图?.......................................................154
46、试述视图的优点?...........................................................................154
47、 NULL 是什么意思......................................................................... 154
48、主键、外键和索引的区别?...........................................................154
49、你可以用什么来确保表格里的字段只接受特定范围里的值?.....155
50、说说对 SQL 语句优化有哪些方法?(选择几条)..................... 156
Java 并发编程(一)............................................................................................. 156
1、在 java 中守护线程和本地线程区别?............................................156
2、线程与进程的区别?......................................................................... 157
3、什么是多线程中的上下文切换?..................................................... 157
4、死锁与活锁的区别,死锁与饥饿的区别?..................................... 158
5、Java 中用到的线程调度算法是什么?............................................ 158
6、什么是线程组,为什么在 Java 中不推荐使用?........................... 159
第 10 页 共 485 页
7、为什么使用 Executor 框架?...........................................................159
8、在 Java 中 Executor 和 Executors 的区别?................................ 159
9、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长?
....................................................................................................................160
10、什么是原子操作?在 Java Concurrency API 中有哪些原子类
(atomic classes)?..................................................................................160
11、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?
对比同步它有什么优势?........................................................................161
12、什么是 Executors 框架?.............................................................. 162
13、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队
列来实现生产者-消费者模型?..............................................................162
14、什么是 Callable 和 Future?.......................................................... 163
15、什么是 FutureTask?使用 ExecutorService 启动任务。...........164
16、什么是并发容器的实现?...............................................................164
17、多线程同步和互斥有几种实现方法,都是什么?.......................164
18、什么是竞争条件?你怎样发现和解决竞争?...............................165
19、你将如何使用 thread dump?你将如何分析 Thread dump?165
20、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能
直接调用 run()方法?............................................................................. 173
21、Java 中你怎样唤醒一个阻塞的线程?..........................................173
22、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?...173
23、什么是不可变对象,它对写并发应用有什么帮助?...................174
24、什么是多线程中的上下文切换?...................................................175
25、Java 中用到的线程调度算法是什么?..........................................175
26、什么是线程组,为什么在 Java 中不推荐使用?.........................176
27、为什么使用 Executor 框架比使用应用创建和管理线程好?.... 176
28、java 中有几种方法可以实现一个线程?...................................... 177
29、如何停止一个正在运行的线程?...................................................177
30、notify()和 notifyAll()有什么区别?............................................. 177
31、什么是 Daemon 线程?它有什么意义?.....................................178
32、java 如何实现多线程之间的通讯和协作?.................................. 178
第 11 页 共 485 页
33、什么是可重入锁(ReentrantLock)?....................................... 178
34、当一个线程进入某个对象的一个 synchronized 的实例方法后,其
它线程是否可进入此对象的其它方法?................................................179
35、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?...........179
36、SynchronizedMap 和 ConcurrentHashMap 有什么区别?..181
37、CopyOnWriteArrayList 可以用于什么应用场景?................... 181
38、什么叫线程安全?servlet 是线程安全吗?................................... 182
39、volatile 有什么用?能否用一句话说明下 volatile 的应用场景?183
40、为什么代码会重排序?...................................................................183
41、在 java 中 wait 和 sleep 方法的不同?....................................... 183
42、用 Java 实现阻塞队列.....................................................................185
43、一个线程运行时发生异常会怎样?...............................................185
44、如何在两个线程间共享数据?.......................................................186
45、Java 中 notify 和 notifyAll 有什么区别?.................................186
46、为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
....................................................................................................................186
47、什么是 ThreadLocal 变量?..........................................................186
48、Java 中 interrupted 和 isInterrupted 方法的区别?............. 187
49、为什么 wait 和 notify 方法要在同步块中调用?........................187
50、为什么你应该在循环中检查等待条件?.........................................188
51、Java 中的同步集合与并发集合有什么区别?..............................188
52、什么是线程池? 为什么要使用它?.............................................188
53、怎么检测一个线程是否拥有锁?...................................................188
54、你如何在 Java 中获取线程堆栈?.................................................188
56、Thread 类中的 yield 方法有什么作用?..................................... 189
57、Java 中 ConcurrentHashMap 的并发度是什么?....................189
58、Java 中 Semaphore 是什么?......................................................190
59、Java 线程池中 submit() 和 execute()方法有什么区别?....... 190
60、什么是阻塞式方法?.......................................................................190
61、Java 中的 ReadWriteLock 是什么?...........................................190
62、volatile 变量和 atomic 变量有什么不同?..............................191
第 12 页 共 485 页
63、可以直接调用 Thread 类的 run ()方法么?................................ 191
64、如何让正在运行的线程暂停一段时间?.......................................191
65、你对线程优先级的理解是什么?...................................................191
66 、 什 么 是 线 程 调 度 器 (Thread Scheduler) 和 时 间 分 片 (Time
Slicing )?................................................................................................ 192
67、你如何确保 main()方法所在的线程是 Java 程序最后结束的线程?
....................................................................................................................192
68、线程之间是如何通信的?...............................................................193
69、为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在
Object 类里?.........................................................................................193
70、为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块
中被调用?................................................................................................193
71、为什么 Thread 类的 sleep()和 yield ()方法是静态的?............193
72、如何确保线程安全?.......................................................................194
73、同步方法和同步块,哪个是更好的选择?...................................194
74、如何创建守护线程?.......................................................................194
75、什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?195
Java 并发编程(二)............................................................................................. 195
1、并发编程三要素?............................................................................. 195
2、实现可见性的方法有哪些?............................................................. 195
3、多线程的价值?................................................................................. 196
4、创建线程的有哪些方式?................................................................. 196
5、创建线程的三种方式的对比?......................................................... 196
6、线程的状态流转图............................................................................. 197
7、Java 线程具有五中基本状态............................................................ 197
8、什么是线程池?有哪几种创建方式?............................................. 198
9、四种线程池的创建:......................................................................... 199
10、线程池的优点?...............................................................................199
11、常用的并发工具类有哪些?...........................................................199
12、CyclicBarrier 和 CountDownLatch 的区别............................... 199
13、synchronized 的作用?.................................................................200
第 13 页 共 485 页
14、volatile 关键字的作用....................................................................200
15、什么是 CAS......................................................................................200
16、CAS 的问题......................................................................................201
17、什么是 Future?............................................................................. 201
18、什么是 AQS..................................................................................... 202
19、AQS 支持两种同步方式:............................................................. 202
20、ReadWriteLock 是什么.................................................................202
21、FutureTask 是什么.........................................................................203
22、synchronized 和 ReentrantLock 的区别...................................203
23、什么是乐观锁和悲观锁...................................................................203
24、线程 B 怎么知道线程 A 修改了变量..............................................204
25、synchronized、volatile、CAS 比较...........................................204
26、sleep 方法和 wait 方法有什么区别?............................................204
27、ThreadLocal 是什么?有什么用?...............................................204
28、为什么 wait()方法和 notify()/notifyAll()方法要在同步块中被调用
....................................................................................................................205
29、多线程同步有哪几种方法?...........................................................205
30、线程的调度策略...............................................................................205
31、ConcurrentHashMap 的并发度是什么...................................... 206
32、Linux 环境下如何查找哪个线程使用 CPU 最长..........................206
33、Java 死锁以及如何避免?..............................................................206
34、死锁的原因.......................................................................................206
35、怎么唤醒一个阻塞的线程...............................................................207
36、不可变对象对多线程有什么帮助...................................................207
37、什么是多线程的上下文切换...........................................................207
38、如果你提交任务时,线程池队列已满,这时会发生什么...........207
39、Java 中用到的线程调度算法是什么..............................................208
40 、 什 么 是 线 程 调 度 器 (Thread Scheduler) 和 时 间 分 片 (Time
Slicing)?..................................................................................................208
41、什么是自旋.......................................................................................208
42、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?
第 14 页 共 485 页
对比同步它有什么优势?........................................................................209
43、单例模式的线程安全性...................................................................209
44、Semaphore 有什么作用................................................................209
45、Executors 类是什么?................................................................... 210
46、线程类的构造方法、静态块是被哪个线程调用的.......................210
47、同步方法和同步块,哪个是更好的选择?.....................................210
48、Java 线程数过多会造成什么异常?..............................................210
Java 面试题(一)................................................................................................. 211
1、面向对象的特征有哪些方面?......................................................... 211
2、访问修饰符 public,private,protected,以及不写(默认)时的区别?
....................................................................................................................212
3、String 是最基本的数据类型吗?....................................................213
4、float f=3.4;是否正确?.................................................................... 213
5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
....................................................................................................................214
6、Java 有没有 goto?..........................................................................214
7、int 和 Integer 有什么区别?........................................................... 214
8、&和&&的区别?...............................................................................218
9、解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。
....................................................................................................................219
10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?220
11、switch 是否能作用在 byte 上,是否能作用在 long 上,是否能
作用在 String 上?.................................................................................. 220
12、用最有效率的方法计算 2 乘以 8?............................................... 221
13、数组有没有 length()方法?String 有没有 length()方法?...... 222
14、在 Java 中,如何跳出当前的多重嵌套循环?.............................223
15、构造器(constructor)是否可被重写(override)?............. 223
16、两个对象值相同(x.equals(y) == true),但却可有不同的 hash
code,这句话对不对?.......................................................................... 223
17、是否可以继承 String 类?............................................................. 224
18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对
第 15 页 共 485 页
象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传
递?............................................................................................................225
19、String 和 StringBuilder、StringBuffer 的区别?.....................226
20、重载(Overload)和重写(Override)的区别。重载的方法能否
根据返回类型进行区分?........................................................................227
21、描述一下 JVM 加载 class 文件的原理机制?..............................228
22、char 型变量中能不能存贮一个中文汉字,为什么?.................229
23、抽象类(abstract class)和接口(interface)有什么异同?.230
24、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不
同?............................................................................................................230
25、Java 中会存在内存泄漏吗,请简单描述。.................................234
26、抽象的(abstract)方法是否可同时是静态的(static),是否可同
时是本地方法(native),是否可同时被 synchronized 修饰?.....236
27、阐述静态变量和实例变量的区别。...............................................236
28、是否可以从一个静态(static)方法内部发出对非静态(non-static)
方法的调用?............................................................................................237
29、如何实现对象克隆?.......................................................................237
30、GC 是什么?为什么要有 GC?......................................................242
31、String s = new String(“xyz”);创建了几个字符串对象?.....244
32 、 接 口 是 否 可 继 承 ( extends ) 接 口 ? 抽 象 类 是 否 可 实 现
(implements)接口?抽象类是否可继承具体类(concrete class)?
....................................................................................................................244
33、一个”.java”源文件中是否可以包含多个类(不是内部类)?有
什么限制?................................................................................................245
34、Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否
可以实现接口?........................................................................................245
35、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限
制?............................................................................................................245
36、Java 中的 final 关键字有哪些用法?...........................................245
37、指出下面程序的运行结果...............................................................246
38、数据类型之间的转换:...................................................................247
第 16 页 共 485 页
39、如何实现字符串的反转及替换?...................................................248
40、怎样将 GB2312 编码的字符串转换为 ISO-8859-1 编码的字符串?
....................................................................................................................248
41、日期和时间:...................................................................................249
42、打印昨天的当前时刻。...................................................................251
43、比较一下 Java 和 JavaSciprt。.....................................................252
44、什么时候用断言(assert)?........................................................253
45、Error 和 Exception 有什么区别?................................................254
46、try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里
的代码会不会被执行,什么时候被执行,在 return 前还是后?........255
47、Java 语言如何进行异常处理,关键字:throws、throw、try、catch、
finally 分别如何使用?........................................................................... 256
48、运行时异常与受检异常有何异同?...............................................257
49、列出一些你常见的运行时异常?...................................................258
50、阐述 final、finally、finalize 的区别。........................................258
51、类 ExampleA 继承 Exception,类 ExampleB 继承 ExampleA。259
52、List、Set、Map 是否继承自 Collection 接口?....................... 260
53、阐述 ArrayList、Vector、LinkedList 的存储性能和特性。.....261
54、Collection 和 Collections 的区别?............................................262
55、List、Map、Set 三个接口存取元素时,各有什么特点?.........262
56、TreeMap 和 TreeSet 在排序时如何比较元素?Collections 工具
类中的 sort()方法如何比较元素?........................................................ 262
57、Thread 类的 sleep()方法和对象的 wait()方法都可以让线程暂停执
行,它们有什么区别?..............................................................................267
58、线程的 sleep()方法和 yield()方法有什么区别?........................ 268
59、当一个线程进入一个对象的 synchronized 方法 A 之后,其它线
程是否可进入此对象的 synchronized 方法 B?.................................268
60、请说出与线程同步以及线程调度相关的方法。...........................268
61、编写多线程程序有几种实现方式?...............................................276
62、synchronized 关键字的用法?.....................................................278
63、举例说明同步和异步。...................................................................278
第 17 页 共 485 页
64、启动一个线程是调用 run()还是 start()方法?............................ 278
65、什么是线程池(thread pool)?................................................ 279
66、线程的基本状态以及状态之间的关系?.......................................280
67、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
....................................................................................................................281
68、Java 中如何实现序列化,有什么意义?......................................282
69、Java 中有几种类型的流?..............................................................282
70、写一个方法,输入一个文件名和一个字符串,统计这个字符串在
这个文件中出现的次数。........................................................................284
71、如何用 Java 代码列出一个目录下所有的文件?.........................286
72、用 Java 的套接字编程实现一个多线程的回显(echo)服务器。288
73、XML 文档定义有几种形式?它们之间有何本质区别?解析 XML
文档有哪几种方式?................................................................................295
74、你在项目中哪些地方用到了 XML?............................................. 296
75、阐述 JDBC 操作数据库的步骤。...................................................296
76、Statement 和 PreparedStatement 有什么区别?哪个性能更好?
....................................................................................................................298
77、使用 JDBC 操作数据库时,如何提升读取数据的性能?如何提升
更新数据的性能?....................................................................................299
78、在进行数据库编程时,连接池有什么作用?...............................300
79、什么是 DAO 模式?........................................................................300
80、事务的 ACID 是指什么?............................................................... 301
82、JDBC 能否处理 Blob 和 Clob?....................................................306
83、简述正则表达式及其用途。...........................................................308
84、Java 中是如何支持正则表达式操作的?......................................308
85、获得一个类的类对象有哪些方式?...............................................309
88、如何通过反射调用对象的方法?...................................................313
90、简述一下你了解的设计模式。.......................................................317
91、用 Java 写一个单例类。.................................................................318
92、什么是 UML?.................................................................................319
93、UML 中有哪些常用的图?.............................................................320
第 18 页 共 485 页
95、用 Java 写一个折半查找。.............................................................324
Java 面试题(二)................................................................................................. 326
多线程、并发及线程的基础问题............................................................328
1、Java 中能创建 volatile 数组吗?................................................. 328
2、volatile 能使得一个非原子操作变成原子操作吗?..................... 328
3、volatile 修饰符的有过什么实践?................................................. 328
4、volatile 类型变量提供什么保证?................................................. 329
5、10 个线程和 2 个线程的同步代码,哪个更容易写?................ 329
6、你是如何调用 wait()方法的?使用 if 块还是循环?为什么?329
有经验程序员的 Java 面试题............................................................... 330
8、什么是 Busy spin?我们为什么要使用它?................................. 330
9、Java 中怎么获取一份线程 dump 文件?....................................331
10、Swing 是线程安全的?................................................................. 331
11、什么是线程局部变量?...................................................................331
12、用 wait-notify 写一段代码来解决生产者-消费者问题?........ 331
13、用 Java 写一个线程安全的单例模式(Singleton)?.............332
14、Java 中 sleep 方法和 wait 方法的区别?...............................332
15、什么是不可变对象(immutable object)?Java 中怎么创建一
个不可变对象?........................................................................................332
16、我们能创建一个包含可变对象的不可变对象吗?.......................333
数据类型和 Java 基础面试问题........................................................... 333
17、Java 中应该使用什么数据类型来代表价格?.............................333
18、怎么将 byte 转换为 String?.....................................................333
19、Java 中怎样将 bytes 转换为 long 类型?..............................333
20、我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于
byte 类型的范围,将会出现什么现象?............................................. 334
21、存在两个类,B 继承 A,C 继承 B,我们能将 B 转换为 C 么?
如 C = (C) B;........................................................................................ 334
22、哪个类包含 clone 方法?是 Cloneable 还是 Object?.......334
23、Java 中 ++ 操作符是线程安全的吗?.......................................334
23、不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,
第 19 页 共 485 页
然后存储回内存,这个过程可能会出现多个线程交差。....................335
24、a = a + b 与 a += b 的区别...................................................... 335
25、我能在不进行强制转换的情况下将一个 double 值赋值给 long
类型的变量吗?........................................................................................335
26、3*0.1 == 0.3 将会返回什么?true 还是 false?.....................336
27、int 和 Integer 哪个会占用更多的内存?..................................336
28、为什么 Java 中的 String 是不可变的(Immutable)?.......336
JVM 底层 与 GC(Garbage Collection) 的面试问题.................336
31、64 位 JVM 中,int 的长度是多数?.........................................337
32、Serial 与 Parallel GC 之间的不同之处?...................................337
33、32 位和 64 位的 JVM,int 类型变量的长度是多数?.......... 337
34、Java 中 WeakReference 与 SoftReference 的区别?......... 337
35、WeakHashMap 是怎么工作的?................................................337
36、JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要
使用?........................................................................................................338
37、怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位?... 338
38、32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?.......338
39、JRE、JDK、JVM 及 JIT 之间有什么不同?..............................339
3 年工作经验的 Java 面试题............................................................... 339
40、解释 Java 堆空间及 GC?........................................................... 339
JVM 底层面试题及答案......................................................................... 339
41、你能保证 GC 执行吗?................................................................. 339
42、怎么获取 Java 程序使用的内存?堆使用的百分比?...............339
43、Java 中堆和栈有什么区别?.........................................................340
关于内存的的面试问题和答案................................................................340
Java 基本概念面试题............................................................................. 340
44、“a==b”和”a.equals(b)”有什么区别?............................... 340
45、a.hashCode() 有什么用?与 a.equals(b) 有什么关系?....... 340
46、final、finalize 和 finally 的不同之处?....................................341
47、Java 中的编译期常量是什么?使用它又什么风险?.................341
Java 集合框架的面试题......................................................................... 341
第 20 页 共 485 页
48、List、Set、Map 和 Queue 之间的区别(答案)........................ 341
49、poll() 方法和 remove() 方法的区别?......................................342
50、Java 中 LinkedHashMap 和 PriorityQueue 的区别是什么?342
51、ArrayList 与 LinkedList 的不区别?......................................... 342
52、用哪两种方式来实现集合的排序?...............................................342
53、Java 中怎么打印数组?.................................................................343
54、Java 中的 LinkedList 是单向链表还是双向链表?..................343
55、Java 中的 TreeMap 是采用什么树实现的?(答案).................343
56、Hashtable 与 HashMap 有什么不同之处?........................... 343
57、Java 中的 HashSet,内部是如何工作的?...............................344
58、写一段代码在遍历 ArrayList 时移除一个元素?...................... 344
59、我们能自己写一个容器类,然后使用 for-each 循环码?.......344
60、ArrayList 和 HashMap 的默认大小是多数?..........................344
61、有没有可能两个不相等的对象有有相同的 hashcode?.......... 345
62、两个相同的对象会有不同的的 hash code 吗?....................... 345
63、我们可以在 hashcode() 中使用随机数字吗?..........................345
64、Java 中,Comparator 与 Comparable 有什么不同?........ 345
Java IO 和 NIO 的面试题.................................................................... 346
66、在我 Java 程序中,我有三个 socket,我需要多少个线程来处理?
....................................................................................................................346
67、Java 中怎么创建 ByteBuffer?...................................................346
68、Java 中,怎么读写 ByteBuffer ?.............................................346
69、Java 采用的是大端还是小端?.....................................................346
70、ByteBuffer 中的字节序是什么?.................................................346
71、Java 中,直接缓冲区与非直接缓冲器有什么区别?.................347
72、Java 中的内存映射缓存区是什么?.............................................347
73、socket 选项 TCP NO DELAY 是指什么?................................347
74、TCP 协议与 UDP 协议有什么区别?.........................................347
75、Java 中,ByteBuffer 与 StringBuffer 有什么区别?(答案).. 347
Java 最佳实践的面试问题..................................................................... 348
76、Java 中,编写多线程程序的时候你会遵循哪些最佳实践?.....348
第 21 页 共 485 页
77、说出几点 Java 中使用 Collections 的最佳实践......................348
78、说出至少 5 点在 Java 中使用线程的最佳实践。.................... 348
79、说出 5 条 IO 的最佳实践(答案)................................................. 349
80、列出 5 个应该遵循的 JDBC 最佳实践.......................................349
81、说出几条 Java 中方法重载的最佳实践?...................................350
Date、Time 及 Calendar 的面试题.................................................. 350
82、在多线程环境下,SimpleDateFormat 是线程安全的吗?..... 350
83、Java 中如何格式化一个日期?如格式化为 ddMMyyyy 的形式?
....................................................................................................................350
84、Java 中,怎么在格式化的日期中显示时区?.............................351
85、Java 中 java.util.Date 与 java.sql.Date 有什么区别?........ 351
86、Java 中,如何计算两个日期之间的差距?.................................351
87、Java 中,如何将字符串 YYYYMMDD 转换为日期?............. 352
单元测试 JUnit 面试题..........................................................................352
89、如何测试静态方法?(答案)............................................................ 352
90、怎么利用 JUnit 来测试一个方法的异常?................................. 352
91、你使用过哪个单元测试库来测试你的 Java 程序?...................352
92、@Before 和 @BeforeClass 有什么区别?..............................352
编程和代码相关的面试题........................................................................353
93、怎么检查一个字符串只包含数字?解决方案...............................353
94、Java 中如何利用泛型写一个 LRU 缓存?................................. 353
95、写一段 Java 程序将 byte 转换为 long?................................353
95、在不使用 StringBuffer 的前提下,怎么反转一个字符串?....353
97、Java 中,怎么获取一个文件中单词出现的最高频率?.............353
98、如何检查出两个给定的字符串是反序的?...................................354
99、Java 中,怎么打印出一个字符串的所有排列?.........................354
100、Java 中,怎样才能打印出数组中的重复元素?...................... 354
101、Java 中如何将字符串转换为整数?.......................................... 354
102、在没有使用临时变量的情况如何交换两个整数变量的值?.... 355
关于 OOP 和设计模式的面试题...........................................................355
103、接口是什么?为什么要使用接口而不是直接使用具体类?.... 355
第 22 页 共 485 页
104、Java 中,抽象类与接口之间有什么不同?.............................. 355
105、除了单例模式,你在生产环境中还用过什么设计模式?........ 356
106、你能解释一下里氏替换原则吗?...................................................356
107) 什么情况下会违反迪米特法则?为什么会有这个问题?......... 356
108、适配器模式是什么?什么时候使用?........................................ 356
109、什么是“依赖注入”和“控制反转”?为什么有人使用?.... 356
110、抽象类是什么?它与接口有什么区别?你为什么要使用过抽象
类?............................................................................................................357
111、构造器注入和 setter 依赖注入,那种方式更好?..................357
112、依赖注入和工程模式之间有什么不同?.................................... 357
113、适配器模式和装饰器模式有什么区别?.................................... 358
114、适配器模式和代理模式之前有什么不同?................................ 358
115、什么是模板方法模式?................................................................ 358
116、什么时候使用访问者模式?........................................................ 358
117、什么时候使用组合模式?............................................................ 358
118、继承和组合之间有什么不同?.................................................... 359
119、描述 Java 中的重载和重写?.................................................... 359
120、Java 中,嵌套公共静态类与顶级类有什么不同?.................. 359
121、 OOP 中的 组合、聚合和关联有什么区别?..........................359
122、给我一个符合开闭原则的设计模式的例子?............................ 360
123、抽象工厂模式和原型模式之间的区别?.................................... 360
Java 面试中其他各式各样的问题......................................................... 361
125、嵌套静态类与顶级类有什么区别?............................................ 361
126、你能写出一个正则表达式来判断一个字符串是否是一个数字吗?
....................................................................................................................361
127、Java 中,受检查异常 和 不受检查异常的区别?.................. 362
128、Java 中,throw 和 throws 有什么区别................................ 362
129、Java 中,Serializable 与 Externalizable 的区别?............ 362
130、Java 中,DOM 和 SAX 解析器有什么不同?...................... 363
131、说出 JDK 1.7 中的三个新特性?.............................................. 363
132、说出 5 个 JDK 1.8 引入的新特性?........................................ 363
第 23 页 共 485 页
133、Java 中,Maven 和 ANT 有什么区别?............................... 363
Spring 面试题(一).............................................................................................364
1、一般问题............................................................................................. 364
1.1、不同版本的 Spring Framework 有哪些主要功能?...............364
1.2、什么是 Spring Framework?.....................................................365
1.3、列举 Spring Framework 的优点。...........................................365
1.4、Spring Framework 有哪些不同的功能?.................................365
1.5、Spring Framework 中有多少个模块,它们分别是什么?.....365
1.6、什么是 Spring 配置文件?......................................................... 368
1.7、Spring 应用程序有哪些不同组件?........................................... 368
1.8、使用 Spring 有哪些方式?......................................................... 368
2、依赖注入(Ioc)............................................................................... 369
2.1、什么是 Spring IOC 容器?......................................................... 369
2.2、什么是依赖注入?..........................................................................369
2.3、可以通过多少种方式完成依赖注入?..........................................370
2.4、区分构造函数注入和 setter 注入。...........................................370
2.5、spring 中有多少种 IOC 容器?.................................................370
2.6、区分 BeanFactory 和 ApplicationContext。........................371
2.7、列举 IoC 的一些好处。............................................................... 371
2.8、Spring IoC 的实现机制。............................................................371
3、Beans..................................................................................................373
3.1、什么是 spring bean?................................................................. 373
3.2、spring 提供了哪些配置方式?....................................................373
3.3、spring 支持集中 bean scope?................................................375
3.4、spring bean 容器的生命周期是什么样的?............................. 375
3.5、什么是 spring 的内部 bean?.................................................. 376
3.6、什么是 spring 装配......................................................................377
3.7、自动装配有哪些方式?..................................................................377
3.8、自动装配有什么局限?..................................................................378
4、注解..................................................................................................... 378
4.1、什么是基于注解的容器配置..........................................................378
第 24 页 共 485 页
4.2、如何在 spring 中启动注解装配?..............................................379
4.3、@Component, @Controller, @Repository, @Service 有何区
别?............................................................................................................379
4.4、@Required 注解有什么用?...................................................... 380
4.5、@Autowired 注解有什么用?....................................................380
4.6、@Qualifier 注解有什么用?....................................................... 381
4.7、@RequestMapping 注解有什么用?.......................................382
5、数据访问............................................................................................. 382
5.1、spring DAO 有什么用?..............................................................382
5.2、列举 Spring DAO 抛出的异常。............................................... 383
5.3、spring JDBC API 中存在哪些类?............................................. 383
5.4、使用 Spring 访问 Hibernate 的方法有哪些?...................... 384
5.5、列举 spring 支持的事务管理类型..............................................384
5.6、spring 支持哪些 ORM 框架...................................................... 384
6、AOP.....................................................................................................385
6.1、什么是 AOP?............................................................................... 385
6.2、什么是 Aspect?...........................................................................385
6.3、什么是切点(JoinPoint)............................................................ 386
6.4、什么是通知(Advice)?.............................................................386
6.5、有哪些类型的通知(Advice)?.................................................387
6.6、指出在 spring aop 中 concern 和 cross-cutting concern 的
不同之处。................................................................................................387
6.7、AOP 有哪些实现方式?............................................................... 387
6.8、Spring AOP and AspectJ AOP 有什么区别?........................388
6.9、如何理解 Spring 中的代理?..................................................... 388
6.10、什么是编织(Weaving)?.......................................................389
7、MVC....................................................................................................389
7.1、Spring MVC 框架有什么用?.....................................................389
7.2、描述一下 DispatcherServlet 的工作流程................................ 389
7.3、介绍一下 WebApplicationContext.......................................... 391
Spring 面试题(二).............................................................................................392
第 25 页 共 485 页
1、什么是 spring?.................................................................................. 392
2、使用 Spring 框架的好处是什么?...................................................392
3、Spring 由哪些模块组成?..................................................................392
4、核心容器(应用上下文) 模块。......................................................393
5、BeanFactory – BeanFactory 实现举例。.................................. 393
6、XMLBeanFactory............................................................................. 394
7、解释 AOP 模块...................................................................................394
8、解释 JDBC 抽象和 DAO 模块。...................................................... 394
9、解释对象/关系映射集成模块。....................................................... 394
10、解释 WEB 模块。...........................................................................394
12、Spring 配置文件............................................................................. 395
13、什么是 Spring IOC 容器?........................................................... 395
14、IOC 的优点是什么?.......................................................................395
15、ApplicationContext 通常的实现是什么?................................... 395
16、Bean 工厂和 Application contexts 有什么区别?................ 396
17、一个 Spring 的应用看起来象什么?............................................ 396
依赖注入....................................................................................................396
18、什么是 Spring 的依赖注入?........................................................ 396
19、有哪些不同类型的 IOC(依赖注入)方式?...............................397
20、哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注
入?............................................................................................................397
Spring Beans...........................................................................................397
21.什么是 Spring beans?......................................................................397
22、一个 Spring Bean 定义 包含什么?..........................................398
23、如何给 Spring 容器提供配置元数据?......................................... 398
24、你怎样定义类的作用域?.................................................................398
25、解释 Spring 支持的几种 bean 的作用域。.................................399
26、Spring 框架中的单例 bean 是线程安全的吗?............................399
27、解释 Spring 框架中 bean 的生命周期。.....................................399
28、哪些是重要的 bean 生命周期方法?你能重载它们吗?........... 400
29、什么是 Spring 的内部 bean?......................................................400
第 26 页 共 485 页
30、在 Spring 中如何注入一个 java 集合?......................................400
31、什么是 bean 装配?......................................................................... 401
32、什么是 bean 的自动装配?........................................................... 401
33、解释不同方式的自动装配 。.........................................................401
34.自动装配有哪些局限性 ?..................................................................402
35、你可以在 Spring 中注入一个 null 和一个空字符串吗?.......... 402
Spring 注解..............................................................................................402
36、什么是基于 Java 的 Spring 注解配置给一些注解的例子...... 403
37、什么是基于注解的容器配置?.........................................................403
38、怎样开启注解装配?.......................................................................403
39、@Required 注解........................................................................... 403
40、@Autowired 注解.........................................................................404
41、@Qualifier 注解............................................................................ 404
Spring 数据访问......................................................................................404
42.在 Spring 框架中如何更有效地使用 JDBC?...................................404
43、JdbcTemplate................................................................................ 404
44、Spring 对 DAO 的支持.................................................................. 405
45、使用 Spring 通过什么方式访问 Hibernate?.............................. 405
46、Spring 支持的 ORM.......................................................................405
47.如何通过 HibernateDaoSupport 将 Spring 和 Hibernate 结合起
来?............................................................................................................406
48、Spring 支持的事务管理类型......................................................... 406
49、Spring 框架的事务管理有哪些优点?......................................... 406
50、你更倾向用那种事务管理类型?...................................................407
Spring 面向切面编程(AOP)..............................................................407
51、解释 AOP......................................................................................... 407
52、Aspect 切面....................................................................................407
52、在 Spring AOP 中,关注点和横切关注的区别是什么?..........407
54、连接点...............................................................................................408
55、通知...................................................................................................408
56、切点...................................................................................................408
第 27 页 共 485 页
57、什么是引入?.....................................................................................409
58、什么是目标对象?.............................................................................409
59、什么是代理?.....................................................................................409
60、有几种不同类型的自动代理?.......................................................409
61、什么是织入。什么是织入应用的不同点?...................................409
62、解释基于 XML Schema 方式的切面实现。................................ 410
63、解释基于注解的切面实现...............................................................410
Spring 的 MVC.......................................................................................410
64、什么是 Spring 的 MVC 框架?..................................................... 410
65、DispatcherServlet......................................................................... 410
66、WebApplicationContext............................................................. 411
67、什么是 Spring MVC 框架的控制器?..........................................411
68、@Controller 注解..........................................................................411
69、@RequestMapping 注解............................................................411
微服务 面试题..........................................................................................................411
1、您对微服务有何了解?..................................................................... 411
2、微服务架构有哪些优势?................................................................. 413
3。微服务有哪些特点?......................................................................... 414
4、设计微服务的最佳实践是什么?..................................................... 415
5、微服务架构如何运作?..................................................................... 415
6、微服务架构的优缺点是什么?......................................................... 416
7、单片,SOA 和微服务架构有什么区别?........................................417
8、在使用微服务架构时,您面临哪些挑战?..................................... 418
9、SOA 和微服务架构之间的主要区别是什么?................................418
10、微服务有什么特点?.......................................................................419
11、什么是领域驱动设计?...................................................................419
12、为什么需要域驱动设计(DDD)?..............................................420
13、什么是无所不在的语言?...............................................................420
14、什么是凝聚力?...............................................................................421
15、什么是耦合?...................................................................................421
16、什么是 REST / RESTful 以及它的用途是什么?.........................421
第 28 页 共 485 页
17、你对 Spring Boot 有什么了解?.................................................. 421
18、什么是 Spring 引导的执行器?.................................................... 422
19、什么是 Spring Cloud?.................................................................422
20、Spring Cloud 解决了哪些问题?.................................................423
21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
....................................................................................................................423
22。你能否给出关于休息和微服务的要点?.......................................424
23、什么是不同类型的微服务测试?...................................................424
24、您对 Distributed Transaction 有何了解?................................ 424
25、什么是 Idempotence 以及它在哪里使用?............................... 425
26、什么是有界上下文?.......................................................................425
27、什么是双因素身份验证?...............................................................425
28、双因素身份验证的凭据类型有哪些?...........................................426
29、什么是客户证书?...........................................................................427
30、PACT 在微服务架构中的用途是什么?........................................427
31、什么是 OAuth?............................................................................. 427
32、康威定律是什么?...........................................................................428
33、合同测试你懂什么?.......................................................................428
34、什么是端到端微服务测试?...........................................................429
35、Container 在微服务中的用途是什么?....................................... 429
36、什么是微服务架构中的 DRY?......................................................430
37、什么是消费者驱动的合同(CDC)?.......................................... 430
38、Web,RESTful API 在微服务中的作用是什么?.......................431
39、您对微服务架构中的语义监控有何了解?...................................431
40、我们如何进行跨功能测试?...........................................................431
41、我们如何在测试中消除非决定论?...............................................431
42、Mock 或 Stub 有什么区别?........................................................ 432
43、您对 Mike Cohn 的测试金字塔了解多少?................................ 432
44、Docker 的目的是什么?................................................................ 433
45、什么是金丝雀释放?.......................................................................434
46、什么是持续集成(CI)?...............................................................434
第 29 页 共 485 页
47、什么是持续监测?...........................................................................434
48、架构师在微服务架构中的角色是什么?.......................................434
49、我们可以用微服务创建状态机吗?...............................................435
50、什么是微服务中的反应性扩展?...................................................435
Linux 面试题........................................................................................................... 435
1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目
录用什么表示切换目录用什么命令?................................................436
2、怎么查看当前进程?怎么执行退出?怎么查看当前路径?......... 436
3、怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户
id?查看指定帮助用什么命令?............................................................436
4、Ls 命令执行什么功能? 可以带哪些参数,有什么区别?......... 437
5、建立软链接(快捷方式),以及硬链接的命令。...............................437
6、目录创建用什么命令?创建文件用什么命令?复制文件用什么命
令?............................................................................................................437
7、查看文件内容有哪些命令可以使用?............................................. 438
8、随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello
world”?...................................................................................................439
9、终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个
命令?........................................................................................................439
10、移动文件用哪个命令?改名用哪个命令?...................................439
11、复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需
要有提示功能呢?....................................................................................440
12、删除文件用哪个命令?如果需要连目录及目录下文件一块删除
呢?删除空文件夹用什么命令?............................................................440
13、Linux 下命令有哪几种可使用的通配符?分别代表什么含义?.440
14、用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
....................................................................................................................441
15、Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行
....................................................................................................................441
16、Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用
什么符号表示的?....................................................................................441
第 30 页 共 485 页
17、怎么使一个命令在后台运行?.........................................................442
18、利用 ps 怎么显示所有的进程怎么利用 ps 查看指定进程的信
息?............................................................................................................443
19、哪个命令专门用来查看后台任务?.................................................443
20、把后台任务调到前台执行使用什么命令?把停下的后台任务在后台
执行起来用什么命令?..............................................................................443
21、终止进程用什么命令带什么参数?.............................................444
22、怎么查看系统支持的所有信号?...................................................444
23、搜索文件用什么命令格式是怎么样的?.....................................444
24、查看当前谁在使用该主机用什么命令查找自己所在的终端信息
用什么命令?..............................................................................................445
25、使用什么命令查看用过的命令列表?.............................................445
26、使用什么命令查看磁盘使用空间? 空闲空间呢?.......................445
27、使用什么命令查看网络是否连通?.................................................446
28、使用什么命令查看 ip 地址及接口信息?................................... 446
29、查看各类环境变量用什么命令?.....................................................446
30、通过什么命令指定命令提示符?.....................................................446
31、查找命令的可执行文件是去哪查找的怎么对其进行设置及添加
....................................................................................................................447
32、通过什么命令查找执行命令?.........................................................448
33、怎么对命令进行取别名?...............................................................448
34、du 和 df 的定义,以及区别?....................................................448
35、awk 详解。..................................................................................... 449
36、当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?449
37、如果一个 linux 新手想要知道当前系统支持的所有命令的列表,他
需要怎么做?............................................................................................450
38、如果你的助手想要打印出当前的目录栈,你会建议他怎么做?451
39、你的系统目前有许多正在运行的任务,在不重启机器的条件下,
有什么方法可以把所有正在运行的进程移除呢?................................451
40、bash shell 中的 hash 命令有什么作用?..................................452
41、哪一个 bash 内置命令能够进行数学运算。................................452
第 31 页 共 485 页
42、怎样一页一页地查看一个大文件的内容呢?...............................453
43、数据字典属于哪一个用户的?.......................................................453
44、怎样查看一个 linux 命令的概要与用法?假设你在/bin 目录中偶
然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?453
45、使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?...454
Spring Boot 面试题...............................................................................................454
1、什么是 Spring Boot?..................................................................... 454
2、Spring Boot 有哪些优点?............................................................. 455
3、什么是 JavaConfig?....................................................................... 455
4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?456
5、Spring Boot 中的监视器是什么?................................................. 457
6、如何在 Spring Boot 中禁用 Actuator 端点安全性?..................457
7、如何在自定义端口上运行 Spring Boot 应用程序?.................... 457
8、什么是 YAML?.................................................................................458
9、如何实现 Spring Boot 应用程序的安全性?................................ 458
10、如何集成 Spring Boot 和 ActiveMQ?...................................... 458
11、如何使用 Spring Boot 实现分页和排序?.................................. 458
12、什么是 Swagger?你用 Spring Boot 实现了它吗?................ 459
13、什么是 Spring Profiles?..............................................................459
14、什么是 Spring Batch?................................................................. 459
15、什么是 FreeMarker 模板?...........................................................459
16、如何使用 Spring Boot 实现异常处理?...................................... 460
17、您使用了哪些 starter maven 依赖项?...................................... 460
18、什么是 CSRF 攻击?....................................................................... 460
19、什么是 WebSockets?.................................................................. 460
20、什么是 AOP?................................................................................. 461
21、什么是 Apache Kafka?................................................................462
22、我们如何监视所有 Spring Boot 微服务?.................................. 462
Spring Cloud 面试题.............................................................................................462
1、什么是 Spring Cloud?................................................................... 462
2、使用 Spring Cloud 有什么优势?.................................................. 463
第 32 页 共 485 页
3、服务注册和发现是什么意思?Spring Cloud 如何实现?........... 463
4、负载平衡的意义什么?..................................................................... 463
5、什么是 Hystrix?它如何实现容错?...............................................464
6、什么是 Hystrix 断路器?我们需要它吗?......................................465
7、什么是 Netflix Feign?它的优点是什么?....................................466
8、什么是 Spring Cloud Bus?我们需要它吗?............................... 468
RabbitMQ 面试题..................................................................................................470
1、什么是 rabbitmq.............................................................................. 470
2、为什么要使用 rabbitmq.................................................................. 471
3、使用 rabbitmq 的场景..................................................................... 471
4、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消
费了消息?................................................................................................471
5.如何避免消息重复投递或重复消费?................................................ 472
6、消息基于什么传输?......................................................................... 473
7、消息如何分发?................................................................................. 473
8、消息怎么路由?................................................................................. 473
9、如何确保消息不丢失?..................................................................... 474
10、使用 RabbitMQ 有什么好处?..................................................... 474
11、RabbitMQ 的集群.......................................................................... 474
12、mq 的缺点........................................................................................475
无标题..........................................................................................错误!未定义书签。
kafka 面试题........................................................................................................... 475
1、如何获取 topic 主题的列表..............................................................475
2、生产者和消费者的命令行是什么?................................................. 476
3、consumer 是推还是拉?................................................................. 476
4、讲讲 kafka 维护消费状态跟踪的方法.............................................477
5、讲一下主从同步**..............................................................................478
6、为什么需要消息系统,mysql 不能满足需求吗?.........................478
7、Zookeeper 对于 Kafka 的作用是什么?.......................................479
8、数据传输的事务定义有哪三种?..................................................... 480
9、Kafka 判断一个节点是否还活着有那两个条件?..........................480
第 33 页 共 485 页
10、Kafka 与传统 MQ 消息系统之间有三个关键区别..................... 481
11、讲一讲 kafka 的 ack 的三种机制.................................................. 481
13、消费者故障,出现活锁问题如何解决?.......................................482
14、如何控制消费的位置.......................................................................483
15、kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?483
16、kafka 的高可用机制是什么?........................................................483
17、kafka 如何减少数据丢失................................................................484
18、kafka 如何不消费重复数据?比如扣款,我们不能重复的扣。486