面试问题11

1.redission如果客户端挂了,看门狗还会续期锁吗?

不会续期,等到过期时间自动释放锁,让其他客户端可以获取到锁。

2.rocketmq怎么保证消息不丢失?

2.1.使用同步的方式发送消息或者有回调的方式发送消息,确认本地的事务没有异常。

java 复制代码
SendResult sendResult = producer.send(msg,20*1000);
//异步发送,生产者另起一个线程等待broker确认,收到Broker确认之后直接触发回调方法。消息安全和效率之间比较均衡,但是会加大客户端的负担。
producer.send(msg,new SendCallback(){
	@Override
	public void onSuccess(SendResult sendResult){
		//do something
	}
	
	@Override
	public void onException(Throwable e){
		//do something
	}
})

2.2.broker 同步刷盘

2.3.消费者手动提交offset。

3.volatile是什么意思,有什么用?

4.一个表数据量太大如何处理?

4.1.加索引

4.2 表分区

java 复制代码
CREATE TABLE sales (
    id INT NOT NULL,
    amount DECIMAL(10, 2) NOT NULL,
    order_date DATE NOT NULL,
    PRIMARY KEY (id, order_date)
) 
PARTITION BY RANGE (YEAR(order_date)) (
    PARTITION p2020 VALUES LESS THAN (2021),
    PARTITION p2021 VALUES LESS THAN (2022),
    PARTITION p2022 VALUES LESS THAN (2023),
    PARTITION pFuture VALUES LESS THAN MAXVALUE
);

4.3分库分表。

4.4 存储在es或者使用tidb

5.java agent如何使用?

6 数据库如何优化?

6.1.先确认表使用有没有问题,例如索引正确建立,使用。避免索引失效场景

6.2 优化数据库配置

6.3 优化硬件配置,例如硬盘换成固态硬盘。

7.list抽出id,name组成新的map如何操作

java 复制代码
  Map<Integer, String> idToNameMap = people.stream()
            .collect(Collectors.toMap(Person::getId, Person::getName));
  1. 有一个成绩表,查出每个班级的前三名
    8.1
java 复制代码
select *from (
SELECT
	s.*,
	ROW_NUMBER() over ( PARTITION BY s.c_id ORDER BY s.s_score DESC ) AS ranks 
FROM
	score s ) a where a.ranks<=3
	

这里 使用了窗口函数,根据c_id分组然后按score排序,得到每个学生的排名,然后再用子查询查出排名,这里如果不用子查询会报错,必须再包一层。

结果如上图

8.2

java 复制代码
SELECT
	s1.s_id,s1.c_id,s1.s_score ,count(1)from score s1 left join 
(select distinct s.c_id,s.s_score from score s) s2  on s1.c_id=s2.c_id and s1.s_score<s2.s_score
GROUP BY
	s1.c_id,
	s1.s_id,
	s1.s_score having count(s1.c_id)<3 order by s1.c_id asc,s1.s_score desc

思路是,通过left join 找到 s1中比s2还小的条数有多少条,小于3条则证明,该成绩是排名前三的,

但是这种写法分数相同的算并列/。

相关推荐
kingx38 分钟前
Bugku 3122 谷歌小恐龙题解:纯离线逆向 Vault 的 AES-GCM 加密资源(附 Python 解密器)
java·逆向·ctf·bugku·aes-gcm
Dream it possible!2 小时前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划
翔云1234562 小时前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
DevOpenClub2 小时前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
露天赏雪3 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
天天被压力3 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
GeW3 小时前
新质生产力路线图解读:数据库性能优化与Linux调优专场
linux·数据库
天天被压力4 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain3764 小时前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
金銀銅鐵4 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程