Java面试题大全(2023牛客网最新版)大厂面试题附答案详解

很多 Java 工程师的技术不错,但是一面试就头疼,10 次面试 9 次都是被刷,过的那次还是去了家不知名的小公司。

问题就在于:面试有技巧,而你不会把自己的能力表达给面试官

  • 应届生:你该如何准备简历,面试项目和面试说辞?Spring 底层逻辑是什么?
  • 1-3 年经验的程序员:面试中你该讲哪些值钱的技术?如何用这些值钱的技术最大程度展示自己的技能?分布式组件底层逻辑是什么?
  • 3-5 年经验的程序员:k8s 怎么搭建实践?

这些问题,相信每一位 Java 程序员都曾遇到过,甚至有的人至今也不知道要怎么解决,屡面屡败,最终导致你的面试通过率极低。

如果说简历是你求职的敲门砖,那么你回答每一个 Java 技术问题的技巧与方法,就是你面试能否通过的关键!

为了帮助各位工程师,掌握 Java 面试中每一个问题的技巧,提高面试通过率,在这分享一些大厂面试都问的高频常问面试题,这份面试题资料包括了 Spring,JVM,java 基础,Java 集合,Java 并发编程,微服务,网络,Kafka,分布式,Redis,大厂面试解决方案,分布式事务,设计模式,算法,数据结构,MySQL 等

架构师必备技能:(阿里面试必问)

多线程 &并发面试题:

JAVA 并发知识库:

  • Java 中实现多线程有几种方法
  • 继承 Thread 类
  • 实现 Runnable 接口。
  • ExecutorSenvice. Callable. Future 有返回值线程
  • 基于线程池的方式
  • 4 种线程池
  • 如何停止一个正在运行的线程
  • notify0 和 notifyAll0 有什么区别?
  • sleep0 和 wait0 有什么区别?
  • volatile 是什么?可以保证有序性吗?
  • Thread 类中的 start0 和 run0 方法有什么区别?
  • 为什么 wait, notify 和 nfifAllI 这些方法不在 thread 类里面?
  • 为什么 wait 和 ntify 方法要在同步块中调用?
  • Java 中 interrupted 和 isInterruptedd 方法的区别?
  • Java 中 synchronized 和 ReentrantLock 有什么不同?
  • 有三个线程 T1,T2,T3,如何保证顺序执行?
  • SynchronizedMap 和 ConcurrentHashMap 有什么区别?
  • 什么是线程安全
  • Thread 类中的 yield 方法有什么作用?
  • Java 线程池中 submit0 和 execute0 方法有什么区别?
  • 说一说自己对于 synchronized 关键字的了解
  • 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗 ynchronized 关键字最主要的三种使用方式?
  • 什么是线程安全? Vector 是一 个线程安全类吗?
  • volatile 关键字的作用?
  • 简述一下你对线程池的理解
  • 线程生命周期(状态)

JVM 面试题:

  • Serial 垃圾收集器(单线程、复制算法)
  • ParNew 垃圾收集器(Serial+ 多线程)
  • Parallel Scavenge 收集器(多线程复制算法、高效)
  • Serial Old 收集器(单线程标记整理算法)
  • Parallel Old 收集器(多线程标记整理算法)
  • CMS 收集器(多线程标记清除算法)
  • G1 收集器
  • JVM 类加载机制
  • 类加载器
  • 双亲委派
  • OSGI (动态模型系统)
  • 动态改变构造
  • 模块化编程与热插拔
  • JVM 内存模型
  • 本地方法栈
  • 程序计数器
  • 方法区
  • 分代回收
  • 堆和栈的区别
  • 什么时候会触发 FullGC
  • 什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?
  • 对象分配规则
  • 描述一下 JM 加载 class 文件的原理机制?
  • Java 对象创建过程

Java 中的 IO 与 NIO 面试题:

  • Java 中 10 流?
  • Java 10 与 NIO 的区别
  • 常用 io 类有哪些
  • 字节流与字符流的区别
  • 阻塞 10 模型
  • 非阻塞 10 模型
  • 多路复用 10 模型
  • 信号驱动 10 模型
  • 异步 10 模型
  • JAVA NIO
  • NIO 的缓冲区
  • NIO 的非阻塞
  • Channel
  • Buffer

