网站域名注册规则,百度网站建设推广,河北辛集住房和城乡建设厅网站,dede5.7网站搬家最近可能有点闲的慌#xff0c;没事就去找面试面经#xff0c;整理了一波面试题。我大概是分成了Java基础、中级、高级#xff0c;分布式#xff0c;Spring架构#xff0c;多线程#xff0c;网络#xff0c;MySQL#xff0c;Redis缓存#xff0c;JVM相关#xff0c;调…最近可能有点闲的慌没事就去找面试面经整理了一波面试题。我大概是分成了Java基础、中级、高级分布式Spring架构多线程网络MySQLRedis缓存JVM相关调优设计模式算法与数据结构并发Linux等15个小模块。每个小模块文章里估计就只能只给出部分的面试题目不然要是全部写出来篇幅不够呀。而且还有相应的答案太难了所以直接给大家提供最完整的答案解析文档。一、Java基础什么是 Java 程序的主类应用程序和小程序的主类有何不同构造器 Constructor 是否可被 overrideString StringBuffer 和 StringBuilder 的区别是什么String 为什么是不可变的对象的相等与指向他们的引用相等两者有什么不同重载和重写的区别在一个静态方法内调用一个非静态成员为什么是非法的简述线程程序、进程的基本概念。以及他们之间关系是什么什么是方法的返回值?返回值在类的方法里的作用是什么?一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 ?为什么?Java 面向对象编程三大特性: 封装 继承 多态Java 序列化中如果有些字段不想进行序列化 怎么办在调用子类构造方法之前会先调用父类没有参数的构造方法其目的是?线程有哪些基本状态?创建一个对象用什么运算符?对象实体与对象引用有何不同?成员变量与局部变量的区别有哪些二、Java中级Spring的AOP和IOC是什么使用场景有哪些Spring事务事务的属性数据库隔离级别Spring和SpringMVCMyBatis以及SpringBoot的注解分别有哪些SpringCould组件有哪些它们的作用是什么微服务的CAP是什么BASE是什么HashMap底层实现原理红黑树B树B树的结构原理CAS(比较与交换)实现原理Redis支持的数据类型以及使用场景持久化哨兵机制缓存击穿缓存穿透线程是什么有几种实现方式它们之间的区别是什么线程池实现原理JUC并发包安全性问题(数据篡改(拿到别人的URL,篡改数据(金额)发送给系统))索引使用的限制条件,sql优化有哪些数据同步问题(缓存数据库数据同步)分布式事务堆溢出栈溢出的出现场景以及解决方案悲观锁乐观锁读写锁行锁表锁自旋锁死锁分布式锁线程同步锁公平锁非公平锁分别是什么初始化Bean对象有几个步骤它的生命周期JVM内存模型算法垃圾回收器调优类加载机制(双亲委派),创建一个对象这个对象在内存中是怎么分配的Dubbo的运行原理与SpringCould相比它为什么效率要高一些Zookeeper底层原理说出几种MQ之间的区别以及为什么使用这种MQ消息重复发送(幂等性)消息发送失败消息掉包长时间收不到消息发送的消息太大造成接收不成功三、Java高级为什么使用消息队列消息队列有什么优点和缺点Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点如何保证消息不被重复消费或者说如何保证消息消费的幂等性如何解决消息队列的延时以及过期失效问题消息队列满了以后该怎么处理有几百万消息持续积压几小时说说怎么解决redis 集群模式的工作原理能说一下么在集群模式下redis 的 key 是如何寻址的分布式寻址都有哪些算法了解一致性 hash 算法吗了解什么是 redis 的雪崩、穿透和击穿redis 崩溃之后会怎么样系统该如何应对这种情况如何处理 redis 的穿透为什么要分库分表(设计高并发系统的时候数据库层面该如何设计)用过哪些分库分表中间件不同的分库分表中间件都有什么优点和缺点你们具体是如何对数据库如何进行垂直拆分或水平拆分的有没有做 MySQL 读写分离如何实现 MySQL 的读写分离MySQL 主从复制原理的是啥如何解决MySQL 主从同步的延时问题说一下的 dubbo 的工作原理注册中心挂了可以继续通信吗说说一次 rpc 请求的流程如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试集群部署时的分布式 session 如何实现服务注册和发现是什么意思Spring Cloud 如何实现一般实现分布式锁都有哪些方式使用 redis 如何设计分布式锁使用 zk 来设计分布式锁可以吗这两种分布式锁的实现方式哪种效率比较高dubbo 的 spi 思想是什么如何设计可以动态扩容缩容的分库分表方案四、分布式ActiveMQ 中的消息重发时间间隔和重发次数吗Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中Kafka 判断一个节点是否还活着有哪两个条件Kafka 消息是采用 Pull 模式还是 Push 模式memcached 和服务器的 local cache(比如 PHP 的 APC、mmap 文件等)相比有什么优缺点我需要把 memcached 中的 item 批量导出导入怎么办memcached 的多线程是什么如何使用它们MongoDB 在 A:{B,C}上建立索引查询 A:{B,C}和 A:{C,B}都会使用索引吗MongoDB 支持存储过程吗如果支持的话怎么用如何理解 MongoDB 中的 GridFS 机制MongoDB 为何使用 GridFS 来存储文件在 Nginx 中如何使用未定义的服务器名称来阻止处理请求?RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制若 cluster 中拥有某个 queue 的 owner node 失效了且该 queue 被声明具有durable 属性是否能够成功从其他 node 上重新声明该 queue 为什么说保证 message 被可靠持久化的条件是 queue 和 exchange 具有durable 属性同时 message 具有 persistent 属性才行为什么用缓存用过哪些缓存redis和memcache的区别五、Spring架构Spring Boot、Spring MVC 和 Spring 有什么区别?BeanFactory 和 ApplicationContext 有什么区别什么是基于Java的Spring注解配置? 给一些注解的例子.请解释 Spring Bean 的生命周期Spring 框架中的单例 Beans 是线程安全的么SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决SpringMVC 怎么样设定重定向和转发的当一个方法向 AJAX 返回特殊对象,比如 Object,List 等,需要做什么处理SpringMvc 用什么对象从后台向前台传递数据的服务注册和发现是什么意思Spring Cloud 如何实现使用 Spring Cloud 有什么优势什么是 Hystrix 断路器我们需要它吗什么是 Spring Cloud Bus我们需要它吗如何实现 Spring Boot 应用程序的安全性Spring Boot 配置的默认 H2 数据库的名字是上面为什么默认的数据库名字是 testdb六、线程问题stop() 和 suspend() 方法为何不推荐使用同步和异步有何异同在什么情况下分别使用它们线程间通信wait和notify什么是线程饿死什么是活锁atomicinteger和volatile等线程安全操作的关键字的理解和使用volatile 变量是什么volatile 变量和 atomic 变量有什么不同当一个线程进入一个对象的一个 synchronized 方法后其它线程是否可进入此对象的其它方法?简述 synchronized 和 java.util.concurrent.locks.Lock 的异同多线程之间通信的同步问题synchronized锁的是对象衍伸出和synchronized相关很多的具体问题例如同一个类不同方法都有synchronized锁一个对象是否可以同时访问。或者一个类的static构造方法加上synchronized之后的锁的影响。volatile 类型变量提供什么保证能使得一个非原子操作变成原子操作吗了解可重入锁的含义以及ReentrantLock 和synchronized的区别Java创建线程之后直接调用start()方法和run()的区别同步的数据结构例如concurrentHashMap的源码理解以及内部实现原理为什么它是同步的且效率高常用的线程池模式以及不同线程池的使用场景newFixedThreadPool此种线程池如果线程数达到最大值后会怎么办底层原理。七、网络方面为什么要三次握手二次握手有什么问题三次握手有哪些缺陷TCP是如何控制流量的发送方发送频率过高造成丢包TCP是如何解决的HTTPs为什么要用对称加密非对称加密相对于只使用非对称加密有什么好处讲一下OSI网络架构HTTP在哪一层HTTP报文结构HTTP首部字段HTTPs加密在哪一层实现http是无状态通信http的请求方式有哪些可以自己定义新的请求方式么。socket通信以及长连接分包连接异常断开的处理。socket通信模型的使用AIO和NIO。socket框架netty的使用以及NIO的实现原理为什么是异步非阻塞八、MySQL数据库务四大特性(ACID)原子性、一致性、隔离性、持久性查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别MySQL的MyISAM与InnoDB两种存储引擎在事务、锁级别各自的适用场景mysql 高并发环境解决方案事务的并发事务隔离级别每个级别会引发什么问题MySQL默认是哪个级别MySQL BTree索引和Hash索引的区别有哪些锁(乐观锁悲观锁)select 时怎么加排它锁sql查询语句确定创建哪种类型的索引如何优化查询聚集索引和非聚集索引区别mysql都有什么锁死锁判定原理和具体场景死锁怎么解决非关系型数据库和关系型数据库区别优势比较MySQL慢查询怎么解决数据库的读写分离、主从复制主从复制分析的 7 个问题数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)九、Redis缓存redis事务相关命令有哪些为什么要用 redis /为什么要用缓存(高性能、高并发)为什么要用 redis 而不用 map/guava 做缓存?redis 和 memcached 的区别请介绍一下Redis的数据类型SortedSet(zset)以及底层实现机制redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)redis 设置过期时间redis 内存淘汰机制(MySQL里有2000w数据Redis中只存20w的数据如何保证Redis中的数据都是热点数据)redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)redis 事务Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)分布式环境下常见的应用场景(分布式锁、分布式自增 ID)Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)如何解决 Redis 的并发竞争 Key 问题如何保证缓存与数据库双写时的数据一致性十、JVM相关如何判断一个对象是否存活?(或者 GC 对象的判定方法)java 中垃圾收集的方法有哪些?简述 java 垃圾回收机制?GC 的两种判定方法Minor GC 与 Full GC 分别在什么时候发生JVM 内存分哪几个区每个区的作用是什么?GC 收集器有哪些CMS 收集器与 G1 收集器的特点GC 的三种收集方法标记清除、标记整理、复制算法的原理与特点分别用在什么地方如果让你优化收集方法有什么思路类加载器双亲委派模型机制java 类加载过程?简述 java 类加载机制?什么是类加载器类加载器有哪些?简述 java 内存分配与回收策略以及 Minor GC 和Major GCHotSpot 虚拟机对象探秘HotSpot 垃圾收集器十一、调优方面垃圾回收器的基本原理是什么垃圾回收器可以马上回收内存吗有什么办法主动通知虚拟机进行垃圾回收Java 中会存在内存泄漏吗请简单描述。如果对象的引用被置为 null垃圾收集器是否会立即释放对象占用的内存finalize() 方法什么时候被调用析构函数 (finalization) 的目的是什么串行(serial)收集器和吞吐量(throughput)收集器的区别是什么什么是分布式垃圾回收(DGC)它是如何工作的你怎样给 tomcat 去调优?Tomcat 的优化经验在 Java 中对象什么时候可以被垃圾回收System.gc() 和 Runtime.gc() 会做什么事情Java 中会存在内存泄漏吗请简单描述GC 是什么? 为什么要有 GCJVM 的永久代中会发生垃圾回收么tomcat 有哪几种 Connector 运行模式(优化)内存调优十二、设计模式21种设计模式知识要点请列举出在 JDK 中几个常用的设计模式什么是设计模式你是否在你的代码里面使用过任何设计模式在 Java 中什么叫观察者设计模式(observer design pattern)使用工厂模式最主要的好处是什么在哪里使用在 Java 中什么时候用重载什么时候用重写在 Java 中为什么不允许从静态方法中访问非静态变量设计一个 ATM 机请说出你的设计思路举一个用 Java 实现的装饰模式(decorator design pattern)它是作用于对象层次还是类层次举例说明什么情况下会更倾向于使用抽象类而不是接口十三、算法数据结构如何仅用递归函数和栈操作逆序一个栈将单向链表按某值划分成左边小、中间相等、右边大的形式分别用递归和非递归方式实现二叉树先序、中序和后序遍历斐波拉契系列问题的递归和动态规划判断字符数组中是否有的字符都只出现过一次在有序但含有空的数组中查找字符串只用2GB内存在20亿个整数中找到出现次数最多的数未排序数组中累加和小于或等于给定值的最长子数组长度从5随机到7随机及其扩展最大值减去最小值小于或等于num的子数组数量环形单链表的约瑟夫问题将单链表的每K个节点之间逆序在二叉树中找到累加和为指定值的最长路径长度判断一棵二叉树是否为搜索二叉树和完全二叉树最长公共子序列问题十四、并发什么是可重入性 为什么说Synchronized是可重入锁为什么说Synchronized是一个悲观锁乐观锁的实现原理又是什么什么是CAS它有 什么特性乐观锁一定就是好的吗JVM对Java的原生锁做了哪些优化ReentrantLock 是如何实现可重入性的跟 Synchronized 相 比 可重入锁ReentrantLock其实现原理有什么不同如何让Java的线程彼此同步你了解过哪些同步器请分别介绍下 。CyclicBarrier 和 CountDownLatch 看起来很相似请对比下呢线程池中的线程是怎么创建的是一开始就随着线程池的启动创建好的吗既然提到可以通过配置不同参数创建出不同的线程池那么Java中默认实现好的线程池又 有哪些呢请比较它们的异同请谈谈volatile有什么特点为什么它能保证变量对所有线程的可见性什么是Java的内存模型Java中各个线程是怎么彼此看到对方的变量的既然volatile能够保证线程间的变量可见性是不是就意味着基于volatile变量的运算就是并 发安全的 很多人都说要慎用ThreadLocal谈谈你的理解使用ThreadLocal需要注意些什么请谈谈AQS框架是怎么回事儿十五、操作系统/Linux死锁产生的原因进程、线程区别什么时候用线程如何实现一个线程池Java中线程池如何进行配置linux中有哪些常见的指令进行介绍select、poll、epoll有没有了解过讲解一下线程切换引申到Java阻塞➡️运行如何分层复制/home目录到另一个目录什么是安装Linux所需的最小分区数量以及如何查看系统启动信息如何暂停一个正在运行的进程把其放在后台(不运行)什么是页面错误它是怎么发生的答案解析如下(不一一截图了全在下面这一块已经全部整理成这些PDF了)更多Java相关的笔记