Java开发面试题 | 2023

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: Java开发面试题 | 2023

Java基础

  • 接口和抽象类的区别?
  • Java动态代理
  • HashMap 底层实现及put元素的具体过程
  • currenthashmap底层实现原理?
  • map可以放null值吗,currenthashmap为什么不能放null值
  • synchronze和reetrantlock区别?
  • 怎样停止一个运行中的线程?
  • 什么是悲观锁、乐观锁、公平锁、非公平锁
  • String、StringBuffer、StringBuilder的区别
  • Set是如何保证元素不重复的
  • ArrayList与LinkedList哪个更占空间?为什么?
  • Java的设计原则?
  • 什么是长连接、短连接?
  • i++是否是原子操作?
  • ThreadLocal用过吗?主要在哪些场景用到了?
  • Java 反射?以及优缺点?
  • 常用的排序算法有哪些?时间复杂度分别是多少?

多线程

  • 线程的生命周期
  • JMM内存模型
  • 线程池的工作原理、几个重要参数、几个参数是依据什么来进行设置的?
  • 怎么实现线程之间的通信?

JVM

  • JVM的基本组成,每部分作用是什么?
  • jvm几种垃圾收集器
  • 常见的GC垃圾回收算法
  • JVM怎样判断对象是否存活
  • 说说双亲委派机制
  • 怎样打破双亲委派机制
  • 为什么使用双亲委派机制(双亲委派机制的优势)
  • 怎样实现自定义一个类加载器
  • 常用的GC参数

设计模式

  • 单例模式实现的几种方式?各自有哪些优缺点?
  • 策略模式
  • 模板方法模式
  • 观察者模式
  • 装饰器模式

Mybatis

  • Mybayis中&与#的区别,底层实现是怎样的
  • Mybatis Plus 为什么可以使用this.save直接插入一个实体对象

Spring

  • 说一下你对IOC容器的理解?
  • 说说Spring的AOP,实现机制是什么、有几种通知类型、Spring AOP底层是怎样实现的?
  • Spring 事务失效的场景?
  • Spring 的循环依赖是怎么解决的?
  • 什么是事务、事务的ACID特性
  • 事务的传播类型有哪些?

Spring Boot

  • Spring Boot的Run方法
  • 自动装配实现原理
  • BeanFactory与FactoryBean的区别?
  • 自定义Stater实现

Spring Cloud

  • 项目启动是怎样把服务注册到nacos上去的?
  • 微服务各组件的原理?调用链路?

Mysql

  • Mysql 索引底层实现是怎样的?为什么底层使用B+树
  • Mysql 常见的索引有哪些?有什么区别?
  • Mysql 索引的最左匹配原则
  • Mysql 查询索引使用explain 具体的值有哪些
  • Mysql 的索引优化
  • Mysql 索引失效的条件
  • Mysql 的存储引擎
  • Mysql的日志
  • Mysql事务底层是怎样实现的?

缓存

  • 本地缓存与Redis的区别?优缺点有哪些?
  • Redis的持久化方式及原理?
  • Redis是单线程还是多线程?
  • 怎样保证缓存、数据库的双写一致性?
  • Redis的缓存穿透、缓存击穿、缓存雪崩的解决办法?
  • Redis分布式锁使用场景?
  • 项目中哪些地方使用了Redis缓存

消息队列

  • kafka的基本结构说一下,他是怎样保持消息顺序的
  • kafka和rabbitmq的区别?
  • kafka消息丢失怎样解决?如何保证消息的顺序性?

Linux

  • 查看内存使用率命令
  • 日志文件怎样根据关键字进行查找?
  • Linux常用的命令

Maven

  • maven 常用命令
  • mvn clean package与mvn clean install有什么区别

Git

  • 命令merge和git rebase的区别

场景题目

  • 订单超时自动关闭如何实现?
  • 接口限流怎么做?说一下具体的实现思路?
  • 线上SQL你是怎样来进行优化的?

其他

  • 线上SQL性能优化过程?
  • 针对生产环境问题是怎样排查的?
  • 公司整个开发流程是怎样的?

笔试

  • Map map = new HashMap<>(); 根据value进行排序,打印key?
  • String、StringBuffer、StringBuilder的区别?
  • CPU 100% 怎样定位所在代码行?
  • 数据库设计E-R图?
  • 写单例、策略、模板设计模式代码示例
  • 手写重写equal、hashCode方法
  • 手写排序算法
  • 什么是缓存穿透、缓存雪崩、缓存击穿以及解决办法?
  • 递归算法
  • 索引有哪些类型?区别是什么?
  • 怎样实现分布式事务?原理是什么?
  • 怎样杀死一个运行中的Java项目进程
  • 怎样实现分布式事务?原理是什么?
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
16天前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
46 4
|
15天前
|
监控 Java 测试技术
Java开发现在比较缺少什么工具?
【10月更文挑战第15天】Java开发现在比较缺少什么工具?
30 1
|
16天前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
49 2
|
1天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
22天前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
58 1
Java面试题之Java集合面试题 50道(带答案)
|
8天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
46 8
|
3天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
4天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
15 2
|
4天前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
9 1
|
10天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
29 5