写点什么

备战金三银四必备:2021 最新 Java 面试汇总(附答案解析)

用户头像
比伯
关注
发布于: 2021 年 02 月 27 日
备战金三银四必备:2021最新Java面试汇总(附答案解析)

时间不等人,春招这就已经拉开序幕~


马上又是春招的高峰“金三银四,估计现在就已经有不少的程序猿(媛)朋友早就踏上提前批之路了吧,机会来临,好好把握,争取一举上岸!从 2 月份开始小编就在整理“Java 一线大厂高岗面试题”,一题一题的抠,整出了这份[备战金三银四的 Java 面试汇总(附解析)],总共有以下六部分的内容:


  • Java 基础-中级-高级

  • 开源框架(SSM:Spring+SpringMVC+MyBatis)

  • 性能调优(JVM+MySQL+Tomcat)

  • 分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

  • 微服务(SpringBoot+SpringCloud+Dubbo)

  • 其他:并发编程+设计模式+数据结构与算法+网络


请注意:全文篇幅有点长(请耐心阅读),给出了全部的题目,也正是因为篇幅有限,所以答案解析这块只给了部分。不过可免费提供完整的[题目+解析 PDF],添加小助理 vx:mxzFAFAFA 即可分享下载这六各部分的 Java 一线大厂高岗面试题解析合集


第一部分:Java 基础-中级-高级



第一部分:Java 基础-中级-高级


1.1 Java 基础面试题汇总


  • 1. 面向对象和面向过程的区别?

  • 2. Java 语言有哪些特点?

  • 3. 关于 JVM JDK 和 JRE 最详细通俗的解答

  • 4. Oracle JDK 和 OpenJDK 的对比

  • 5. Java 和 C++的区别?

  • 6. 什么是 Java 程序的主类?应用程序和小程序的主类有何不同?

  • 7. Java 应用程序与小程序之间有哪些差别?

  • 8. 字符型常量和字符串常量的区别

  • 9. 构造器 Constructor 是否可被 override?

  • 10. 重载和重写的区别?

  • 11. Java 面向对象编程三大特性: 封装 继承 多态

  • 12. String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的?

  • 13. 自动装箱与拆箱

  • 14. 在一个静态方法内调用一个非静态成员为什么是非法的?

  • 15. 在 Java 中定义一个不做事且没有参数的构造方法的作用?

  • 16. import java 和 javax 有什么区别?

  • 17. 接口和抽象类的区别是什么?

  • 18. 成员变量与局部变量的区别有哪些?

  • 19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?

  • 20. 什么是方法的返回值?返回值在类的方法里的作用是什么?

  • 21. 一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 ?为什么?

  • 22. 构造方法有哪些特性?

  • 23. 静态方法和实例方法有何不同?

  • 24. 对象的相等与指向他们的引用相等,两者有什么不同?

  • 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?

  • 26. == 与 equals(重要)

  • 27. hashCode 与 equals(重要)

  • 28. 为什么 Java 中只有值传递?

  • 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么

  • 30. 线程有哪些基本状态?

  • 31. 关于 final 关键字的一些总结

  • 32. Java 中的异常处理

  • 33. Java 序列化中如果有些字段不想进行序列化 怎么办?

  • 34. 获取用键盘输入常用的的两种方法?



Java 基础面试题-答案解析


1.2 Java 中级面试题汇总


  • 1. HashMap 底层实现原理,红黑树,B+树,B 树的结构原理,volatile 关键字,CAS(比较与交换)实现原理

  • 2. Spring 的 AOP 和 IOC 是什么?使用场景有哪些?Spring 事务,事务的属性,传播行为,数据库隔离级别

  • 3. Spring 和 SpringMVC,MyBatis 以及 SpringBoot 的注解分别有哪些?SpringMVC 的工作原理,SpringBoot 框架的优点,MyBatis 框架的优点

  • 4. SpringCould 组件有哪些,他们的作用是什么?(说七八个)微服务的 CAP 是什么?BASE 是什么?

  • 5. 设计模式(说五六个)

  • 6. Redis 支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透

  • 7. 线程是什么,有几种实现方式,它们之间的区别是什么,线程池实现原理,JUC 并发包,ThreadLocal 与 Lock 和 Synchronize 区别?

  • 8. 分布式事务(不同系统之间如何保证数据的一致性(A 系统写入数据,B 系统因为某些原因没有写入成功,造成数据不一致))

  • 9. 安全性问题(数据篡改(拿到别人的 URL,篡改数据(金额)发送给系统))

  • 10. 索引使用的限制条件,sql 优化有哪些,数据同步问题(缓存,数据库数据同步)

  • 11. 初始化 Bean 对象有几个步骤,它的生命周期

  • 12. JVM 内存模型,算法,垃圾回收器,调优,类加载机制(双亲委派),创建一个对象,这个对象在内存中是怎么分配的?

  • 13. 如何设计一个秒杀系统?(高并发高可用分布式集群)

  • 14. 悲观锁,乐观锁,读写锁,行锁,表锁,自旋锁,死锁,分布式锁,线程同步锁,公平锁,非公平锁分别是什么?

  • 15. 堆溢出,栈溢出的出现场景以及解决方案

  • 16. 说出几种 MQ 之间的区别,以及为什么使用这种 MQ,消息重复发送(幂等性),消息发送失败,消息掉包,长时间收不到消息,发送的消息太大造成接收不成功

  • 17. 单点登录实现原理

  • 18. 假如有上亿条数据,你如何快速找到其中一条你想要的数据(几种简单的算法)

  • 19. Dubbo 的运行原理,支持什么协议,与 SpringCould 相比它为什么效率要高一些,Zookeeper 底层原理

  • 20. 假如你带一个团队,让你设计一个系统,你需要考虑哪些?



Java 中级面试题-答案解析


1.3 Java 高级面试题汇总


  • 1. 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?

  • 2. 如何保证消息队列的高可用?

  • 3. 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?

  • 4. 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?

  • 5. 如何保证消息的顺序性?

  • 6. 如何解决消息队列的延时以及过期失效问题? 消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

  • 7. 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路?

  • 8. 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?

  • 9. redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?

  • 10. redis 都有哪些数据类型?分别在哪些场景下使用比较合适?

  • 11. redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?

  • 12. 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨

  • 13. redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?

  • 14. redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

  • 15. 了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?

  • 16. 如何保证缓存与数据库的双写一致性?

  • 17. 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?

  • 18. 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?

  • 19. 如何设计可以动态扩容缩容的分库分表方案?

  • 20. 分库分表之后,id 主键如何处理?

  • 21. 有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

  • 22. 如何设计一个高并发系统?

  • 23. 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?

  • 24. dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?

  • 25. dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

  • 26. 如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?

  • 27. 分布式服务接口的幂等性如何设计(比如不能重复扣款)?

  • 28. 如何自己设计一个类似 Dubbo 的 RPC 框架?

  • 29. 一般实现分布式锁都有哪些方式?使用 redis 如何设计分布式锁?使用 zk 来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?

  • 30. 分布式事务了解吗?你们是如何解决分布式事务问题的?

  • 31. 服务注册和发现是什么意思?Spring Cloud 如何实现?

  • 32. 什么是 Netflix Feign?它的优点是什么?

  • 33. 负载平衡的意义什么?

  • 34. 什么是 Spring Cloud Bus?我们需要它吗?



