[转]Java基础面试题(2022最新版汇总)


Java基础目录

  • 前言
  • 一、基础篇
    • 1.1.Java语言有哪些特点
    • 1.2.面向对象和面向过程的区别
    • 1.3.八种基本数据类型的大小,以及他们的封装类
    • 1.4.标识符的命名规则。
    • 1.5.instanceof 关键字的作用
    • 1.6.Java自动装箱与拆箱
    • 1.7.重载和重写的区别
    • 1.8.equals与==的区别
    • 1.9.Hashcode的作用
    • 1.10.String、String StringBuffer 和 StringBuilder 的区别是什么?
    • 1.11.ArrayList和linkedList的区别
    • 1.12.HashMap和HashTable的区别
    • 1.13.Collection包结构,与Collections的区别
    • 1.14. Java的四种引用,强弱软虚
    • 1.15.泛型常用特点
    • 1.16.Java创建对象有几种方式?
    • 1.17.有没有可能两个不相等的对象有相同的hashcode
    • 1.18.深拷贝和浅拷贝的区别是什么?
    • 1.19.final有哪些用法?
    • 1.20.static都有哪些用法?
    • 1.21.3*0.1==0.3返回值是什么
    • 1.22.a=a+b与a+=b有什么区别吗?
    • 1.23.try catch finally,try里有return,finally还执行么?
    • 1.24.Excption与Error包结构
    • 1.25.OOM你遇到过哪些情况,SOF你遇到过哪些情况
    • 1.26.简述线程、程序、进程的基本概念。以及他们之间关系是什么?
    • 1.27.线程有哪些基本状态?这些状态是如何定义的?
    • 1.28.Java 中 IO 流
    • 1.29.java反射的作用于原理
    • 1.30.说说List,Set,Map三者的区别?
  • 二、JVM篇
    • 2.1.知识点汇总
    • 2.2.知识点详解:
    • 2.3.类加载与卸载
    • 2.4.简述一下JVM的内存模型
    • 2.5.堆和栈的区别
    • 2.6.什么时候会触发FullGC
    • 2.7.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
    • 2.8.Java内存结构
    • 2.9.对象分配规则
    • 2.10.Java对象创建过程
    • 2.11.类的生命周期
    • 2.12.简述Java的对象结构
    • 2.13.如何判断对象可以被回收?
    • 2.14.JVM的永久代中会发生垃圾回收么?
    • 2.15.垃圾收集算法
    • 2.16.调优命令有哪些?
    • 2.17.调优工具
    • 2.18.Minor GC与Full GC分别在什么时候发生?
    • 2.19.你知道哪些JVM性能调优
    • 2.20.简述Java垃圾回收机制?
    • 2.21.什么是类加载器,类加载器有哪些?
    • 2.22.你有没有遇到过OutOfMemory问题?你是怎么来处理这个问题的?处理 过程中有哪些收获?
    • 2.23.JDK 1.8之后Perm Space有哪些变动? MetaSpace??默认是?限的么? 还是你们会通过什么?式来指定???
  • 三、多线程&并发篇
    • 3.1.Java中实现多线程有几种方法
    • 3.2.如何停止一个正在运行的线程
    • 3.3.notify()和notifyAll()有什么区别?
    • 3.4.sleep()和wait() 有什么区别?
    • 3.5.volatile 是什么?可以保证有序性吗?
    • 3.6.Thread 类中的start() 和 run() 方法有什么区别?
    • 3.7.为什么wait, notify 和 notifyAll这些方法不在thread类里面?
    • 3.8.为什么wait和notify方法要在同步块中调用?
    • 3.9.Java中interrupted 和 isInterruptedd方法的区别?
    • 3.10.Java中synchronized 和 ReentrantLock 有什么不同?
    • 3.11.有三个线程T1,T2,T3,如何保证顺序执行?
    • 3.12.SynchronizedMap和ConcurrentHashMap有什么区别?
    • 3.13.什么是线程安全
    • 3.14.Thread类中的yield方法有什么作用?
    • 3.15.Java线程池中submit() 和 execute()方法有什么区别?
    • 3.16.说一说自己对于 synchronized 关键字的了解
    • 3.17.说说自己是怎么使用 synchronized 关键字,在项目中用到了
    • 3.18.什么是线程安全?Vector是一个线程安全类吗?
    • 3.19.volatile关键字的作用?
    • 3.20.常用的线程池有哪些?
    • 3.21.简述一下你对线程池的理解
    • 3.22.说说自己是怎么使用 synchronized 关键字,在项目中用到了吗
    • 3.23.讲一下 synchronized 关键字的底层原理
    • 3.24.为什么要用线程池?
    • 3.25.实现Runnable接口和Callable接口的区别
    • 3.26.执行execute()方法和submit()方法的区别是什么呢?
    • 3.27.如何创建线程池
  • 四、Spring篇
    • 4.1.Spring的IOC和AOP机制?
    • 4.2.Spring中Autowired和Resource关键字的区别?
    • 4.3.依赖注入的方式有几种,各是什么?
    • 4.4.讲一下什么是Spring
    • 4.5.Spring MVC流程
    • 4.6.SpringMVC怎么样设定重定向和转发的?
    • 4.7.SpringMVC常用的注解有哪些?
    • 4.8.Spring的AOP理解:
    • 4.9.Spring的IOC理解
    • 4.10.解释一下spring bean的生命周期
    • 4.11.解释Spring支持的几种bean的作用域。
    • 4.12. Spring基于xml注入bean的几种方式:
    • 4.13.Spring框架中都用到了哪些设计模式?
  • 五、MyBatis篇
    • 5.1.什么是MyBatis
    • 5.2.MyBatis的优点和缺点
    • 5.3.#{}和${}的区别是什么?
    • 5.4.当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
    • 5.5.Mybatis是如何进行分页的?分页插件的原理是什么?
    • 5.6.Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
    • 5.7.如何执行批量插入?
    • 5.8.MyBatis实现一对一有几种方式?具体怎么操作的?
    • 5.9.Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
    • 5.10.Mybatis的一级、二级缓存:
  • 六、SpringBoot篇
    • 6.1.什么是SpringBoot?为什么要用SpringBoot
    • 6.2.Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
    • 6.3.运行Spring Boot有哪几种方式?
    • 6.4.如何理解 Spring Boot 中的 Starters?
    • 6.5.如何在Spring Boot启动的时候运行一些特定的代码?
    • 6.6.Spring Boot 需要独立的容器运行吗?
    • 6.7. Spring Boot中的监视器是什么?
    • 6.8. 如何使用Spring Boot实现异常处理?
    • 6.9.你如何理解 Spring Boot 中的 Starters?
    • 6.10. springboot常用的starter有哪些
    • 6.11.SpringBoot 实现热部署有哪几种方式?
    • 6.12.如何理解 Spring Boot 配置加载顺序?
    • 6.13.Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
    • 6.14.如何集成 Spring Boot 和 ActiveMQ?
    • 6.15.如何重新加载Spring Boot上的更改,而无需重新启动服务器?
    • 6.16.Spring Boot、Spring MVC 和 Spring 有什么区别?
    • 6.17.能否举一个例子来解释更多 Staters 的内容?
    • 6.18.pring Boot 还提供了其它的哪些 Starter Project Options?
  • 七、MySQL篇
    • 7.1.数据库的三范式是什么
    • 7.2.数据库引擎有哪些
    • 7.3.InnoDB与MyISAM的区别
    • 7.4.数据库的事务
    • 7.5.索引问题
    • 7.6.SQL优化
    • 7.7.简单说一说drop、delete与truncate的区别
    • 7.8.什么是视图
    • 7.9.什么是内联接、左外联接、右外联接?
    • 7.10.并发事务带来哪些问题?
    • 7.11.事务隔离级别有哪些?MySQL的默认隔离级别是?
    • 7.12.大表如何优化?
    • 7.13.分库分表之后,id 主键如何处理?
    • 7.14.mysql有关权限的表都有哪几个
    • 7.15.mysql有哪些数据类型
    • 7.16.创建索引的三种方式,删除索引
  • 八、Redis篇
    • 8.1.Redis持久化机制
    • 8.2.缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
    • 8.3.热点数据和冷数据是什么
    • 8.4.Memcache与Redis的区别都有哪些?
    • 8.5.单线程的redis为什么这么快
    • 8.6.redis的数据类型,以及每种数据类型的使用场景
    • 8.7.redis的过期策略以及内存淘汰机制
    • 8.8.Redis 为什么是单线程的
    • 8.9.Redis 常见性能问题和解决方案?
    • 8.10.为什么Redis的操作是原子性的,怎么保证原子性的?
    • 8.11.Redis事务
  • 九、SpringCloud篇
    • 9.1.什么是SpringCloud
    • 9.2.什么是微服务
    • 9.3.SpringCloud有什么优势
    • 9.4.什么是服务熔断?什么是服务降级?
    • 9.5.ureka和zookeeper都可以提供服务注册与发现的功能,请说
    • 9.6.SpringBoot和SpringCloud的区别?
    • 9.7.负载平衡的意义什么?
    • 9.8.什么是Hystrix?它如何实现容错?
    • 9.9.什么是Hystrix断路器?我们需要它吗?
    • 9.10.说说 RPC 的实现原理
  • 十、Nginx篇
    • 10.1.简述一下什么是Nginx,它有什么优势和功能?
    • 10.2.Nginx是如何处理一个HTTP请求的呢?
    • 10.3.列举一些Nginx的特性
    • 10.4.请列举Nginx和Apache 之间的不同点
    • 10.5.在Nginx中,如何使用未定义的服务器名称来阻止处理请求?
    • 10.6.请解释Nginx服务器上的Master和Worker进程分别是什么?
    • 10.7.请解释代理中的正向代理和反向代理
    • 10.8.解释Nginx用途
  • 十一、zookeeper篇
    • 11.1.ZooKeeper 是什么?
    • 11.2.ZooKeeper 提供了什么?
    • 11.3.Zookeeper 文件系统
    • 11.4.ZAB 协议?
    • 11.5.四种类型的数据节点 Znode
    • 11.6. Zookeeper Watcher 机制 -- 数据变更通知
    • 11.7.客户端注册 Watcher 实现
    • 11.8.服务端处理 Watcher 实现
    • 11.9.客户端回调 Watcher
    • 11.10.ACL 权限控制机制
    • 11.11.Chroot 特性
    • 11.12.会话管理
    • 11.13.服务器角色
    • 11.14.Zookeeper 下 Server 工作状态
    • 11.15.zookeeper 是如何保证事务的顺序一致性的?
    • 11.16.分布式集群中为什么会有 Master?
    • 11.17.zk 节点宕机如何处理?
    • 11.18.zookeeper 负载均衡和 nginx 负载均衡区别
    • 11.19.Zookeeper 有哪几种几种部署模式?
    • 11.20.集群最少要几台机器,集群规则是怎样的?
    • 11.21.集群支持动态添加机器吗?
    • 11.22.Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?
    • 11.23.Zookeeper 的 java 客户端都有哪些?
    • 11.24.chubby 是什么,和 zookeeper 比你怎么看?
    • 11.25.说几个 zookeeper 常用的命令。
    • 11.26.Zookeeper 的典型应用场景
  • 十二、kafka篇
    • 12.1.如何获取 topic 主题的列表
    • 12.2.生产者和消费者的命令行是什么?
    • 12.3.consumer 是推还是拉?
    • 12.4.讲一下主从同步
    • 12.5.为什么需要消息系统,mysql 不能满足需求吗?
    • 12.6.Zookeeper 对于 Kafka 的作用是什么?
    • 12.7.Kafka 判断一个节点是否还活着有那两个条件?
    • 12.8.Kafka 与传统 MQ 消息系统之间有三个关键区别
    • 12.9.讲一讲 kafka 的 ack 的三种机制
    • 12.10.消费者如何不自动提交偏移量,由应用提交?
    • 12.11.如何控制消费的位置
    • 12.12.kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?
    • 12.13.kafka 的高可用机制是什么?
    • 12.14.kafka 如何减少数据丢失
    • 12.15.kafka 如何不消费重复数据?比如扣款,我们不能重复的扣。
  • 十三、MQ篇
    • 13.1.为什么使用MQ
    • 13.2.MQ优缺点
    • 13.3.Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别?
    • 13.4.如何保证高可用的?
    • 13.5.如何保证消息的顺序性
    • 13.6.如何解决消息队列的延时以及过期失效问题?消息队列满了以后
    • 13.7.设计MQ的思路
  • 十四、Elasticsearch篇
    • 14.1.elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
    • 14.2.elasticsearch 的倒排索引是什么
    • 14.3.elasticsearch 索引数据多了怎么办,如何调优,部署
    • 14.4.elasticsearch 是如何实现 master 选举的
    • 14.5.详细描述一下 Elasticsearch 索引文档的过程
    • 14.6.详细描述一下 Elasticsearch 搜索的过程?
    • 14.7.Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法
    • 14.8.Elasticsearch 是如何实现 Master 选举的?
    • 14.9.Elasticsearch 中的节点(比如共 20 个),其中的 10 个选了一个 master,另外 10 个选了另一个 master,怎么办?
    • 14.10.客户端在和集群连接时,如何选择特定的节点执行请求的?
    • 14.11.详细描述一下 Elasticsearch 索引文档的过程。
    • 14.12.详细描述一下 Elasticsearch 更新和删除文档的过程。
    • 14.13.Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
    • 14.14.Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?
    • 14.15.在并发情况下,Elasticsearch 如果保证读写一致?
    • 14.16.如何监控 Elasticsearch 集群状态?
    • 14.17.介绍一下你们的个性化搜索方案?
  • 十五、Linux篇
    • 15.1.绝对路径用什么符号表示?当前目录、上层目录用什么表示?主
    • 15.2.怎么查看当前进程?怎么执行退出?怎么查看当前路径?
    • 15.3.怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
    • 15.4.Ls 命令执行什么功能? 可以带哪些参数,有什么区别?
    • 15.5.建立软链接(快捷方式),以及硬链接的命令。
    • 15.6.目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
    • 15.7.查看文件内容有哪些命令可以使用?
    • 15.8.端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
    • 15.9.复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需
    • 15.10.删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
    • 15.11.Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用
    • 15.12.利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
    • 15.13.哪个命令专门用来查看后台任务?
    • 15.14.搜索文件用什么命令? 格式是怎么样的?
    • 15.15.查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
    • 15.16.使用什么命令查看用过的命令列表?
    • 15.17.使用什么命令查看网络是否连通?
    • 15.18.使用什么命令查看 ip 地址及接口信息?
    • 15.19.查看各类环境变量用什么命令?
    • 15.20.通过什么命令指定命令提示符?
    • 15.21.通过什么命令查找执行命令?
    • 15.22.列举几个常用的Linux命令
    • 15.23.你平时是怎么查看日志的?
  • 十六、数据结构预算法篇
  • 十七、简历模板分享篇