Mysql 面试题:

  • 分库分表之后,d 主键如何处理
  • 存储过程(特定功能的 SQL 语句集)
  • 存储过程优化思路
  • 触发器(一段能自动执行的程序)
  • 数据库并发策略
  • MySQL 中有哪几种锁?
  • MySQL 中有哪些不同的表格?
  • 简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
  • MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
  • CHAR 和 VARCHAR 的区别?
  • 主键和候选键有什么区别?
  • myisamchk 是用来做什么的?
  • MyISAM Static 和 MyISAM Dynamic 有什么区别?
  • 如果一个表有一-列定义为 TIMESTAMP,将发生什么?
  • 你怎么看到为表格定义的所有索引?
  • LIKE 声明中的 %和_是什么意思?
  • 列对比运算符是什么?
  • BLOB 和 TEXT 有什么区别?
  • MySQL fetch. array 和 MySQL fetch object 的区别是什么?
  • MyISAM 表格将在哪里存储,并且还提供其存储格式?
  • MySQL 如何优化 DISTINCT?
  • 如何显示前 50 名?
  • 可以使用多少列创建索引?
  • NOW () 和 CURRENT_ DATE () 有什么区别?
  • 什么是非标准字符串类型?
  • 什么是通用 SQL 函数?
  • MySQL 支持事务吗?

Redis 面试题:

  • Redis 是单进程单线程的?
  • 一个字符串类型的智能存储最大容量是多少?
  • Redis 持久化机制
  • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
  • 热点数据和冷数据是什么
  • 单线程的 redis 为什么这么快
  • redis 的数据类型,以及每种数据类型的使用场景
  • redis 的过期策略以及内存淘汰机制
  • Redis 常见性能问题和解决方案?
  • 为什么 Redis 的操作是原子性的,怎么保证原子性的?
  • Redis 事务
  • Redis 的持久化机制是什么?各自的优缺点?
  • Redis 常见性能问题和解决方案:
  • redis 过期键的删除策略?
  • Redis 的回收策略(海汰策略) ?
  • 为什么 edis 需要把所有数据放到内存中?
  • Redis 的同步机制了解么?
  • Pipeline 有什么好处,为什么要用 pipeline?
  • 是否使用过 Redis 集群,集群的原理是什么?
  • Redis 集群方案什么情况下会导致整个集群不可用?
  • Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
  • Jedis 与 Redisson 对比有什么优缺点?
  • Redis 如何设置密码及验证密码?

MongoDB 面试题:

  • 当更新-个正在被迁移的块(Chunk). 上的文档时会发生什么?
  • MongoDB 在 A:(B,C}上建立索引,查询 A:{B,C]和 A:{C,B)都会使用索引吗?
  • 如果一个分片(Shard) 停止或很慢的时候,发起一个查询会怎样?
  • MongoDB 支持存储过程吗?如果支持的话,怎么用?
  • 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?
  • 什么是 NoSQL 数据库? NoSQL 和 RDBMS 有什么区别?在哪些情况下使用和不使用 NoSQL 数据库?
  • MongoDB 支持存储过程吗?如果支持的话,怎么用?
  • 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?
  • 为什么 MongoDB 的数据文件很大?
  • 当更新-个正在被迁移的块(Chunk) 上的文档时会发生什么?
  • MongoDB 在 A:(B,C}上建立索引,查询 A:{B,C]和 A:{C,B)都会使用索引吗?
  • 如果一个分片(Shard) 停止或很慢的时候,发起一个查询会怎样
  • 分析器在 MongoDB 中的作用是什么?
  • 如果用户移除对象的属性,该属性是否从存储层中删除?
  • 能否使用日志特征进行安全备份?
  • 更新操作立刻 fsync 到磁盘?
  • 如何执行事务/加锁?
  • 什么是 master 或 primary?
  • getLasterror 的作用
  • 分片(sharding) 和复制(replication) 是怎样工作的?
  • 数据在什么时候才会扩展到多个分片(shard) 里?
  • 当我试图更新 一个正在被迁移的块(chunk) 上的文档时会发生什么?

