想进亚麻,必须做出这道题!

2019 年 10 月 3 日 九章算法
不少同学都表示,刷题刷了几百遍,好不容易在亚麻面试中过五关斩六将,却跪在一道OOD面向对象上? 实在是太冤了!



先让我们来看一下,是什么样的题目,成为入职大厂的拦路虎?
 

设计餐厅

不能预订座位
不能订外卖
餐馆的桌子有不同大小
餐馆会优先选择适合当前Party最小的空桌
需要实现Restaurant Class
每次调用findTable, takeOrder, checkOut之后都会调用restaurantDescription, 来验证你的程序是否正确。

LintCode 答案链接:

https://www.lintcode.com/problem/restaurant-oo-design/description
本期福利:

《亚麻常考的OOD15题》
帮你 赶走拦路虎,直接上岸!

部分题目资料展示


想进亚麻,你必须会做OOD


OOD 几乎算是亚麻面试必考题型,但即便我们都心知肚明,也往往难以解决。 它最大的难点在于,所有的面试题都没有标准答案。 每次做到这种题都一头雾水啊,各种需求想不全。
 
很多同学说,我head first design前几种模式都看过了,后面的就懒得看,每次感觉够用了,结果做起题来费劲就算了,还总是做不出来,都没好意思去面试了
 

不止亚麻,这些公司也偏爱OOD


Google、Bloomberg、TripAdvisor、EMC, Uber. ..等都是常考OOD题型的公司。

具体的我们不多罗列,反正牢记: 以Java为主的公司,不论电面还是Onsite,都一定会考OOD。

OOD 面试题的解题套路有哪些?


亚麻必考题之一的OOD,是每个小白必须要跨过的一道坎。不知道有没有统一的解题办法或者训练方式?

5C 解题法



Clarify: 通过和面试官交流,去除题目中歧义,确定答题范围。

Core objects: 确定题目所涉及的类,以及类之间的映射关系。
Cases:确定题目中所需要实现的场景和功能。
Classes:通过类图的方式,具体填充题目中设计的类。
Correctness:检查自己的设计,是否满足关键点。

SOLD 原则



S - Single-responsiblity principle 单一责任原则
O - Open-closed principle 开发封闭原则
L - Liskov substitution principle 里氏替换原则
I - Interface segregation principle 接口分离原则
D - Dependency Inversion Principle 依赖反转原则


S.O.L.I.D 准则是由 Robert C. Martin 提出的。应用到 OOD 面试题的解题中,可以有效帮助我们设计出一个高可行性的系统,并且使得整个系统更加容易维护和扩展(easy to maintain and extend)。


①单一责任原则
当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE)。换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。


②开放封闭原则
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。这个原则是诸多面向对象编程原则中最抽象、最难理解的一个。


③里氏替换原则
当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。


④依赖倒置原则
1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
2. 抽象不应该依赖于细节,细节应该依赖于抽象


⑤接口分离原则
不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。


这几条原则是非常基础而且重要的面向对象设计原则。正是由于这些原则的基础性,理解、融汇贯通这些原则需要不少的经验和知识的积累


这几条原则是非常基础而且重要的面向对象设计原则。正是由于这些原则的基础性,理解、融汇贯通这些原则需要不少的经验和知识的积累。

小白如何入手OOD?


OOD 面试最大的难点在于,所有的面试题都没有标准答案。因此,小白们往往在准备的时候,多走弯路,浪费了很多宝贵的面试备战时间。


以上内容可以帮助你初步的建立对OOD的框架性认知,但是真正想掌握好OOD,想在面试中快速脱颖而出,你需要进行更加深入系统的学习,九章算法的


《面向对象设计专题班》



由经验丰富的面试官梳理所有OOD面试题目,进行归类汇总,同时提供解题套路,是你备战OOD面试的必听课程。


讲什么


以面试求职为导向,全面讲解设计模式,包括,Strategy, Singleton, Factory, Adaptor, etc。


整理深度剖析所有IT技术面试中的高频OOD面试题,包括,停车场设计、酒店预定系统设计、Black Jack 棋牌设计等等。


适合谁


  • 应届毕业生,有1-3年工作经验的工程师
  • 准备求职Facebook, Linkedin, Google, Amazon等IT企业的工程师
  • 希望学习OOD面向对象设计的同学


谁来讲


文泰来  资深FLAG工程师

北美知名院校计算机研究生,拥有多年的面试和面试官经验,尤其擅长系统设计、OOD等设计类题型。善于利用实例讲解,深入浅出。


免费试听内容


  1. 什么是面向对象设计(OOD, Object oriented design)
  2. OOD 面试中常见面试题总结、分类
  3. 如何评判一次OOD面试的表现是好是坏
  4. OOD 面试应对方法
    1. SOLID 原则
    2. 5C 解题法
  5. 设计模式讲解 Design Pattern - Strategy
  6. 高频OOD面试题讲解 - 电梯设计 Elevator Design


免费试听方式


长按二维码,即可报名免费试听
随时报名,随时观看

      

      

或点击文末“阅读原文”报名
福利领取

本期求职大礼包免费领取方式

扫码添加九章算法-小葵微信号

             

提供本课程试听报名截图
即可获得《亚麻OOD》完整资料
大礼包领取截止时间:北京时间10月10日0点
登录查看更多
0

相关内容

迄今为止,产品设计师最友好的交互动画软件。

专知会员服务
42+阅读 · 2020年7月7日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【康奈尔大学】度量数据粒度,Measuring Dataset Granularity
专知会员服务
12+阅读 · 2019年12月27日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
五轮onsite,两轮BQ:求职亚麻,BQ实在太重要!
九章算法
7+阅读 · 2019年9月16日
你必须知道的六个深度炼丹好习惯
GAN生成式对抗网络
9+阅读 · 2019年5月16日
可能是Amazon最后一批面经
九章算法
21+阅读 · 2019年5月5日
物理PhD转码, 4个月成功收获 FB offer
九章算法
16+阅读 · 2019年4月2日
【一文理清】如何确定自己适不适合学AI?
人工智能头条
4+阅读 · 2018年6月7日
机器学习面试 | 这些题目一定会被问到
七月在线实验室
5+阅读 · 2017年12月10日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
Arxiv
13+阅读 · 2020年4月12日
Arxiv
4+阅读 · 2019年12月2日
Arxiv
5+阅读 · 2018年4月22日
Arxiv
3+阅读 · 2018年4月9日
Arxiv
6+阅读 · 2018年2月7日
VIP会员
相关资讯
五轮onsite,两轮BQ:求职亚麻,BQ实在太重要!
九章算法
7+阅读 · 2019年9月16日
你必须知道的六个深度炼丹好习惯
GAN生成式对抗网络
9+阅读 · 2019年5月16日
可能是Amazon最后一批面经
九章算法
21+阅读 · 2019年5月5日
物理PhD转码, 4个月成功收获 FB offer
九章算法
16+阅读 · 2019年4月2日
【一文理清】如何确定自己适不适合学AI?
人工智能头条
4+阅读 · 2018年6月7日
机器学习面试 | 这些题目一定会被问到
七月在线实验室
5+阅读 · 2017年12月10日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
相关论文
Arxiv
13+阅读 · 2020年4月12日
Arxiv
4+阅读 · 2019年12月2日
Arxiv
5+阅读 · 2018年4月22日
Arxiv
3+阅读 · 2018年4月9日
Arxiv
6+阅读 · 2018年2月7日
Top
微信扫码咨询专知VIP会员