写点什么

金九银十结束了,各大公司 Java 后端开发真题汇总,明年再战

  • 2022-11-27
    湖南
  • 本文字数:3764 字

    阅读完需:约 12 分钟

前言

时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了。我在想,也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。


写这一套 Java 面试必备系列文章的初衷。


  1. 整理自己学过的知识,总结,让其成为一套体系,方便日后查阅。

  2. 现在不少 Java 开发者还比较迷茫,没有形成自己的一套知识体系。希望这一系列的文章能够帮助他们。


一年一度的跳槽季又结束了,还有很多想跳槽的朋友都没能成功,还有一些正在复习准备来年再战的,有很多粉丝问有没有今年的一些面试真题、八股文、算法等.....最近抽时间为大家整理了一份各大公司 Java 后端开发真题汇总,虽然不能概括所有的 Java 问题,但是足以应付目前市面上绝大部分的 Java 面试了,今天这篇文章不论是从程度还是广度来讲,都已经囊括了非常多的干货知识点了。


这份面试题的包含的模块分为 9 个模块,分别是:


  • Java 基础

  • Java 并发

  • 开发框架

  • MySQL

  • Redis

  • 分布式与微服务

  • 消息队列

  • 网络

  • LeetCode 算法


本文主要就是为读者朋友们整理一份比较实用的面试清单,下面一起进入主题吧!

1、Java 基础


1、垃圾回收分为哪些阶段


2、泛型中 extends 和 super 的区别


3、Java 中有哪些类加载器


4、JVM 有哪些垃圾回收算法?


5、hashCode()与 equals()之间的关系


6、什么是三⾊标记?


7、HashMap 的扩容机制原理


8、Java 中的异常体系是怎样的


9、谈谈 ConcurrentHashMap 的扩容机制


10、接⼝和抽象类的区别


11、CopyOnWriteArrayList 的底层原理是怎样的


12、ArrayList 和 LinkedList 区别


13、Jdk1.7 到 Jdk1.8 HashMap 发⽣了什么变化(底层)?


14、怎么确定⼀个对象到底是不是垃圾?


15、⾯向对象



16、==和 equals⽅法之前的区别


17、⼀个对象从加载到 JVM,再到被 GC 清除,都经历了什么过程?


18、final 关键字的作⽤是什么?


19、说⼀下 HashMap 的 Put⽅法


20、你们项⽬如何排查 JVM 问题


21、什么是 STW?


22、HashMap 和 HashTable 有什么区别?其底层实现是什么?


23、深拷⻉和浅拷⻉


24、JDK、JRE、JVM 之间的区别


25、JVM 有哪些垃圾回收器?


26、重载和重写的区别


27、JVM 参数有哪些?


28、JVM 中哪些是线程共享区


29、什么是字节码?采⽤字节码的好处是什么?


30、String、StringBuffer、StringBuilder 的区别


31、GC 如何判断对象可以被回收


32、List 和 Set 的区别


33、说说类加载器双亲委派模型

2、Java 并发

1、线程的⽣命周期?线程有⼏种状态


2、Sychronized 和 ReentrantLock 的区别


3、Sychronized 的偏向锁、轻量级锁、重量级锁


4、如何理解 volatile 关键字


5、线程池中阻塞队列的作⽤?为什么是先添加列队⽽不是先创建最 ⼤线程?


6、对线程安全的理解


7、ReentrantLock 中 tryLock()和 lock()⽅法的区别


8、ReentrantLock 中的公平锁和⾮公平锁的底层实现


9、并发、并⾏、串⾏之间的区别



10、谈谈你对 AQS 的理解,AQS 如何实现可重⼊锁?


11、Java 死锁如何避免?


12、Thread 和 Runable 的区别


13、ThreadLocal 的底层原理


14、线程池的底层⼯作原理


15、对守护线程的理解


16、为什么⽤线程池?解释下线程池参数?


17、sleep()、wait()、join()、yield()之间的的区别


18、CountDownLatch 和 Semaphore 的区别和底层原理


19、线程池中线程复⽤原理


20、并发的三⼤特性

3、开发框架

