摘要
主要是整理归纳下在面试,工作中经常遇到的组件设计相关的问题。很多人,包括我自己,遇到设计相关的问题,都只会简单思考一下,选择一个方向直接就开始实现,这是不对的。尤其是面试过程中,面试官考察的是你的设计思路和解决问题的能力,然后我们直接就开始编码,然后又各种API记得不熟,或者写到一半最开始的技术选型不支持某些功能,写到一半直接就回滚了。非常影响面试过程。本文主要针对这种情况,给出了个人的一些见解
问题
面试过程中经常会被问到一个问题:如何设计实现一个XXX,举个例子,请你实现一个线程池,请你实现一个消费者容器,请你实现一个List 等等等。面对这些问题,我的第一反应通常都是先回忆起Java有没有类似的组件,然后再回忆有没有看过其源码。
其实感觉面试官并不是想让我们直接完整的背着书写出源码,而是想考察这些组件背后的原理
举个例子,假如面试官让我们实现一个线程池,仿照Java的线程池。这个时候该怎么想
- 首先回忆线程池的能力
- 按照优先级进行排序,筛选核心功能
- 回忆源码及原理,使用伪代码编写逻辑