p*****2 发帖数: 21240 | 1 2. 面向对象设计,一个叫出租车的系统。乱七八糟的,我也就瞎说一通。然后他就问
了,如果不同的用户同时叫了同一辆车,怎么办?我说就像数据库事务处理会死锁一样
,标记一下,用另一个线程解就行了。他说不行,那多少工作量。我就说,用面的类来
判断重复就行了,一个车就是预订人再多,也多不哪去,这个可以分布式安在车上或者
不同出租公司的机器上,压力不大。他就不说了。 |
p*****2 发帖数: 21240 | 2 从来没叫过出租。一般来说怎么订?
1.在网上订?
2.打电话订?
网上订应该就是是自动的吧,打电话订是自动的还是人工的?我感觉会是人工的。如果
是人工的,那么这个系统就是给接线员准备的系统? |
g****y 发帖数: 2810 | 3 https://www.uber.com/#
他当时说的就是这个网站,你可以看看
【在 p*****2 的大作中提到】 : 2. 面向对象设计,一个叫出租车的系统。乱七八糟的,我也就瞎说一通。然后他就问 : 了,如果不同的用户同时叫了同一辆车,怎么办?我说就像数据库事务处理会死锁一样 : ,标记一下,用另一个线程解就行了。他说不行,那多少工作量。我就说,用面的类来 : 判断重复就行了,一个车就是预订人再多,也多不哪去,这个可以分布式安在车上或者 : 不同出租公司的机器上,压力不大。他就不说了。
|
p*****2 发帖数: 21240 | 4
你有用过这个网站吗?如果没用过的像我怎么办?面试官会把需求讲清楚吗?
【在 g****y 的大作中提到】 : https://www.uber.com/# : 他当时说的就是这个网站,你可以看看
|
p*****2 发帖数: 21240 | 5
看了一下。当时面试的重点是什么?
需要考虑signup, payment, mobile devices这些吗?还是只是backend的booking
system?
【在 g****y 的大作中提到】 : https://www.uber.com/# : 他当时说的就是这个网站,你可以看看
|
g****y 发帖数: 2810 | 6 系统我没用过,他会讲得,不清楚让你再问。
让你作的是backend system |
h*******8 发帖数: 29 | 7 有可能我想的比较简单了。
如果是订车系统的话,最终是不是考虑维护一个分布式的队列?
预定就是进队列(enq),派出出租车是出队列(deq)。
由于这个队列是分布式的,可能要用到quorum consensus维护一致性,以及提供一定程
度的容错。 |
p*****2 发帖数: 21240 | 8
感觉request接受没什么,但是scheduling学问比较大。比如怎么match一个taxi到一个
request上,涉及到很多信息需要储存和处理。这个我准备做一下。大家一起讨论。
【在 h*******8 的大作中提到】 : 有可能我想的比较简单了。 : 如果是订车系统的话,最终是不是考虑维护一个分布式的队列? : 预定就是进队列(enq),派出出租车是出队列(deq)。 : 由于这个队列是分布式的,可能要用到quorum consensus维护一致性,以及提供一定程 : 度的容错。
|
p*****2 发帖数: 21240 | 9 感觉没什么意思,随便写了一下。觉得难点是如何匹配taxi。比如要考虑taxi的当前位
置,状态,如果载人,什么时候能idle。而且还要考虑traffic情况,customer也可能
会改变当前request的destination什么的。还有要检查是否有灵异事件,比如进去两个
,出来一个什么的。
class Customer{
ID, name, address, etc.
type {maybe enum regular, premium etc}
credit card
book()
}
class Request{
customer
from
to
number of people
number of taxi
}
class Driver{
}
class Taxi{
status {on order, idle, etc.}
driver
location
request
takerequest()
donerequest()
}
BookSystem{
HashMap of customer
HashMap of driver
HashMap of taxi
Queue of request (maybe PriorityQueue)
} |
p*****2 发帖数: 21240 | 10 不知道一个driver是不是固定一个taxi还是可以互换的。或者2,3个driver驾驶同一个
出租。
不知道一个customer可不可以下几个request。或者一个request可不可以支持几个
custoemer。
系统的数据量有多大。感觉都需要跟面试官交流才能做呀。 |
|
|
p*****2 发帖数: 21240 | 11 如果不同的用户同时叫了同一辆车,怎么办?
为什么会发生这个情况呢?不是应该系统去匹配吗?难道用户叫车的时候可以指定哪辆
车? |
Z**********4 发帖数: 528 | 12 不同用户叫同一辆车的情况应该是:
某车司机被call要去某地接人,运送过程中又 接到电话问是否愿意去另一地接人(没
有比他更近的出租车了)司机说好,等送完人以后直接去接那个人。 |
p*****2 发帖数: 21240 | 13
那taxi class里加一个queue是不是就解决了?
【在 Z**********4 的大作中提到】 : 不同用户叫同一辆车的情况应该是: : 某车司机被call要去某地接人,运送过程中又 接到电话问是否愿意去另一地接人(没 : 有比他更近的出租车了)司机说好,等送完人以后直接去接那个人。
|
Z**********4 发帖数: 528 | 14 简单情况下是这样。但是如果在这个司机送第一个乘客的过程中又有其他出租车恰好比
他更近的话,应该重新安排任务。
【在 p*****2 的大作中提到】 : : 那taxi class里加一个queue是不是就解决了?
|
p*****2 发帖数: 21240 | 15
感觉是会有这个情况。比如路上堵车了。所以BookSystem需要保持一个pending的list
, 并且监视taxi的状况,一旦发现异常则可能重新schedule。
【在 Z**********4 的大作中提到】 : 简单情况下是这样。但是如果在这个司机送第一个乘客的过程中又有其他出租车恰好比 : 他更近的话,应该重新安排任务。
|