1、Spring 中的 Bean 创建的⽣命周期有哪些步骤


2、Spring MVC 的主要组件?


3、#{}和 ${}的区别是什么?


4、Spring Boot ⾃动配置原理?


5、Spring Boot 是如何启动 Tomcat 的


6、Spring MVC ⼯作流程


7、Spring 中什么时候 @Transactional 会失效


8、Spring Boot 中配置⽂件的加载顺序是怎样的?


9、Spring⽤到了哪些设计模式


10、什么是 bean 的⾃动装配,有哪些⽅式?


11、什么是嵌⼊式服务器?为什么要使⽤嵌⼊式服务器?


12、Spring 容器启动流程是怎样的


13、谈谈你对 IOC 的理解


14、谈谈你对 AOP 的理解


15、简述 Mybatis 的插件运⾏原理,如何编写⼀个插件。


16、解释下 Spring⽀持的⼏种 bean 的作⽤域。


17、Spring 中 Bean 是线程安全的吗


18、如何理解 Spring Boot 中的 Starter


19、Spring Boot 中常⽤注解及其底层实现


20、Spring Boot、Spring MVC 和 Spring 有什么区别


21、Spring 事务传播机制


22、Spring 事务什么时候会失效?


23、Spring 事务的实现⽅式和原理以及隔离级别?


24、MyBatis 与 Hibernate 有哪些不同?


25、Mybatis 的优缺点


26、ApplicationContext 和 BeanFactory 有什么区别


27、Spring 中的事务是如何实现的


28、Spring 是什么

4、MySQL


1、索引设计的原则?


2、ACID 靠什么保证的?


3、Mysql 锁有哪些,如何理解


4、索引覆盖是什么


5、Mysql 主从同步原理


6、Mysql 聚簇和⾮聚簇索引的区别


7、InnoDB 存储引擎的锁的算法


8、什么是 MVCC


9、索引的基本原理


10、Innodb 是如何实现事务的


11、Mysql 索引的数据结构,各⾃优劣


12、简述 MyISAM 和 InnoDB 的区别


13、Mysql 慢查询该如何优化?


14、分表后⾮sharding_key 的查询怎么处理,分表后的排序?


15、事务的基本特性和隔离级别


16、关⼼过业务系统⾥⾯的 sql 耗时吗?统计过慢查询吗?对慢查询都 怎么优化过?


17、B 树和 B+树的区别,为什么 Mysql 使⽤B+树


18、简述 Mysql 中索引类型及对数据库的性能的影响


19、最左前缀原则是什么


20、Explain 语句结果中各个字段分表表示什么

5、Redis


1、Redis 线程模型、单线程快的原因


2、Redis 单线程为什么这么快


3、简述 Redis 事务实现


4、Redis 和 Mysql 如何保证数据⼀致


5、Redis 的过期键的删除策略


6、Redis 主从复制的核⼼原理


7、Redis 的持久化机制


8、Redis 主从复制的核⼼原理


9、缓存穿透、缓存击穿、缓存雪崩分别是什么


10、Redis 集群策略


11、Redis 分布式锁底层是如何实现的?


12、Redis 有哪些数据结构?分别有哪些典型的应⽤场景?


13、什么是 RDB 和 AOF

6、分布式与微服务


1、分布式锁的使⽤场景是什么?有哪些实现⽅案?


2、Zookeeper 集群中节点之间数据是如何同步的


3、什么是中台?


4、如何避免缓存穿透、缓存击穿、缓存雪崩?


5、Zookeeper 和 Eureka 的区别


6、分布式缓存寻址算法


7、为什么 Zookeeper 可以⽤来作为注册中⼼


8、什么是 ZAB 协议


9、什么是 Hystrix?简述实现机制


10、简述你对 RPC、RMI 的理解


11、布隆过滤器原理,优缺点


12、分布式 ID 是什么?有哪些解决⽅案?


13、数据⼀致性模型有哪些


14、Dubbo 是如何完成服务导出的?


15、Spring Cloud 和 Dubbo 有哪些区别?


16、SOA、分布式、微服务之间有什么关系和区别?


17、缓存过期都有哪些策略?


18、存储拆分后如何解决唯⼀主键问题


