MS

常见问题

后端开发

关于后端开发的 18 个问答,来自高级 AI 软件工程师和后端开发者 Muhammad Shahid。

后端开发

1. 你使用哪些后端技术?

用 Node.js 和 Express.js 开发 API,用 MongoDB 和 Mongoose 存储数据,用 Redis 做缓存,用 JWT 认证的 REST API,用 EJS 做服务端渲染页面,并部署在 Heroku、VPS 服务器或 Netlify 上。

2. 你是 Node.js 开发者吗?

是的。Node.js 是我主要的后端语言。我在 Quecko Inc. 和 Dlux Soft 的生产环境中用它开发了拥有数百万用户的产品,包括 DOP、TheCryptoBasic 和 CV Maker。

3. 你开发 REST API 吗?

是的。我用 Express 和 MongoDB 开发生产级 REST API,包含请求校验、集中式错误处理、日志、JWT 认证、缓存和分页。

4. 你使用 MongoDB 吗?

是的,这是我主要的数据库。我设计模式和复合索引,编写聚合管道,并使用 Mongoose。我还持有 MongoDB University 的 MongoDB and Mongoose 证书。

5. 你如何使用 Redis?

主要用于缓存读取频繁的路由。在 DOP,我在新增 MongoDB 索引的同时加入了 Redis 缓存层,在 3 亿多用户的规模下控制住了 API 超时和数据库 CPU 负载。

6. 你能修复登录和会话问题吗?

能。在 TheCryptoBasic,用户会随机被登出。我查出原因是 JWT 过期时间和刷新令牌处理不正确,并重写了会话流程,现在会话能按预期保持。

7. 你能为移动应用开发后端吗?

能。我开发了 CV Maker – Resume Builder 的后端,这是 Google Play 上一款拥有全球 100 多万用户的 Android 应用,并与移动端和设计团队一起完成发布。

8. 你能集成第三方 API 吗?

能。我为 TheCryptoBasic 搭建了实时行情数据管道,在 DOP 接入了 5 家 RPC 服务商,并为 AI 智能体开发 API 和大语言模型集成。

9. 你处理实时数据和 WebSocket 吗?

是的。TheCryptoBasic 向 200 多万用户提供实时行情数据,我的开源项目 cmcprice-Websocket 通过 WebSocket 推送实时加密货币价格。

10. 你把后端部署在哪里?

Node.js 后端部署在 Heroku 或 VPS 服务器上;静态网站和 Next.js 网站(比如本站)部署在 Netlify 上。

11. 你能修复支付和交易失败的问题吗?

能。在 Quecko,我排查了用户反馈的支付和交易失败,找出根本原因,在紧迫的时间内发布修复,恢复了可靠的支付,并加入监控和错误告警以便尽早发现故障。

12. 你如何让后端更可靠?

请求校验、集中式错误处理、日志、监控与告警,以及每次发布前的测试。在 Dlux Soft,这套做法减少了生产环境的错误。

13. 你能添加监控和错误告警吗?

能。我在每次修复中都会加入监控和告警,让下一次故障由系统发现,而不是由用户报告。

14. 你能独自开发全栈应用吗?

能。我独自从头到尾开发了 NFT 抽奖 Web 应用 New-Waffle:抽奖逻辑、后端和 Web 前端,并完成部署。

15. 你开发内部工具吗?

开发。我的两个开源工具是 mongodb-data-exporter(把 MongoDB 数据库中的每个集合导出为单独的 JSON 文件)和 video-splitter-with-text(切分视频并叠加文字)。

16. 你能接手别人开发的后端吗?

能,这是我大部分的工作。我接手过拥有数百万用户的线上产品,在不重写的情况下修复了它们的性能、会话和支付问题。

17. 你使用 NestJS 吗?

使用。当项目适合用模块和依赖注入时,我用 NestJS 开发 Node.js 后端;更适合轻量方案时则用 Express。

18. 你开发 GraphQL API 吗?

开发。除了 REST API,我也开发 GraphQL API,并根据客户端获取数据的方式来选择。