互联网 Java 工程师面试题

内容涵盖: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

你可能感兴趣的:(互联网 Java 工程师面试题)