分析了上百份最新的大中小厂的面经,我总结出了这份2023国内最新最强Java面试八股文

news2024/11/26 13:30:05

最近分析了上百份最新的大中小厂的面经,整理了 Java 面试中最最最常问的一些问题!大家可以对照着这篇文章学习或者准备面试。

开始之前,先说一下我非常推荐的一种学习方式:

带着问题学习或者准备面试。

之前分享过一位字节朋友的学习心得:,他也是以面试来驱动复习的。

所以,准备面试的小伙伴,一定要根据自身情况制定好复习计划! 并且,你最好还要时不时自测一下,对着一些面试常见的问题进行自问。

Java

基础

  1. Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?

  2. String 、 StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?

  3. String s1 = new String("abc");这段代码创建了几个字符串对象?

  4. == 与 equals?hashCode 与 equals ?

  5. 包装类型的缓存机制了解么?

  6. 自动装箱与拆箱了解吗?原理是什么?

  7. 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

  8. 谈谈对 Java 注解的理解,解决了什么问题?

  9. Exception 和 Error 有什么区别?

  10. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?

  11. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?

  12. 内部类了解吗?匿名内部类了解吗?

  13. BIO,NIO,AIO 有什么区别?

Java 集合框架

  1. 说说 List,Set,Map 三者的区别?三者底层的数据结构?

  2. 有哪些集合是线程不安全的?怎么解决呢?

  3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同

  4. HashMap 和 Hashtable 的区别?HashMap 和 HashSet 区别?HashMap 和 TreeMap 区别?

  5. HashMap 的底层实现

  6. HashMap 的长度为什么是 2 的幂次方

  7. ConcurrentHashMap 和 Hashtable 的区别?

  8. ConcurrentHashMap 线程安全的具体实现方式/底层具体实现

jvm

  1. jvm 内存结构

  2. jvm 调优参数

  3. 什么是类加载?何时类加载?类加载流程?

  4. 知道哪些类加载器。类加载器之间的关系?

  5. 类加载器的双亲委派了解么?结合 Tomcat 说一下双亲委派(Tomcat 如何打破双亲委托机制?...)。

  6. 为什么需要双亲委派

  7. Java 内存模型

  8. 栈中存放什么数据,堆中呢?

  9. 大对象放在哪个内存区域

  10. 堆区如何分类

  11. 垃圾回收有哪些算法

  12. GC 的全流程

  13. GC 中老年代用什么回收方法?

多线程

  1. 线程和进程的区别。

  2. 什么是上下文切换?

  3. 什么是线程死锁?如何避免死锁?

  4. 乐观锁和悲观锁了解么?

  5. 说说 sleep() 方法和 wait() 方法区别和共同点?

  6. Java 线程池有哪些参数?阻塞队列有几种?拒绝策略有几种?新线程添加的流程?

  7. 实现 Runnable 接口和 Callable 接口的区别。

  8. 讲一下 JMM(Java 内存模型)。volatile 关键字解决了什么问题?说说 synchronized 关键字和 volatile 关键字的区别。

  9. AQS 原理了解么?AQS 组件有哪些?

  10. 用过 CountDownLatch 么?什么场景下用的?

数据库

MySQL

基础

  1. 非关系型数据库和关系型数据库的区别?

  2. 事务的四大特性了解么?

  3. MySQL 事务隔离级别?默认是什么级别?

  4. 乐观锁与悲观锁的区别?

  5. MySQL 数据库两种存储引擎的区别?

索引

  1. 为什么索引能提高查询速度?

  2. 聚集索引和非聚集索引的区别?非聚集索引一定回表查询吗?

  3. 索引这么多优点,为什么不对表中的每一个列创建一个索引呢?(使用索引一定能提高查询性能吗?)

  4. 索引底层的数据结构了解么?Hash 索引和 B+树索引优劣分析

  5. B+树做索引比红黑树好在哪里?

  6. 最左前缀匹配原则了解么?

  7. 什么是覆盖索引

进阶

  1. 一条 SQL 语句在 MySQL 中如何执行的?

  2. explain 命令了解么?

  3. 简单说一下 SQL 调优思路。

  4. 简单说一下大表优化的思路。

  5. 分库分表了解么?为什么要分库分表?有哪些常见的分库分表工具(sharding-jdbcTShardingMyCAT...)?

Redis

  1. 分布式缓存常见的技术选型方案有哪些?说一下 Redis 和 Memcached 的区别和共同点

  2. 说一下有缓存情况下查询数据和修改数据的流程。

  3. Redis 有哪些数据结构?SDS 了解么?

  4. Redis 内存满了怎么办?

  5. Redis 内存淘汰算法除了 LRU 还有哪些?

  6. Redis 给缓存数据设置过期时间有啥用?Redis 是如何判断数据是否过期的呢?

  7. Redis 事务了解么?(Redis 可以通过 MULTI,EXEC,DISCARD 和 WATCH 等命令来实现事务功能)

  8. 缓存穿透和缓存雪崩问题了解么?有哪些解决办法?

  9. 如何基于 Redis 实现分布式锁?

网络

  1. OSI 与 TCP/IP 各层的结构与功能,都有哪些协议?为什么网络要分层?

  2. 计算机网络的一些常见状态码

  3. ping 所使用的协议

  4. TCP 的三次握手与四次挥手的内容?TCP 为什么连接是三次握手而断开是四次握手?

  5. TCP 与 UDP 的区别及使用场景

  6. TCP 是如何保证传输的可靠性?

  7. 一次完整的 HTTP 请求所经的步骤

  8. HTTP 协议了解么?HTTP 是基于 TCP 还是 UDP 的?

  9. HTTP 报文的内容简单说一下!HTTP 请求报文和响应报文中有哪些数据?

  10. HTTP 和 HTTPS 的区别了解么?

  11. HTTP 请求有哪些常见的状态码?

  12. HTTP 长连接和短连接了解么?

  13. Cookie 和 Session 的关系

  14. URI 和 URL 的区别是什么?

操作系统

  • 进程和线程的区别

  • 进程有哪几种状态?

  • 进程间的通信方式

  • 线程间的同步的方式

  • 进程的调度算法

  • 什么是死锁?死锁的四个必要条件,解决死锁的方法

  • 常见的内存管理机制,快表和多级页表

  • 分页机制和分段机制的共同点和区别

  • CPU 寻址了解吗?为什么需要虚拟地址空间?

  • 虚拟内存(Virtual Memory)

  • 页面置换算法

算法和数据结构

算法

  1. LRU 算法了解吗?你能实现一个吗?

  2. 写排序算法(快排、堆排)

  3. 使用数组实现一个栈

  4. 使用数组实现一个队列

  5. 实现一个链表、反转链表、

  6. ......

数据结构

  1. 数组 vs 链表

  2. 栈的应用场景

  3. 队列的分类、应用场景

  4. 红黑树的特点、红黑树 vs 二叉查找树

  5. 哈希表、哈希表应用场景

  6. 布隆过滤器了解吗?

  7. ......

系统设计

设计模式

  1. 何为设计模式?有哪些常见的设计模式?

  2. 单例模式了解么?说一下单例模式的使用场景。手写一个单例模式的实现。

  3. 观察者模式了解么?说一下观察者模式的使用场景。

  4. 工厂模式了解么?说一下工厂模式的使用场景。

  5. 责任链模式了解么?哪些开源项目(Netty、MyBatis ...)中用到了责任链模式?怎么用的?

  6. SOLID 原则了解么?简单谈谈自己对于单一职责原则和开闭原则的理解。

  7. 阅读 Spring 源码的时候什么设计模式最让你影响深刻?能简单讲讲吗?

常见框架

Spring

  1. 什么是 Spring 框架?

  2. 列举一些重要的 Spring 模块?

  3. 谈谈自己对于 Spring IoC 和 AOP 的理解

  4. Spring Bean 的生命周期说一下

  5. Spring 中的 bean 的作用域有哪些?

  6. 拦截器和过滤器了解么?

  7. Spring 动态代理默认用哪一种

  8. hibernate 和 mybatis 区别

  9. Spring Boot 和 Spring 的区别

  10. 说出使用 Spring Boot 的主要优点

  11. 什么是 Spring Boot Starter?

  12. 介绍一下@SpringBootApplication 注解

  13. Spring Boot 的自动配置是如何实现的?

  14. Spring Boot 支持哪些嵌入式 web 容器?