MyBatis 面试题:

  • 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,
  • 这个 Dao 接口的工作原理是什么? Dao 接口里的方法,参数不同时,方法能重载吗?
  • 如何获取自动生成的(主)键值?
  • 在 mapper 中如何传递多个参数?
  • Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
  • Xml 映射文件中,除了常见的 selectlinsertlupdaeldelete 标签之外,还有哪些标签?
  • Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
  • 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
  • 一对一、一对多的关联查询?
  • MyBatis 实现一对一有几种方式?具体怎么操作的?
  • MyBatis 实现-对多有几种方式,怎么操作的?
  • Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
  • Mybatis 的一级、二级缓存
  • 什么是 MyBatis 的接口绑定?有哪些实现方式?
  • 使用 MyBatis 的 mapper 接口调用时有哪些要求?
  • Mapper 编写有哪几种方式?
  • 简述 Mybatis 的插件运行原理,以及如何编写一个插件。
  • MyBatis 实现一对一有几种方式?具体怎么操作的?

Spring 面试题:

  • Spring AOP and AspectU AOP 有什么区别?
  • 如何理解 Spring 中的代理?
  • 什么是编织(Weaving) ?
  • Spring MVC 框架有什么用?
  • 描述一下 DispatcherServlet 的工作流程
  • 介绍一下 WebApplicationContext
  • 什么是 spring?
  • 使用 Spring 框架的好处是什么?
  • Spring 由哪些模块组成?
  • Spring 的 IOC 和 AOP 机制
  • Spring 中 Autowired 和 Resource 关键字的区别
  • 依赖注入的方式有几种,各是什么?
  • 讲一下什么是 Spring
  • Spring MVC 流程
  • springMVC 是什么
  • SpringMVC 怎么样设定重定向和转发的?
  • SpringMVC 常用的注解有哪些
  • Spring 的 AOP 理解
  • Spring 的 IOC 理解
  • 解释一下 spring bean 的生命周期
  • 解释 Spring 支持的几种 bean 的作用域。
  • Spring 基于 xml 注入 bean 的几种方式
  • Spring 框架中都用到了哪些设计模式
  • 核心容器(应用上下文)模块
  • BeanFactory - BeanFactory 实现举例。
  • XML BeanFactory
  • 解释 AOP 模块

Spring Boot 面试题:

  • 我们能否在 spring-boot- starter-web 中用 jetty 代替 tomcat?
  • 如何使用 Spring Boot 生成一个 WAR 文件?
  • 如何使用 Spring Boot 部署到不同的服务器?
  • RequestMapping 和 GetMapping 的不同之处在哪里?
  • 为什么我们不建议在实际的应用程序中使用 Spring Data Rest?
  • 在 Spring Initializer 中,如何改变-个项目的包名字?
  • 可以配置 application.propertierde 的完整的属性列表在哪里可以找到?
  • JPA 和 Hibernate 有哪些区别?
  • 使用 Spring Boot 启动连接到内存数据库 H2 的 JPA 应用程序需!要哪些依赖项?
  • 如何不通过任何配置来选择 Hibernate 作为 JPA 的默认实现?
  • 指定的数据库连接信息在哪里?它是如何知道自动连接至 H2 的?
  • 我们如何连接一个像 MSSQL 或者 orcale -样的外部数据库?
  • Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?
  • 如果 H2 不在类路径里面,会出现上面情况?
  • 你能否举一个以 ReadOnly 为事务管理的例子?
  • 发布 Spring Boot 用户应用程序自定义配置的最好方法是什么?
  • 配置文件的需求是什么?
  • 如何使用配置文件通过 Spring Boot 配置特定环境的配置?
  • 我们如何使用 Maven 设置 Spring Boot 应用程序?
  • 如何禁用特定的自动配置?
  • Spring boot 支持哪些外部配置?
  • 如何对 Spring Boot 应用进行测试?
  • Spring Boot Actuator 有什么用?
  • SpringBoot 中静态首页默认位置可以放在哪里?
  • SpringBoot 中静态资源直接映射的优先级是怎样的?

Spring Cloud 面试题:

  • SpringBoot 和 SpringCloud 的区别?
  • 什么是 Hystrix 断路器?我们需要它吗
  • 说说 RPC 的实现原理
  • 微服务的优点缺点?说下开发项目中遇到的坑?
  • spring cloud 和 dubbo 区别?
  • REST 和 RPC 对比
  • 你所知道的微服务技术栈?
  • 微服务之间是如何独立通讯的?
  • springcloud 如何实现服务的注册?
  • Eureka 和 Zookeeper 区别
  • eureka 自我保护机制是什么?
  • 什么是 Ribbon?
  • 什么是 feigin?它的优点是什么?
  • Ribbon 和 Feign 的区别?
  • 什么是 Spring Cloud Bus?
  • springcloud 断路器作用?
  • Spring Cloud Gateway?
  • 作为服务注册中心,Eureka 比 Zookeeper 好在哪里?
  • 什么是 Ribbon 负载均衡?
  • Ribbon 负载均衡能干什么?
  • 什么是 zuu|路由网关
  • 分布式配置中心能干嘛?

