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和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏

全部评论

相关推荐

刚刷到字节跳动官方发的消息,确实被这波阵仗吓了一跳。在大家还在纠结今年行情是不是又“寒冬”的时候,字节直接甩出了史上规模最大的转正实习计划——ByteIntern。咱们直接看几个最硬的数,别被花里胡哨的宣传词绕晕了。首先是“量大”。全球招7000多人是什么概念?这几乎是把很多中型互联网公司的总人数都给招进来了。最关键的是,这次的资源分配非常精准:研发岗给了4800多个Offer,占比直接超过六成。说白了,字节今年还是要死磕技术,尤其是产品和AI领域,这对于咱们写代码的同学来说,绝对是今年最厚的一块肥肉。其次是大家最关心的“转正率”。官方直接白纸黑字写了:整体转正率超过50%。这意味着只要你进去了,不划水、正常干,每两个人里就有一个能直接拿校招Offer。对于2027届(2026年9月到2027年8月毕业)的同学来说,这不仅是实习,这简直就是通往大厂的快捷通道。不过,我也得泼盆冷水。坑位多,不代表门槛低。字节的实习面试出了名的爱考算法和工程实操,尤其是今年重点倾斜AI方向,如果你简历里有和AI相关的项目,优势还是有的。而且,转正率50%也意味着剩下那50%的人是陪跑的,进去之后的考核压力肯定不小。一句话总结:&nbsp;27届的兄弟们,别犹豫了。今年字节这是铁了心要抢提前批的人才,现在投递就是占坑。与其等到明年秋招去千军万马挤独木桥,不如现在进去先占个工位,把转正名额攥在手里。
喵_coding:别逗了 50%转正率 仔细想想 就是转正与不转正
哪些公司开暑期实习了?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务