OO设计问题是电面或者onsite中常考的问题,尤其对以Java为主要开发语言的公司(比如Amazon),OO设计问题可以算必考。OO设计题目的特点是题目非常开放,比如用OO的思想设计一个停车场,或者电梯等,没有固定的答案和套路。对于面试者,尤其是编程经验有限的毕业生,如何回答好这类问题确实是非常大的挑战。那么本篇就以设计电梯为例讲解一下回答这类问题的思路、以及需要注意的细节。
面试官:(经过若干客套)能否用设计关于一个电梯的class,合理的设计其方法和内部成员?
准确理解面试问题是成功面试的第一步,对于OO设计问题更是如此。由于题目的需求相对模糊,面试者需要通过不断的沟通和交流来确定题目中可能被遗漏的细节,从而明确需要实现的步骤和细节。
『设计电梯类』,每个人对于电梯都有一个具体的认知,但面试者自己的理解是否就和面试官一致呢?避免想当然的去假设,多问问题,明确细节,比如:
当我们相对了解题目的具体需求之后,设计电梯类时要从OO设计基本原则入手,比如封装性,本质上就是讲class内部的状态封装在内,对外提供合理的方法接口。
....