Java 高级面试题-答案解析


第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)



第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)


2.1 Spring 面试题汇总


  • 1. 谈谈对 Spring IoC 的理解?

  • 2. 谈谈对 Spring DI 的理解?

  • 3. BeanFactory 接口和 ApplicationContext 接口不同点是什么?

  • 4. 请介绍你熟悉的 Spring 核心类,并说明有什么作用?

  • 5. 介绍一下 Spring 的事务的了解?

  • 6. 介绍一下 Spring 的事务实现方式?

  • 7. 解释 AOP 模块

  • 8. Spring 的通知类型有哪些,请简单介绍一下?

  • 9. Spring 通知类型使用场景分别有哪些?

  • 10. 请介绍一下你对 Spring Beans 的理解?

  • 11. Spring 有哪些优点?

  • 12. 在 Spring 中使用 hibernate 的方法步骤

  • 13. Spring 和 Struts 的区别?

  • 14. Spring 框架由哪几部分组成?

  • 15. 谈谈你对 BeanFactory 的理解,BeanFactory 实现举例

  • 16. 谈谈对 Spring 中的 Web 模块的理解

  • 17. BeanFactory 和 Application contexts 有什么区别?

  • 18. 谈谈你对 Spring 依赖注入的理解?

  • 19. 什么是 Bean 装配?

  • 20. 什么是 Bean 的自动装配?

  • 21. 介绍一下自动装配有几种方式?

  • 22. 什么是基于注解的容器配置?

  • 23. 简述 JdbcTemplate 类的作用

  • 24. 解释 AOP

  • 25. 解释 Aspect 切面

  • 26. 简述 Spring AOP 中的通知

  • 27. Spring AOP 中的植入你怎样理解?

  • 28. 请详细介绍一下 Spring MVC 的流程?

  • 29. Spring 配置文件?

  • 30. @RequestMapping 注解用在类上面有什么作用

  • 31. 怎么样把某个请求映射到特定的方法上面

  • 32. 谈谈 Spring 对 DAO 的支持

  • 33. Spring 配置 Bean 实例化有哪些方式?

  • 34. Bean 注入属性有哪几种方式

  • 35. 在 Spring 中如何实现时间处理?

  • 36. Spring 中如何更高效的使用 JDBC ?

  • 37. 请介绍一下设计模式在 Spring 框架中的使用?

  • 38. 讲讲 Spring 框架的优点有哪些?

  • 39. 哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注入?

  • 40. 你怎样定义类的作用域?

  • 41. 解释 Spring 支持的几种 Bean 的作用域

  • 42. 在 Spring 中如何注入一个 Java 集合?

  • 43. 你可以在 Spring 中注入一个 null 和一个空字符串吗?

  • 44. 什么是基于 Java 的 Spring 注解配置? 给一些注解的例子

  • 45. 你更倾向用哪种事务管理类型?

  • 46. Bean 的调用方式有哪些?

  • 47. Spring MVC 里面拦截器是怎么写的

  • 48. 当一个方法向 AJAX 返回特殊对象,比如 Object、List 等,需要做什么处理?

  • 49. 如何使用 Spring MVC 完成 JSON 操作

  • 50. Spring 如何整合 Hibernate

  • 51. Spring 如何整合 Struts2 ?

  • 52. 开发中主要使用 Spring 的什么技术 ?

  • 53. 介绍一下 Spring MVC 常用的一些注解

  • 54. Spring 框架的事务管理有哪些优点

  • 55. IoC 控制反转设计原理?

  • 56. Spring 的生命周期?

  • 57. Spring 如何处理线程并发问题?

  • 58. 核心容器(应用上下文)模块的理解?

  • 59. 为什么说 Spring 是一个容器?

  • 60. Spring 的优点?

  • 61. Spring 框架中的单例 Beans 是线程安全的么?

  • 62. Spring 框架中有哪些不同类型的事件?

  • 63. IoC 的优点是什么?

  • 64. 解释 Spring 框架中 Bean 的生命周期

  • 65. 什么是 Spring 的内部 Bean?

  • 66. 自动装配有哪些局限性 ?

  • 67. Spring 框架的事务管理有哪些优点?

  • 68. 在 Spring AOP 中,关注点和横切关注的区别是什么?

  • 69. 说说 Spring AOP 的底层实现原理?

  • 70. 如何给 Spring 容器提供配置元数据?

  • 71. 哪些是重要的 Bean 生命周期方法? 你能重载它们吗?

  • 72. 讲下 Spring MVC 的执行流程

  • 73. Spring MVC 的控制器是不是单例模式,如果是,有什么问题,怎么解决?

  • 74. Spring 中循环注入的方式?

  • 75. Spring MVC 比较 Struts2

  • 76. 什么是 Spring Boot?

  • 77. Spring Boot 自动配置的原理?

  • 78. Spring Boot 读取配置文件的方式?

  • 79. 什么是微服务架构?

  • 80. Ribbon 和 Feign 的区别?

  • 81. Spring Cloud 断路器的作用?

  • 82. 为什么要用 Spring Boot?

  • 83. Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

  • 84. Spring Boot 的配置文件有哪几种格式?它们有什么区别?

  • 85. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

  • 86. 开启 Spring Boot 特性有哪几种方式?

  • 87. Spring Boot 需要独立的容器运行吗?

  • 88. 运行 Spring Boot 有哪几种方式?

  • 89. 你如何理解 Spring Boot 中的 Starters?

  • 90. 如何在 Spring Boot 启动的时候运行一些特定的代码?

  • 91. Spring Boot 有哪几种读取配置的方式?

  • 92. Spring Boot 实现热部署有哪几种方式?

  • 93. Spring Boot 多套不同环境如何配置?

  • 94. Spring Boot 可以兼容老 Spring 项目吗,如何做?

  • 95. 什么是 Spring Cloud?

  • 96. 介绍一下 Spring Cloud 常用的组件?

  • 97. Spring Cloud 如何实现服务注册的?

  • 98. 什么是负载均衡?有什么作用?

  • 99. 什么是服务熔断?

  • 100. 请介绍一下 Ribbon 的主要作用?



Spring 面试题-答案解析


