2023年一线JAVA面试题

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 2023年一线JAVA面试题

企业一:
1.redis是重点。

项目中哪些地方用到了redis,为什么用redis,为什么有些数据你们不用redis存储,redis持久化,redis数据的基本格式。

2.核心业务是什么与基本业务流程是什么

3.你项目中工单审批流程是怎么实现的

4.springboot常用注解有那些?

5.spring的ioc与aop

6.反射的使用

7.maven怎么继承

8.springCloud常用的注解

企业二:
1.这个项目上线了吗?是哪个公司做的?给谁做的?

2.redis存储结构有哪些?

3.你用了springcloud哪些组件?

4.注册中心有了哪个?还有其他的东西吗?

5.熔断用了哪个?他的作用是什么?

6.你们项目的事务是怎么实现的?分布式事务怎么实现的?

7.你们总共做了几个工程服务?

8.服务与服务之间的调用?具体是怎么实现的?

9.服务与服务之间调用的事务的原理?

10.springmvc的请求过程是怎么样的?

11.java中的集合用了哪些?你用过哪些集合?

12.Alliylist能存空值吗?长度是多少?

13.==与equals的区别

14.mysql字符串转日期是什么?

15.orcal字符串转日期是什么?

16.你用过哪些数据库函数?

企业三:
1.部署的容器用的是什么?有哪些容器?

2.bs还是cs架构

3.为什么用mongoDB?

4.数据库优化与sql优化

5.用到那些技术

6.你最熟悉的技术

7.提升最高的项目技术是什么?

8.前端怎样?会什么?

9.linux命令怎样?

10.项目上线后,你是怎么发布的?

11.orcal存储过程怎么实现,视图等

12.多表关联查询速度慢怎么解决

企业四:
Springmvc启动原理

Ioc和aop项目中哪里体现

aop思想

Bean的作用域单例模式

bean是线程安全的吗,如何解决单例bean的线程安全(改变bean的作用域 把 "singleton"改为’‘protopyte’ 这样每次请求Bean就相当于是 new Bean() 这样就可以保证线程的安全了。)

@bean和@component的区别

Bean的生命周期

Springboot启动流程

Spring实现事务的底层原理

Mybatis#{}${}

Mybatis dao和xml文件映射的流程

Mybatis动态sql

Redis同步sql数据库

kafka的优势

为什么Kafka高吞吐量

Kafka group 如何实现消息不重复

了解那些设计模式

介绍单例模式

线程池在项目中是否使用过

最大线程池满了以后新线程处理方式

Jvm内存机制

Jdk1.8新特性

Java如何实现反射

Io相关

企业五:
ioc容器的作用

spingboot和spring的关系

springcloud和springboot

springboot的常用组件

aop思想的饮用场景

springboot启动的原理

sq|如何优化的in和or

常用的集

hashmap的底层

红黑数的底层原理

链表的结构,链表的饮用场景

(nodetable)和hashmap怎么怎么样以后,还 能put吗

企业工作流程

项目是按什么方式分模块的

公司开发项目用了什么技术

springboot的assert用法

根据什么创建索引

企业六:
介绍下项目

token令牌是怎么存放的

一个浏览器可以多个用户同时登录吗;怎么实现的,

令牌是什么时候放上去的

有没有做过导出功能

上传文件有没有做过

java有哪些容器,分别有哪些子类

arraylist和linkedlist的区别

springboot的启动类注解 ,是哪几个注解组成的

springboot还有哪些注解

项目的日志框架有没有了解过

springcloud有哪些核心组件

hystrix作用,有用过吗

feign的作用,有写过吗

Eureka的作用

项目部署了几层

mq是由哪些东西构成的(组件)

redis 由哪些类型

mysql中select count(*)和select count(1)的区别

有遇到过索引失效的情况吗

怎么发现索引失效

有看过执行计划吗

企业七:
String能被继承吗?为什么?

线程的生命周期?

事务的隔离级别?

jdk1.8版本新特性?

事务的传播特性?

常用的设计模式?

Spring单例模式有哪几种?具体怎么实现?

如果有子父类继承关系,实例化调用顺序?

抽象类和接口的区别?

SpringMVC的执行流程?

redis的数据类型

说说springboot的常用注解

mybatis中#和$的区别

spring cloud你是怎么理解的

企业八:
Stream流 了解吗

groupingby的使用如何分组

Mysql中join 了解吗

数据库死锁了解吗

Mybatis 中sql注入了解吗

Redis 运用在项目中那些方面

为什么要用mq

介绍一下最近的项目,项目中负责哪个模块?

秒杀的业务架构?

项目用户量多少?

秒杀业务的并发量大概多少?

Redis并发问题有哪些,如何解决?

幂等性如何解决?

事务的隔离级别?

线程池的参数?

线程run()和start()区别?