Netty

  1. BIO,NIO 和 AIO 有啥区别?

  2. Netty 是什么?为啥不直接用 NIO 呢?

  3. 为什么要用 Netty?Netty 应用场景了解么?

  4. 介绍一下 Netty 的核心组件?

  5. Bootstrap 和 ServerBootstrap 了解么?

  6. NioEventLoopGroup 默认的构造函数会起多少线程?

  7. Netty 线程模型了解么?

  8. 什么是 TCP 粘包/拆包?有什么解决办法呢?

  9. Netty 长连接、心跳机制了解么?

权限认证

  1. 认证 (Authentication) 和授权 (Authorization)的区别是什么?

  2. 什么是 Cookie ? Cookie 的作用是什么?如何在服务端使用 Cookie ?

  3. Cookie 和 Session 有什么区别?如何使用 Session 进行身份验证?

  4. 如果没有 Cookie 的话 Session 还能用吗?

  5. 为什么 Cookie 无法防止 CSRF 攻击,而 token 可以?

  6. 什么是 Token?什么是 JWT?如何基于 Token 进行身份验证?

  7. 什么是 OAuth 2.0?

  8. 什么是 SSO(单点登录)?

分布式

分布式理论

  • CAP & BASE 理论详解[22]

  • Paxos 算法详解[23]

  • Raft 算法详解[24]

RPC

RPC 基础:

  1. 了解 RPC 吗?有哪些常见的 RPC 框架?

  2. 如果让你自己设计 RPC 框架你会如何设计?

  3. 服务之间的调用为啥不直接用 HTTP 而用 RPC?

Dubbo:

  1. Dubbo 了解吗?

  2. Dubbo 的工作原理了解么?注册中心扮演了什么角色?注册中心挂了可以继续通信吗?

  3. Dubbo 的负载均衡策略了解么?

  4. Dubbo 的 spi 机制了解么?带来了啥好处?

分布式 ID

  1. 何为 ID?

  2. 何为分布式 ID?

  3. 一个合格的分布式 ID 需要满足什么要求?

  4. 分布式 ID 常见的生成方法有哪些?(数据库主键自增、数据库的号段模式、UUID、SNOWFLAKE 等等)

API 网关

  • 什么是网关?

  • 网关能提供哪些功能?

  • 有哪些常见的网关系统?

分布式锁

基于 Redis 实现分布式锁:

  • 如何基于 Redis 实现一个最简易的分布式锁?

  • 为什么要给锁设置一个过期时间?

  • 如何实现锁的优雅续期?

  • 如何实现可重入锁?

  • Redis 如何解决集群情况下分布式锁的可靠性?

基于 ZooKeeper 实现分布式锁:

  • 如何基于 ZooKeeper 实现分布式锁?

  • 为什么要用临时顺序节点?

  • 为什么要设置对前一个节点的监听?

  • 如何实现可重入锁?

高并发

消息队列

  1. 为什么要用消息队列?

  2. 对比一下常见的消息队列?

  3. 如何保证消息不被重复消费?

  4. 如何保证消息消费的顺序性?

CDN(内容分发网络)

  • 什么是 CDN ?

  • CDN 的工作原理是什么?

读写分离和分库分表

  • 什么是读写分离?

  • 主库和从库的数据存在延迟的问题如何解决?

  • 如何实现读写分离?主从复制原理是什么?

  • 什么是分库?什么是分表?什么情况下需要分库分表?

  • 常见的分片算法有哪些?

  • 分库分表会带来什么问题呢?

  • 分库分表后,数据怎么迁移呢?

系统设计/场景题

  1. 假如有 10 亿个数,只有一个重复,内存只能放下 5 亿个数,怎么找到这个重复的数字?

  2. 如何设计一个秒杀系统(服务端、数据库、分布式)?分布式系统的设计?

  3. 有一个服务器专门接收大量请求,怎么设计?

  4. 如果让你自己设计 RPC 框架你会如何设计?

  5. 怎么快速出现一个 stackoverflow 错误?

  6. 如何设计一个秒杀系统?

  7. 如何设计一个微博 Feed 流/信息流系统?

  8. 如何设计一个短链系统?