2.2 SpringMVC 面试题汇总


  • 1. 什么是 SpringMvc?

  • 2. Spring MVC 的优点:

  • 3. SpringMVC 工作原理?

  • 4. SpringMVC 流程?

  • 5. SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决?

  • 6. 如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?

  • 7. SpingMvc 中的控制器的注解一般用哪个,有没有别的注解可以替代?

  • 8. @RequestMapping 注解用在类上面有什么作用?

  • 9. 怎么样把某个请求映射到特定的方法上面?

  • 10. 如果在拦截请求中,我想拦截 get 方式提交的方法,怎么配置?

  • 11. 怎么样在方法里面得到 Request,或者 Session?

  • 12. 我想在拦截的方法里面得到从前台传入的参数,怎么得到?

  • 13. 如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

  • 14. SpringMvc 中函数的返回值是什么?

  • 15. SpringMVC 怎么样设定重定向和转发的?

  • 16. SpringMvc 用什么对象从后台向前台传递数据的?

  • 17. SpringMvc 中有个类把视图和数据都合并的一起的,叫什么?

  • 18. 怎么样把 ModelMap 里面的数据放入 Session 里面?

  • 19. SpringMvc 怎么和 AJAX 相互调用的?

  • 20. 讲下 SpringMvc 的执行流程

  • 21. SpringMvc 里面拦截器是怎么写的?

  • 22. 当一个方法向 AJAX 返回特殊对象,比如 Object,List 等,需要做什么处理?



SpringMVC 面试题-答案解析


2.3 MyBatis 面试题汇总


  • 1. 什么是 MyBatis?讲下 MyBatis 的缓存

  • 2. Mybatis 是如何进行分页的?分页插件的原理是什么?

  • 3. 简述 Mybatis 的插件运行原理,以及如何编写一个插件?

  • 4. Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?

  • 5. #{}和 ${}的区别是什么?

  • 6. 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?

  • 7. Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?

  • 8. MyBatis 与 Hibernate 有哪些不同?

  • 9. MyBatis 的好处是什么?

  • 10. 简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?

  • 11. 什么是 MyBatis 的接口绑定,有什么好处?

  • 12. 接口绑定有几种实现方式,分别是怎么实现的?

  • 13. 什么情况下用注解绑定,什么情况下用 xml 绑定?

  • 14. MyBatis 实现一对一有几种方式?具体怎么操作的?

  • 15. Mybatis 能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别?

  • 16. MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?

  • 17. Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?

  • 18. Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?

  • 19. 当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定 pojo?

  • 20. 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, Dao 的工作原理,是否可以重载?

  • 21. Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?

  • 22. Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?

  • 23. Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?

  • 24. Mybatis 中如何指定使用哪一种 Executor 执行器?

  • 25. Mybatis 执行批量插入,能返回数据库主键列表吗?

  • 26. Mybatis 是否可以映射 Enum 枚举类?

  • 27. 如何获取自动生成的(主)键值?

  • 28. 在 mapper 中如何传递多个参数?

  • 29. resultType resultMap 的区别?

  • 30. 使用 MyBatis 的 mapper 接口调用时有哪些要求?

  • 31. Mybatis 比 IBatis 比较大的几个改进是什么?

  • 32. IBatis 和 MyBatis 在核心处理类分别叫什么?在细节上的不同有哪些?



MyBatis 面试题-答案解析


第三部分:性能调优(JVM+MySQL+Tomcat)



第三部分:性能调优(JVM+MySQL+Tomcat)


3.1 JVM 面试题汇总


  • 1. Java 类加载过程?

  • 2. 描述一下 JVM 加载 Class 文件的原理机制?

  • 3. Java 内存分配

  • 4. GC 是什么? 为什么要有 GC?

  • 5. 简述 Java 垃圾回收机制

  • 6. 如何判断一个对象是否存活?(或者 GC 对象的判定方法)

  • 7. 垃圾回收的优点和原理。并考虑 2 种回收机制

  • 8. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

  • 9. Java 中会存在内存泄漏吗,请简单描述

  • 10. 深拷贝和浅拷贝

  • 11. System.gc() 和 Runtime.gc() 会做什么事情?

  • 12. finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?

  • 13. 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?

  • 14. 什么是分布式垃圾回收(DGC)?它是如何工作的?

  • 15. 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?

  • 16. 在 Java 中,对象什么时候可以被垃圾回收?

  • 17. 简述 Java 内存分配与回收策略以及 Minor GC 和 MajorGC

  • 18. JVM 的永久代中会发生垃圾回收么?

  • 19. Java 中垃圾收集的方法有哪些?

  • 20. 什么是类加载器,类加载器有哪些?

  • 21. 类加载器双亲委派模型机制?



JVM 面试题-答案解析


3.2 MySQL 面试题汇总


  • MySQL21 个最佳性能优化实践

  • 1. 为查询缓存优化你的查询

  • 2. EXPLAIN 你的 SELECT 查询

  • 3. 当只要一行数据时使用 LIMIT 1

  • 4. 为搜索字段建索引

  • 5. 在 Join 表的时候使用相当类型的例,并将其索引

  • 6. 千万不要 ORDER BY RAND()

  • 7. 避免 SELECT *

  • 8. 永远为每张表设置一个 ID

  • 9. 使用 ENUM 而不是 VARCHAR

  • 10. 从 PROCEDURE ANALYSE() 取得建议

  • 11. 尽可能的使用 NOT NULL

  • 12. Prepared Statements

  • 13. 无缓冲的查询

  • 14. 把 IP 地址存成 UNSIGNED INT

  • 15. 固定长度的表会更快

  • 16. 垂直分割

  • 17. 拆分大的 DELETE 或 INSERT 语句

  • 18. 越小的列会越快

  • 19. 选择正确的存储引擎

  • 20. 使用一个对象关系映射器(Object Relational Mapper)

  • 21. 小心“永久链接”

  • MySQL 高频面试题汇总

  • 1. 事务四大特性(ACID)原子性、一致性、隔离性、持久性?

  • 2. 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL 默认是哪个级别?

  • 3. MySQL 常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?

  • 4. MySQL 的 MyISAM 与 InnoDB 两种存储引擎在,事务、锁级别,各自的适用场景?

  • 5. 查询语句不同元素(where、jion、limit、group by、having 等等)执行先后顺序?

  • 6. 什么是临时表,临时表什么时候删除?

  • 7. MySQL B+Tree 索引和 Hash 索引的区别?

  • 8. sql 查询语句确定创建哪种类型的索引?如何优化查询?

  • 9. 聚集索引和非聚集索引区别?

  • 10. 有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?

  • 11. 非关系型数据库和关系型数据库区别,优势比较?

  • 12. 数据库三范式,根据某个场景设计数据表?

  • 13. 数据库的读写分离、主从复制,主从复制分析的 7 个问题?

  • 14. 使用 explain 优化 sql 和索引?

  • 15. MySQL 慢查询怎么解决?

  • 16. 什么是 内连接、外连接、交叉连接、笛卡尔积等?

  • 17. mysql 都有什么锁,死锁判定原理和具体场景,死锁怎么解决?

  • 18. varchar 和 char 的使用场景?

  • 19. mysql 高并发环境解决方案?

  • 20. 数据库崩溃时事务的恢复机制(REDO 日志和 UNDO 日志)?



MySQL21 个最佳性能优化实践



