设计一个 zoo
问清楚
Opentable
opentable, design. 完全自己设计数据结构 和 接口需求, 用户输入 restaurant, timeslot, 人数, 返回是否可以预订
一个restaurant 可能有多个桌子, 每个桌子可能可以坐多个人 如果预订的时候,人数大于一个桌子, 可以把相邻的桌子 combine timeslot 30分钟算一个, 一天就可以算24*2个, 编号从0到47, 用户的输入只能有一个 timeslot
三角形棋盘
只有一个空,像跳棋那么走,走过空就可以把中间那抽掉,然后OOD设计。然后follow就是如果不同棋盘怎 么设计
traffic management system
大 概就是一个十字路口,有好几个方向的汽车,红绿灯,行人,设计这个的controller吧,然 后边讨论思路边写controller的method什么的,最后讨论讨论怎么initialization
问题是很模糊的问题,让我设计一个交 通路口,目的是统计车流,反馈给我们的用户。一听我就知道是故意很模糊的,所以我就加 紧clarify,比如问每个时段和日期车流不同,如何区别;这个application是给谁用的;交 通路口可以分N车道,如何规范;等等一系列
图书推荐系统
你有朋友A,朋友A有他的朋友B, 你要看到所有A,B,B的朋友的推荐书单。要代码实现
OO DESIGN一个"UBER"
问清楚
文件系统
主要focus文件权限的设计
poker game
OOD design a poker game and different methods in each class.1
电梯设计
经典设计题
设计电梯箱,按键面板等对象和它们之间的关系,没有深入调度
算法细节。
解析表达式
解析表达 式,例如"1*2 + 3",关键要用面向对象的思想设计。需要可以拓展,支持括号,支持开 方之类的。这题感觉自己没思路,瞎答了一通
@@@ Parking Lot
传统题目
一开始从OOD的角度来设计。后来面试官说我应该think bigger,才意识到应该是从一个 通用系统架构的角度来回答这个问题。于是就开始扯后台系统架构,想到经典的三层系统机 构从来不会答偏题于是就开始往上搬了。第一层接入层,第二层逻辑层,第三层存储层。接 入层收到用户请求根据协议和请求类型转发给合适的逻辑层。逻辑层包括多个不同服务,各 干各的事,完成库存啊计费啊汇率转换啊等等操作。存储层当然就是数据库,mysql和 nosql大家都懂的,上来把基本表建好,就直接用吧,有需要就扯缓存。比如我就扯了用 redis当缓存,缓存当然有各种不同粒度,各自命中率肯定不一样等等。问我如何扩展方 面,我的回答就是各层内部放入是随便加服务的,只要服务起来了之后到Zookeeper去注 册让其他层的服务调用的时候能找到就好了,存储层扩展有很多Proxy可以用,比如我厂就 有一个叫Atlas的开源项目,是一个很出色的Mysql Proxy,大家可以去Git看看。然后大家 可以根据需要扯一些优化点,找不到也无所谓。
设计一个机场调度系统
和面试官多 交流有哪些实体需要抽象吧,要想清楚业务流程里的参与者和用例,还有之后的耦合内聚怎么优化等等。
查询机制
给一个数组和一个范围,要返回范围里的最小值,然后扩 展到如何缓存这个查询。一开始搞我以为是算法题,DP?排序?扯了半天,后来发现原来 是OOD,囧。。。关键是如何解耦缓存查询和实时查询这俩类,然后扯了扯工厂模式,依 赖注入等等。
设计电话本
http://www.cs.gordon.edu/courses/cs211/AddressBookExample/
生物分类
设计数据结构表示生物学门纲目科属种
OOD (Tic-tac Game) Followups
CC150
HashTable出现很多collision怎么办
(Rehashing)load factor
truck tracking system
要求实现查询truck的地点,每天的行程之类 的。一开始写了一个truck class,然后在引导下一点一点的增加功能
火箭打彗星
火箭每次发射之后需要五分钟准备时间,雷达会监控彗星出现的距离,每 个火箭只能打最近的一个彗星,问用什么data structure 记录彗星的情况,要求时间复杂度 O(1)的
图书推荐系统
类似facebook, twitter那样的好友系统,可以看评价,可以写评价,有好友
列表一类的。
顺序 hashmap
重写一个HashMap,多加一个功能,可以按照insert的顺序输出出来
Read full article from Amazon - 小土刀的面试刷题笔记
No comments:
Post a Comment