项目经历

  1. 说说你的项目中的亮点有哪些?

  2. 项目用户人数有多少?最大在线人数多少?

  3. 画一下你的项目的架构图。

  4. 项目中遇到的困难有哪些?怎么解决的?

  5. xx 某块的数据库表是如何设计的?

HR 面

  1. 个人介绍

  2. 平时的兴趣爱好

  3. 对我们公司的了解

  4. 三个词形容自己

  5. 职业规划

  6. 平时的学习方式

  7. 大学里做过比较有意义的事情

  8. 手里还有哪些 offer

  9. 选择工作的理由排序(薪资、加班情况之类的)。

经验总结

  1. 学完了某个知识点之后,你可以去看看对应的八股文和知识点总结

  2. 多面试,不要害怕失败,多总结经验。

  3. 尽早准备,不论是找工作前、面试前还是面试后。

  4. 如果是求职目标是中小厂、国企的话,算法相对来说不是那么重要。

  5. 如果你的学历比较一般的话,格外注意要把重心放在自己的项目经历上。

  6. 熟悉自己的简历。

  7. 电话和视频面试很平常,面试前提前准备一下。

  8. 复盘!!!不管是面试失败还是成功,都要养成复盘的好习惯。

     

考虑到近期还是有不少粉丝在我后台私信需要最新的八股文整理,借此机会,今天就再分享一遍给大家,希望能助力各位面试。

国内大厂最新Java面试高频题库(2023版)

文档从Java基础,多线程,JVM等诸多主流技术一直讲到算法,项目面试,篇幅足足有近2k页,可以说是市面上最全的Java八股文面试总结了大家且看目录:

由于平台篇幅限制下面就只能给大家展示部分内容,有需要完整版的小伙伴可以文末查看

Java基础

JVM

多线程

MySQL/Redis(数据库知识)

Spring Cloud/Dubbo(微服务知识)

网络

MQ

Zookeeper

Netty

算法

设计模式

项目(场景题)

最后

篇幅到这里已经很长了,就不继续拉长篇幅影响大家阅读体验了,需要完整版Java面试题目的小伙伴点击下方小卡片即可~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/649776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据预处理:标准化、正则化、最大最小归一化、绝对值标准化

https://scikit-learn.org/stable/modules/preprocessing.html 标准化 公式 : 优点:适用大多数类型的数据,标准化之后的数据是以0为均值,方差为1的正态分布 缺点 :是一种中心化方法,会改变原有数据得分…

《离散数学》:集合、关系和函数

〇、前言 这章将会对集合、以及集合之上的关系、以及两个集合之间的映射情况做一个细致的讨论。集合作为数学和其他领域中的基础概念,具有广泛的应用和重要的地位。它为数学建立了基本的体系和推理方法,为各个领域的研究和应用提供了一种统一的描述和分…

DDD领域驱动

为什么需要DDD? 我们经常讲技术为业务服务,架构设计需要对业务充分理解,在面向复杂的业务场景时,会面临诸多问题: 复杂系统设计:业务系统多、业务类型多、业务相互耦合,有没有合适的方法来指导…

深度分析高性能计算工程师和传统互联网开发有何不同?

数字化时代来袭,各类开发工程师层出不穷。在移动互联网时代,互联网开发享用了10年的行业红利;在即将到来的超算互联网时代、数字化浪潮汹涌而来的时代,高性能计算工程师这个原本在科研院所熠熠生辉的工程师群体也从技术的神坛走下…

刁钻面试问题?超全接口测试面试题总结+答案,面试看这篇就够了

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面试题&#xff1…

通过Xshell连接远程服务器搞懂SSH非对称加密的实际应用

最近阿里云服务器即将到期,正好618入手了腾讯云很便宜的轻量级服务器,之前阿里云服务器远程控制都是用Xshell密码登录,这次腾讯云试了试SSH免密登录,还是很好用的,正好借这个机会研究了下SSH原理 SSH是“非对称加密”…

在做性能测试时会遇到的瓶颈

针对网络瓶颈,现在冒似很少,不过也不是没有,首先想一下如果有网络的阻塞,断网,带宽被其他资源占用,限速等情况,应用程序或系统会是什么情况,针对WEB,无非是超时&#xff…

