(完整版)2022大厂Java八股文面试题库|附答案
Posted 十一技术斩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(完整版)2022大厂Java八股文面试题库|附答案相关的知识,希望对你有一定的参考价值。
Java基础
- 说下面向对象四大特性
- Java语言有些特点
- 什么是Java程序的主类?应用程序和小程序的主类有何不同?
- 访问修饰符public,private,protected,以及不写(默认)时的区别?
- float f=3.4;是否正确?
- Java有没有goto?
- &和&&的区别?
- Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
- 用最有效率的方法计算2乘以8?
- 什么是Java注释
- Java有哪些数据类型
- final 有什么用?
- final finally finalize的区别
- String str = "i" 和String str = new String("1")一样吗?
- Java 中操作字符串都有哪些类?它们之间有什么区别?
- Java中为什么要用 clone?
- 深克隆和浅克隆?
- new一个对象的过程和clone一个对象的区别?
- Java中实现多态的机制是什么?
- 谈谈你对多态的理解?
- 构造器(constructor)是否可被重写(override)?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- String类的常用方法有哪些?
- char型变量中能否能不能存储一个中文汉字,为什么?
- this关键字的用法
- super关键字的用法
- this与super的区别
- static存在的主要意义
- static的独特之处
- static应用场景
- static注意事项
- break ,continue ,return 的区别及作用
- 在Java中定义一个不做事且没有参数的构造方法的作用
- 构造方法有哪些特性?
- 静态变量和实例变量区别
- 静态方法和实例方法有何不同?
- 什么是方法的返回值?返回值的作用是什么?
- 什么是内部类?
- 内部类的分类有哪些
- Java中异常分为哪些种类?
- hashCode 与 equals (重要)
- hashCode()介绍
- 为什么要有 hashCode
- 抽象类和接口(Java7)的区别
- Java 8的接口新增了哪些特性?
- 重写和重载的区别
- ArrayList和LinkedList有什么区别?
- HashMap是怎么实现的?
- HashMap在Java7和Java8中的实现有什么不同?
- HashMap有时候会死循环,你知道是什么原因吗?
- ConcurrentHashMap是怎么实现的?
- 静态代理和动态代理的区别
- JDK动态代理和CGLIB动态代理的区别
Java多线程
- 说说synchronized的实现原理
- ReentrantLock与synchronized的区别
- ReentrantLock实现原理
- Java原子类AtomicInteger实现原理
- Java线程池实现原理
- ThreadLocal实现原理
- InheritableThreadLocal原理知道吗?
- 说一下synchronized锁升级过程
- 了解过什么是“伪共享”吗?
- “伪共享”出现的原因是什么?
- 如何避免“伪共享”?
- Java里的线程有哪些状态?
- 什么是悲观锁?什么是乐观锁?
- 怎么停止一个运行中的线程?
- 说一下你对volatile的理解?
- 并发编程三要素?
- 线程池的优点?
- CyclicBarrier和CountDownLatch的区别
- 什么是CAS?
- CAS的问题
- 什么是AQS?
- AQS支持几种同步方式?
- 什么是自旋锁?
- 什么是多线程的上下文切换?
- 什么是线程和进程?
- 程序计数器为什么是私有的?
- 虚拟机栈和本地方法栈为什么是私有的?
- 并发与并行的区别?
- 什么是线程死锁?如何避免死锁?
- sleep() 方法和 wait() 方法的区别和共同点?
- 为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 法?
- 什么是线程安全问题?如何解决?
- 什么是活锁?
- 什么是线程的饥饿问题?如何解决?
- 什么是线程的阻塞问题?如何解决?
- synchronized 关键字和 volatile 关键字的区别
- 说一说几种常见的线程池及适用场景?
- 线程池都有哪几种工作队列?
- 什么是线程安全?
- Java中如何获取到线程dump文件
- Java中用到的线程调度算法是什么?
- Thread.sleep(0)的作用是什么?
- 单例模式的线程安全性
- Semaphore有什么作用?
- Hashtable的size()方法中明明只有一条语句"return count",为什么还要做同步?
- 同步方法和同步块,哪个是更好的选择?
- 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?
Java虚拟机
- 说一下JVM的内存结构?
- 栈帧里面包含哪些东西?
- 程序计数器有什么作用?
- 字符串常量存放在哪个区域?
- 你熟悉哪些垃圾收集算法?
- Java里有哪些引用类型?
- JVM怎么判断一个对象是不是要回收?
- GC Roots 有哪些?
- 你知道哪些GC类型?
- 对象都是优先分配在年轻代上的吗?
- 你了解过哪些垃圾收集器?
- 说说CMS垃圾收集器的工作原理
- 说说G1垃圾收集器的工作原理
- 说说ZGC垃圾收集器的工作原理
- ZGC收集器中的染色指针有什么用?
- 说说类加载的过程
- 说下有哪些类加载器?
- 什么是双亲委派机制?
- 双亲委派机制可以被违背吗?请举例说明。
- Tomcat是怎么打破双亲委派机制的呢?
- Java对象的布局了解过吗?
- 什么情况下会发生栈内存溢出?
- JVM新生代中为什么要分为Eden和Survivor?
- JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代?
- 什么是指令重排序?
- 什么是内存屏障?
- 什么是happen-before原则?
- 说说你知道的几种主要的JVM参数
- 怎么打出线程栈信息?
- 为什么需要双亲委派模式?
- 怎么打破双亲委派模型?
- 说一下堆和栈的区别
- Java 8 为什么要将永久代(PermGen)替换为元空间(MetaSpace)呢?
- 说一下Java对象的创建过程
- 对象的访问定位有哪几种方式?
- 说一下堆内存中对象的分配的基本策略
- Minor Gc和Full GC 有什么不同呢?
- Java会存在内存泄漏吗?请简单描述。
- 如何判断一个类是无用的类?
- 介绍一下类文件结构吧!
- 说一下 JVM 调优的工具?
- JVM调优命令有哪些?
- JRE、JDK、JVM 及 JIT 之间有什么不同?
- 程序计数器为什么是私有的?
- 如何判断一个常量是废弃常量 ?
Java IO
- Java 中有几种类型的流?
- 什么是 java序列化?
- 如何实现 java 序列化?
- 字节流和字符流的区别?
- PrintStream、BufferedWriter、PrintWriter的比较?
- 什么是节点流,什么是处理流,它们各有什么用处,处理流的创建有什么特征?
- 流一般需要不需要关闭,如果关闭的话在用什么方法,一般要在那个代码块里面关闭比较好,处理流是怎么关闭的,如果有多个流互相调用传入是怎么关闭的?
- 什么是BIO
- 什么是NIO
- 什么是AIO
- 同步与异步
- 阻塞与非阻塞
- 同步、异步、阻塞、非堵塞
- 通道是个什么意思?
- 缓冲区是什么意思?
- IO多路复用的底层原理
mysql什么是索引?
1.什么是索引?
2.索引是个什么样的数据结构呢?
3.Hash索引和B+树索引有什么区别或者说优劣呢?
4.在建立索引的时候,都有哪些需要考虑的因素呢?
5.了解过哪些存储引擎?各有什么优缺点?
6.说一下什么是事务的ACID属性吧
7.事务的隔离级别了解过吗?
8.说说InnoDB的索引原理
9.说说InnoDB的MVCC机制
10.有了解过“回表”的概念吗?什么情况下会出现“回表”?
11.MySQL索引的类型
12.有做过MySQL的索引优化吗?
13.什么是聚簇索引?
14.InnoDB有聚簇索引吗?MyIsam呢?
15.MyIsam的数据是怎么存储的?
16.InnoDB的数据是怎么存储的?
17.InnoDB主键索引跟非主键索引在数据存储上的差异
18.InnoDB删除某条记录后,内部会怎么处理?
19.InnoDB如果没有设置主键的话,它内部会怎么处理?
20.为什么InnoDB一定会生成主键?
21.MySQL分库分表了解过吗?
22.MySQL的redo日志和undo日志分别有什么用?
23.MySQL的redo日志的刷盘时机
24.MySQL有哪些锁?以及各种锁的作用?
25.MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义
26.MySQL有哪些日志,分别是什么用处?
27.在哪些情况下会发生针对该列创建了索引但是在查询的时候并没有使用呢?
28.为什么要尽量设定一个主键?
29.主键使用自增ID还是UUID?
30.字段为什么要求定义为not null?
31.如果要存储用户的密码散列,应该使用什么字段进行存储?
32.varchar(10)和int(10)代表什么含义?
33.MySQL的binlog有有几种录入格式?分别有什么区别?
34.超大分页怎么处理?
35.关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?
36.什么是存储过程?有哪些优缺点?
37.说一说三个范式
38.什么情况下应不建或少建索引
39.什么是表分区?
40.分区与分表的区别
41.表分区有什么好处?
42.MVVC了解过吗
43.在MVCC并发控制中,读操作可以分成哪几类?
44.行级锁定的优点
45.行级锁定的缺点
46.MySQL优化
47.key和index的区别
48.delete、truncate、drop区别
49.MySQL主从复制原理流程
50.自增主键最大ID记录,MyISAM和InnoDB分别是如何存储的
51.Mysql如何优化DISTINCT?
52.解释MySQL外连接、内连接与自连接的区别
Redis
- 什么是Redis?简述它的优缺点?
- Redis相比memcached有哪些优势?
- Redis有哪些数据结构?
- Redis主要消耗什么物理资源?
- Redis的全称是什么?
- 一个字符串类型的值能存储最大容量是多少?
- Redis为什么那么快?
- Redis如何实现分布式锁?
- Redis是单线程还是多线程?
- Redis 官方为什么不提供 Windows 版本?
- 为什么 Redis 需要把所有数据放到内存中?
- Redis如何设置密码及验证密码?
- Redis集群如何选择数据库?
- 缓存失效?缓存穿透?缓存雪崩?缓存并发?
- Redis中的热key怎么处理?
- Redis中的大key怎么处理?
- 使用Redis统计网站的UV,应该怎么做?
- Redis事务机制了解过吗?
- Redis key的淘汰策略有哪些?
- Redis在什么情况下会触发key的回收?
- Redis的持久化了解过吗?
- Redis在集群种查找key的时候,是怎么定位到具体节点的?
- Redis集群各个节点之间是怎么保持数据一致性的?
- 用Redis做延时队列,具体应该怎么实现?
- Redis String的内部编码有哪些?
- Redis 集群方案应该怎么做?都有哪些方案?
- Redis 集群方案什么情况下会导致整个集群不可用?
- MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?
- Redis有哪些适合的场景?
- Redis和Redisson有什么关系?
- Redis中的管道有什么用?
- Redis如何做内存优化?
Spring
- 什么是spring?
- 使用Spring框架的好处是什么?
- Spring由哪些模块组成
- Spring是怎么解决循环依赖的?
- Spring Boot手动装配有哪几种方式?
- Spring Boot自动配置原理
- 谈谈自己对于Spring IOC的理解
- 谈谈自己对于Spring AOP的理解
- Spring AOP和AspectJ AOP有什么区别?
- Spring中的bean的作用域有哪些?
- Spring中的单例bean的线程安全问题了解吗?
- Spring中的bean生命周期了解过吗?
- Spring MVC的工作原理了解嘛?
- Spring框架中用到了哪些设计模式?
- @Component和@Bean的区别是什么?
- 将一个类声明为Spring的bean的注解有哪些?
- Spring事务管理的方式有几种?
- Spring事务中的隔离级别有哪几种?
- Spring事务中有哪几种事务传播行为?
- Spring 事务底层原理
- BeanFactory和ApplicationContext有什么区别?
- Resource 是如何被查找、加载的?
- 解释自动装配的各种模式?
- 有哪些不同类型的IOC(依赖注入)?
- Spring AOP 实现原理
- ApplicationContext通常的实现是什么?
- Bean 工厂和 Application contexts 有什么区别?
Spring Boot
- 什么是springboot
- Spring Boot 有哪些优点?
- 创建一个 Spring Boot Project 的最简单的方法是什么?
- Spring 和 SpringBoot 有什么不同?
- 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
- Spring Boot 中的监视器是什么?
- 如何在 Spring Boot 中禁用 Actuator 端点安全性?
- 怎么使用 Maven 来构建一个 SpringBoot 程序?
- Spring Initializr 是创建 Spring Boot Projects 的唯一方法吗?
- 为什么我们需要 spring-boot-maven-plugin?
- 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?
- 如何在 Spring Boot 中添加通用的 JS 代码?
- 如何使用 Spring Boot 部署到不同的服务器?
- 如何使用配置文件通过 Spring Boot 配置特定环境的配置?
- 什么是Swagger?你用Spring Boot实现了吗?
- 如何实现Spring Boot应用程序的安全性?
- 比较一下Spring Security和Shiro各自的优缺点?
- Spring Boot中如何解决跨域问题?
- Spring Boot的核心注解是哪些?他由哪几个注解组成的?
- 保护SpringBoot应用有哪些方法?
- SpringBoot 2.X有哪些新特性?与1.X有什么区别?
MyBatis
- 什么是Mybatis?
- Mybatis的优缺点?
- Mybatis使用场合?
- #和$的区别是什么?
- 当实体类的属性名和表种字段名不一致怎么办?
- Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
- 如何获取自动生成的(主)键值?
- Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
- Mybatis动态SQL?
- 说一下resultMap和resultType?
- Mybatis全局配置文件中有哪些标签?分别代表什么意思?
- Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别。
- Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
- Mybatis都有哪些Executor执行器?它们之间的区别是什么?
- Mybatis的一级、二级缓存
Netty
- 你了解过哪些IO模型?
- 什么是Reactor模型?Reactor的3种版本都知道吗?
- 了解过粘包拆包吗?为什么会出现粘包拆包?怎么处理粘包拆包?
- UDP协议会有粘包拆包的问题吗?为什么?
- Netty 是什么?
- 为什么要用 Netty?
- Netty 的应用场景了解么?
- Netty 的零拷贝了解么?
- Netty 的心跳机制了解么?
- Netty 中有哪些重要组件?
- Netty 发送消息有几种方式?
- Netty 支持哪些心跳类型设置?
- 说说Netty的执行流程?
- Netty高性能体现在哪些方面?
微服务
- 微服务有哪些优缺点?
- 作为注册中心,Zookeeper和Eureka有什么区别?
- Service Mesh了解过吗?
- 微服务有哪些特点?
- 单片,SOA 和微服务架构有什么区别?
- Spring Cloud 解决了哪些问题?
- 服务注册和发现是什么意思?Spring Cloud 如何实现?
- Spring Cloud 和dubbo的区别?
- 什么是微服务?
- 微服务之间是如何通讯的?
- 请谈谈对SpringBoot 和SpringCloud的理解
- 什么是服务熔断,什么是服务降级
- 你所知道的微服务技术栈有哪些?
- 什么是 Eureka服务注册与发现?
- Eureka的基本架构是什么?
- 作为服务注册中心,Eureka比Zookeeper好在哪里?
Zookeeper
- Zookeeper有哪些节点类型?
- 了解过Zookeeper的ZAB协议吗?
- Zookeeper怎么实现分布式锁?
- Zookeeper是怎么保证数据一致性的?
- Zookeeper Leader选举过程是怎样的?
- Zookeeper怎么实现服务注册?
- ZooKeeper是什么?
- ZooKeeper提供了什么?
- Zookeeper文件系统
- Zookeeper Watcher 机制
- 客户端注册Watcher实现
- 服务端处理Watcher实现
- ACL权限控制机制
- 服务器角色
- Zookeeper 下 Server工作状态
- 数据同步
- zookeeper是如何保证事务的顺序一致性的?
- 分布式集群中为什么会有Master?
- zk节点宕机如何处理?
- Zookeeper有哪几种部署模式?
- 集群最少要几台机器,集群规则是怎样的?
- 集群支持动态添加机器吗?
- Zookeeper对节点的watch监听通知是永久的吗?为什么不是永久的?
- ZAB和Paxos算法的联系与区别?
- Zookeeper的典型应用场景
- Zookeeper 和 Dubbo 的关系?
- zookeeper负载均衡和nginx负载均衡区别
Spring Cloud
- 什么是 spring cloud?
- 使用Spring Cloud有什么优势?
- 服务注册和发现是什么意思?Spring Cloud如何实现?
- Spring Cloud由哪些组件组成?
- 什么是Hystrix?它如何实现容错?
- 什么是Hystrix断路器?我们需要它吗?
- 什么是Netflix Feign?它的优点是什么?
- Eureka的工作原理?
- 说说Eureka的自我保护机制?
- 什么是zuul?
- zuul的工作流程?
- 什么是服务熔断?什么是服务降级?
- 什么是服务雪崩效应?
- ZuulFilter有哪些常用方法?
- 如何实现动态Zuul网关路由转发?
- 什么是 Spring Cloud Bus?
- Spring Cloud Bus 原理?
- SpringCloud Config可以实现实时刷新吗?
- Eureka和zookeeper都可以提供服务注册与发现的功能,两者的区别
消息队列
- 消息队列有哪些应用场景?
- 消息队列的弊端有哪些?
- 使用消息队列,怎么确保消息不丢失?
- 使用消息队列,如果处理重复消息?
- Kafka的消息是有序的吗?如果保证Kafka消息的顺序性?
- 消息如何保证幂等性
- 消息队列积压怎么办
- 各种MQ的比较
- 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时怎么解决?
- 为什么使用消息队列?
Kafka
- 为什么要使用 kafka?为什么要使用消息队列?
- Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?
- kafka中的broker 是干什么的?
- kafka中的 zookeeper 起到什么作用?可以不用zookeeper么?
- kafka follower如何与leader同步数据?
- 什么情况下一个 broker 会从 ISR 中被踢出去?
- kafka 为什么那么快?
- kafka producer如何优化打入速度?
- kafka producer 打数据,ack 为 0, 1, -1 的时候代表啥, 设置 -1 的时候,什么情况下,leader 会认为一条消息 commit 了
- kafka unclean 配置代表啥?会对 spark streaming 消费有什么影响?
- 如果leader crash时,ISR为空怎么办?
- kafka的message格式是什么样的?
- kafka中consumer group 是什么概念?
- Kafka中的消息是否会丢失和重复消费?
- 为什么Kafka不支持读写分离?
- Kafka中是怎么体现消息顺序性的?
- kafka如何实现延迟队列?
- 什么是消费者组?
- 解释下 Kafka 中位移(offset)的作用。
- 阐述下 Kafka 中的领导者副本(Leader Replica)和追随者副本 (Follower Replica)的区别。
- 如何设置 Kafka 能接收的最大消息的大小?
- 监控 Kafka 的框架都有哪些?
- Broker 的 Heap Size 如何设置?
- 如何估算 Kafka 集群的机器数量?
- Leader 总是 -1,怎么破?
- LEO、LSO、AR、ISR、HW 都表示什么含义?
- Kafka 能手动删除消息吗?
- consumer_offsets 是做什么用的?
- 分区 Leader 选举策略有几种?
- Kafka 的哪些场景中使用了零拷贝(Zero Copy)?
- 如何调优 Kafka?
- Controller 发生网络分区(Network Partitioning)时,Kafka 会怎么样?
- 简述 Follower 副本消息同步的完整流程。
RabbitMQ
- 什么是RabbitMQ?为什么使用RabbitMQ?
- RabbitMQ有什么优缺点?
- 什么是元数据?元数据分为哪些类型?包括哪些内容?与cluster相关的元数据有哪些?元数据是如何保存的?元数据在cluster中是如何分布的?
- 在单node系统和多node构成的cluster系统中声明queue、exchange,以及进行binding会有什么不同?
- 客户端连接到cluster中的任意node上是否都能正常工作?
- 若cluster中拥有某个queue的owner node失效了,且该queue 被声明具有durable属性,是否能够成功从其他node上重新声明该 queue ?
- RabbitMQ 的消息是怎么发送的?
- RabbitMQ 怎么避免消息丢失?
- RabbitMQ的使用场景有哪些?
- RabbitMQ有哪些重要的角色?
- 如何确保消息正确地发送至RabbitMQ?如何确保消息接收方消费了消息?
- 要保证消息持久化成功的条件有哪些?
- RabbitMQ 有几种广播类型?
- vhost 是什么?起什么作用?
- 消息基于什么传输?
- 消息如何分发?
- 消息怎么路由?
- 如何确保消息接收方消费了消息?
- 如何避免消息重复投递或重复消费?
- 死信队列和延迟队列的使用
计算机网络
- 请简述TCP/UDP的区别
- TCP对应的协议和UDP对应的协议
- 有哪些私有(保留)地址?
- 你能说一说OSI七层模型?
- 说一说TCP/IP四层模型
- 简述IP地址的分类?
- 简述ARP地址解析协议工作原理
- 简述ICMP、TFTP、HTTP、NAT、DHCP协议
- 说一说TCP的三次握手
- 为什么TCP要三次握手
- TCP建立连接时为什么要传回 SYN
- TCP为什么要四次挥手
- 滑动窗口和流量控制
- 拥塞控制
- HTTP 协议包括哪些请求?
- TCP time_wait状态是主动断开方才有,还是被动断开方才有?还是两边都有?
- TCP的keepalive机制了解过吗?
- HTTP的keepalive和TCP的keepalive,有什么区别?
- TCP与UDP的区别?
- 简述 HTTP1.0/1.1/2.0 的区别
- HTTPS的原理了解过吗?
- TCP里Nagle算法了解过吗?可以禁用吗?在Java里怎么禁用?
- HTTP协议为什么无法实现服务端推送?
- websocket协议升级过程了解过吗?
- websocket帧结构了解过吗?
数据结构与算法
- 什么是算法?
- TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
- 如何知道二叉树的深度?
- 介绍一下,堆排序的原理是什么?
- 数组和链表的区别
- 二分查找了解过吗?
- 说下你熟悉的排序算法
- 布隆过滤器了解过吗?
- 一致性hash算法了解过吗?
- 如何在一个1到100的整数数组中找到丢失的数字?
- 请你讲讲LRU算法的实现原理?
- 为什么要设计后缀表达式,有什么好处?
- 什么是B树?
- 什么是B+树?
- 谈一谈,id全局唯一且自增,如何实现?
设计模式
- 接口是什么?为什么要使用接口而不是直接使用具体类?
- 设计模式六大原则?
- Java怎么实现单例模式?
- 什么是代理模式?什么是动态代理?Java中动态代理有哪些实现方式?
- 设计模式的类型
- 说说你所熟悉或听说过的 j2ee 中的几种常用模式?
- 简述一下你了解的 Java 设计模式(总结)
- 适配器模式是什么?什么时候使用?
- 适配器模式与装饰器模式有什么区别?
- 适配器模式和代理模式之间有什么不同?
- 什么是模板方法模式?试举例说明。
- OOP中的组合、聚合和关联有什么区别?
- 给我一个符合开闭原则的设计模式的例子?
- 工厂模式与抽象工厂模式的区别?
- 举出一个例子,在这种情况你会更倾向于使用抽象类,而不是接口?
- Dubbo 源码使用了哪些设计模式?
- Spring 当中用到了哪些设计模式?
分布式
- 分布式id如何生成?
- 雪花算法了解过吗?
- 什么是CAP定理?
- 分布式事务了解过吗?
- 什么是二阶段提交(2PC)?什么是三阶段提交(3PC)?
- TCC了解过吗?
- Paxos算法了解过吗?
- Zookeeper的Zab协议了解过吗?
- 知道什么是Gossip协议吗?
- 了解过哪些负载均衡算法?
- 负载均衡的实现方案有哪些?
- 正向代理和反向代理的区别
- 分布式 Session了解过吗?如何实现?
- 如何防止表单重复提交?
- 如何设计一个秒杀系统?
- 分布式系统的接口幂等性设计
- 如何保障请求执行顺序
- BASE理论了解过吗?
- SOA和微服务架构有哪些区别?
Linux
- vim有几种工作模式?
- find 命令如何使用?
- 如何在 /usr 目录下找出大小超过 10MB 的文件?
- 如何在 /var 目录下找出 90 天之内未被访问过的文件?
- 如何在 /home 目录下找出 120 天之前被修改过的文件?
- 在整个目录树下查找文件 “core” ,如发现则无需提示直接删除它们?
- ls 命令
- df 命令
- rm 命令
- mv 命令
- cp 命令
- tail 命令
- grep 命令
- sed 命令
- 用 sed 命令将指定的路径 /usr/local/http 替换成为 /usr/src/local/http ?
- awk 命令
- 打印 /etc/passwd 的 1 到 3 行?
- vim 命令
- diff 命令
- sort 命令
- xargs 命令
- 把当前目录下所有后缀名为 .txt 的文件的权限修改为 777 ?
- tar 命令
- gzip 命令
- bzip2 命令
- unzip 命令
- export 命令
- yum 命令
- rpm 命令
- shutdown 命令
- service 命令
- whereis 命令
- 用一条命令显示本机 eth0 网卡的 IP 地址,不显示其它字符?
- 如何禁止服务器被 ping ?
- 设置 DNS 需要修改哪个配置文件?
- 在 Linux 下如何指定dns服务器,来解析某个域名?
Docker
- 什么Docker
- Docker与虚拟机有何不同
- 什么是Docker镜像
- 什么是Docker容器
- Docker容器有几种状态
- DockerFile中最常见的指定是什么?
- Docker的常用命令?
- 容器与主机之间的数据拷贝命令?
- 启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令?
- 如何使用 Docker 技术创建与环境无关的容器系统?
- 有什么方法确定一个 Docker 容器运行状态
- Docker Image 和 Docker Layer (层) 有什么不同
- 如何停止所有正在运行的容器?
- 如何清理批量后台停止的容器?
- 如何临时退出一个正在交互的容器的终端,而不终止它?
- Docker 群(Swarm)是什么
- 在使用 Docker 技术的产品中如何监控其运行
- 什么是孤儿卷及如何删除它?
- 在 Windows 系统上可以运行原生的 Docker 容器吗?
- 在 非 Linux 操作系统平台上如何运行 Docker ?
Dubbo
- Dubbo是什么?
- 为什么要用Dubbo?
- Dubbo 和 Dubbox 有什么区别?
- dubbo都支持什么协议,推荐用哪种?
- Dubbo需要 Web 容器吗?
- Dubbo内置了哪几种服务容器?
- Dubbo默认使用什么注册中心,还有别的选择吗?
- Dubbo有哪几种配置方式?
- 在 Provider 上可以配置的 Consumer 端的属性有哪些?
- Dubbo启动时如果依赖的服务不可用会怎样?
- Dubbo推荐使用什么序列化框架,你知道的还有哪些?
- Dubbo默认使用的是什么通信框架,还有别的选择吗?
- 注册了多个同一样的服务,如果测试指定的某一个服务呢?
- Dubbo支持服务多协议吗?
- 当一个服务接口有多种实现时怎么做?
- 服务上线怎么兼容旧版本?
- Dubbo可以对结果进行缓存吗?
- Dubbo服务之间的调用是阻塞的吗?
- Dubbo支持分布式事务吗?
- Dubbo支持服务降级吗?
- Dubbo如何优雅停机?
- 服务提供者能实现失效踢出是什么原理?
- 如何解决服务调用链过长的问题?
- 服务读写推荐的容错策略是怎样的?
- Dubbo必须依赖的包有哪些?
- Dubbo的管理控制台能做什么?
- 说说 Dubbo 服务暴露的过程。
Elasticsearch
- 为什么要使用Elasticsearch?
- Elasticsearch是如何实现Master选举的?
- Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
- 详细描述一下Elasticsearch索引文档的过程。
- 详细描述一下Elasticsearch更新和删除文档的过程
- 详细描述一下Elasticsearch搜索的过程
- Elasticsearch对于大数据量(上亿量级)的聚合如何实现?
- 在并发情况下,Elasticsearch如果保证读写一致?
- ElasticSearch中的集群、节点、索引、文档、类型是什么?
- ElasticSearch中的分片是什么?
- 什么是ElasticSearch?
- Elasticsearch中的倒排索引是什么?
- Elasticsearch中的分析器是什么?
- 说说Elasticsearch常用的调优手段?
- Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
- 客户端在和集群连接时,如何选择特定的节点执行请求?
- 在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?
- 对于 GC 方面,在使用 Elasticsearch 时要注意什么?
- 在并发情况下,Elasticsearch 如果保证读写一致?
- 如何监控 Elasticsearch 集群状态?
Java集合
- 常见的集合有哪些?
- 常见的集合底层实现
- HashMap与HashTable的区别?
- ConcurrentHashMap和Hashtable的区别?
- ConcurrentHashMap实现原理
- ArrayList 和 Vector 的区别?
- ArrayList和LinkedList的区别?
- HashMap 默认的初始化长度是多少?
- 谈谈对HashMap 构造方法中初始容量、加载因子的理解
- Java集合框架是什么?说出一些集合框架的优点?
- 集合框架中的泛型有什么优点?
- 为何Collection不从Cloneable和Serializable接口继承?
- 为何Map接口不继承Collection接口?
- Iterator是什么?
- Enumeration和Iterator接口的区别?
- Iterater和ListIterator之间有什么区别?
- fail-fast与fail-safe有什么区别?
- hashCode()和equals()方法有何重要性?
- 我们能否使用任何类作为Map的key?
- 如何决定选用HashMap还是TreeMap?
- 哪些集合类提供对元素的随机访问?
- BlockingQueue是什么?
- 队列和栈是什么,列出它们的区别?
- Collections类是什么?
- Comparable和Comparator接口有何区别?
Java高并发什么是进程
- 什么是线程
- 进程间如何通讯
- 线程间如何通讯
- 同步和异步有何不同,在什么情况下分别使用它们?举例说明
- 进程调度算法
- Java中Unsafe类详解
- 如何测试并发量?
- 有三个线程T1,T2,T3,怎么确保它们按顺序执行?
- 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)?
- 数据库死锁?
- 什么是锁顺序死锁?
- 死锁的避免与诊断?
- 常见的并发容器?
- 常见的同步工具类?
- Nginx多进程模型是如何实现高并发的?
- CopyOnWriteArrayList
- AQS
- Java里的阻塞队列
- Fork/Join框架
Kubernetes
- 什么是Kubernetes?
- Kubernetes与Docker有什么关系?
- 什么是Container Orchestration?
- Kubernetes如何简化容器化部署?
- 什么是Google容器引擎?
- 什么是Heapster?
- 什么是Minikube?
- 什么是Kubectl?
- 什么是Kubelet?
- Kubernetes Architecture的不同组件有哪些?
- 你对Kube-proxy有什么了解?
- 您能否介绍一下Kubernetes中主节点的工作情况?
- kube-apiserver和kube-scheduler的作用是什么?
- 你能简要介绍一下Kubernetes控制管理器吗?
- 什么是etcd?
- 你对Kubernetes的负载均衡器有什么了解?
- 什么是Ingress网络,它是如何工作的?
- 您对云控制器管理器有何了解?
- 什么是Container资源监控?
- Replica Set 和 Replication Controller之间有什么区别?
Maven
- maven是什么?
- 使用Maven好处
- Maven的坐标和依赖
- Maven的⽣命周期
- 你们项目为什么选用 Maven 进行构建?
- Maven 规约是什么?
- Maven 常用命令
- Maven 有哪些优点和缺点
- Maven 版本规则?
- 对于一个多模块项目,如果管理项目依赖的版本?
- Maven 依赖原则?
- 如何解决 jar 冲突?
- 什么是 Maven 插件?
- Maven依赖冲突
- 依赖的解析机制
MongoDB
- 什么是MongoDB?
- MongoDB的优势有哪些
- 什么是集合(表)?
- 什么是文档(记录)
- 为什么用MOngoDB?
- 在哪些场景使用MongoDB
- MongoDB中的命名空间是什么意思?
- MongoDB中的分片什么意思
- 为什么要在MongoDB中使用分析器
- MongoDB支持主键外键关系吗
- MongoDB支持哪些数据类型
- 为什么要在MongoDB中用"Code"数据类型
- 为什么要在MongoDB中用"Regular Expression"数据类型
- 为什么在MongoDB中使用"Object ID"数据类型
- "ObjectID"有哪些部分组成
- 在MongoDb中什么是索引
- 在MongoDB中什么是副本集
- MongoDB支持存储过程吗?如果支持的话,怎么用?
- 如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS来存储文件?
- 为什么MongoDB的数据文件很大?
Jenkins
- 什么是Jenkins?
- Maven, Ant和Jenkins有什么区别?
- Jenkins支持哪些SCM工具?
- 在Jenkins中, 什么是持续集成?
- Jenkins的优势是什么?
- 可以使用哪些命令手动启动Jenkins?
- 如何在Jenkins中创建备份和复制文件?
- 如何通过Jenkins克隆Git存储库?
- 什么是jenkinsfile?为什么使用jenkinsfile
- 什么是Blue Ocean
Mycat
- Mycat是什么?
- 什么叫混合切分
- 在项目组中,切分后的库从哪里而来?
- 搭建mycat的核心配置文件有哪些?
- mycat分库可以分成100个库吗?
- 进行库表拆分时,拆分规则怎么取舍?
- Mycat中全局ID方案有哪些?程序自定义全局ID的方案有哪些?
- Mycat的在分库分表之后,它是怎么支持联表查询的?
- 配置文件不会变多,配置的节点主机会变多?
- 你们项目中分片的实现方式是什么?
Nginx
- 请解释一下什么是 Nginx ?
- 为什么要用Nginx?
- Nginx怎么处理请求的?
- Nginx的优缺点?
- Nginx应用场景?
- 使用“反向代理服务器”的优点是什么?
- 列举Nginx服务器的最佳用途。
- 请解释Nginx如何处理HTTP请求。
- 在Nginx中,如何使用未定义的服务器名称来阻止处理请求?
- 在Nginx中如何在URL中保留双斜线?
- ngx_http_upstream_module的作用是什么?
- fastcgi 与 cgi 的区别?
- Nginx 常用命令?
- Nginx 常用配置?
- 请陈述stub_status和sub_filter指令的作用是什么?
RocketMQ
- RocketMQ中的Topic和JMS的queue有什么区别?
- RocketMQ Broker中的消息被消费后会立即删除吗?
- RocketMQ消费模式有几种?
- 消费消息是push还是pull?
- broker如何处理拉取请求的?
- RocketMQ如何做负载均衡?
- 消息重复消费如何解决?
- 如何让RocketMQ保证消息的顺序消费?
- RocketMQ如何保证消息不丢失?
- rocketMQ的消息堆积如何处理
- RocketMQ在分布式事务支持这块机制的底层原理?
- 如果让你来动手实现一个分布式消息中间件,整体架构你会如何设计实现?
- 高吞吐量下如何优化生产者和消费者的性能?
- 再说说RocketMQ 是如何保证数据的高容错性的?
- 任何一台Broker突然宕机了怎么办?
shiro
- 什么是shiro
- 解释下Shiro的核心概念:Subject、SecurityManager、Realm
- Shiro的优点
- Shiro有哪些组件?
- 说下Authentication 身份验证的流程
- Authorization 授权的方式和流程是怎样的?
- Cryptography 加密的过程是这样的?
- Realm 域如何使用?
- shiro拦截器的执行流程
- Session Manager 会话管理介绍一下
Servlet
- Servlet的生命周期?
- Servlet和JSP的区别?
- Servlet的基本架构
- 什么情况下调用doGet()和doPost()?
- 页面间对象传递的方法
- 四种会话跟踪技术
- Request对象的主要方法
- 如何配置Servlet的初始化参数?
- 如何读取Servlet的初始化参数?
- init(ServletConfig)方法执行次数
- init(ServletConfig)方法与异常
Tomcat
- Tomcat的缺省端口是多少,怎么修改?
- tomcat 有哪几种Connector 运行模式(优化)?
- Tomcat有几种部署方式?
- tomcat容器是如何创建servlet类实例?用到了什么原理?
- tomcat 如何优化?
- tomcat内存调优了解过吗?
- tomcat垃圾回收策略调优了解吗?
- tomcat共享session如何处理?
- 如何添加JMS远程监控
- Tomcat一个请求的完整过程
java8
- Java 8 新特性简介:
- 抽象类 和 接口的 异同?
- Java8支持函数编程是什么意思?
- Java 8中的可选项是什么?
- hashMap原理,java8做的改变
- 解释Java 8-中间操作与终端操作?
- 什么是Lambda表达式?
- Lambda函数的优点:
- 什么是Java8中的MetaSpace?它与PermGen Space有何不同?
- 是什么使Java SE 8优于其他?
- Lambda表达式的参数列表与Lambda箭头运算符有何不同?
密码学
- 什么是base64
- MD5
- SHA
- HMAC
- 密码的常用术语
- 单向加密算法
- 复杂的对称加密(DES、PBE)、非对称加密算法
- 非对称加密
- DES
操作系统
- 说下进程的状态
- 说下进程和线程的联系与区别
- 为什么进程上下文切换比线程上下文切换代价高?
- 说下你对进程同步的理解
- 进程的通信方式有哪些
- 进程调度的种类有哪些?
- 非抢占式调度与抢占式调度的区别是什么?
- 说下你知道的调度算法
- 一个程序从开始运行到结束的完整过程(四个过程)
- 死锁出现的条件?
- 如何处理死锁问题
- 如何处理死锁问题
- 什么是临界资源
- 介绍一下内存池、进程池、线程池
- 动态链接库与静态链接库的区别
- 说下对虚拟内存的理解
- 页面置换算法了解多少?
- 中断与系统调用了解吗?
- 用户态切换到内核态的方式有哪些?
- 用户态和核心态(内核态)之间的区别是什么呢?
- 内部碎片与外部碎片分别是什么?
- 系统调用与库函数的区别
- 守护、僵尸、孤儿进程的概念
编译原理
- 词法分析
- 语法分析
- 语义分析
- 中间代码生成
- 目标代码生成
- 表格管理程序
- 出错处理
- 句型、句子、语言
- 有穷自动机(有限自动机)
- 全局优化
计算机组成原理
- 计算机系统由哪两部分组成?计算机系统性能取决于什么?
- 计算机系统5层层次结构从下到上由哪五层组成?哪些是物理机,哪些是虚拟机?
- 在计算机系统结构中,什么是翻译?什么是解释?
- 什么是计算机体系结构?什么是计算机组成?以乘法指令为例说明二者区别。
- 冯诺依曼机器的主要特点?
- 程序访问的局部性
- 字长
- Cache的基本工作原理
- Cache和主存之间的映射方式
- Cache中主存块的替换算法
- 二进制一般使用什么方法转换成十进制?
- 计算机直接使用原码计算有什么缺点?
- 请计算12、124、1023、-1、-127的二进制原码。
- 计算机的补码解决了什么问题?
- 什么是溢出?什么是上溢?什么是下溢?
- 浮点数之间做加减法运算需要几个步骤?每个步骤都是必须的吗?为什么?
- 虚拟存储器的基本概念
- 页式虚拟存储器
- 段式虚拟存储器
- 段页式虚拟存储器
篇幅有限,以上完整题目答案资料,及更多java大小厂面经真题获取: 点赞 私信 :222即可
感谢大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章持续更新中…
以上是关于(完整版)2022大厂Java八股文面试题库|附答案的主要内容,如果未能解决你的问题,请参考以下文章