MySQL 高频面试题-答案解析


3.3 Tomcat 面试题汇总


  • 1. 你怎样给 tomcat 去调优?

  • 2. 如何加大 tomcat 连接数

  • 3. tomcat 中如何禁止列目录下的文件

  • 4. 怎样加大 tomcat 的内存

  • 5. Tomcat 有几种部署方式

  • 6. Tomcat 的优化经验

  • 7. Tomcat 的缺省端口是多少,怎么修改?

  • 8. tomcat 有哪几种 Connector 运行模式( 优化) ?

  • 9. Tomcat 有几种部署方式?

  • 10. tomcat 容器是如何创建 servlet 类实例?用到了什么原理?

  • 11. tomcat 如何优化?

  • 12. 内存调优

  • 13. 垃圾回收策略调优

  • 14. 添加 JMS 远程监控

  • 15. 专业点的分析工具有

  • 16. 关于 Tomcat 的 的 session 数目

  • 17. 监视 Tomcat 的内存使用情况

  • 18. 打印类的加载情况及对象的回收情况

  • 19. Tomcat 一个请求的完整过程

  • 20. Tomcat 工作模式?



Tomcat 面试题-答案解析


第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)



第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)


4.1 分布式限流之 ZK 面试题汇总


  • 1. ZooKeeper 是什么?

  • 2. ZooKeeper 提供了什么?

  • 3. Zookeeper 文件系统

  • 4. 四种类型的 znode

  • 5. Zookeeper 通知机制

  • 6. Zookeeper 做了什么?

  • 7. zk 的命名服务(文件系统)

  • 8. zk 的配置管理(文件系统、通知机制)

  • 9. Zookeeper 集群管理(文件系统、通知机制)

  • 10. Zookeeper 分布式锁(文件系统、通知机制)

  • 11. 获取分布式锁的流程

  • 12. Zookeeper 队列管理(文件系统、通知机制)

  • 13. Zookeeper 数据复制

  • 14. Zookeeper 工作原理

  • 15. zookeeper 是如何保证事务的顺序一致性的?

  • 16. Zookeeper 下 Server 工作状态

  • 17. zookeeper 是如何选取主 leader 的?

  • 18. 分布式通知和协调

  • 19. 机器中为什么会有 leader?

  • 20. zk 节点宕机如何处理?

  • 21. Zookeeper 同步流程

  • 22. zookeeper 负载均衡和 nginx 负载均衡区别

  • 23. zookeeper watch 机制



分布式限流之 ZK 面试题-答案解析


4.2 分布式限流之 Nginx 面试题汇总


  • 1. 请解释一下什么是 Nginx?

  • 2. 请列举 x Nginx 的一些特性。

  • 3. 请列举 x Nginx 和 和 Apache 之间的不同点

  • 4. 请解释 x Nginx 如何处理 P HTTP 请求。

  • 5. 在 x Nginx 中,如何使用未定义的服务器名称来阻止处理请求?

  • 6. 使用 “ 反向代理服务器 ”

  • 7. 请列举 x Nginx 服务器的最佳用途。

  • 8. 请解释 x Nginx 服务器上的 r Master 和 和 r Worker 进程分别是什么?

  • 9. 请解释你如何通过不同于 0 80 的端口开启 Nginx?

  • 10. 请解释是否有可能将 x Nginx 的错误替换为 2 502 错误?

  • 11. 在 x Nginx 中,解释如何在 L URL 中保留双斜线? ?

  • 12. 请解释 e ngx_http_upstream_module 的作用是什么?

  • 13. 请解释什么是 K C10K 问题?

  • 14. 请陈述 s stub_status 和 和 r sub_filter 指令的作用是什么?

  • 15. 解释 x Nginx 是否支持将请求压缩到上游?

  • 16. 解释如何在 x Nginx 中获得当前的时间?

  • 17. 用 x Nginx 服务器解释 s -s 的目的是什么?

  • 18. 解释如何在 x Nginx 服务器上添加模块?



分布式限流之 Nginx 面试题-答案解析


4.3 分布式缓存之 Redis 面试题汇总


  • 1. redis 简介

  • 2. 为什么要用 redis /为什么要用缓存(高性能、高并发)

  • 3. 为什么要用 redis 而不用 map/guava 做缓存?

  • 4. redis 和 memcached 的区别

  • 5. redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)

  • 6. redis 设置过期时间

  • 7. redis 内存淘汰机制(MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?)

  • 8. redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)

  • 9. redis 事务

  • 10. Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)

  • 11. 分布式环境下常见的应用场景(分布式锁、分布式自增 ID)

  • 12. Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)

  • 13. 如何解决 Redis 的并发竞争 Key 问题

  • 14. 如何保证缓存与数据库双写时的数据一致性?



分布式缓存之 Redis 面试题-答案解析


4.4 分布式缓存之 MongoDB 面试题汇总


  • 1. 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用 NoSQL 数据库?说一说 NoSQL 数据库的几个优点?

  • 2. NoSQL 数据库有哪些类型?

  • 3. MySQL 与 MongoDB 之间最基本的差别是什么?

  • 4. 你怎么比较 MongoDB、CouchDB 及 CouchBase?

  • 5. MongoDB 成为最好 NoSQL 数据库的原因是什么?

  • 6. 32 位系统上有什么细微差别?

  • 7. journal 回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?

  • 8. 分析器在 MongoDB 中的作用是什么?

  • 9. 名字空间(namespace)是什么?

  • 10. 如果用户移除对象的属性,该属性是否从存储层中删除?

  • 11. 能否使用日志特征进行安全备份?

  • 12. 允许空值 null 吗?

  • 13. 更新操作立刻 fsync 到磁盘?

  • 14. 如何执行事务/加锁?

  • 15. 为什么我的数据文件如此庞大?

  • 16. 启用备份故障恢复需要多久?

  • 17. 什么是 master 或 primary?

  • 18. 什么是 secondary 或 slave?

  • 19. 我必须调用 getLastError 来确保写操作生效了么?

  • 20. 我应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB 环境?

  • 21. 分片(sharding)和复制(replication)是怎样工作的?

  • 22. 数据在什么时候才会扩展到多个分片(shard)里?

  • 23. 当我试图更新一个正在被迁移的块(chunk)上的文档时会发生什么?

  • 24. 如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?

  • 25. 我可以把 moveChunk 目录里的旧文件删除吗?

  • 26. 我怎么查看 Mongo 正在使用的链接?

  • 27. 如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?

  • 28. 如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?

  • 29. 当更新一个正在被迁移的块(Chunk)上的文档时会发生什么?

  • 30. MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗?

  • 31. 如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?

  • 32. MongoDB 支持存储过程吗?如果支持的话,怎么用?

  • 33. 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?



分布式缓存之 MongoDB 面试题-答案解析