【ros2】ros2环境安装与基础入门

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍ros2环境安装与基础入门。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷…

【RF-SSA-LSTM】随机森林-麻雀优化算法优化时间序列预测研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

红帽认证考试难倒你?这些知识点可以帮你一臂之力

话不多说直接上干货,本篇文章适用于备考Linux红帽认证的同学。 常用的RPM软件包命令 常用的Yum命令 systemd与system V init的区别以及作用 如果想要将系统默认的运行目标修改为“多用户的文本界面”模式,可直接用ln命令把多用户模式目标文件链接到/e…

Pytest教程__用例分组(6)

用例分组 pytest进行分组测试的方法是使用装饰器 pytest.mark.标记名称,被标记为相同名称的用例可以看做为同一个组。 分组用例的运行方式是在执行命令中追加 -m "标记名称"的参数。 执行结果如下: 从结果可以看出,未被标记的用例…

aPaaS平台和低代码开发平台是一回事吗?哪个更好?

零代码、低代码、APaaS系统应从哪些指标考察选型?低代码、零代码、APaaS哪一个更好? 零代码、低代码、APaaS的概念在行业内已经流行了很长一段时间。那这3个概念分别指的是什么?企业如果要用该如何选?又有哪些好用的低代码平台推…

Oracle集群管理 -CRSD层进程启动过程与故障分析

1 CRSD启动过程 整体以及依赖关系如图展示: crsd.bin从OCR中获取所需要的资源列表。 crsd.bin启动对应的代理进程。代理进程oraagent_root启动集群的公网资源之后集群的VIP和scan vip资源也被启动。代理进程oraagent_grid启动进而vip对应的listener资源,…

unity制作愤怒的小鸟

文章目录 一、 介绍SpringJoint2D 、line renderer制作发射绳基类bird脚本的基础功能给bird添加飞行拖尾效果pig类游戏胜利的小星星烟花界面摄像机跟随移动游戏失败的界面多种小鸟的制作:黄鸟、绿鸟、黑鸟地图选择关卡选择数据保存制作多个关卡场景异步加载游戏全局…

Unity基础4——LineRenderer

一、参数面板 二、参数介绍 Loop:是否首尾相连 Positions:线段的点 Width:线段宽度曲线的调整 Color:颜色变化 需要搭配材质才有效果 Corner Vertices:角顶点、圆角 此属性指,在一条线中绘制角时使用了…

模块化互联产品 --青翼自研 模拟采集FMC子卡产品资料

FMC121是一款基于FMC标准规范,实现2路14-bit、1GSPS ADC同步采集,2路16-bit 2.5GSPS DAC同步回放功能子卡模块。该模块遵循VITA57.1标准,可直接与FPGA载卡配合使用,板卡ADC器件采用ADI的AD9680芯片,该芯片具有两个模拟…

软件进行验收测试的必要性体现在哪些方面?

在软件开发的过程中,验收测试是一个非常重要的环节。为确认软件是否符合预期需求而进行的一种测试工作。目的是验证软件是否满足其预期功能、性能以及质量等要求。通过对软件进行全面、系统的测试,可以发现和解决软件开发过程中存在的问题和缺陷&#xf…

第19章:索引的创建与设计原则

一、索引的声明与使用 1.1索引的分类 功能逻辑:普通索引,主键索引,唯一索引,全文索引 物理实现方式:聚簇索引和非聚簇索引 作用字段个数:单列索引和联合索引 1.普通索引 对表中的任何字段都可以创建&…

MT6853 (天玑 720)核心板,5G核心板

天玑720是一款中端移动设备的5G入门级体验,采用了7纳米制程,并集成了低功耗的5G调制解调器。它配备了一个八核CPU,其中包括两个主频为2GHz的Arm Cortex-A76大核和6个2GHz的Cortex-A55小核。此外,它还搭载了Mali-G57 MC3的GPU&…

django REST框架- Django-ninja

Django 是我学习的最早的web框架,大概在2014年,当时选他原因也很简单就是网上资料比较丰富,自然是遇到问题更容易找答案,直到 2018年真正开始拿django做项目,才对他有了更全面的了解。他是一个入门有门槛,学…