api-design - 系统设计面试 - Car API
问题描述
系统设计问题:
给你一个包含几百万辆二手车的数据集和关于它们的信息——里程、颜色、价格等。你必须在两天内创建一个 API 端点,允许用户查询数据集。
这是我给出的答案:
使用关系数据库(比如说 PostgreSQL)来存放数据。公开一个 GET 端点,该端点获取与数据集中属性相对应的查询字符串参数,解析它们并使用它们来查询数据库。端点还可以跟踪查询最多的属性,并为这些属性添加索引以加快查询速度。有人问我如何处理一个范围(例如“50,000 <= 英里 <= 100,000 的汽车”),我说这可以由查询字符串参数处理并由 GET 端点转换为 SQL 查询。
反馈
后来我在反馈中被告知,这个答案“没有传达出对如何设计 Web 系统的深刻理解”。我希望对我的解决方案可能不足/薄弱的地方或可能忽略了有关设计 Web 系统的某些方面有一些见解。
注意:我根据记忆重建了我的答案,所以这里可能比采访中更清楚。
谢谢你的帮助!
解决方案
就像评论中已经讨论过的一样,面试官想听听一些关于 SQL 注入的事情。有一些应对措施,您可以采取这些措施来避免 SQL 注入。这些是(很可能不是一个完整的列表,但应该给出一个提示,关于要注意什么):
- 使用准备好的语句
- 注意访问限制(在数据库和操作系统中)
- 验证用户输入
推荐阅读
- html - 垂直居中子元素,同时填充父 div 的全高
- php - CRITICAL messenger 处理消息 AppBundle\Message\Message 时引发错误
- python - 使用 GitHub 解码器脚本解码有效负载
- javascript - for 循环中的 setTimeout() 函数出错
- macos - 为什么 oh-my-zsh 终端 macos 缺少符号?
- node.js - 如何在jsp中使用液体模板?
- geolocation - 在 React-Leaflet 中获取坐标
- javascript - 在 div 上画线
- python - 如何创建 Flask-ldap3-login
- java - 为什么Eclipse在调试时不显示变量?