4.5 分布式缓存之 memcached 面试题汇总


  • 1. memcached 是怎么工作的?

  • 2. memcached 最大的优势是什么?

  • 3. memcached 和服务器的 local cache (比如 PHP 的 的 APC 、mmap 文件等)相比,有什么优缺点?

  • 4. memcached 和 和 MySQL 的 的 query cache 相比,有什么优缺点?

  • 5. memcached 的 的 cache 机制是怎样的?

  • 6. memcached 如何实现冗余机制?

  • 7. 我需要把 memcached 中的 item 批量导出导入,怎么办?

  • 8. memcached 如何处理容错的?

  • 9. 如何将 memcached 中 中 item 批量导入导出?

  • 10. memcached 是如何做身份验证的?

  • 11. memcached 的多线程是什么?如何使用它们?

  • 12. memcached 能接受的 key 的最大长度是多少?

  • 13. memcached 对 对 item 的过期时间有什么限制?

  • 14. memcached 最大能存储多大的单个 item ?

  • 15. 为什么单个 item 的大小被限制在 1M byte 之内?



分布式缓存之 memcached 面试题-答案解析


4.6 分布式通讯之 MQ 面试题汇总


  • 1. 什么是 ActiveMQ?

  • 2. ActiveMQ 服务器宕机怎么办?

  • 3. 丢消息怎么办?

  • 4. 持久化消息非常慢

  • 5. 消息的不均匀消费。

  • 6. 死信队列?

  • 7. ActiveMQ 中的消息重发时间间隔和重发次数吗?

  • 8. RabbitMQ 中的 broker 是指什么?cluster 又是指什么?

  • 9. 什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布的?

  • 10. RAM node 和 disk node 的区别?

  • 11. RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?

  • 12. RabbitMQ 概念里的 channel、exchange 和 queue 这些东东是逻辑概念,还是对应着进程实体?这些东东分别起什么作用?

  • 13. vhost 是什么?起什么作用?

  • 14. 在单 node 系统和多 node 构成的 cluster 系统中声明 queue、exchange ,以及进行 binding 会有什么不同?

  • 15. 客户端连接到 cluster 中的任意 node 上是否都能正常工作?

  • 16. cluster 中 node 的失效会对 consumer 产生什么影响?若是在 cluster 中创建了 mirrored queue ,这时 node 失效会对 consumer 产生什么影响?

  • 17. 能够在地理上分开的不同数据中心使用 RabbitMQ cluster 么?

  • 18. 为什么 heavy RPC 的使用场景下不建议采用 disk node ?

  • 19. 向不存在的 exchange 发 publish 消息会发生什么?向不存在的 queue 执行 consume 动作会发生什么?

  • 20. routing_key 和 binding_key 的最大长度是多少?

  • 21. RabbitMQ 允许发送的 message 最大可达多大?

  • 22. 什么情况下 producer 不主动创建 queue 是安全的?

  • 23. “dead letter”queue 的用途?

  • 24. 为什么说保证 message 被可靠持久化的条件是 queue 和 exchange 具有 durable 属性,同时 message 具有 persistent 属性才行?

  • 25. 什么情况下会出现 blackholed 问题?

  • 26. 如何防止出现 blackholed 问题?

  • 27. Consumer Cancellation Notification 机制用于什么场景?

  • 28. Basic.Reject 的用法是什么?

  • 29. 为什么不应该对所有的 message 都使用持久化机制?

  • 30. RabbitMQ 中的 cluster、mirrored queue,以及 warrens 机制分别用于解决什么问题?存在哪些问题?



分布式通讯之 MQ 面试题-答案解析


4.7 分布式通讯之 Kafka 面试题汇总


  • 1. Kafka 的用途有哪些?使用场景如何?

  • 2. Kafka 中的 ISR、AR 又代表什么?ISR 的伸缩又指什么

  • 3. Kafka 中的 HW、LEO、LSO、LW 等分别代表什么?

  • 4. Kafka 中是怎么体现消息顺序性的?

  • 5. Kafka 中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?

  • 6. Kafka 生产者客户端的整体结构是什么样子的?

  • 7. Kafka 生产者客户端中使用了几个线程来处理?分别是什么?

  • 8. Kafka 的旧版 Scala 的消费者客户端的设计有什么缺陷?

  • 9. “消费组中的消费者个数如果超过 topic 的分区,那么就会有消费者消费不到数据”这句话是否正确?如果正确,那么有没有什么 hack 的手段?

  • 10. 有哪些情形会造成重复消费?

  • 11. 哪些情景下会造成消息漏消费?

  • 12. KafkaConsumer 是非线程安全的,那么怎么样实现多线程消费?

  • 13. 简述消费者与消费组之间的关系

  • 14. 当你使用 kafka-topics.sh 创建(删除)了一个 topic 之后,Kafka 背后会执行什么逻辑?

  • 15. topic 的分区数可不可以增加?如果可以怎么增加?如果不可以,那又是为什么?

  • 16. topic 的分区数可不可以减少?如果可以怎么减少?如果不可以,那又是为什么?

  • 17. 创建 topic 时如何选择合适的分区数?

  • 18. Kafka 目前有哪些内部 topic,它们都有什么特征?各自的作用又是什么?

  • 19. 优先副本是什么?它有什么特殊的作用?

  • 20. Kafka 有哪几处地方有分区分配的概念?简述大致的过程及原理

  • 21. 简述 Kafka 的日志目录结构

  • 22. Kafka 中有哪些索引文件?

  • 23. 如果我指定了一个 offset,Kafka 怎么查找到对应的消息?

  • 24. 如果我指定了一个 timestamp,Kafka 怎么查找到对应的消息?

  • 25. 聊一聊你对 Kafka 的 Log Retention 的理解

  • 26. 聊一聊你对 Kafka 的 Log Compaction 的理解

  • 27. 聊一聊你对 Kafka 底层存储的理解

  • 28. 聊一聊 Kafka 的延时操作的原理

  • 29. 聊一聊 Kafka 控制器的作用

  • 30. Kafka 的旧版 Scala 的消费者客户端的设计有什么缺陷?

  • 31. 消费再均衡的原理是什么?(提示:消费者协调器和消费组协调器)

  • 32. Kafka 中的幂等是怎么实现的?

  • 33. Kafka 中的事务是怎么实现的?

  • 34. 失效副本是指什么?有哪些应对措施?

  • 35. 多副本下,各个副本中的 HW 和 LEO 的演变过程

  • 36. Kafka 在可靠性方面做了哪些改进?(HW, LeaderEpoch)

  • 37. 为什么 Kafka 不支持读写分离?

  • 38. Kafka 中的延迟队列怎么实现

  • 39. Kafka 中怎么实现死信队列和重试队列?

  • 40. Kafka 中怎么做消息审计?

  • 41. Kafka 中怎么做消息轨迹?

  • 42. 怎么计算 Lag?(注意 read_uncommitted 和 read_committed 状态下的不同)

  • 43. Kafka 有哪些指标需要着重关注?

  • 44. Kafka 的哪些设计让它有如此高的性能?



分布式通讯之 Kafka 面试题-答案解析


