Logo
Section 1 / 18

项目描述:Uber

简要了解“Uber”并学习本项目中我们将实现的功能。

导入

项目描述:Uber

简要了解“Uber”并学习本项目中我们将实现的功能。

简介

Uber 是全球最大的网约车公司。除了核心的乘客接送服务外,他们还提供食品和物品配送等服务。其用户群体(包括乘客和司机)正在迅速增长。因此,Uber 的工程团队持续探索更高效的方式,以将附近的司机合理分配给用户。

本章讨论的场景和问题聚焦于高效司机分配功能的优化,以及如何提升客户端应用的可访问性。

问题描述

假设你是 Uber 工程团队的一名开发者。团队正计划对司机派单流程进行优化,并增强客户端应用的可访问性功能,特别希望在雨天优化司机分配过程。

当用户请求乘车时,系统首先会筛选出距离用户最近的司机。接着,系统将从每位司机的位置出发,规划通往用户位置的路径,并判断司机是否能够实际抵达接客点。

城市地图被划分为多个检查点,每两个检查点之间的通行存在一定的成本。我们将计算每位司机通过多个检查点到达用户位置所需的总成本。该成本取决于路径上各检查点之间积聚的雨水量。最终,选择路径总成本最低的司机为该用户提供服务。行程结束后,系统需计算车费,并更新可访问性插件,将费用金额以语音形式播报出来。此外,为了帮助新司机快速上手,我们将为其推荐那些找到订单概率较高的路线。同时,我们还将调整排名机制,使低排名司机也有机会成为高评分司机。

功能需求

为实现上述功能,我们需要引入以下特性:

  • 功能 #1: 至少选取用户附近距离最近的 n 名司机,排除距离过远的司机。

  • 功能 #2: 计算在受降雨影响的城市中,两点之间路径上的最大积水深度。

  • 功能 #3: 为每位司机从当前位置到用户位置规划一条路径,并计算出行成本,以便选出成本最低的司机。

  • 功能 #4: 将计算出的车费转换为英文单词,供系统识别并使用。

  • 功能 #5: 实现拼车功能,允许司机同时搭载多位乘客。当司机接上拼车乘客后,系统应为其推荐一条可能遇到更多拼车乘客的路线。

  • 功能 #6: 引入城市中最长的路线,以最大化发现乘客的可能性。

  • 功能 #7: 不再总是优先选择高排名司机,而是智能匹配司机与乘客,使高排名司机更有可能被选中,但低排名司机也应有一定机会被分配任务。

  • 功能 #8: 为司机找到前往乘客位置的最短路径。

理解这些功能需求并设计相应的解决方案,将有助于我们将所需功能成功集成到 Uber 系统中。

在接下来的课程中,我们将讨论这些功能的推荐实现方式。在开始之前,建议你先思考如何实现这些功能。在思考过程中,你会意识到需要解决的一些底层问题。而这些问题的解决方案,同样适用于常见的编程面试题。

股票爬虫

功能1:选择最近的司机