其他相关:
1.什么是回表查?
聚簇索引与非聚簇索引
2.Spring如何解决循环依赖问题
A类依赖了B类,B类依赖了C类,而最后C类又依赖了A类,这样就形成了循环依赖问题
Spring解决循环依赖问题,主要是通过三级缓存来解决的。Spring中有三个缓存,用于存储单例的Bean实例,这三个缓存是彼此互斥的,不会针对同一个Bean的实例同时存储。如果获取这个对象,则需要从三个缓存中依次获取指定的Bean实例。 读取顺序依次是一级缓存 ==> 二级缓存 ==> 三级缓存。当创建A的时候发现需要依赖B,spring先将A放入三级缓存,然后再去创建B,当创建B的时候发现需要依赖C,然后将B放入三级缓存,创建C的时候发现依赖A,那么他就去三级缓存中查找A,这个时候C就创建好了,并放入一级缓存中,依次是B,然后是A最后解决循环依赖问题
3.Nginx负载均衡 和 限流配置?略
4.Redis Lua 脚本?略
5.Nacos 存储了什么信息?
服务的注册信息,服务的配置信息
6.微服务之间的调用原理
RestAPI + 负载均衡(如何注册、如何发现、如何调用)
7.Redis 数据类型 及 底层数据结构?五种或6种(zset底层)
8.哈希槽为什么是16384?
Redis计算hash槽的时候使用的CRC16算法产生的hash值有16bit,这个算法可以产生2^16-=65536个值,作者之所以使用16384个而不使用65536个,他自己的解释在下面网站
在redis节点发送心跳包时需要把所有的槽放到这个心跳包里,以便让节点知道当前集群信息,16384=16k,在发送心跳包时使用bitmap压缩后是2k(2 8 (8 bit) 1024(1k) = 2K),
也就是说使用2k的空间创建了16k的槽数。
虽然使用CRC16算法最多可以分配65535(2^16-1)个槽位,65535=65k,压缩后就是8k(8 8 (8 bit) 1024(1k) = 8K),
也就是说需要需要8k的心跳包,作者认为这样做不太值得;并且一般情况下一个redis集群不会有超过1000个master节点,所以16k的槽位是个比较合适的选择
作者原话:
1、普通心跳数据包携带节点的完整配置,该配置可以用旧配置以幂等方式替换,以便更新旧配置。
这意味着它们包含原始形式的节点的槽配置,16k的槽配置需要使用2k内存空间,但是使用65k槽将使用8k的内存空间。
2、同时,由于其他设计折衷,Redis集群不可能扩展到超过1000个节点。
因此,16k是比较合适的,可以确保每个主设备有足够的槽,最大为1000个。
9.线程池配置?略
10.线程池的合理线程数是多少?
如果是CPU密集型的,如偏计算的情况核心线程数最好与服务器核心数保持一致,最大线程数为核心数的2倍即可
如果是io密集型的,如涉及到io操作,需要设置核心线程数为服务器核心数的2倍
11.跨域的解决方法?略
12.Mysql的函数:
尽量高级函数写几个
13.Mysql保证精准度的数据类型?略
14.代码管理工具及命令?Git
15.Java 集合详情 (单列 双列 队列 及实现类和特点)略
16.Springboot和Springmvc的区别是什么
17.git如何解决冲突
18.多线程编程开发的时候需要注意什么事情(安全问题 保证安全 死锁问题)
19.volatile起什么作用(保证内存的可见性、禁止指令重排序)
20.Mysql都有几种类型的索引、储存结构
21.雪花算法的组成
22.如何自己实现lru(最近最少): 双向链表
23.锁是如何升级的:无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁
24.Redis的事务怎么实现 : watch 监听key multi开启事务 命令1 命令2 exec 提交保证原子性
25.mysql如何解决幻读:通过间隙锁和临建锁、也可以通过MVCC
26.gateway三大组件是什么:路由、断言、过滤
27.回表查询
28.Redis、ES集群搭建
29.ES 常用数据类型 number(long,integer,short,double,float)、text、Keywords 等
30.数据库死锁,以及解决方法: 前提大事务下,多个线程保持与等待,尽量避免大事务
31.2个亿URL如何找到重复的:
分治思想,先文件分割将url哈希计算后取模,保证相同的url在同一个小文件中
读取小文件,放入hashset写入新文件
32.G1和cms区别
33.CAS算法
34.base理论

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
46 4
|
3月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
133 2
|
28天前
|
Java 程序员
Java社招面试中的高频考点:Callable、Future与FutureTask详解
大家好,我是小米。本文主要讲解Java多线程编程中的三个重要概念:Callable、Future和FutureTask。它们在实际开发中帮助我们更灵活、高效地处理多线程任务,尤其适合社招面试场景。通过 Callable 可以定义有返回值且可能抛出异常的任务;Future 用于获取任务结果并提供取消和检查状态的功能;FutureTask 则结合了两者的优势,既可执行任务又可获取结果。掌握这些知识不仅能提升你的编程能力,还能让你在面试中脱颖而出。文中结合实例详细介绍了这三个概念的使用方法及其区别与联系。希望对大家有所帮助!
164 60
|
4天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
45 14
|
7天前
|
安全 Java 程序员
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
37 13
|
27天前
|
算法 安全 Java
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
68 16
|
24天前
|
Java 程序员 调度
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
55 9
|
29天前
|
安全 Java 程序员
Java面试必问!run() 和 start() 方法到底有啥区别?
在多线程编程中,run和 start方法常常让开发者感到困惑。为什么调用 start 才能启动线程,而直接调用 run只是普通方法调用?这篇文章将通过一个简单的例子,详细解析这两者的区别,帮助你在面试中脱颖而出,理解多线程背后的机制和原理。
60 12
|
1月前
|
监控 Dubbo Java
Java Dubbo 面试题
Java Dubbo相关基础面试题
|
1月前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题

热门文章

最新文章