刚学完 Python 或 Java,兴冲冲投了简历,结果面试官一问数据库优化、接口鉴权、部署流程,立马卡壳——不是代码写不出来,是没碰过真实后端场景里的那些‘活儿’。
语言和框架,选一个扎进去
别贪多。Java(Spring Boot)、Python(Django/Flask)、Go(Gin)、Node.js(Express/NestJS)这四类占了国内后端岗位八成以上。选一个,把它的路由定义、中间件机制、依赖注入、错误统一处理摸透。比如 Spring Boot 里加个 @Transactional 不只是背注解,得知道它背后怎么跟数据库连接池、事务传播扯上关系。
数据库不能只会增删改查
建表时字段类型乱选 varchar(255) 一用到底?索引只会加在 id 上?线上慢查询一来,DBA还没说话,你先去查执行计划:
EXPLAIN SELECT * FROM orders WHERE user_id = 123 AND status = 'paid' ORDER BY created_at DESC;发现没走索引?马上补复合索引 (user_id, status, created_at)。MySQL 的事务隔离级别、Redis 的 pipeline 和 Lua 脚本防穿透,都是上线前被逼着现学现用的硬货。API 不是写完就完事
前端甩来一个需求:“用户头像上传要支持断点续传”。你不能回一句“让前端自己处理”。得搭个分片上传接口,用 MD5 校验每一片,合并时用 Redis 记录上传进度,失败了能从第 3 片继续。接口返回的字段也得讲究:status 用数字码(200/401/503),data 和 error 字段不同时出现,错误信息里不暴露数据库字段名,比如别写“Duplicate entry ‘xxx’ for key ‘email’”,换成“该邮箱已被注册”。
服务器和部署,别全甩给运维
公司没专职 DevOps?那 Nginx 配置 HTTPS、反向代理、静态资源缓存你得会调;Linux 下看日志不能只靠 cat,得会用 journalctl -u myapp -f 实时盯错误;Dockerfile 别照抄网上模板,FROM alpine 而不是 ubuntu,COPY 比 ADD 更安全,多阶段构建减小镜像体积——这些细节一上线就见真章。
安全意识,是刻进日志里的习惯
用户注册接口,没对密码做 bcrypt 加密?登录态用 session 还没配 HttpOnly 和 Secure?SQL 查询拼接字符串?这些不是“理论上危险”,是某次渗透测试报告里白纸黑字标红的问题。哪怕用最简单的 JWT,也得知道怎么校验签名、设置合理过期时间、黑名单登出怎么实现。
调试和协作,藏在日常细节里
Git 提交不要写 “fix bug”,而要写 “fix order refund timeout when payment_gateway returns 504”;日志里别打 System.out.println("xxx"),用 SLF4J 写带 traceId 的结构化日志,方便 ELK 搜;Postman 里存好常用请求集合,环境变量区分 dev/staging/prod——这些事不写在 JD 里,但每天都在发生。