19、简述 zk 的命名服务、配置管理、集群管理


20、什么是 RPC


21、简述 paxos 算法


22、分布式系统中常⽤的缓存⽅案有哪些


23、Dubbo⽀持哪些负载均衡策略


24、什么是分布式事务?有哪些实现⽅案?


25、什么是服务雪崩?什么是服务限流?


26、什么是服务熔断?什么是服务降级?区别是什么?


27、如何实现接⼝的幂等性


28、讲下 Zookeeper 中的 watch 机制


29、你的项⽬中是怎么保证微服务敏捷开发的?


30、负载均衡算法有哪些


31、Dubbo 的架构设计是怎样的?


32、Zookeeper 的数据模型和节点类型


33、怎么拆分微服务?


34、如何实现分库分表


35、有没有了解过 DDD 领域驱动设计?


36、Zookeeper 中的领导者选举的流程是怎样的?


37、如何解决不使⽤分区键的查询问题


38、简述 raft 算法


39、怎样设计出⾼内聚、低耦合的微服务?


40、雪花算法原理


41、常⻅的缓存淘汰算法


42、分布式架构下,Session 共享有什么⽅案


43、Spring Cloud 有哪些常⽤组件,作⽤是什么?


44、什么是 BASE 理论


45、Dubbo 是如何完成服务引⼊的?


46、什么是 CAP 理论

7、消息队列


1、死信队列是什么?延时队列是什么?


2、Kafka 的消费者如何消费数据


3、Kafka 与传统消息系统之间有三个关键区别


4、Kafka 中是怎么体现消息顺序性的?


5、让你设计⼀个 MQ,你会如何设计?


6、Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中


7、Kafka 为什么吞吐量⾼


8、RabbitMQ 事务消息


9、为什么 RocketMQ 不使⽤Zookeeper 作为注册中⼼呢?


10、RabbitMQ 如何确保消息发送 ? 消息接收?


11、kafaka⽣产数据时数据的分组策略


12、Kafka 的 Pull 和 Push 分别有什么优缺点


13、Kafka 如何实现延迟队列?


14、简述 RabbitMQ 的架构设计


15、Kafka 是什么


16、Kafka 中的 ISR、AR⼜代表什么?ISR 的伸缩⼜指什么


17、Kafka⾼效⽂件存储设计特点:


18、RocketMQ 的实现原理


19、RocketMQ 为什么速度快


20、RocketMQ 的事务消息是如何实现的


21、为什么要使⽤ kafka,为什么要使⽤消息队列?


22、如何进⾏产品选型?


23、消息队列如何保证消息可靠传输


24、RabbitMQ 镜像队列机制


25、消息队列有哪些作⽤


26、如何保证消息的⾼效读写?


27、RabbitMQ 死信队列、延时队列


28、Kafka 消费者负载均衡策略

8、网络


1、如果没有 Cookie,Session 还能进⾏身份验证吗?


2、如何设计⼀个开放授权平台?


3、epoll 和 poll 的区别


4、什么是认证和授权?如何设计⼀个权限认证框架?


5、TCP 的三次握⼿和四次挥⼿


6、浏览器发出⼀个请求到收到响应经历了哪些步骤?


7、零拷⻉是什么


8、什么是 OAuth2.0 协议?有哪⼏种认证⽅式?


9、跨域请求是什么?有什么问题?怎么解决?


10、什么是 CSRF 攻击?如何防⽌?


11、什么是 SSO?与 OAuth2.0 有什么关系?

9、LeetCode 算法


1、统计 N 以内的素数


2、环形链表


3、三个数的最⼤乘积


4、两数之和


5、删除排序数组中的重复项



6、寻找数组的中⼼索引


7、排列硬币


8、反转链表


9、斐波那契数列


10、x 的平⽅根

总结

所有的面试题目都不是一成不变的,上面的面试题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。

需要文章中配套资料的朋友可以——点击传送门

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022-09-20 加入

还未添加个人简介

评论

发布
暂无评论
金九银十结束了,各大公司Java后端开发真题汇总,明年再战_Java_小二,上酒上酒_InfoQ写作社区