第五部分:微服务(SpringBoot+SpringCloud+Dubbo)



第五部分:微服务(SpringBoot+SpringCloud+Dubbo)


5.1 SpringBoot 面试题汇总


  • 1. Spring Boot、Spring MVC 和 Spring 有什么区别?

  • 2. 什么是自动配置?

  • 3. 什么是 Spring Boot Stater ?

  • 4. 你能否举一个例子来解释更多 Staters 的内容?

  • 5. Spring Boot 还提供了其它的哪些 Starter Project Options?

  • 6. Spring 是如何快速创建产品就绪应用程序的?

  • 7. 创建一个 Spring Boot Project 的最简单的方法是什么?

  • 8. Spring Initializr 是创建 Spring Boot Projects 的唯一方法吗?

  • 9. 为什么我们需要 spring-boot-maven-plugin?

  • 10. 如何使用 SpringBoot 自动重装我的应用程序?

  • 11. 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?

  • 12. 如何在 Spring Boot 中添加通用的 JS 代码?

  • 13. 什么是 Spring Data?

  • 14. 什么是 Spring Data REST?

  • 15. path=”users”, collectionResourceRel=”users” 如何与 Spring Data Rest 一起使用?

  • 16. 当 Spring Boot 应用程序作为 Java 应用程序运行时,后台会发生什么?

  • 17. 我们能否在 spring-boot-starter-web 中用 jetty 代替 tomcat?

  • 18. 如何使用 Spring Boot 生成一个 WAR 文件?

  • 19. 如何使用 Spring Boot 部署到不同的服务器?

  • 20. RequestMapping 和 GetMapping 的不同之处在哪里?

  • 21. 为什么我们不建议在实际的应用程序中使用 Spring Data Rest?

  • 22. 在 Spring Initializer 中,如何改变一个项目的包名字?

  • 23. 可以配置 application.propertierde 的完整的属性列表在哪里可以找到?

  • 24. JPA 和 Hibernate 有哪些区别?

  • 25. 业务边界应该从哪一层开始?

  • 26. 使用 Spring Boot 启动连接到内存数据库 H2 的 JPA 应用程序需要哪些依赖项?

  • 27. 如何不通过任何配置来选择 Hibernate 作为 JPA 的默认实现?

  • 28. 指定的数据库连接信息在哪里?它是如何知道自动连接至 H2 的?

  • 29. 我们如何连接一个像 MySQL 或者 Orcale 一样的外部数据库?

  • 30. Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?

  • 31. 如果 H2 不在类路径里面,会出现上面情况?

  • 32. 你能否举一个以 ReadOnly 为事务管理的例子?

  • 33. 发布 Spring Boot 用户应用程序自定义配置的最好方法是什么?

  • 34. 配置文件的需求是什么?

  • 35. 如何使用配置文件通过 Spring Boot 配置特定环境的配置?



SpringBoot 面试题-答案解析


5.2 SpringCloud 面试题汇总


  • 1. 什么是 Spring Cloud?

  • 2. 使用 Spring Cloud 有什么优势?

  • 3. 服务注册和发现是什么意思?Spring Cloud 如何实现?

  • 4. 负载平衡的意义什么?

  • 5. 什么是 Hystrix?它如何实现容错?

  • 6. 什么是 Hystrix 断路器?我们需要它吗?

  • 7. 什么是 Spring Cloud Bus?我们需要它吗?

  • 8. 什么是 Netflix Feign?它的优点是什么?



SpringCloud 面试题-答案解析


5.3 Dubbo 面试题汇总


  • 1. Dubbo 支持哪些协议,每种协议的应用场景,优缺点?

  • 2. Dubbo 超时时间怎样设置?

  • 3. Dubbo 有些哪些注册中心?

  • 4. Dubbo 集群的负载均衡有哪些策略

  • 5. Dubbo 是什么?

  • 6. Dubbo 的主要应用场景?

  • 7. Dubbo 的核心功能?

  • 8. Dubbo 的核心组件?

  • 9. Dubbo 服务注册与发现的流程?

  • 10. Dubbo 的架构设计?

  • 11. Dubbo 的服务调用流程?

  • 12. Dubbo 支持哪些协议,每种协议的应用场景,优缺点?

  • 13. Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?

  • 14. Dubbo 与 Spring 的关系?

  • 15. Dubbo 使用的是什么通信框架?

  • 16. Dubbo 集群提供了哪些负载均衡策略?

  • 17. Dubbo 的集群容错方案有哪些?

  • 18. Dubbo 和 Spring Cloud 的区别?

  • 19. Dubbo 在安全机制方面是如何解决?

  • 20. Dubbo 中 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?

  • 21. dubbo 服务负载均衡策略?

  • 22. Dubbo 在安全机制方面是如何解决的?

  • 23. dubbo 连接注册中心和直连的区别?

  • 24. dubbo 服务集群配置(集群容错模式)?

  • 25. dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多?

  • 26. dubbo 通信协议 dubbo 协议为什么不能传大包?

  • 27. dubbo 通信协议 dubbo 协议适用范围和适用场景?



Dubbo 面试题-答案解析


 

Dubbo 面试题-答案解析


第六部分:其他:并发编程+设计模式+数据结构与算法+网络



第六部分:其他:并发编程+设计模式+数据结构与算法+网络


