2023年一线JAVA面试题

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 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面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
77 2
|
27天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
67 14
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
1月前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
1月前
|
Java 编译器 程序员
Java面试高频题:用最优解法算出2乘以8!
本文探讨了面试中一个看似简单的数学问题——如何高效计算2×8。从直接使用乘法、位运算优化、编译器优化、加法实现到大整数场景下的处理,全面解析了不同方法的原理和适用场景,帮助读者深入理解计算效率优化的重要性。
36 6
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
64 4
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
134 4
|
2月前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
125 1
Java面试题之Java集合面试题 50道(带答案)
|
2月前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
72 5