首页 > 解决方案 > 系统设计面试 - Car API

问题描述

系统设计问题:

给你一个包含几百万辆二手车的数据集和关于它们的信息——里程、颜色、价格等。你必须在两天内创建一个 API 端点,允许用户查询数据集。

这是我给出的答案:

使用关系数据库(比如说 PostgreSQL)来存放数据。公开一个 GET 端点,该端点获取与数据集中属性相对应的查询字符串参数,解析它们并使用它们来查询数据库。端点还可以跟踪查询最多的属性,并为这些属性添加索引以加快查询速度。有人问我如何处理一个范围(例如“50,000 <= 英里 <= 100,000 的汽车”),我说这可以由查询字符串参数处理并由 GET 端点转换为 SQL 查询。

反馈

后来我在反馈中被告知,这个答案“没有传达出对如何设计 Web 系统的深刻理解”。我希望对我的解决方案可能不足/薄弱的地方或可能忽略了有关设计 Web 系统的某些方面有一些见解。

注意:我根据记忆重建了我的答案,所以这里可能比采访中更清楚。

谢谢你的帮助!

标签: api-designsystem-design

解决方案


就像评论中已经讨论过的一样,面试官想听听一些关于 SQL 注入的事情。有一些应对措施,您可以采取这些措施来避免 SQL 注入。这些是(很可能不是一个完整的列表,但应该给出一个提示,关于要注意什么):

  • 使用准备好的语句
  • 注意访问限制(在数据库和操作系统中)
  • 验证用户输入

推荐阅读