1 / 30
文档名称:

系统设计 案例分析选题.pdf

格式:pdf   大小:392KB   页数:30页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

系统设计 案例分析选题.pdf

上传人:窝窝爱蛋蛋 9/25/2022 文件大小:392 KB

下载得到文件列表

系统设计 案例分析选题.pdf

相关文档

文档介绍

文档介绍:该【系统设计 案例分析选题 】是由【窝窝爱蛋蛋】上传分享,文档一共【30】页,该文档可以免费在线阅读,需要了解更多关于【系统设计 案例分析选题 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
系统设计案例:.
⼤大纲
⾳音乐播放器
电梯调度设计
停⻋车场设计
预定系统
⽇日志track系统
分布式⽂文件系统
部署系统
监控系统
访问控制系统
分布式统计聚合系统:.
⾳音乐播放器
设计⼀一个⾳音乐播放器,能够管理专辑,播放歌曲
抽象
实体有播放器,专辑,歌曲,播放列表。
函数包括添加歌曲,删除歌曲,播放,停⽌止,暂停:.
⾳音乐播放器
设计对象
设计接⼝口
创建⼀一个播放列表可以如下定义:
ErrorResultcreatePlaylist(Vector<Song*>inSongsArray,Playlist
*outPlaylist)
当ErrorResult为0时表⽰示创建成功,outPlaylist指向该播放列表。:.
⾳音乐播放器总结
•可以依照抽象,设计对象,设计接⼜⼝口的流程进⾏行思考
•针对接⼜⼝口⽽而不是实现来进⾏行编程:不同对象之间保持接⼜⼝口⼀一致,调
⽤用接⼜⼝口时不需要基于接⼜⼝口内的实现⽅方式。:.
继承,组合,参数化
在⾯面向对象中最常⽤用的两种代码复⽤用技术就是继承和组合。在设计对象
的时候,“Is-A”表⽰示⼀一种继承关系
⽽而“Has-A”表⽰示⼀一种从属关系,这就是组合
注意,多态是OOP相关的⼀一个重要概念,也是⾯面试常考的概念之⼀一。在
通常情况下,我们更偏向于“Has-A”的设计模式。因为该模式减少了两个
实例之间的相关性。
参数化类型,或者说模版类也是⼀一种有效的代码复⽤用技术。:.
总结
•对象组合技术允许你在运⾏行时刻改变被组合的⾏行为,但是它存在间
接性,相对来说⽐比较低效。
•继承允许你提供操作的缺省实现,通过⼦子类来重定义这些操作,但
是不能够在运⾏行时改变。
•参数化允许你改变所使⽤用的类型,同样不能够在运⾏行时改变。:.
停⻋车场
Designaparkinglotusingobject-orientedprinciples.
使⽤用抽象->设计对象->设计接⼜⼝口的流程。:.
设计流程
抽象
车库的主要功能在于实现车辆⼊入库和车辆出库,根据汽车在车库中停留
的时间收费
设计对象
车位,层次,车库,汽车这些实体。
设计接⼜⼝口
车库需要与⽤用户进⾏行交互,因此应该提供车辆⼊入库和车辆出库的接⼜⼝口。:.
参考代码
design/
进⼀一步思考:
线程安全?
快速查找?:.
电梯调度设计
Designanelevatorbankforabuilding,withmultipleelevators
抽象
电梯间拥有多部电梯,当有⽤用户需要乘坐电梯时,电梯间分配⼀一个最优
的电梯去⽤用户所需的楼层。:.
电梯设计
设计对象
实体:电梯间和电梯
1)当电梯处于停⽌止状态,距离分等于当前楼层和需求楼层的差
2)当电梯处于上升状态,如果需求楼层⾼高于当前楼层,则距离分等于当
前楼层和需求楼层的差,否则不考虑当前电梯
3)当电梯处于下降状态,如果需求楼层低于当前楼层,则距离分等于当
前楼层和需求楼层的差,否则不考虑当前电梯
4)算法开始时先随机选择⼀一部电梯,当存在更好的电梯选择时,替代当
前的候选电梯,这样确保⾄至少会有⼀一部电梯响应:.
电梯设计
设计接⼜⼝口
多线程:.
预订系统
Thestandardquestionisaboutarestaurantreservationsystem,butonecouldalsoeasilyaskthe
samequestionregardingacarrentalcompanyorwhite-waterraftingcompanyorwhatever.
Somethinglike:
I'mtheownerofarestaurantandhavebeendoingpen&'ve
hiredyouasasoftwareconsultanttodesignandimplementacomputer-basedreservationsystem.
I'mnotworriedabouttheuserinterfacebutratherthecoreobjectsandmethodsrequiredtomake
:
▪ WhenacustomercallsupaskingtomakeareservationSaturdayat8pmfor4people,the
systemneedstobeabletocheckavailabilityandthenmakethereservationifrequested
▪ Whenacustomershowsupatmyrestaurantat8pmonSaturday,Ineedtobeabletoretrieve/
confirmthereservation
:.
Designaloggingsystem
Acommontaskforadeveloperwhendebuggingistologinto
machinesandviewlogfileslookingforerrorsandpotentialcauses.
:.
DelayedSchedulingProblem
implementthefollowinginterfacethatexecutesagiventaskata
specifiedfuturetime:
  publicinterfaceDelayedScheduler{
    voiddelayedRun(longtimeToRun,Runnabletask) 
  }:.
