给大家分享我整理的Java高频面试题,有小伙伴靠他拿到字节offer了。
Java基础面试题
- [Java的特点]
- [Java 与 C++ 的区别]
- [JDK/JRE/JVM三者的关系]
- [Java程序是编译执行还是解释执行?]
- [面向对象和面向过程的区别?]
- [面向对象有哪些特性?]
- [数组到底是不是对象?]
- [Java的基本数据类型有哪些?]
- [为什么不能用浮点型表示金额?]
- [什么是值传递和引用传递?]
- [了解Java的包装类型吗?为什么需要包装类?]
- [自动装箱和拆箱]
- [String 为什么不可变?]
- [为何JDK9要将String的底层实现由char[]改成byte[]?]
- [String, StringBuffer 和 StringBuilder区别]
- [什么是StringJoiner?]
- [String 类的常用方法有哪些?]
- [new String()会创建几个对象?]
- [什么是字符串常量池?]
- [String最大长度是多少?]
- [Object常用方法有哪些?]
- [讲讲深拷贝和浅拷贝?]
- [两个对象的hashCode()相同,则 equals()是否也一定为 true?]
- [Java创建对象有几种方式?]
- [说说类实例化的顺序]
- [equals和==有什么区别?]
- [常见的关键字有哪些?]
- [final, finally, finalize 的区别]
- [final关键字的作用?]
- [方法重载和重写的区别?]
- [接口与抽象类区别?]
- [常见的Exception有哪些?]
- [Error和Exception的区别?]
- [运行时异常和非运行时异常(checked)的区别?]
- [throw和throws的区别?]
- [通过故事讲清楚NIO]
- [BIO/NIO/AIO区别的区别?]
- [守护线程是什么?]
- [Java支持多继承吗?]
- [如何实现对象克隆?]
- [同步和异步的区别?]
- [阻塞和非阻塞的区别?]
- [Java8的新特性有哪些?]
- [序列化和反序列化]
- [什么时候需要用到序列化和反序列化呢?]
- [实现序列化和反序列化为什么要实现 Serializable 接口?]
- [实现 Serializable 接口之后,为什么还要显示指定 serialVersionUID 的值?]
- [static 属性为什么不会被序列化?]
- [transient关键字的作用?]
- [什么是反射?]
- [反射有哪些应用场景呢?]
- [讲讲什么是泛型?]
- [如何停止一个正在运行的线程?]
- [什么是跨域?]
- [跨域问题怎么解决呢?]
PS:双击屏幕可以点赞收藏,记得帮我点个赞哦~
Java集合面试题
- [常见的集合有哪些?]
- [List 、Set和Map 的区别]
- [ArrayList 了解吗?]
- [ArrayList 的扩容机制?]
- [怎么在遍历 ArrayList 时移除一个元素?]
- [Arraylist 和 Vector 的区别]
- [Arraylist 与 LinkedList的区别]
- [解决hash冲突的办法有哪些?HashMap用的哪种?]
- [使用的hash算法?]
- [为什么建议设置HashMap的容量?]
- [扩容过程?]
- [put方法流程?]
- [红黑树的特点?]
- [在解决 hash 冲突的时候,为什么选择先用链表,再转红黑树?]
- [HashMap 的长度为什么是 2 的幂次方?]
- [HashMap默认加载因子是多少?为什么是 0.75?]
- [一般用什么作为HashMap的key?]
- [HashMap为什么线程不安全?]
- [HashMap和HashTable的区别?]
- [LinkedHashMap底层原理?]
- [讲一下TreeMap?]
- [HashSet底层原理?]
- [HashSet、LinkedHashSet 和 TreeSet 的区别?]
- [什么是fail fast?]
- [什么是fail safe?]
- [讲一下ArrayDeque?]
- [哪些集合类是线程安全的?哪些不安全?]
- [迭代器 Iterator 是什么?]
- [Iterator 和 ListIterator 有什么区别?]
- [如何让一个集合不能被修改?]
- [并发容器]
- [ConcurrentHashMap]
- [put执行流程?]
- [怎么扩容?]
- [ConcurrentHashMap 和 Hashtable 的区别?]
- [CopyOnWrite]
- [CopyOnWriteArrayList]
- [ConcurrentLinkedQueue]
- [阻塞队列]
- [JDK提供的阻塞队列]
- [原理]
分享一份大彬精心整理的大厂面试手册,包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等高频面试题,非常实用,有小伙伴靠着这份手册拿过字节offer~【领取/点击】
Java并发面试题
- [为什么平时都是使用线程池创建线程,直接new一个线程不好吗?]
- [为什么使用线程池?]
- [线程池执行原理?]
- [线程池参数有哪些?]
- [线程池大小怎么设置?]
- [线程池的类型有哪些?适用场景?]
- [进程线程]
- [线程的生命周期]
- [讲讲线程中断?]
- [创建线程有哪几种方式?]
- [什么是线程死锁?]
- [线程死锁怎么产生?怎么避免?]
- [线程run和start的区别?]
- [线程都有哪些方法?]
- [volatile底层原理]
- [synchronized的用法有哪些?]
- [synchronized的作用有哪些?]
- [synchronized 底层实现原理?]
- [volatile和synchronized的区别是什么?]
- [ReentrantLock和synchronized区别]
- [wait()和sleep()的异同点?]
- [Runnable和Callable有什么区别?]
- [线程执行顺序怎么控制?]
- [守护线程是什么?]
- [线程间通信方式]
- [ThreadLocal]
- [ThreadLocal原理]
- [ThreadLocal内存泄漏的原因?]
- [ThreadLocal使用场景有哪些?]
- [AQS原理]
- [ReentrantLock 是如何实现可重入性的?]
- [锁的分类]
- [公平锁与非公平锁]
- [共享式与独占式锁]
- [悲观锁与乐观锁]
- [乐观锁有什么问题?]
- [什么是CAS?]
- [CAS存在的问题?]
- [并发工具]
- [CountDownLatch]
- [CyclicBarrier]
- [CyclicBarrier和CountDownLatch区别]
- [Semaphore]
- [原子类]
- [基本类型原子类]
- [数组类型原子类]
- [引用类型原子类]
- [为什么要使用Executor线程池框架呢?]
- [如何停止一个正在运行的线程?]
- [什么是Daemon线程?]
- [SynchronizedMap和ConcurrentHashMap有什么区别?]
- [怎么判断线程池的任务是不是执行完了?]
JVM面试题
- [什么是JVM?]
- [讲一下JVM内存结构?]
- [Java对象的定位方式]
- [说一下堆栈的区别?]
- [什么情况下会发生栈溢出?]
- [类文件结构]
- [什么是类加载?类加载的过程?]
- [什么是双亲委派模型?]
- [为什么需要双亲委派模型?]
- [什么是类加载器,类加载器有哪些?]
- [类的实例化顺序?]
- [如何判断一个对象是否存活?]
- [可作为GC Roots的对象有哪些?]
- [什么情况下类会被卸载?]
- [强引用、软引用、弱引用、虚引用是什么,有什么区别?]
- [GC是什么?为什么要GC?]
- [Minor GC 和 Full GC的区别?]
- [内存的分配策略?]
- [Full GC 的触发条件?]
- [垃圾回收算法有哪些?]
- [有哪些垃圾回收器?]
- [常用的 JVM 调优的命令都有哪些?]
- [对象头了解吗?]
- [Object o = new Object()占用多少个字节?]
- [main方法执行过程]
- [对象创建过程]
- [如何排查 OOM 的问题?]
- [什么是内存溢出和内存泄露?]
MySQL面试题
- [事务的四大特性?]
- [数据库的三大范式]
- [事务隔离级别有哪些?]
- [生产环境数据库一般用的什么隔离级别呢?]
- [编码和字符集的关系]
- [utf8和utf8mb4的区别]
- [什么是索引?]
- [索引的优缺点?]
- [索引的作用?]
- [什么情况下需要建索引?]
- [什么情况下不建索引?]
- [索引的数据结构]
- [Hash索引和B+树索引的区别?]
- [为什么B+树比B树更适合实现数据库索引?]
- [索引有什么分类?]
- [什么是最左匹配原则?]
- [什么是聚集索引?]
- [什么是覆盖索引?]
- [索引的设计原则?]
- [索引什么时候会失效?]
- [什么是前缀索引?]
- [索引下推]
- [常见的存储引擎有哪些?]
- [MyISAM和InnoDB的区别?]
- [MySQL有哪些锁?]
- [MVCC 实现原理?]
- [快照读和当前读]
- [共享锁和排他锁]
- [bin log/redo log/undo log]
- [bin log和redo log有什么区别?]
- [讲一下MySQL架构?]
- [分库分表]
- [什么是分区表?]
- [分区表类型]
- [分区的问题?]
- [查询语句执行流程?]
- [更新语句执行过程?]
- [exist和in的区别?]
- [MySQL中int()和char()的区别?]
- [truncate、delete与drop区别?]
- [having和where区别?]
- [什么是MySQL主从同步?]
- [为什么要做主从同步?]
- [乐观锁和悲观锁是什么?]
- [用过processlist吗?]
- [MySQL查询 limit 1000,10 和limit 10 速度一样快吗?]
- [深分页怎么优化?]
- [高度为3的B+树,可以存放多少数据?]
- [MySQL单表多大进行分库分表?]
- [大表查询慢怎么优化?]
- [说说count()、count()和count()的区别]
- [MySQL中DATETIME 和 TIMESTAMP有什么区别?]
- [说说为什么不建议用外键?]
- [使用自增主键有什么好处?]
- [自增主键保存在什么地方?]
- [自增主键一定是连续的吗?]
- [InnoDB的自增值为什么不能回收利用?]
- [MySQL数据如何同步到Redis缓存?]
Redis面试题
- [Redis是什么?]
- [Redis优缺点?]
- [Redis为什么这么快?]
- [讲讲Redis的线程模型?]
- [Redis应用场景有哪些?]
- [Memcached和Redis的区别?]
- [为什么要用 Redis 而不用 map/guava 做缓存?]
- [Redis 数据类型有哪些?]
- [SortedSet和List异同点?]
- [Redis的内存用完了会怎样?]
- [Redis如何做内存优化?]
- [keys命令存在的问题?]
- [Redis事务]
- [Redis事务支持隔离性吗?]
- [Redis事务保证原子性吗,支持回滚吗?]
- [持久化机制]
- [RDB和AOF如何选择?]
- [Redis有哪些部署方案?]
- [主从架构]
- [哨兵Sentinel]
- [Redis cluster]
- [过期键的删除策略?]
- [内存淘汰策略有哪些?]
- [如何保证缓存与数据库双写时的数据一致性?]
- [缓存穿透]
- [缓存雪崩]
- [缓存击穿]
- [缓存预热]
- [缓存降级]
- [Redis 怎么实现消息队列?]
- [Redis 怎么实现延时队列]
- [pipeline的作用?]
- [LUA脚本]
- [什么是RedLock?]
- [Redis大key怎么处理?]
- [Redis常见性能问题和解决方案?]
- [说说为什么Redis过期了为什么内存没释放?]
- [Redis突然变慢,有哪些原因?]
- [为什么 Redis 集群的最大槽数是 16384 个?]
RabbitMQ面试题
- [什么是RabbitMQ?]
- [RabbitMQ的组件]
- [什么时候使用MQ]
- [RabbitMQ的优缺点]
- [RabbitMQ 有哪些重要的角色?]
- [Exchange 类型]
- [消息丢失]
- [生产者确认机制]
- [路由不可达消息]
- [消费者手动消息确认]
- [持久化]
- [镜像队列]
- [消息重复消费怎么处理?]
- [消费端怎么进行限流?]
- [什么是死信队列?]
- [说说pull模式]
- [怎么设置消息的过期时间?]
Kafka面试题
- [Kafka 都有哪些特点?]
- [请简述下你在哪些场景下会选择 Kafka?]
- [Kafka 的设计架构你知道吗?]
- [Kafka 分区的目的?]
- [你知道 Kafka 是如何做到消息的有序性?]
- [Kafka Producer 的执行过程?]
- [讲一下你使用 Kafka Consumer 消费消息时的线程模型,为何如此设计?]
- [请谈一谈 Kafka 数据一致性原理]
- [ISR、OSR、AR 是什么?]
- [LEO、HW、LSO、LW等分别代表什么]
- [数据传输的事务有几种?]
- [Kafka 消费者是否可以消费指定分区消息?]
- [Kafka消息是采用Pull模式,还是Push模式?]
- [Kafka 高效文件存储设计特点]
- [Kafka创建Topic时如何将分区放置到不同的Broker中]
- [谈一谈 Kafka 的再均衡]
- [Kafka 是如何实现高吞吐率的?]
- [Kafka 缺点?]
- [Kafka 新旧消费者的区别]
- [Kafka 分区数可以增加或减少吗?为什么?]
Spring面试题
- [Spring的优点]
- [Spring 用到了哪些设计模式?]
- [什么是AOP?]
- [AOP有哪些实现方式?]
- [Spring AOP的实现原理]
- [JDK动态代理和CGLIB动态代理的区别?]
- [Spring AOP相关术语]
- [Spring通知有哪些类型?]
- [什么是IOC?]
- [IOC的好处?]
- [什么是依赖注入?]
- [IOC容器初始化过程?]
- [Bean的生命周期]
- [BeanFactory和FactoryBean的区别?]
- [BeanFactory和ApplicationContext有什么区别?]
- [Bean注入容器有哪些方式?]
- [Bean的作用域]
- [Spring自动装配的方式有哪些?]
- [@Autowired和@Resource的区别?]
- [@Qualifier 注解有什么作用]
- [@Bean和@Component有什么区别?]
- [@Component、@Controller、@Repositor和@Service 的区别?]
- [Spring 事务实现方式有哪些?]
- [有哪些事务传播行为?]
- [Spring事务在什么情况下会失效?]
- [Spring怎么解决循环依赖的问题?]
- [Spring启动过程]
- [Spring 的单例 Bean 是否有并发安全问题?]
- [Spring Bean如何保证并发安全?]
- [@Async注解的原理]
SpringMVC面试题
- [说说你对 SpringMVC 的理解]
- [什么是MVC模式?]
- [SpringMVC 有哪些优点?]
- [Spring MVC和Struts的区别]
- [Spring MVC的工作原理]
- [Spring MVC的主要组件?]
- [Spring MVC的常用注解由有哪些?]
- [@Controller 注解有什么用?]
- [@RequestMapping 注解有什么用?]
- [@RestController 和 @Controller 有什么区别?]
- [@RequestMapping 和 @GetMapping 注解有什么不同?]
- [@RequestParam 和 @PathVariable 两个注解的区别]
- [@RequestBody和@RequestParam的区别]
- [Spring MVC的异常处理]
- [SpringMVC 用什么对象从后台向前台传递数据的?]
- [SpringMvc的Controller是不是单例模式?]
- [介绍下 Spring MVC 拦截器?]
- [SpringMvc怎么配置拦截器?]
- [Spring MVC 的拦截器和 Filter 过滤器有什么差别?]
- [什么是REST?]
- [使用REST有什么优势呢?]
操作系统面试题
- [操作系统的四个特性?]
- [进程线程]
- [并发和并行]
- [多线程相较单线程的好处]
- [什么是协程?]
- [线程和协程有什么区别呢?]
- [进程通信]
- [什么是死锁?]
- [死锁怎么产生?怎么避免?]
- [进程调度策略有哪几种?]
- [进程有哪些状态?]
- [操作系统里的内存碎片怎么理解?]
- [虚拟内存]
- [什么是分页?]
- [什么是分段?]
- [分页和分段有什区别?]
- [页面置换算法]
- [用户态和内核态]
- [为什么要有这两种状态?]
- [什么时候转换]
- [什么是缓冲区溢出?有什么危害?]
- [IO多路复用]
计算机网络面试题
- [网络分层结构]
- [三次握手]
- [两次握手可以吗?]
- [四次挥手]
- [第四次挥手为什么要等待2MSL?]
- [为什么是四次挥手?]
- [TCP有哪些特点?]
- [说说TCP报文首部有哪些字段,其作用又分别是什么?]
- [TCP和UDP的区别?]
- [TCP 和 UDP 分别对应的常见应用层协议有哪些?]
- [TCP的粘包和拆包]
- [说说TCP是如何确保可靠性的呢?]
- [说下TCP的滑动窗口机制]
- [详细讲一下拥塞控制?]
- [HTTP协议的特点?]
- [HTTP报文格式]
- [HTTP状态码有哪些?]
- [HTTP 协议包括哪些请求?]
- [HTTP状态码301和302的区别?]
- [URI和URL的区别]
- [POST和GET的区别?]
- [如何理解HTTP协议是无状态的]
- [HTTP长连接和短连接?]
- [HTTP 如何实现长连接?]
- [HTTP长连接在什么时候会超时?]
- [HTTP1.1和 HTTP2.0的区别?]
- [HTTPS与HTTP的区别?]
- [什么是数字证书?]
- [HTTPS原理]
- [DNS 的解析过程?]
- [浏览器中输入URL返回页面过程?]
- [什么是cookie和session?]
- [cookie和session的区别?]
- [什么是对称加密和非对称加密?]
- [说说 WebSocket与socket的区别]
- [ARP协议的工作过程?]
- [ICMP协议的功能]
- [什么是DoS、DDoS、DRDoS攻击?]
- [什么是CSRF攻击,如何避免]
- [什么是XSS攻击?]
- [如何解决XSS攻击问题?]
- [防盗链]
- [说下ping的原理]
Mybatis面试题
- [Mybatis是什么?]
- **[ORM是什么]
- [Mybatis和Hibernate的区别?]
- [MyBatis框架的优缺点及其适用的场合]
- [Mybatis的工作原理]
- [Mybatis都有哪些Executor执行器?它们之间的区别是什么?]
- [MyBatis中接口绑定有几种实现方式?]
- [Mybatis 是如何进行分页的?]
- [分页插件的基本原理是什么?]
- [简述Mybatis的插件运行原理]
- [.如何编写一个插件?]
- [.Mybatis 是否支持延迟加载?]
- [延迟加载的基本原理是什么?]
- [#{}和${}的区别是什么?]
- [Mybatis的预编译]
SpringBoot面试题
- [Springboot的优点]
- [SpringBoot 中的 starter 到底是什么 ?]
- [运行 SpringBoot 有哪几种方式?]
- [SpringBoot 常用的 Starter 有哪些?]
- [Spring Boot 的核心注解是哪个?]
- [自动配置原理]
- [实现自动配置]
- [@Value注解的原理]
- [Spring Boot 需要独立的容器运行吗?]
- [Spring Boot 支持哪些日志框架?]
- [YAML 配置的优势在哪里 ?]
- [什么是 Spring Profiles?]
- [SpringBoot多数据源事务如何管理]
- [spring-boot-starter-parent 有什么用 ?]
- [Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?]
- [SpringBoot多数据源拆分的思路]
微服务面试题
-
[什么是微服务?]
-
[分布式和微服务的区别]
-
[服务怎么划分?]
-
[微服务设计原则]
-
[微服务之间是如何通讯的?]
-
[熔断器]
-
[服务网关]
-
[何为网关?]
-
[何为API网关]
-
[服务配置统一管理]
-
[服务链路追踪]
-
[微服务框架]
-
[Spring Cloud基础知识]
最后给大家分享一本谷歌大佬撰写的算法手册,整整 300 道 LeetCode 题目,并且都是最优解,非常强!这本手册帮助不少朋友加入大厂,大家加油!