韩景澄

Node.js 服务端工程师 · 北京 · 6 年经验

hanjingcheng@example.com · 136 0000 0000 · github.com/hanjingcheng

个人优势

  • 6 年经验,从前端 BFF 做到独立负责订单与消息服务,熟悉 Node.js 在接口聚合、异步任务和数据一致性上的边界
  • 负责过日均百万级请求的服务,能从慢查询、事件循环阻塞、连接池和重试风暴四个方向排查延迟
  • SQL 和索引调优有实战:千万级订单表的典型查询从 2 秒以上降到 180ms 左右
  • 熟悉消息队列和幂等设计:事件 ID + 渠道做幂等键、指数退避重试、死信可人工处理,大促供应商故障后零重复发送
  • 压测会用真实流量:k6 回放脱敏生产流量,发现过连接池过大反而让数据库排队恶化的问题
  • 熟悉 NestJS 的模块、守卫和拦截器,把零散的 Express 路由按业务域渐进迁移,老客户端协议保持兼容
  • 重视可观测性:日志带 traceId 串起网关、BFF 和下游服务,告警按错误预算而不是单次报错
  • 和前端、客户端、运维一起制定过 API 契约、灰度策略和告警阈值,推动过接口契约测试
  • 关注数据安全:敏感字段单独鉴权并记录审计日志,日志输出前统一脱敏
  • 能写前端,理解页面对接口的真实需求,做 BFF 时会按页面裁剪字段、合并请求
  • 技术栈:Node.js、TypeScript、NestJS、PostgreSQL、Redis、消息队列、Docker、Kubernetes、OpenTelemetry、Prometheus

工作经历

某票务服务公司 · Node.js 工程师

2022.05 — 至今 · 北京

交易平台在开票高峰会出现短时流量尖峰。服务端组 8 人,我负责订单查询、支付状态回传和商家管理 BFF,和 Java 交易核心团队协作。

  • 订单聚合:用户订单页需要分别请求票品、座位、支付、退款四类服务,旧 BFF 串行调用导致 P95 超过 1.8 秒。按依赖关系并发查询,对非关键的活动信息设置超时降级,接口 P95 降至 620ms;同时明确部分失败时页面该显示什么,避免出现“空订单”
  • 支付回调幂等:第三方回调可能重复或乱序,原处理逻辑会多次写订单状态。增加业务幂等键与状态转移校验,将回调原文保存在审计日志;补测“先退款后收到成功回调”等边界,季度内没有再次发生重复发券事故
  • 突发流量治理:将购票资格查询的热点结果短缓存,把非关键营销查询隔离到独立连接池,并为队列消费者设置并发上限。大型开票场景下订单查询服务保持可用,峰值 每分钟约 9 万次请求时 P99 未出现持续上升
  • 排障工具:给核心链路统一 traceId,串起 BFF、消息消费者和交易服务;把事件循环延迟、堆内存、连接池等待列入看板。一次慢接口从报警到定位由过去约 40 分钟缩到 10 分钟以内

某企业协作公司 · 全栈工程师

2019.07 — 2022.04 · 杭州

团队提供审批和消息产品,前后端共 10 人,我负责通知中心接口及管理后台。

  • 为审批通知设计消息模板和发送队列,把同步邮件发送移出请求链路;接口平均耗时由 700ms 左右降到 140ms,失败通知可追踪和重试
  • 将零散的 Express 路由迁到 NestJS 模块,统一参数校验、错误码和权限守卫;迁移按业务域逐个发布,老客户端协议保持兼容
  • 和测试一起搭建接口契约测试,覆盖字段增删、分页与权限边界,减少前后端联调阶段的重复返工

项目经历

商家订单查询服务

2022.08 — 2023.09 · 某票务服务公司 · 主导开发

NestJS / PostgreSQL / Redis / OpenTelemetry