Designahighperformancedistributedfilesystem
Thegoalhereistodesignahighperformancedistributedfilesystem:it
shouldworkoncommodityhardware,connectedoverethernet,and
shouldnotperformmuchworsethanalocalsystem.
:.
Failuredetector
.,adatabaseorafile
,therearemany
,talking

(<5ms)andshouldberobustandfaulttolerant.
:.
DistributedStatisticsAggregationSystem
implementingasystemthatwillcollectandaggregatestatisticsfrom
multiplesystemsusbeusedforplottingmonitoringgraphsor
triggeringalerts.
:.
TopNexceptions

veryusefultobeabletobeabletoanswerquestionslike'Inthelast24
hours,whatNexceptionshaveoccurredmostoften?'.Describethe
systemyouwouldneedtoimplementtoprovidedatalikethat.
:.
SpellCheck
Considerawordprocessorthathighlightsspellingerrorsasauser
types,highlightingawordassoonastheuserentersastringof

wouldneedinordertoprovidethatfunctionality
:.
DocumentRepository
Designanindexingsystemforalargerepositoryofdocuments.
Essentially,youhaveastaggeringlylargecollectionofdocuments,and
wanttobeabletoanswerquestionslike'whatdocumentshavethe
wordsredandgreen,butnotblue'inareasonableamountoftime.
Howdoyoucomputeandstoreindexesonwordsthatyouwantto
store?
:.
PresentationRemoteControl
DesignasystemforremoteviewingofpresentationsviaWeb
application (justlearnedthereisastartupdoingsimilarthing, http://
/).Itisimportanttostressthat  thereshouldbeno

makeunderstandingeasyyoucansaythatthereisaconference :.
Designamonitoringsystem
WehavehundredsofJavaapplicationsrunningonthousandsof

quicklyknowofanyissues,weneedtohaveamonitoringandalerting
system.
:.
Others:.
Designadeploymentsystem
SupposewehaveafewJavaapplicationsrightnow,butwillbe
'tscale
aswearemanuallyperformingthedeployment.
Canyoudesignadeploymentsystemthatwillallowdevelopersto
easilydeploytheirapplicationstoproductionthatscalestohundreds
ofapplications?:.
DistributedStreamProcessing:.
Concurrentcircularbufferwithindex:.
DesignaACLsystem
Describetheneedforengineeringteamsto'takeownership'of
?
:.
VisitSite
WhathappensafteryoutypedaURLinyourbrowserandpressed
returnkey?