6.1 并发编程面试题汇总


  • 1. Java 中守护线程和本地线程区别

  • 2. 线程与进程的区别

  • 3. 什么是多线程中的上下文切换

  • 4. 死锁与活锁的区别,死锁与饥饿的区别

  • 5. Java 中用到的线程调度算法是什么

  • 6. 什么是线程组,为什么在 Java 中不推荐使用

  • 7. 为什么使用 Executor 框架

  • 8. 在 Java 中 Executor 和 Executors 的区别

  • 9. 什么是原子操作,在 Java Concurrency API 中有哪些原子类(atomic classes)

  • 10. Java Concurrency API 中的 Lock 接口(Lock interface)是什么,对比同步它有什么优势

  • 11. 什么是 Executors 框架

  • 12. 什么是阻塞队列,阻塞队列的实现原理是什么,如何使用阻塞队列来实现生产者

  • 13. 什么是 Callable 和 Future

  • 14. 什么是 FutureTask,使用 ExecutorService 启动任务

  • 15. 什么是并发容器的实现

  • 16. 多线程同步和互斥有几种实现方法,都是什么

  • 17. 什么是竞争条件?你怎样发现和解决竞争

  • 18. 如何使用 thread dump,如何分析 Thread dump

  • 19. 为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法

  • 20. Java 中你怎样唤醒一个阻塞的线程

  • 21. 在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别

  • 22. 什么是不可变对象,它对写并发应用有什么帮助

  • 23. Java 中用到的线程调度算法是什么

  • 24. 什么是线程组,为什么在 Java 中不推荐使用

  • 25. 为什么使用 Executor 框架比使用应用创建和管理线程好

  • 26. Java 中有几种方法可以实现一个线程

  • 27. 如何停止一个正在运行的线程

  • 28. notify()和 notifyAll()有什么区别

  • 29. 什么是 Daemon 线程,它有什么意义

  • 30. Java 如何实现多线程之间的通讯和协作

  • 31. 什么是可重入锁(ReentrantLock)

  • 32. 当一个线程进入某个对象的一个 synchronized 的实例方法后,其它线程是否可进入此对象的其它方法

  • 33. 乐观锁和悲观锁的理解及如何实现,有哪些实现方式

  • 34. SynchronizedMap 和 ConcurrentHashMap 有什么区别

  • 35. CopyOnWriteArrayList 可以用于什么应用场景

  • 36. 什么叫线程安全,servlet 是线程安全吗

  • 37. volatile 有什么用,能否用一句话说明下 volatile 的应用场景

  • 38. 为什么代码会重排序

  • 39. 在 java 中 wait 和 sleep 方法的不同

  • 40. 一个线程运行时发生异常会怎样

  • 41. 如何在两个线程间共享数据

  • 42. Java 中 notify 和 notifyAll 有什么区别

  • 43. 为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面

  • 44. 什么是 ThreadLocal 变量

  • 45. Java 中 interrupted 和 isInterrupted 方法的区别

  • 46. 为什么 wait 和 notify 方法要在同步块中调用

  • 47. 为什么你应该在循环中检查等待条件

  • 48. Java 中的同步集合与并发集合有什么区别

  • 49. 什么是线程池,为什么要使用它

  • 50. 怎么检测一个线程是否拥有锁

  • 51. 你如何在 Java 中获取线程堆栈

  • 52. JVM 中哪个参数是用来控制线程的栈堆栈小的

  • 53. Thread 类中的 yield 方法有什么作用

  • 54. Java 中 ConcurrentHashMap 的并发度是什么

  • 55. Java 中 Semaphore 是什么

  • 56. Java 线程池中 submit() 和 execute()方法有什么区别

  • 57. 什么是阻塞式方法

  • 58. Java 中的 ReadWriteLock 是什么、

  • 59. volatile 变量和 atomic 变量有什么不同

  • 60. 可以直接调用 Thread 类的 run ()方法么

  • 61. 如何让正在运行的线程暂停一段时间

  • 62. 你对线程优先级的理解是什么

  • 63. 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )

  • 64. 你如何确保 main()方法所在的线程是 Java 程序最后结束的线程

  • 65. 线程之间是如何通信的

  • 66. 为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里

  • 67. 为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用

  • 68. 为什么 Thread 类的 sleep()和 yield ()方法是静态的

  • 69. 如何确保线程安全

  • 70. 同步方法和同步块,哪个是更好的选择

  • 71. 如何创建守护线程

  • 72. 什么是 Java Timer 类,如何创建一个有特定时间间隔的任务


6.2 23 种设计模式知识要点汇总


  • 1.单例模式(Singleton Pattern)

  • 2.工厂模式

  • 3.抽象工厂模式(Abstract Factory Pattern)

  • 4.模板方法模式(Template Method Pattern)

  • 5.建造者模式(Builder Pattern)

  • 6.代理模式(Proxy Pattern)

  • 7.原型模式(Prototype Pattern)

  • 8.中介者模式

  • 9.命令模式

  • 10.责任链模式

  • 11.装饰模式(Decorator Pattern)

  • 12.策略模式(Strategy Pattern)

  • 13.适配器模式(Adapter Pattern)

  • 14.迭代器模式(Iterator Pattern)

  • 15.组合模式((Composite Pattern))

  • 16.观察者模式(Observer Pattern)

  • 17.门面模式(Facade Pattern)

  • 18.备忘录模式(Memento Pattern)

  • 19.访问者模式(Visitor Pattern)

  • 20.状态模式(复杂)

  • 21.解释器模式(Interpreter Pattern)(少用)

  • 22.享元模式(Flyweight Pattern)

  • 23.桥梁模式(Bridge Pattern)



23 种设计模式知识要点-解析


