由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 两道经典design问题求助
相关主题
Amazon OO Design 经典题的思考最popular url的算法问题
OOD:设计conference room reservation system一个 sql 题目
OO design的核心是不是忽悠?新手问个OOD的问题
再问道题求大神说说如何设计一个ecommerce的reservation system
贡献邮件面试题(Web Development)设计一个 restaurant reservation system?
三连击新鲜出炉的Amazon第四次电面,运气再次守恒
一个算法问题请问OOD的问题应该如何回答 有哪些资料可以参考
一个F的大数据题如何提高解决OOD面试问题的能力?
相关话题的讨论汇总
话题: user话题: room话题: timespan话题: 设计
进入JobHunting版参与讨论
1 (共1页)
f********3
发帖数: 210
1
一道是hotel reservation,一道是parking lot。
比如hotel reservation,疑惑这两种做法应该是哪一种:
1. User主动来book room。但这样的话,Room和bookingSystem都得成为属于User类的
成员。函数为:
User.bookRoom()
{
return system.bookRoom(); //用户的booking request传给系统
}
2. User只具备基本信息,不能主动book room。booking system来连接User和Room.
在System类里面有个bookRoom函数:
bookRoom(User, Room)
{}
感觉2更make sense. 问题在于,如何能把User请求的信息包括进来,如果User不能调
用system类的话?(该user想要的room type, from & to dates)
另外一个Parking lot也有类似疑惑。感觉Car主动来Park是make sense的,不过这样就
不需要manager类了。比如:
public boolean Park(ParkingLot p)
{
space = p.FindOpenSpace(type);
if(space != null)
{
space.setState(false);
return true;
}
else
{
System.out.println("The type of "+type+" slot has been occupied!
");
return false;
}
}
望各位大侠指教!
I******k
发帖数: 378
2
俺觉得应该用第一个
有user可以book room,admin可以修改等等

【在 f********3 的大作中提到】
: 一道是hotel reservation,一道是parking lot。
: 比如hotel reservation,疑惑这两种做法应该是哪一种:
: 1. User主动来book room。但这样的话,Room和bookingSystem都得成为属于User类的
: 成员。函数为:
: User.bookRoom()
: {
: return system.bookRoom(); //用户的booking request传给系统
: }
: 2. User只具备基本信息,不能主动book room。booking system来连接User和Room.
: 在System类里面有个bookRoom函数:

f********3
发帖数: 210
3
嗯,或许两种都make sense...
也有人用第二种的:
http://www.mitbbs.com/article/JobHunting/31733973_0.html
s*****n
发帖数: 5488
4
我个人认为,设计题是很open的讨论题,问设计题的单位一般来说要和用户交流。这题
首先考你交流能力。所以,说一千道一万都没有用的。要看面馆的交流。
第二,不理解为什么预订系统里面会有user这个概念。本质上,考预订这种题是考资源
管理方面的设计能力。例如多线程访问。而且可能是web系统,可能是本地系统。所以
,这个user在web到底是个什么?用户注册的账号?
所以,我认为答题是可以从最简单开始,例如房间预订就是概念上对资源(房间)和日
历的一个锁定。然后再问你要考OOD呢,设计模式 singleton呢(只能有一个booking
system, everyroom only one instance too).web系统呢,数据库设计呢,还是用什么
数据结构来存储呢,用什么rw锁还是什么锁呢,还是考虑怎么查询空房呢。
最后,方法一概念上肯定是错的。User 不可能has a room or booking system。

【在 f********3 的大作中提到】
: 一道是hotel reservation,一道是parking lot。
: 比如hotel reservation,疑惑这两种做法应该是哪一种:
: 1. User主动来book room。但这样的话,Room和bookingSystem都得成为属于User类的
: 成员。函数为:
: User.bookRoom()
: {
: return system.bookRoom(); //用户的booking request传给系统
: }
: 2. User只具备基本信息,不能主动book room。booking system来连接User和Room.
: 在System类里面有个bookRoom函数:

P**********c
发帖数: 3417
5
嗯,问问题是对的。不过感觉你考虑的比较偏。网上普遍的答案对设计题的考察就是OOD. 比如设计一个parking lot, 电梯系统这些,照你的理解是不是也是设计一个管理parking lot的网站呢?预定房间这个一样,我觉得不是让你设计一个网上订房间的网站,而是就是考察OOD的思路。

【在 s*****n 的大作中提到】
: 我个人认为,设计题是很open的讨论题,问设计题的单位一般来说要和用户交流。这题
: 首先考你交流能力。所以,说一千道一万都没有用的。要看面馆的交流。
: 第二,不理解为什么预订系统里面会有user这个概念。本质上,考预订这种题是考资源
: 管理方面的设计能力。例如多线程访问。而且可能是web系统,可能是本地系统。所以
: ,这个user在web到底是个什么?用户注册的账号?
: 所以,我认为答题是可以从最简单开始,例如房间预订就是概念上对资源(房间)和日
: 历的一个锁定。然后再问你要考OOD呢,设计模式 singleton呢(只能有一个booking
: system, everyroom only one instance too).web系统呢,数据库设计呢,还是用什么
: 数据结构来存储呢,用什么rw锁还是什么锁呢,还是考虑怎么查询空房呢。
: 最后,方法一概念上肯定是错的。User 不可能has a room or booking system。

s*****n
发帖数: 5488
6
A公司主要是ood,你一说我想起这题的trick在哪里了。如果是 ER设计,需要有个
reservation的关系。OOD里面也要有这莫一个对象才是正确的。
如下
Reseveation User.Reserve(RoomSpec spec, DateRange range){
return BookingSystem.GetInstance.Reserve(this,spec, range);
}
in BookingSystem.Reserve(..) find a room with sepc in the range,
then new reseravation(user, room, range) and return.

OOD. 比如设计一个parking lot, 电梯系统这些,照你的理解是不是也是设计一个管理
parking lot的网站呢?预定房间这个一样,我觉得不是让你设计一个网上订房间的网
站,而是就是考察OOD的思路。

【在 P**********c 的大作中提到】
: 嗯,问问题是对的。不过感觉你考虑的比较偏。网上普遍的答案对设计题的考察就是OOD. 比如设计一个parking lot, 电梯系统这些,照你的理解是不是也是设计一个管理parking lot的网站呢?预定房间这个一样,我觉得不是让你设计一个网上订房间的网站,而是就是考察OOD的思路。
f********3
发帖数: 210
7
user指的订房间的顾客。
你这样一说我也觉得很有道理了。design里面可以考虑成我们已经知道user的请求是什
么了(room type, date from, date to),然后以hotel, room, reservation这几个类
作为核心。User类可以有,但这个类的function不多。
另一个问题是多线程、数据库这些比较技术的东东在短时间内如何准备比较好?对于
fresh graduate,编程算法这些好准备,但技术没做过的话感觉比较难。

【在 s*****n 的大作中提到】
: 我个人认为,设计题是很open的讨论题,问设计题的单位一般来说要和用户交流。这题
: 首先考你交流能力。所以,说一千道一万都没有用的。要看面馆的交流。
: 第二,不理解为什么预订系统里面会有user这个概念。本质上,考预订这种题是考资源
: 管理方面的设计能力。例如多线程访问。而且可能是web系统,可能是本地系统。所以
: ,这个user在web到底是个什么?用户注册的账号?
: 所以,我认为答题是可以从最简单开始,例如房间预订就是概念上对资源(房间)和日
: 历的一个锁定。然后再问你要考OOD呢,设计模式 singleton呢(只能有一个booking
: system, everyroom only one instance too).web系统呢,数据库设计呢,还是用什么
: 数据结构来存储呢,用什么rw锁还是什么锁呢,还是考虑怎么查询空房呢。
: 最后,方法一概念上肯定是错的。User 不可能has a room or booking system。

s*****n
发帖数: 5488
8
没有经验只有多搜题,多做题了。

【在 f********3 的大作中提到】
: user指的订房间的顾客。
: 你这样一说我也觉得很有道理了。design里面可以考虑成我们已经知道user的请求是什
: 么了(room type, date from, date to),然后以hotel, room, reservation这几个类
: 作为核心。User类可以有,但这个类的function不多。
: 另一个问题是多线程、数据库这些比较技术的东东在短时间内如何准备比较好?对于
: fresh graduate,编程算法这些好准备,但技术没做过的话感觉比较难。

P**********c
发帖数: 3417
9
multithreading是比较难复习。更难复习的我觉得是distributed system, 那个说来说
去感觉就是求个modular, 分到不同机器上去,其他的说不出太多所以然。要是有人系
统的讲一下这种问题的大致思路就好了。

【在 f********3 的大作中提到】
: user指的订房间的顾客。
: 你这样一说我也觉得很有道理了。design里面可以考虑成我们已经知道user的请求是什
: 么了(room type, date from, date to),然后以hotel, room, reservation这几个类
: 作为核心。User类可以有,但这个类的function不多。
: 另一个问题是多线程、数据库这些比较技术的东东在短时间内如何准备比较好?对于
: fresh graduate,编程算法这些好准备,但技术没做过的话感觉比较难。

g**********y
发帖数: 14569
10
Hotel reservation 简单设计
先看设计的问题核心:
1. limited resources (room)
2. each resource associates with Time
然后构想简单故事:
1. User checks room availability from Day i to Day j
2. System makes reservation on a Room on a Timespan for a User
3. User cancels a reservation
自顶向下设计class:
BookingSystem {
Room[] rooms;
Vector reservations;
Vector users;

Room[] available(TimeSpan t);
int reserve(int userId, TimeSpan t, int roomId);
void cancel(int reservationNumber);
}
TimeSpan {
Time start;
Time end;
}
Room {
int id;
Vector times;

boolean available(TimeSpan t);
boolean reserve(TimeSpan t);
void cancel(TimeSpan t);
}
Reservation {
int id;
String userId;
int roomId;
TimeSpan t;
}
User {
String name;
String id;
CreditCard info;
}
这是粗线条的勾勒,要在上面加,你可以先扩展故事,然后添加class。
我的感受是:class是为你要达到的目的服务的,如果有必要,可以添;没有必要,能
简单就简单。
以上设计,可以改进的地方很多,欢迎修改。
1 (共1页)
进入JobHunting版参与讨论
相关主题
如何提高解决OOD面试问题的能力?贡献邮件面试题(Web Development)
基础OOD - Restrant Reservation System三连击
cc150 - design OOP parking lot problem一个算法问题
问道算法题。一个F的大数据题
Amazon OO Design 经典题的思考最popular url的算法问题
OOD:设计conference room reservation system一个 sql 题目
OO design的核心是不是忽悠?新手问个OOD的问题
再问道题求大神说说如何设计一个ecommerce的reservation system
相关话题的讨论汇总
话题: user话题: room话题: timespan话题: 设计