jvm思维导图
在这里插入图片描述

jvm调优
Sun JDK监控和故障处理命令有jps jstat jmap jhat jstack jinfo

jps,JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。
jstat,JVM statistics Monitoring是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
jmap,JVM Memory Map命令用于生成heap dump文件
jhat,JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看
jstack,用于生成java虚拟机当前时刻的线程快照。
jinfoJVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数。

JUC并发编程超详细详解篇

https://segmentfault.com/a/1190000006158186

https://github.com/twitter-archive/snowflake。
美团的Leaf分布式ID生成系统 :Leaf 是美团开源的分布式ID生成器,能保证全局唯一性、趋势递增、单调递增、信息安全,里面也提到了几种分布式方案的对比,但也需要依赖关系数据库、Zookeeper等中间件。感觉还不错。美团技术团队的一篇文章:https://tech.meituan.com/2017/04/21/mt-leaf.html 。

https://blog.csdn.net/weixin_45735355/article/details/121076816?spm=1001.2014.3001.5502 超硬核讲解数据结构与算法之线性表 https://blog.csdn.net/weixin_45735355/article/details/121121661?spm=1001.2014.3001.5502 数据结构与算法之符号表 https://blog.csdn.net/weixin_45735355/article/details/121156891?spm=1001.2014.3001.5502 数据结构与算法之树的入门(二叉树) https://blog.csdn.net/weixin_45735355/article/details/121221977?spm=1001.2014.3001.5502 数据结构与算法之堆 https://blog.csdn.net/weixin_45735355/article/details/121281925?spm=1001.2014.3001.5502 数据结构与算法之优先队列 https://blog.csdn.net/weixin_45735355/article/details/121328776?spm=1001.2014.3001.5502 数据结构与算法之树的进阶 https://blog.csdn.net/weixin_45735355/article/details/121469872?spm=1001.2014.3001.5502 数据结构与算法之并查集 https://blog.csdn.net/weixin_45735355/article/details/121540416?spm=1001.2014.3001.5502 数据结构与算法之图入门 https://blog.csdn.net/weixin_45735355/article/details/121607968?spm=1001.2014.3001.5502 数据结构与算法之图的进阶 https://baidaguo.blog.csdn.net/article/details/121658446?spm=1001.2014.3001.5502

十七、简历模板分享篇

在这里插入图片描述
关注下方微信公众号回复【简历模板】即可获得