6.3 数据结构与算法面试题汇总


  • 1. 设计一个有 getMin 功能的栈

  • 2. 由两个栈组成的队列

  • 3. 如何仅用递归函数和栈操作逆序一个栈

  • 4. 猫狗队列

  • 5. 用一个栈实现另一个栈的排序

  • 6. 用栈来求解汉诺塔问题

  • 7. 生成窗口最大值数组

  • 8. 构造数组的 MaxTree

  • 9. 求最大子矩阵的大小

  • 10. 最大值减去最小值小于或等于 num 的子数组数量

  • 11. 打印两个有序链表的公共部分

  • 12. 在单链表和双链表中删除倒数第 K 个节点

  • 13. 删除链表的中间节点和 a/b 处的节点

  • 14. 反转单向和双向链表

  • 15. 反转部分单向链表

  • 16. 环形单链表的约瑟夫问题

  • 17. 判断一个链表是否为回文结构

  • 18. 将单向链表按某值划分成左边小、中间相等、右边大的形式

  • 19. 复制含有随机指针节点的链表

  • 20. 两个单链表生成相加链表

  • 21. 两个单链表相交的一系列问题

  • 22. 将单链表的每 K 个节点之间逆序

  • 22. 删除无序单链表中值重复出现的节点

  • 24. 在单链表中删除指定值的节点

  • 25. 将搜索二叉树转换成双向链表

  • 26. 单链表的选择排序

  • 27. 一种怪异的节点删除方式

  • 28. 向有序的环形单链表中插入新节点

  • 29. 合并两个有序的单链表

  • 30. 按照左右半区的方式重新组合单链表

  • 31. 分别用递归和非递归方式实现二叉树先序、中序和后序遍历

  • 32. 打印二叉树的边界节点

  • 33. 如何较为直观地打印二叉树

  • 34. 二叉树的序列化和反序列化

  • 35. 遍历二叉树的神级方法

  • 36. 在二叉树中找到累加和为指定值的最长路径长度

  • 37. 找到二叉树中的最大搜索二叉子树

  • 38. 找到二叉树中符合搜索二叉树条件的最大拓扑结构

  • 39. 二叉树的按层打印与 ZigZag 打印

  • 40. 调整搜索二叉树中两个错误的节点

  • 41. 判断 t1 树是否包含 t2 树全部的拓扑结构

  • 42. 判断 t1 树中是否有与 t2 树拓扑结构完全相同的子树

  • 43. 判断二叉树是否为平衡二叉树

  • 44. 根据后序数组重建搜索二叉树

  • 45. 判断一棵二叉树是否为搜索二叉树和完全二叉树

  • 46. 通过有序数组生成平衡搜索二叉树

  • 47. 在二叉树中找到一个节点的后继节点

  • 48. 在二叉树中找到两个节点的最近公共祖先

  • 49. Tarjan 算法与并查集解决二叉树节点间最近公共祖先的批量查询问题

  • 50. 二叉树节点间的最大距离问题

  • 先序、中序和后序数组两两结合重构二叉树

  • 通过先序和中序数组生成后序数组

  • 统计和生成所有不同的二叉树

  • 统计完全二叉树的节点数

  • 斐波那契系列问题的递归和动态规划

  • 矩阵的最小路径和

  • 换钱的最少货币数

  • 换钱的方法数

  • 最长递增子序列

  • 汉诺塔问题

  • 最长公共子序列问题

  • 最长公共子串问题

  • 最小编辑代价

  • 字符串的交错组成

  • 龙与地下城游戏问题

  • 数字字符串转换为字母组合的种数

  • 表达式得到期望结果的组成种数

  • 排成一条线的纸牌博弈问题

  • 跳跃游戏

  • 数组中的最长连续序列

  • N 皇后问题

  • 判断两个字符串是否互为变形词

  • 字符串中数字子串的求和

  • 去掉字符串中连续出现 k 个 0 的子串

  • 判断两个字符串是否互为旋转词

  • 将整数字符串转成整数值

  • 替换字符串中连续出现的指定字符串

  • 字符串的统计字符串

  • 判断字符数组中是否所有的字符都只出现过一次

  • 在有序但含有空的数组中查找字符串

  • 字符串的调整与替换

  • 翻转字符串

  • 数组中两个字符串的最小距离

  • 添加最少字符使字符串整体都是回文字符串

  • 括号字符串的有效性和最长有效长度

  • 公式字符串求值

  • 0 左边必有 1 的二进制字符串数量

  • 拼接所有字符串产生字典顺序最小的大写字符串

  • 找到字符串的最长无重复字符子串

  • 找到被指的新类型字符

  • 最小包含子串的长度

  • 回文最少分割数

  • 字符串匹配问题

  • 字典树(前缀树)的实现

  • 认识布隆过滤器

  • 只用 2 GB 内存在 20 亿个整数中找到出现次数最多的数 .

  • 40 亿个非负整数中找到没出现的数

  • 找到 100 亿个 URL 中重复的 URL 以及搜索词汇的 top K 问题

  • 40 亿个非负整数中找到出现两次的数和所有数的中位数

  • 一致性哈希算法的基本原理

  • 不用额外变量交换两个整数的值

  • 不用任何比较判断找出两个数中较大的数

  • 只用位运算不用算术运算实现整数的加减乘除运算

  • 整数的二进制表达中有多少个 1

  • 在其他数都出现偶数次的数组中找到出现奇数次的数

  • 在其他数都出现 k 次的数组中找到只出现一次的数

  • 转圈打印矩阵

  • 将正方形矩阵顺时针转动 90 °

  • 找到无序数组中最小的 k 个数

  • 需要排序的最短子数组长度

  • 在数组中找到出现次数大于 N/K 的数

  • 在行列都排好序的矩阵中找数

  • 最长的可整合子数组的长度

  • 不重复打印排序数组中相加和为给定值的所有二元组和三元组

  • 未排序正数数组中累加和为给定值的最长子数组长度

  • 未排序数组中累加和为给定值的最长子数组系列问题

  • 未排序数组中累加和小于或等于给定值的最长子数组长度

  • 计算数组的小和

  • 自然数数组的排序

  • 奇数下标都是奇数或者偶数下标都是偶数

  • 子数组的最大累加和问题

  • 子矩阵的最大累加和问题

  • 在数组中找到一个局部最小的位置

  • 数组中子数组的最大累乘积

  • 打印 N 个数组整体最大的 Top K

  • 边界都是 1 的最大正方形大小

  • 不包含本位置值的累乘数组

  • 数组的 partition 调整

  • 求最短通路值

  • 数组中未出现的最小正整数

  • 数组排序之后相邻数的最大差值

  • 从 5 随机到 7 随机及其扩展

  • 一行代码求两个数的最大公约数

  • 有关阶乘的两个问题

  • 判断一个点是否在矩形内部

  • 判断一个点是否在三角形内部

  • 折纸问题

  • 蓄水池算法

  • 设计有 setAll 功能的哈希表

  • 最大的 leftMax 与 rightMax 之差的绝对值

  • 设计可以变更的缓存结构

  • 设计 RandomPool 结构

  • 调整[0 ,x)区间上的数出现的概率

  • 路径数组变为统计数组

  • 正数数组的最小不可组成和

  • 一种字符串和数字的对应关系

  • 1 到 n 中 1 出现的次数

  • 从 N 个数中等概率打印 M 个数

  • 判断一个数是否是回文数

  • 在有序旋转数组中找到最小值

  • 在有序旋转数组中找到一个数

  • 数字的英文表达和中文表达

  • 分糖果问题

  • 一种消息接收并打印的结构设计

  • 设计一个没有扩容负担的堆结构

  • 随时找到数据流的中位数

  • 在两个长度相等的排序数组中找到上中位数

  • 在两个排序数组中找到第 K 小的数

  • 两个有序数组间相加和的 TOP K 问题

  • 出现次数的 TOP K 问题

  • Manacher 算法

  • KMP 算法

  • 丢棋子问题

  • 画匠问题

  • 邮局选址问题



算法与数据结构-答案解析


6.4 网络面试题汇总


  • 1. 三次握手?

  • 2. 四次挥手?

  • 3. 第 3 次握手失败会怎么办?

  • 4. 为什么 TCP 链接需要三次握手,两次不可以么,为什么?

  • 5. 为什么连接的时候是三次握手,关闭的时候却是四次握手?

  • 6. 拥塞处理?

  • 7. ARQ 协议

  • 8. TCP 和 UDP 区别?

  • 9. HTTPS 的优点与缺点?

  • 10. HTTP 是不保存状态的协议,如何保存用户状态?

  • 11. socket?

  • 12. Session 与 Cookie 的对比?

  • 13. 从输入网址到获得页面的过程?

  • 14. URI 和 URL 的区别是什么?

  • 15. 状态码



网络面试题-答案解析


整整 28 天,闭谷整理[Java 一线大厂高岗面试题解析合集],备战金三银四。所有的题目已经全部奉上,包括:Java 基础、中级、高级、Spring、SpringMVC、MyBatis、JVM、MySQL、Tomcat、ZK、Nginx、Redis、MongoDB、Memcached、MQ、kafka、SpringBoot、SpringCloud、Dubbo、并发编程、设计模式、数据结构与算法、网络等全部的 Java 面试知识点


完整的答案解析+题目的 PDF 文档皆可免费分享给有需要的你添加小助理 vx:mxzFAFAFA 即可!!



重要的事情喜欢再强调一遍:添加小助理 vx:mxzFAFAFA 即可!!!即可分享[Java 一线大厂高岗面试题解析合集]!!!


发布于: 2021 年 02 月 27 日阅读数: 41
用户头像

比伯

关注

还未添加个人签名 2020.11.09 加入

还未添加个人简介

评论

发布
暂无评论
备战金三银四必备:2021最新Java面试汇总(附答案解析)