数据结构面试题:

  • 栈(stack)
  • 队列(queue)
  • 链表(Link)
  • 散列表(Hash Table)
  • 排序二叉树
  • 前缨树
  • 红黑树
  • B-TREE
  • 位图

算法面试题:

  • 数据里有{1,2,3,4,5,6,7,8,9}. 请随机打乱顺序,生成一个新的数组(请以代码实现)
  • 写出代码判断一个整数是不是 2 的阶次方(请代码实现,谢绝调用 API 方法)
  • 假设今日是 2015 年 3 月 1 日,星期日,请算出 13 个月及 6 天后是星期几,距离现在多少天(请用代码实现,谢绝调用 API 方法)
  • 有两个篮子,分别为 A 和 B,篮子 A 里装有鸡蛋,篮子 B 里装有苹果,请用面向对象的思想实现两个篮子里的物品交换(请用代码实现)
  • 二分查找
  • 冒泡排序算法
  • 插入排序算法
  • 快速排序算法
  • 希尔排序算法
  • 归并排序算法
  • 桶排序算法
  • 基数排序算法
  • 剪枝算法
  • 回溯算法
  • 最短路径算法
  • 最小生成树算法
  • AES
  • RSA
  • CRC
  • MD5
  • 更多算法练习

Kafka 面试题:

  • Consumer Group
  • 如何获取 topic 主题的列表
  • 生产者和消费者的命令行是什么?
  • consumer 是推还是拉?
  • 讲讲 kafka 维护消费状态跟踪的方法
  • 讲一下主从同步
  • 为什么需要消息系统,mysql 不能满足需求吗?
  • Zookeeper 对于 Kafka 的作用是什么?
  • Kafka 判断一个节点是否还过着有那两个条件?
  • Kafka 与传统 MQ 消息系统之间有三个关键区别
  • 讲一讲 kafka 的 ack 的三种机制|
  • 消费者如何不自动提交偏移量,由应用提交?
  • 消费者故障,出现过锁问题如何解决?
  • 如何控制消费的位置

微服务 面试题:

  • Container 在微服务中的用途是什么?
  • 什么是微服务架构中的 DRY?
  • 什么是消费者驱动的合同(CDC) ?
  • Web, RESTful API 在微服务中的作用是什么?
  • 您对微服务架构中的语义监控有何了解?
  • 我们如何进行跨功能测试?
  • 我们如何在测试中消除非决定论?
  • Mock 或 Stub 有什么区别?
  • 您对 Mike Cohn 的测试金字塔了解多少?
  • Docker 的目的是什么?
  • 什么是金丝雀释放?
  • 什么是持续集成(CI) ?
  • 什么是持续监测?
  • 架构师在微服务架构中的角色是什么?
  • 我们可以用微服务创建状态机吗?
  • 什么是微服务中的反应性扩展?

Elasticsearch 面试题

  • Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法
  • ucence 内部结构是什么?
  • Elasticsearch 是如何实现 Master 选举的?
  • Elasticsearch 中的节点(比如共 20 个),其中的 10 个选
  • 个 master, 另外 10 个选了另一个 master, 怎么办?
  • 客户端在和集群连接时,如何选择特定的节点执行请求的?
  • 详细描述一下 Elasticsearch 索引文档的过程。
  • 详细描述一下 Elasticsearch 更新和删除文档的过程。
  • 详细描述一 下 Elasticsearch 搜索的过程
  • 在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索
  • Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
  • 对于 GC 方面,在使用 Elasticsearch 时要注意什么?
  • Elasticsearch 对于大数据量( 上亿量级)的聚合如何实现?
  • 在并发情况下,Elasticsearch 如何保证读写一致?
  • 如何监控 Elasticsearch 集群状态?
  • 介绍下你们电商搜索的整体技术架构
  • 介绍一下你们的个性化搜索方案?
  • 是否了解字典树?
  • 拼写纠错是如何实现的?

