Skip to content

自我介绍

技术考查点:

  1. 沟通表达能力
  2. 项目经验总结能力
  3. 技术栈掌握情况

回答: 我是一名拥有3年Java开发经验的工程师,主要专注于分布式系统开发。在上一家公司,我负责了电商平台的后端架构设计和核心模块开发,使用Spring Cloud构建了微服务架构。我熟悉Java生态,包括Spring Boot、MyBatis等框架,并对Redis、Kafka等中间件有深入理解。

项目做了多久

项目上线了没

redis在项目怎么使用的

技术考查点:

  1. Redis应用场景理解
  2. 缓存设计能力
  3. 性能优化意识

回答: 在项目中,我们使用Redis作为缓存层,主要存储热点数据,如用户会话信息、商品详情等。通过设置合理的过期时间,既保证了数据的实时性,又减轻了数据库的压力。我们还使用Redis的发布订阅功能实现了消息通知系统。

项目中为什么使用redisson

技术考查点:

  1. 分布式锁的理解
  2. 并发控制能力
  3. 中间件选型能力

回答: 我们使用Redisson主要为了实现分布式锁功能,确保在高并发场景下数据的一致性。Redisson提供了丰富的分布式对象和服务,如分布式锁、分布式集合等,大大简化了我们的开发工作。

docker的部署

技术考查点:

  1. 容器化部署理解
  2. 持续集成能力
  3. 环境一致性维护

回答: 我们使用Docker进行容器化部署,通过Dockerfile定义应用环境,使用docker-compose编排多个服务。主要步骤包括:

  1. 编写Dockerfile定义基础镜像和依赖
  2. 使用docker-compose.yml定义服务依赖关系
  3. 配置CI/CD流水线自动构建镜像
  4. 使用Kubernetes进行容器编排和集群管理

项目中使用了几台服务器

技术考查点:

  1. 服务器架构设计
  2. 负载均衡能力
  3. 高可用性设计

回答: 项目采用分布式架构,共使用8台服务器:

  • 2台Nginx负载均衡
  • 2台应用服务器
  • 2台Redis集群
  • 2台MySQL主从 通过Keepalived实现Nginx高可用,使用Redis Sentinel实现Redis高可用。

xxl-job在项目中如何使用,具体怎么做的

技术考查点:

  1. 分布式任务调度理解
  2. 任务管理能力
  3. 故障处理机制

回答: 我们使用XXL-JOB进行分布式任务调度,主要功能包括:

  1. 定时任务调度
  2. 任务分片处理
  3. 失败重试机制
  4. 任务日志监控
java
// 示例代码
@XxlJob("demoJobHandler")
public ReturnT<String> demoJobHandler(String param) {
    // 业务逻辑
    return ReturnT.SUCCESS;
}

MySQL在项目使用的什么版本

技术考查点:

  1. 数据库版本管理
  2. 新特性使用
  3. 兼容性考虑

回答: 项目使用MySQL 8.0版本,主要利用了以下特性:

  1. 窗口函数
  2. CTE(公用表表达式)
  3. JSON支持
  4. 性能优化器改进

框架与MySQL在项目中做结合,有什么难点

技术考查点:

  1. ORM框架使用
  2. 数据库连接管理
  3. 事务控制

回答: 主要难点包括:

  1. MyBatis与MySQL类型映射
  2. 连接池配置优化
  3. 分布式事务处理
  4. 慢查询优化

mongoDB在项目中用来干嘛的

技术考查点:

  1. NoSQL使用场景
  2. 数据模型设计
  3. 性能优化

回答: 我们使用MongoDB存储以下数据:

  1. 日志数据
  2. 用户行为数据
  3. 非结构化数据
  4. 大文件存储

kafka与rabbitmq的区别

技术考查点:

  1. 消息队列选型
  2. 性能对比
  3. 使用场景

回答: 主要区别:

  1. Kafka基于日志存储,RabbitMQ基于队列
  2. Kafka吞吐量更高
  3. RabbitMQ支持更多协议
  4. Kafka更适合大数据场景

spring boot与springcloud在项目中怎么结合使用的

技术考查点:

  1. 微服务架构
  2. 服务治理
  3. 配置管理

回答: 我们使用Spring Boot开发微服务,使用Spring Cloud实现:

  1. 服务注册发现(Eureka)
  2. 配置中心(Config)
  3. 网关(Gateway)
  4. 熔断限流(Hystrix)

使用了jmeter如何进行测试

技术考查点:

  1. 性能测试
  2. 压力测试
  3. 测试报告

回答: 使用JMeter进行:

  1. 接口性能测试
  2. 并发压力测试
  3. 生成测试报告
  4. 监控系统指标

总共做了三个项目还是有其他项目

技术考查点:

  1. 项目经验
  2. 技术广度
  3. 项目规模

回答: 我主要参与了三个大型项目:

  1. 电商平台
  2. 物流系统
  3. 金融风控

rabbitmq有什么重要组件

技术考查点:

  1. 消息队列架构
  2. 核心组件理解
  3. 功能模块

回答: RabbitMQ主要组件:

  1. Exchange
  2. Queue
  3. Binding
  4. Channel
  5. Virtual Host

rabbitmq是怎么使用的

技术考查点:

  1. 消息队列使用
  2. 消息可靠性
  3. 性能优化

回答: 我们使用RabbitMQ实现:

  1. 异步消息处理
  2. 消息确认机制
  3. 死信队列
  4. 延迟队列

redis的淘汰机制

技术考查点:

  1. 内存管理
  2. 缓存策略
  3. 性能优化

回答: Redis支持多种淘汰策略:

  1. LRU(最近最少使用)
  2. LFU(最不经常使用)
  3. Random(随机)
  4. TTL(过期时间)

wait与sleep区别

技术考查点:

  1. 线程控制
  2. 并发编程
  3. 资源管理

回答: 主要区别:

  1. wait释放锁,sleep不释放
  2. wait需要被唤醒
  3. sleep指定时间
  4. wait在Object类,sleep在Thread类

创建线程池有几种方式

技术考查点:

  1. 线程池使用
  2. 并发控制
  3. 资源管理

回答: 创建线程池方式:

  1. Executors.newFixedThreadPool
  2. Executors.newCachedThreadPool
  3. Executors.newSingleThreadExecutor
  4. ThreadPoolExecutor

什么是死锁

技术考查点:

  1. 并发问题
  2. 资源竞争
  3. 解决方案

回答: 死锁是指多个线程互相等待对方释放资源,导致程序无法继续执行。产生条件:

  1. 互斥条件
  2. 占有并等待
  3. 不可抢占
  4. 循环等待

迭代器

技术考查点:

  1. 集合遍历
  2. 设计模式
  3. 并发修改

回答: 迭代器用于遍历集合,主要方法:

  1. hasNext()
  2. next()
  3. remove()
java
// 示例代码
Iterator<String> it = list.iterator();
while(it.hasNext()) {
    System.out.println(it.next());
}

Java中的实例变量与局部变量的区别

技术考查点:

  1. 变量作用域
  2. 内存管理
  3. 生命周期

回答: 主要区别:

  1. 实例变量在类中声明,局部变量在方法中声明
  2. 实例变量有默认值,局部变量必须初始化
  3. 实例变量生命周期与对象相同,局部变量随方法结束

equals与==的区别

技术考查点:

  1. 对象比较
  2. 值比较
  3. 方法重写

回答: 主要区别:

  1. ==比较引用地址
  2. equals比较内容
  3. String等类重写了equals

jdk jvm与jre的区别

技术考查点:

  1. Java运行环境
  2. 开发工具
  3. 虚拟机

回答: 主要区别:

  1. JDK包含开发工具
  2. JRE是运行环境
  3. JVM是虚拟机

hashset与treeset的区别

技术考查点:

  1. 集合实现
  2. 性能对比
  3. 使用场景

回答: 主要区别:

  1. HashSet基于HashMap,TreeSet基于TreeMap
  2. HashSet无序,TreeSet有序
  3. HashSet性能更好

什么是反射

技术考查点:

  1. 动态编程
  2. 类加载
  3. 方法调用

回答: 反射机制允许程序在运行时获取类的信息并操作对象,主要功能:

  1. 获取类信息
  2. 创建对象
  3. 调用方法
  4. 访问字段

字符串有哪些类

技术考查点:

  1. 字符串处理
  2. 性能优化
  3. 编码解码

回答: 主要字符串类:

  1. String
  2. StringBuffer
  3. StringBuilder
  4. StringTokenizer

处理字符串的一些方法