记忆张量java一面
1、restful中get,post,put,delete都是幂等的吗?如果不是,幂等性如何保证?
GET (查)是幂等的,因为多次请求不会产生副作用。
POST (增)通常不是幂等的,因为每次请求可能导致不同的结果(如创建不同的资源)。
PUT (改)是幂等的,因为多次请求的结果是相同的(更新相同的资源)。
DELETE (删)是幂等的,删除同一资源多次,结果是一样的(资源已被删除)。
幂等性保证:可以通过设计合理的接口和使用数据库事务等方式来保证幂等性。
例如,使用唯一标识符来标记每次请求,确保同一操作不会重复执行。还有数据库的唯一约束。还可以使用分布式锁。
2、消息队列怎么保证幂等性?
1、数据库唯一约束(只适用插入场景)
2、唯一请求id + 去重表
3、redis分布式锁
4、状态机
5、乐观锁(版本号法)
3、消息队列重复消费怎么解决?
跟第二个问题一样
4、设计模式你了解哪些?
5、TCP四次挥手?
客户端发送FIN包,服务端 回 ACK 、客户端发完数据再发FIN、客户端回ACK并进入TIME_WAIT
6、线程创建方式有哪些?
继承thread,重写run()方法,调用start()启动线程
实现runable接口, 重写 run()
实现callable接口, 重写 call()
线程池
- start () 和 run () 区别?
start():真正启动线程,进入就绪态,由 JVM 调度执行run()run():只是普通方法调用,不会开启新线程
- Runnable 和 Callable 区别?
- Runnable 无返回值,不能抛异常
- Callable 有返回值,能抛异常
7、redis中热key和大key是怎么判断的?
热key:短时间被大量访问的key
大key:String类型value值过大,几百M, Hash/Set/ZSet/List 类型 的元素数量过多(几万)
危害会阻塞线程,执行操作时间过长。
8、锁类型有哪些?
9、synchronized和lock的区别?
- synchronized 是 JVM 关键字,Lock 是 JDK 接口;
- synchronized 自动加解锁,Lock 需手动操作;
- synchronized 不可中断、不可超时,Lock 支持中断、超时、尝试获取;
- synchronized 只有非公平,Lock 可公平可非公平;
- synchronized 不支持读写分离,Lock 可以用 ReadWriteLock 提升读性能;
- 简单并发用 synchronized,复杂场景用 Lock。
10、线程里主要存什么内容?
主要存储线程私有数据
程序计数器、Java 虚拟机栈、本地方法栈,以及线程状态、ThreadLocal 等私有信息。
其中虚拟机栈存放栈帧,栈帧包含局部变量表、操作数栈、动态链接、返回地址。
问:栈里面存对象吗?
不存对象,只存对象引用,对象在堆里。
11、mysql和redis消息一致性怎么保证?
cache aside
12、听说过延迟双删吗?
13、redis是怎么处理大量请求的?(redis为什么快)
14、MySQL如何定位慢查询的?
先开启慢查询日志,然后用explain分析耗时,看key,rows,type字段
15、覆盖索引是什么?
16、消息队列的用处?解耦,异步,削峰。
17、在 Java 中实现 RESTful API 时,请求从客户端发起后到最终执行业务逻辑的完整流程。
url解析→DNS解析→服务器和浏览器建立tcp协议→浏览器发送HTTP请求→服务器接收HTTP请求,并返回HTTP响应→浏览器接收HTTP响应并渲染画面。
18、threadlocal内存泄露怎么解决?
在使⽤完ThreadLocal对象中保存的数据后,⼀般在拦截器过滤器的后置处理中,在 finally{} 代码块中调⽤ ThreadLocal 的 remove() ⽅法
19、限流算法有哪些,介绍一下?
固定窗口、滑动窗口、令牌桶、漏桶。
20、synchronized关键字一般作用在什么上面
- 修饰实例方法
- 锁的是 当前实例对象 this
- 同一个对象调用才会互斥,不同对象互不影响
- 修饰静态方法
- 锁的是 当前类的 Class 对象
- 全局锁,整个 JVM 内该类的所有实例共用一把锁
- 修饰代码块(synchronized (this/obj/class))
- 锁的是 括号里的对象
- 可以灵活指定锁对象:this、自定义对象、类对象
ai项目:
21、为什么用BM25,他有什么优点?
BM25是关键字匹配
22、解释一下向量,你项目中用的什么向量库?
手撕题:最长递增子序列
翻转字符串
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)