Appearance
自我介绍
建议准备3分钟版本: "两年Java开发经验,熟悉SpringCloud微服务体系,参与过物流调度系统开发,掌握MySQL索引优化及分布式锁实现。"
Springboot核心配置
常用配置项说明:
properties
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.username=root
# 热部署配置
spring.devtools.restart.enabled=true
如何防止死锁
预防策略:
代码示例:
java
// 使用tryLock避免死锁
if (lock1.tryLock(1, TimeUnit.SECONDS)) {
try {
if (lock2.tryLock(1, TimeUnit.SECONDS)) {
// 业务逻辑
}
} finally {
lock2.unlock();
}
}
产生死锁原因
必要条件:
- 互斥条件
- 请求与保持
- 不可剥夺
- 循环等待
索引是什么
B+树结构说明:
ArrayList和LinkedList区别
性能对比:
操作 | ArrayList | LinkedList |
---|---|---|
随机访问 | O(1) | O(n) |
头部插入 | O(n) | O(1) |
Redisson分布式锁
实现原理:
java
// 加锁示例
RLock lock = redisson.getLock("orderLock");
lock.lock(30, TimeUnit.SECONDS);
try {
// 业务逻辑
} finally {
lock.unlock();
}
幂等性问题
解决方案流程图:
Stream API
常用操作示例:
java
List<String> names = users.stream()
.filter(u -> u.getAge() > 18)
.map(User::getName)
.collect(Collectors.toList());
RabbitMQ可靠性
保障机制:
- 生产者确认模式
- 消息持久化
- 消费者手动ACK
RabbitMQ和Kafka区别
对比表格:
特性 | RabbitMQ | Kafka |
---|---|---|
设计定位 | 消息队列 | 流处理平台 |
吞吐量 | 万级 | 百万级 |
商品详情亮点
技术实现要点: