前言
面试就是大家身边总是存在各种各样的可能,而自身又具备这样的能力,就忍不住想试一试,尤其是到了年关,是一个好的蓄势并且认真积累的阶段。当然面试套路众多,但对于技术面试来说,主要是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。
“面试造火箭,工作拧螺丝”首先咱得能拧,才有造火箭的可能啊,这一年整理很多面试的高频问点也做了解析,今天在这分享给大家!
这些面试题包含哪些内容?
这份面试题包含了 19 个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 等。
如下图所示:
Java集合相关
- ArrayList 和 Vector 的区别
- 说说 ArrayList,Vector, LinkedList 的存储性能和特性
- 快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?
- hashmap 的数据结构
- HashMap 的工作原理是什么?
- Hashmap 什么时候进行扩容呢?
- List、Map、Set 三个接口,存取元素时,各有什么特点?
- Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是 equals()? 它们
- 有何区别?
- 两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
- heap 和 stack 有什么区别。
- Java 集合类框架的基本接口有哪些?
- HashSet 和 TreeSet 有什么区别?
- HashSet 的底层实现是什么?
- LinkedHashMap 的实现原理?
- 为什么集合类没有实现 Cloneable 和 Serializable 接口?
- 什么是迭代器 (Iterator)?
- Iterator 和 ListIterator 的区别是什么?
- 数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是 ArrayList?19
- Java 集合类框架的最佳实践有哪些?
- Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()?它
- 们有何区别?
多线程
- 并行和并发有什么区别?
- 线程和进程的区别?
- 守护线程是什么?
- 创建线程有哪几种方式?
- 说一下 runnable 和 callable 有什么区别?
- 线程有哪些状态?
- sleep() 和 wait() 有什么区别?
- notify()和 notifyAll()有什么区别?
- 线程的 run()和 start()有什么区别?
- 创建线程池有哪几种方式?
- 线程池都有哪些状态?
- 线程池中 submit()和 execute()方法有什么区别?
- 在 java 程序中怎么保证多线程的运行安全?
- 多线程锁的升级原理是什么?
- 什么是死锁?
- 怎么防止死锁?
- ThreadLocal 是什么?有哪些使用场景?
- 说一下 synchronized 底层实现原理?
- synchronized 和 volatile 的区别是什么?
- synchronized 和 Lock 有什么区别?
- synchronized 和 ReentrantLock 区别是什么?
- 说一下 atomic 的原理?
JVM相关
- JDK、 JRE、JVM 的关系是什么?
- JVM 的内存模型以及分区情况和作用
- JVM 对象创建步骤流程是什么?
- 垃圾回收算法有几种类型? 他们对应的优缺点又是什么?
- 简单介绍一下什么是类加载机制?
- 类的加载过程是什么?简单描述一下每个步骤
- JVM 预定义的类加载器有哪几种?分别什么作用?
- 什么是双亲委派模式?有什么作用?
- 介绍一下 JVM 中垃圾收集器有哪些? 他们特点分别是什么?
- 什么是 Class 文件? Class 文件主要的信息结构有哪些?
- 对象“对象已死” 是什么概念?
- JVM 数据运行区,哪些会造成 OOM 的情况?
- 详细介绍一下对象在分带内存区域的分配过程?
- G1 与 CMS 两个垃圾收集器的对比
- 线上常用的 JVM 参数有哪些?
- 对象什么时候进入老年代?
- 什么是内存溢出, 内存泄露? 他们的区别是什么?
- 引起类加载操作的行为有哪些?
- 介绍一下 JVM 提供的常用工具
- Full GC 、 Major GC 、Minor GC 之间区别?
- 什么时候触发 Full GC ?
- 什么情况下会出现栈溢出
- 说一下强引用、软引用、弱引用、虚引用以及他们之间和 gc 的关系
Mybatis
- 什么是Mybatis?
- Mybaits的优点
- MyBatis框架的缺点
- MyBatis框架适用场合
- MyBatis与Hibernate有哪些不同?
- #Q和$0的区别是什么?
- 当实体类中的属性名和表中的字段名不一样,怎么办?
- 模糊查询like语句该怎么写?
- 通常一个Xm|映射文件,都会写-个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?
- Mybatis是如何进行分页的?分页插件的原理是什么?
- Mybatis是如何将sq|执行结果封装为目标对象并返回的?都有哪些映射形式?
- 如何执行批量插入?
- 如何获取自动生成的(主)键值?
- 在mapper中如何传递多个参数?
- Mybatis动态sq|有什么用?执行原理?有哪些动态sq|?
- Xm|映射文件中,除了常见的selectlinsertlupdae|delete标签之外,还有为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
- 一对一、一对多的关联查询?
- MyBatis实现一对一有几种方式?具体怎么操作的?
- MyBatis实现-对多有几种方式,怎么操作的?
- Mybatis:是否支持延迟加载?如果支持,它的实现原理是什么?
- Mybatis的一级、二级缓存
- 什么是MyBatis的接口绑定?有哪些实现方式?
- 使用MyBatis的mapper接口调用时有哪些要求?
- Mapper编写有哪几种方式?
- 简述Mybatis的插件运行原理,以及如何编写一个插件。
Dubbo
- 为什么要用Dubbo?
- Dubbo的整体架构设计有哪些分层?
- 默认使用的是什么通信框架,还有别的选择吗?
- 服务调用是阻塞的吗?
- 般使用什么注册中心?还有别的选择吗?
- 默认使用什么序列化框架,你知道的还有哪些?
- 服务提供者能实现失效踢出是什么原理?
- 服务上线怎么不影响旧版本?
- 如何解决服务调用链过长的问题?
- 说说核心的配置有哪些?
- Dubbo推荐用什么协议?
- 同一个服务多个注册的情况下可以直连某一个服务吗?
- 画- -画服务注册与发现的流程图?
- Dubbo集群容错有几种方案?
- Dubbo服务降级,失败重试怎么做?
- Dubbo使用过程中都遇到了些什么问题?
- Dubbo Monitor实现原理?
- Dubbo用到哪些设计模式?
- Dubbo配置文件是如何加载到Spring中的?
- Dubbo SPI和Java SPI区别?
- Dubbo支持分布式事务吗?
- Dubbo可以对结果进行缓存吗?
- 服务上线怎么兼容旧版本? .
- Dubbo必须依赖的包有哪些?
- Dubbo telnet命令能做什么?
- Dubbo支持服务降级吗?
- Dubbo如何优雅停机?
- Dubbo和Dubbox之间的区别?
- Dubbo和Spring Cloud的区别?
- 你还了解别的分布式框架吗?
MySQL
- MySQL中有哪几种锁?
- MySQL中有哪些不同的表格?
- 简述在MySQL数据库中MyISAM和InnoDB的区别
- MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
- CHAR和VARCHAR的区别?
- 主键和候选键有什么区别?
- myisamchk是用来做什么的?
- 如果一个表有一-列定义为TIMESTAMP, 将发生什么?
- 你怎么看到为表格定义的所有索引?
- LIKE声明中的%和_是什么意思?
- 列对比运算符是什么?
- BLOB和TEXT有什么区别?
- MySQL_ fetch array和MySQL fetch _object的区别是什么?
- MyISAM表格将在哪里存储,并且还提供其存储格式?
- MySQL如何优化DISTINCT?
- 如何显示前50行?
- 可以使用多少列创建索引?
- NOW ()和CURRENT DATE () 有什么区别?
- 什么是非标准字符串类型?
- 什么是通用SQL函数?
- MySQL支持事务吗?
- MySQL里记录货币用什么字段类型好
- MySQL有关权限的表都有哪几个?
- 列的字符串类型可以是什么?
- MySQL数据库作发布系统的存储,-天五万条以上的增量,预计运维三年怎么优化?
- 锁的优化策略
- 索引的底层实现原理和优化
- 什么情况下设置了索引但无法使用
- 实践中如何优化MySQL
- 优化数据库的方法
- 简单描述MySQL中,索引.主键,唯一索引.联合索引的区别,对数据库的性能有什么影响
- 数据库中的事务是什么?
- SQL注入漏洞产生的原因?如何防止?
- 为表中得字段选择合适得数据类型
- 存储时期
- 对于关系型数据库而言.索引是相当重要的概念,请回答有关索引的几个问题
- 解释MySQL外连接、内连接与自连接的区别
- Myq|中的事务回滚机制概述
- ...............
Spring Boot
- 什么是Spring Boot?
- Spring Boot有哪些优点?
- 什么是JavaConfig?
- 如何重新加载Spring Boot上的更改。而无需重新启动服务器?
- Spring Boot中的监视器是什么?
- 如何在Spring Boot中禁用Actuator端点安全性?
- 如何在自定义端口上运行Spring Boot应用程序?
- 什么是YAML?
- 如何实现Spring Boot应用程序的安全性?
- 如何集成Spring Boot和ActiveMQ?
- 如何使用Spring Boot实现分页和排序?
- 什么是Swagger?你用Spring Boot实现了它吗?
- 什么是Spring Profiles?
- 什么是Spring Batch?
- 什么是FreeMarker模板?
- 如何使用Spring Boot实现异常处理?
- 您使用了哪些starter maven依赖项?
- 什么是CSRF攻击?
- 什么是WebSockets?
- 什么是AOP?
- 什么是Apache Kafka?
- 我们如何监视所有Spring Boot微服务?
SpringCloud
- 什么是Spring Cloud?
- 使用Spring Cloud有什么优势?
- 服务注册和发现是什么意思? Spring Cloud如何实现?
- 负载平衡的意义什么?
- 什么是Hystrix?它如何实现容错?
- 什么是Hystrix断路器?我们需要它吗?
- 什么是Netflix Feign?它的优点是什么?
- 什么是Spring Cloud Bus?我们需要它吗?