总结

不论是技术经理还是架构师,没有绝对地说哪条路是对还是错,适合自己才是最重要。小公司的可能没有架构师这个概念,大公司的架构师职位又不是那么容易拿下。但不管怎样,不断去学习新的技术,提升自己的层次是很有必要的,无论你在哪一家公司,过硬的技术水平才能吃得开。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntegrityError: FOREIGN KEY constraint failed解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

阿里云AliYun物联网平台使用-申请免费试用及完成初始配置

一、项目简介 本专栏文章将围绕阿里云物联网平台,实现其设备向云平台的数据上传,客户端获取云平台数据。设备通过NBIOT技术实现无线采集,定时上传。 二、阿里云平台申请 阿里云物联网平台试用申请地址 进入上述超链接网址: 由于是…

This application failed to start?

大家好,最近在搞一个定制的图像分割项目,其中需要自己构建数据集。 这里我用到了基于paddle开发高效智能的交互式分割标注软件 EISeg(Efficient Interactive Segmentation)。 它涵盖了通用、人像、遥感、医疗、视频等不同方向的高质量交互式分割模型。另…

Linux安装配置Oracle+plsql安装配置(详细)

如果觉得本文不够详细,没有效果图,可移步详细版: Linux安装配置Oracleplsql安装配置(超详细)_超爱慢的博客-CSDN博客 目录 1.安装虚拟机系统 1.安装虚拟机 2.配置虚拟机 1.设置机器名 2.修改域名映射 3.固定IP…

JavaEE——常见的锁策略、CAS、synchronized 原理(八股)

文章目录 一、常见的锁策略1.乐观锁 & 悲观锁2.轻量级锁 & 重量级锁3.自旋锁 & 挂起等待锁4.互斥锁 & 读写锁5. 公平锁 & 非公平锁 二、CAS1、什么是 CAS2. CAS 的应用场景2.实现自旋锁3. CAS 中的 ABA 问题 三、 Synchronized 原理 一、常见的锁策略 当前…

MySQL数据库基础

目录 为什么使用数据库? 主流数据库 数据库基本使用 连接服务器 服务器管理 理解服务器、数据库、表的关系 使用示例 MySQL架构 MySQL架构分层 MySQL架构的主要组件: SQL分类 存储引擎 为什么使用数据库? 我们平时存储数据常用各…

简要介绍 | 融合深度学习与符号逻辑:神经符号结合的探索

注1:本文系“简要介绍”系列之一,仅从概念上对神经符号结合进行非常简要的介绍,不适合用于深入和详细的了解。 融合深度学习与符号逻辑:神经符号结合的探索 Neuro-Symbolic AI 本文将探讨神经符号结合的概念、原理、研究现状、挑战…

电脑应用程序发生异常怎么办?

有时候我们打开电脑上面的某个软件时,会打不开,并且会弹出如下的错误提示“应用程序发生异常 未知的软件异常(xxx),位置为xx”。相信大多数的人在使用电脑的时…

ThreadLocal与InheritableThreadLocal及线程池的影响

在web开发中使用了ThreadLocal本地线程存储拦截器解析的用户信息,方便在下文代码中调用,但是在springboot中使用Async开启异步操作时,就会造成,子线程无法拿到父本地线程数据。拿到一些脏数据。 1.InheritableThreadLocal 在这个…

Linux 批量杀掉进程(包含某个关键字)

一、场景说明 现场环境有十多个包含 ”celery” 关键字的进程在运行,每次重启服务,需要将这些进行kill掉,然后重新启动。 可以用如下命令批量kill掉这些进程: kill -9 PID1 PID2 PID3 PID4.....其中,PID是查询到的进…

Node.js开发

Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境。 也就是说Node.js基于V8引擎来执行JavaScript的代码,但是不仅仅只有V8引擎:  前面我们知道V8可以嵌入到任何C 应用程序中,无论是Chrome还是Node.js,事实上都是嵌入…

Docker NGINX 加载Geoip模板

前提环境: Docker 环境 涉及参考文档: ngx_http_geoip_module 模块Loki NGINX Service MeshGeoIP IP库 一、下载GeoIP IP库 二、配置Nginx主配置文件 vim /data/nginx/MangoMoh/dos/nginx.confuser nginx; worker_processes auto;error_log /var…