后端实习两个月,我学到的东西比大学两年都多

在学校的时候,我以为后端开发就是 Spring Boot 连 MySQL,写几个 CRUD 接口。

实习两个月后,我发现 CRUD 是工作中最简单的部分

学校不会教的事

1. 代码 Review 是真正的学习

学校作业交了就是交了,没人告诉你哪里写得烂。

公司的代码 Review:

「这个循环里查了 N 次数据库,改成批量查询」
「异常吞掉了,出问题没法排查」
「变量名 data 是什么意思?要写清楚是 orderData」

第一次被 Review 的时候,我的 PR 被打了 47 条 comment。脸很疼,但学的东西比之前两个月加起来都多。

2. 环境比代码难搞

写功能花 2 小时。配 Docker、配 Nginx、配 CI/CD、配监控告警、配日志采集……

花了两天。然后发现是配置文件里少了一个空格。

3. 沟通成本 > 编码成本

  • 需求文档写得不清楚 → 来回确认 → 半天没了
  • 接口格式没对齐 → 联调失败 → 又半天没了
  • 数据库表结构改了没通知 → 线上炸了 → 一天没了

「把话说清楚」是后端最被低估的能力。

写 CRUD 也有讲究

你以为的 CRUD:

@PostMapping("/order")
public Result createOrder(@RequestBody OrderDTO dto) {
    orderMapper.insert(dto);
    return Result.ok();
}

实际生产环境的 CRUD:

@PostMapping("/order")
@Transactional(rollbackFor = Exception.class)
public Result createOrder(@Valid @RequestBody OrderDTO dto) {
    // 1. 参数校验 + 业务校验
    // 2. 幂等性检查(防止重复提交)
    // 3. 库存扣减(注意并发,用乐观锁)
    // 4. 创建订单
    // 5. 发送消息队列(异步通知)
    // 6. 记录操作日志
    // 7. 异常回滚 + 补偿逻辑
    return Result.ok(orderId);
}

一个「简单」的创建订单,实际要考虑:

  • 事务边界:哪些操作要原子?
  • 幂等性:用户点了两次怎么办?
  • 并发安全:库存超卖怎么处理?
  • 失败补偿:消息发失败了怎么恢复?

给也在实习的同学

  1. 主动要 Code Review——这是成长最快的方式
  2. 问为什么——不只问「怎么做」,更要问「为什么这样做」
  3. 看老代码——了解系统演进历史,比文档有用
  4. 别怕犯错——实习就是来犯错的,只要同一个错不犯两遍

企业代码和 LeetCode 的区别,就是生活和大富翁的区别。

关于 Zihao Zhang

后端开发工程师。关注 Java/Spring Boot/Redis/MySQL 技术栈,分布式系统,OLAP 数据库,AI Agent 开发与应用。

评论

评论已关闭。