25年10月我家云 Java开发 实习 一面
#JAVA##JAVA面经##JAVA内推#
先简单聊聊自己吧~学校专业、怎么接触编程的,还有为啥想做Java开发?
“我是XX大学计算机科学与技术专业大四学生。高中因信息学竞赛接触C++,大学用Java写第一个‘课程表查询系统’时被其严谨的面向对象设计和‘一次编写,到处运行’的特性吸引。选择Java开发,源于三点:一是企业级应用对稳定性的高要求(如金融、电商),二是Spring生态对工程化的极致追求(从Boot到Cloud),三是在校园项目中用Java解决真实问题的成就感——比如用线程池优化判题服务,让同学提交代码后秒级反馈。我享受用代码构建可靠系统的踏实感,也渴望在贵司这样的平台深耕后端技术。”
做过的项目里,哪个用SQL数据库最深入?
“校园抽奖系统(Spring Boot + MySQL):
- 表设计核心思路:
🔹lottery_activity:活动基础信息(id, name, start_time, end_time, total_prizes)
🔹lottery_record:中奖记录(id, activity_id, user_id, prize_id, status, expire_time)
→ 关键设计:
•user_id + activity_id唯一索引(防重复中奖)
•status字段(UNCLAIMED/CLAIMED/EXPIRED)支撑状态流转
•expire_time索引(支撑半小时失效扫描)
🔹prize_pool:奖品池(id, activity_id, prize_name, stock)- 查询优化实例:
→ 建联合索引-- 查询用户未领取中奖记录(覆盖索引) SELECT id, prize_name, expire_time FROM lottery_record r JOIN prize_pool p ON r.prize_id = p.id WHERE r.user_id = ? AND r.status = 'UNCLAIMED' ORDER BY r.create_time DESC;(user_id, status, create_time),EXPLAIN显示Using index,耗时从120ms→8ms- 收获:数据库设计需‘业务驱动’——每个字段、索引都为解决具体问题而生。”
用户抽完奖马上关页面,中奖结果怎么保证不丢?
“三重保障机制:
1️⃣ 前端兜底:提交后立即存本地缓存(localStorage),页面关闭前发Beacon API保底上报
2️⃣ 后端可靠性:
- RabbitMQ Confirm模式 + 持久化队列
- 消费者手动ACK(业务成功后才ack)
- 失败消息入DLQ + 企业微信告警
3️⃣ 数据校验:- 定时任务扫描‘提交成功但无记录’的异常数据(对比MQ日志与DB)
- 补偿脚本自动重发
项目验证:压测10万次抽奖,数据丢失率=0。核心认知:用户无感知的可靠性,源于多层防御设计。”
抽奖后台用了异步吗?简单说说怎么设计的~
“是的,核心流程异步化:
flowchart LR A[用户点击抽奖] --> B{库存校验} B -- 通过 --> C[生成中奖记录<br>status=PROCESSING] C --> D[RabbitMQ发消息] D --> E[异步消费者] E --> F[扣减奖品库存] F --> G[更新记录status=UNCLAIMED] G --> H[WebSocket推送结果] B -- 失败 --> I[直接返回失败]关键设计:
- 消息体含
record_id,消费者幂等处理(查DB已存在则跳过)- 消费失败重试3次 → 入DLQ人工介入
- 前端轮询
/api/lottery/result?recordId=xxx兜底(防WebSocket断连)
价值:接口响应P99从800ms→120ms,用户体验显著提升。”
会不会出现同一个人中奖记录被插多次?怎么防的?
“三重防护杜绝重复:
🔹 数据库层:lottery_record表建唯一索引(user_id, activity_id),重复插入直接报DuplicateKeyException
🔹 应用层:
- 抽奖前查DB:
SELECT COUNT(*) FROM lottery_record WHERE user_id=? AND activity_id=?- Redis分布式锁:
SET lock:lottery:{userId}:{activityId} nx ex 10(防并发请求绕过DB查询)
🔹 业务层:- 前端按钮防重(点击后置灰3秒)
- 接口层To
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
【八股真解】精炼最新高频面经 文章被收录于专栏
本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏
