前言

面试就是大家身边总是存在各种各样的可能,而自身又具备这样的能力,就忍不住想试一试,尤其是到了年关,是一个好的蓄势并且认真积累的阶段。当然面试套路众多,但对于技术面试来说,主要是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。

“面试造火箭,工作拧螺丝”首先咱得能拧,才有造火箭的可能啊,这一年整理很多面试的高频问点也做了解析,今天在这分享给大家!


这些面试题包含哪些内容?

这份面试题包含了 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?我们需要它吗?

    由于文案过于长,在此就不一一介绍了,每个专题面试题只有部分的面试题,下面是整理的合集。资料获取方式:点击此处 获取资料!



    最后

    篇幅有限,其他内容就不在这里一一展示了,Java后端开发面试总结,整理不易,想要领取文中资料可以点击此处来免费领取哦!!!