面向商家客服,支持按手机号尾号、订单号和场次查询订单。客服高峰时需要在数秒内答复用户,涉及个人信息必须按权限脱敏。

  • 原 SQL 把多个筛选条件写成 OR,索引命中不稳定。按查询入口拆 SQL,建立对应复合索引,并限制时间范围;千万级历史订单表的典型查询由 2 秒以上降至 180ms 左右
  • 查询结果按商家与场次短缓存,更新事件触发失效;客服查看用户联系方式需要单独鉴权并留下审计记录
  • 用 k6 回放脱敏生产流量,发现连接池容量设置过大反而让数据库排队恶化;按实例数量重新预算连接数,压测 P95 更稳定

异步通知与重试平台

2020.06 — 2021.12 · 某企业协作公司 · 核心开发

Node.js / RabbitMQ / Redis / PostgreSQL

订单状态变更后,要分别发送短信、站内信和邮件;供应商会限流,部分消息允许延迟但不能无声丢失。

  • 以业务事件 ID 加渠道作为幂等键,消费者成功后写投递记录,重复消费直接返回;失败按指数退避重试,超过次数进入人工可查看的死信列表
  • 给供应商接口加并发和速率限制,返回限流错误时延后而非立即重试。大促期间短信供应商故障持续 20 分钟,恢复后队列在一小时内消化,未造成重复发送
  • 运维台展示事件来源、尝试次数和最后错误,客服可按订单号追踪通知状态;通知类工单的平均定位时间从半天缩短到约 15 分钟

开票与对账 BFF

2023.10 — 至今 · 某票务服务公司 · 主导开发

NestJS / PostgreSQL / Redis / OpenTelemetry

商家后台的开票和对账页面要调用财务、订单、支付三个系统,页面首屏要请求 9 个接口,经常因为其中一个超时整页报错。

  • BFF 按页面聚合接口,非关键数据(统计卡片、提示信息)允许降级为空,关键数据失败才整体报错;首屏请求数从 9 个降到 2 个
  • 下游调用统一加超时、熔断和并发限制,财务系统抖动时不再拖垮整个 BFF 进程
  • 接入 OpenTelemetry,一次请求在网关、BFF 和下游服务的耗时串成一条链路;对账页 P95 从 1.6 秒降到 600ms 左右

教育经历

北京交通大学 · 计算机科学与技术

本科 · 2015.09 — 2019.06

常见问题

终端提示符简历模板有什么特点?

JetBrains Mono 做标题,模块标题前是终端提示符,后面接一道细线;技术栈用胶囊标签,列表是尖角,墨黑单栏。命令行风格浓,适合服务端、CLI 工具和基础设施方向。

终端提示符适合什么样的人?

适合服务端和命令行工具方向的开发者。

  • 服务端、DevOps、命令行工具方向的开发者
  • 面试官是工程背景,对终端风格有共鸣
什么情况下不建议用终端提示符?
  • 投递产品型前端岗位,终端风格和岗位气质不符
用终端提示符写简历要注意什么?
  • 等宽字体只用于标题和技术标签,正文保持比例字体
  • 服务端成果写清楚流量规模和稳定性指标
  • 开源工具写上 Star 数和使用方,放在项目经历第一条
可以直接在招聘网站上在线投递吗?

可以,文字顺序正常,但版面带装饰元素。在线投递前导出 PDF,复制一遍文字,确认能完整读出来。

可以修改配色和简历内容吗?

可以。这套设计推荐 4 种配色,也可以自己取任意主题色;进入编辑器后,字体、字号、行距和模块间距都能单独调,简历内容随时可改。

下载的 Markdown 能自己编辑吗?

可以。下载的是完整的示例简历源码,可以在任意文本编辑器中修改;也可以直接使用本站编辑器导出 PDF。

相关模板

终端极客

等宽标题、## 前缀和代码块式技术标签,技术味最足

简约黑白

最稳妥的选择,投大厂、走招聘系统都不出错

藏蓝商务

深蓝标题加下划线,正式、克制

按岗位看完整范本

先看同方向的经历怎么写,再回到模板里调整版式。