由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问问电梯设计elevator design的问题。
相关主题
电梯调度里的估算每个电梯到达客人请求楼层很麻烦啊surveymonkey面筋(已挂)
问个电梯系统设计的问题某段intern经历够短的话不写在简历上行吗
请教一个电梯调度系统的Design休士顿两个工作机会(会计和高级行政助理)
再贴设计电梯可以在A公司办H1b,在B公司上班吗?
电梯问题设计题 谁给个比较好的设计方法啊我来报个SCAM!欢迎转贴!
电梯设计题诚心请教:如何准备Facebook onsite?
谁能给个“电梯设计”题的终极解答?careercup150上的题是什么难度?
报个Box Offer,和面经Facebook Moving To The JVM
相关话题的讨论汇总
话题: 电梯话题: elevator话题: 事件话题: message话题: pattern
进入JobHunting版参与讨论
1 (共1页)
s**9
发帖数: 207
1
电梯design的问题经常在Amazon的面试中出现。在版上和网上搜了一圈,没有看到比较
完整的解答。一直不清楚回答这种问题应该体现一个什么样的思路。试着做了一下,请
大家给些意见。
分析:
1. 电梯至少要处理两个事件,乘客按电钮是一个事件,电梯到达某层楼是一个事件。
每个事件发生时,电梯应当做相应的操作。
2. 电梯的操作不单取决于事件,还依赖电梯的状态,状态包括任务列表(需要去的楼
层)和运行状态(上行、下行)。
3。按电钮和到达某层的事件可以是同时的,电梯应提供互斥机制保护shared resource。
设计:
class Elevator{
pubic:
buttonPushed(int source, int destination);//source层有人要去destination层
levelArrived(int level);//level层到了
private:
stop(); //停
up(); //上行
down(); //下行
mutex;
taskList;
stat
s*********t
发帖数: 1663
2
ding
完全没有面向对象的经验

resource。

【在 s**9 的大作中提到】
: 电梯design的问题经常在Amazon的面试中出现。在版上和网上搜了一圈,没有看到比较
: 完整的解答。一直不清楚回答这种问题应该体现一个什么样的思路。试着做了一下,请
: 大家给些意见。
: 分析:
: 1. 电梯至少要处理两个事件,乘客按电钮是一个事件,电梯到达某层楼是一个事件。
: 每个事件发生时,电梯应当做相应的操作。
: 2. 电梯的操作不单取决于事件,还依赖电梯的状态,状态包括任务列表(需要去的楼
: 层)和运行状态(上行、下行)。
: 3。按电钮和到达某层的事件可以是同时的,电梯应提供互斥机制保护shared resource。
: 设计:

s******i
发帖数: 44
3
可以参考这个http://stackoverflow.com/questions/493276/modelling-an-elevator-using-object-oriented-analysis-and-design
我觉得需要有一个类似elevator bank之类的central control,因为这里有两个
elevator,也可以更多。
至于消息传递和设计模式,我觉得
1. Button informs bank (Observer pattern)
2. bank makes decision
3. dispatches message to best elevator (Message Dispatcher pattern)
s**9
发帖数: 207
4
我是觉得这些解答没有考虑一个问题。考虑下面的场景:
乘客在1楼进电梯,按10楼。走到3楼,5楼有乘客按电梯。电梯停5楼,乘客上电梯,按
7楼。电梯继续上7楼,停,再到10楼。
假设电梯提供一个moveToFloor(int destination)的函数。在上面的场景中,设电梯在
1楼,bank调用elevator1.moveToFloor(10)。 moveToFloor(10)不能等电梯到了10楼
才返回,否则电梯不能停5楼。所以moveToFloor(10)应该给电梯设一个去10楼的任务,
把电梯设成向上运动,然后返回。这样就有一个问题,到了10楼谁来停电梯?我想的就
是除了buttonPush的事件,还应该有一个levelArrived事件,每到一层楼,该事件触发
一次,就是elevator提供一个levelArried(int)函数,每到一层楼,该函数被调用一
次。
我一开始假设单电梯的情况,没有bank,只有电梯和乘客,所以对怎么调用这个
levelArried函数有些问题。加上bank,由bank来调用levelArried,看起来就通顺了。
这个Message Disp

【在 s******i 的大作中提到】
: 可以参考这个http://stackoverflow.com/questions/493276/modelling-an-elevator-using-object-oriented-analysis-and-design
: 我觉得需要有一个类似elevator bank之类的central control,因为这里有两个
: elevator,也可以更多。
: 至于消息传递和设计模式,我觉得
: 1. Button informs bank (Observer pattern)
: 2. bank makes decision
: 3. dispatches message to best elevator (Message Dispatcher pattern)

s******i
发帖数: 44
5
Message Dispatcher pattern不一定是一个严格意义上的pattern。当然任何人都可以
定义和实现自己设计的pattern。
基本的思路就是有一个message receiver pool,但是一个message只能给一个特定的
receiver,而不是像observer pattern那样broadcast给每一个receiver。每一个
receiver需要注册到这个pool以接收消息。可以理解为1:1的observer pattern而不是1
f****4
发帖数: 1359
6
虽然我没给amz问到这个问题,但是要是我来回答,我会告诉他depends
1.如果只有1台电梯,就非常简单,电梯分停,上行,下行3个状态;电梯内外按钮优先
级一样,根据停,上下行来处理;处理开关门;处理故障(如果电梯出故障了,怎么办
,故障时电梯门要维持开着等等)
2.如果要多台电梯同时运行,一个控制类;n台电梯。控制类用消息队列来控制各个电
梯;电梯可以再增加;内部按钮是这台电梯必须实现的请求;外部按钮只是把请求发到
控制类,由控制类来调度合适的电梯完成请求;各台电梯上下行,停3个状态;电梯提
供状态查询给控制类(上行还是下行,上行最大楼层/下行最低楼层;停在第几楼);最
后提供故障处理
这类问题没有具体环境;这样就需要你先来进行假设,然后再做设计
并且你的设计只要够用就好,比如只有1台电梯,就没必要弄那么复杂
1 (共1页)
进入JobHunting版参与讨论
相关主题
Facebook Moving To The JVM电梯问题设计题 谁给个比较好的设计方法啊
贡献几道题目电梯设计题
Double Dispatch Pattern vs. Switch谁能给个“电梯设计”题的终极解答?
L家的一道设计题报个Box Offer,和面经
电梯调度里的估算每个电梯到达客人请求楼层很麻烦啊surveymonkey面筋(已挂)
问个电梯系统设计的问题某段intern经历够短的话不写在简历上行吗
请教一个电梯调度系统的Design休士顿两个工作机会(会计和高级行政助理)
再贴设计电梯可以在A公司办H1b,在B公司上班吗?
相关话题的讨论汇总
话题: 电梯话题: elevator话题: 事件话题: message话题: pattern