Redian新闻
>
Careercup 设计题Parking Lot讨论
avatar
Careercup 设计题Parking Lot讨论# JobHunting - 待字闺中
s*u
1
一直对设计题比较头疼,虽知道这个没什么标准答案,但是跟答案元素差的比较多的话
,也不知道自己做到什么程度。如果强迫自己“背”答案,又会发现不符合自己的思路
,比如这道题目的答案中vehicle和spot都有parkVehicle这样的函数,让人很费解。
题目就一句话:Design a parking lot using object-oriented principles.
所以想把自己第一反应写出来的设计拿出来请教下。有些地方省略了,反正
implementation也不重要。
class ParkingLot{
private:
level* lvl;
int max_level;
static ParkingLot* pInstance;

public:
static ParkingLot* getInstance();
pair parkVehicle( Vehicle* v){
//iterate all levels, invoke parkFreeSpot(v);

int index;
for( int j = 0 ; j < max_level ; j++){

index = lvl[j].parkFreeSpot(v);
if( index != -1){
return pair(j,index) ;
}
}
return -1;
}

}
class level{
private:
Spot* spots;
int max_num;
int remain;
int freeIndex;

public:
int parkFreeSpot( Vehicle* v){
int n = v->numSpots();
int index = findFreeSpots( n);//find continuous n spots,return
the index;

if(index = -1) return -1;
else
//park the vehicle at spot(s);
v->parkVehicle( spots+index);
return index;

}

int findFreeSpots( int n){
//find continuous n spots,return the index;
//if not found, return -1;
}
}
avatar
s*u
2
class Spot{
private:
int length;
int width;
bool state;
int index;
int lvl;
public:
bool isFree();

}



class Vehicle{
private:
int length;
int width;
bool parked;
public:
int getlength();
int getWidth();
int numSpots(Spot* s); //return how many such spots this vehicle
need
void parkVehicle( Spot* s);//park starting from spot S;
void removeVehicle( Spot* s); //remove the vehicle away;
}
//every type of vehicle has default value of length and width;
class motor:public Vehicle{};
class car:public Vehicle{};
class bus::public Vehicle{};
avatar
s*u
3
表面上是感觉不到什么优劣之分,不过不知道这里面是不是有些不成文的习惯和规范之
类的。所以想请大家帮忙看看。
avatar
a*u
4
题目是啥
avatar
s*u
5
非常vague的描述:Design a parking lot using object-oriented principles.
个人感觉答案也没用上多少OOP的东西,比如多态什么的基本用不上。

【在 a*****u 的大作中提到】
: 题目是啥
avatar
c*p
6
Mark
avatar
v*d
7
这题我作为面试官面过人家 (吐槽一下,最烦被排到面OOD), 说说我看中什么。
1. 一开始是不是对requirement沟通良好
2. 懂不懂inheritance, polymorphism之类的OO概念
3. 会不会基本的data structure比如hashmap. 万一我问你比如各种vehicle type的
count, 千万别给我一个motocycle_count, 一个truck_count之类。
以上三点是最基本的,有一点不符合马上red flag, 其余看眼缘,huhu

【在 s********u 的大作中提到】
: 一直对设计题比较头疼,虽知道这个没什么标准答案,但是跟答案元素差的比较多的话
: ,也不知道自己做到什么程度。如果强迫自己“背”答案,又会发现不符合自己的思路
: ,比如这道题目的答案中vehicle和spot都有parkVehicle这样的函数,让人很费解。
: 题目就一句话:Design a parking lot using object-oriented principles.
: 所以想把自己第一反应写出来的设计拿出来请教下。有些地方省略了,反正
: implementation也不重要。
: class ParkingLot{
: private:
: level* lvl;
: int max_level;

avatar
g*j
8
那请问你期望用什么count? 用一个数组作counter,然后用hashmap生成影射么?如果
多一个type,就是多一个影射而已吧?

【在 v*****d 的大作中提到】
: 这题我作为面试官面过人家 (吐槽一下,最烦被排到面OOD), 说说我看中什么。
: 1. 一开始是不是对requirement沟通良好
: 2. 懂不懂inheritance, polymorphism之类的OO概念
: 3. 会不会基本的data structure比如hashmap. 万一我问你比如各种vehicle type的
: count, 千万别给我一个motocycle_count, 一个truck_count之类。
: 以上三点是最基本的,有一点不符合马上red flag, 其余看眼缘,huhu

avatar
g*j
9
那请问你期望用什么count? 用一个数组作counter,然后用hashmap生成影射么?如果
多一个type,就是多一个影射而已吧?

【在 v*****d 的大作中提到】
: 这题我作为面试官面过人家 (吐槽一下,最烦被排到面OOD), 说说我看中什么。
: 1. 一开始是不是对requirement沟通良好
: 2. 懂不懂inheritance, polymorphism之类的OO概念
: 3. 会不会基本的data structure比如hashmap. 万一我问你比如各种vehicle type的
: count, 千万别给我一个motocycle_count, 一个truck_count之类。
: 以上三点是最基本的,有一点不符合马上red flag, 其余看眼缘,huhu

avatar
c*p
10
mark
avatar
v*d
11
用hashmap. 至少用个class name 做key, count 做value,

【在 g***j 的大作中提到】
: 那请问你期望用什么count? 用一个数组作counter,然后用hashmap生成影射么?如果
: 多一个type,就是多一个影射而已吧?

avatar
v*d
12
另外最重要的是第二点, 看看懂不懂inheritance, dynamic binding... 唉,俺的bar
很低的

【在 v*****d 的大作中提到】
: 用hashmap. 至少用个class name 做key, count 做value,
avatar
J*3
13
这里面需要提到设计模式的东西吗?比如停车场用工厂模式什么的?
avatar
s*e
14
其实根本用不上多态。 除非你硬要我想一个多态的情况。

【在 v*****d 的大作中提到】
: 这题我作为面试官面过人家 (吐槽一下,最烦被排到面OOD), 说说我看中什么。
: 1. 一开始是不是对requirement沟通良好
: 2. 懂不懂inheritance, polymorphism之类的OO概念
: 3. 会不会基本的data structure比如hashmap. 万一我问你比如各种vehicle type的
: count, 千万别给我一个motocycle_count, 一个truck_count之类。
: 以上三点是最基本的,有一点不符合马上red flag, 其余看眼缘,huhu

avatar
s*u
15
我理解这个应该是Singleton pattern吧?就是说对一个问题而言,停车场只有一个
instance,所以要用static变量。当然,我觉得这个是很次要的东西。

【在 J****3 的大作中提到】
: 这里面需要提到设计模式的东西吗?比如停车场用工厂模式什么的?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。