《 嵌入式系统设计与实践》一一2.4 延伸阅读

简介: 本节书摘来自华章出版社《 嵌入式系统设计与实践 》一 书中的第2章,第2. 4节,作者:Elecia White 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.4 延伸阅读
本章中讨论了众多设计模式中的一些模式。本书其他部分也会讨论一些设计模式,但是本书是关于嵌入式系统的,而不是关于设计模式的。试着从以下这些资源中选择一个进行进一步研究,以便更多地了解标准的软件设计模式。
Gamma, Erich, Richard Helm, Ralph Johnson和 John Vlissides. 1995. 设计模式: 可复用面向对象软件的基础。Boston: Addison-Wesley. 这是最早的关于设计模式的著作。这本书采用了C++作为参考语言。
Freeman, Elisabeth, Eric Freeman, Bert Bates和 Kathy Sierra. 2004. 《Head First设计模式》。Design Patterns: Cambridge, MA: O扲elly采用Java作为参考语言,这本书用一种引人入胜的方式给出了大量关于设计模式的例子。
在Wikipedia上搜索,“software design pattern”。
面试问题:创建一个架构
描述一下这个(从房间里挑一样东西)会议电话的架构。
试图从面试房间中寻找有意义的东西有一定的不确定性,因为那里通常缺少比较有趣的东西。会议电话通常被选得最多,因为在某些情况下,它是房间里最复杂的系统。另一个比较好的对象就是投影仪。
当问这个问题时,我想知道面试人能否将一个问题分解成小的部分。我想知道他们分解一个对象时的思维过程。总的来说,从输入和输出开始是比较靠谱的选择。对于会议电话,扬声器和显示屏是输出部分,按键和麦克风是输入部分。我期望能看到将这些东西在一张纸上用方框图表示出来。面试人不应该害怕以至于不敢拿起电话来观察其连接部分。这些连接部分也是输入和输出。当他们完成对物理硬件的分解之后,就可以通过问(自己)一些问题来弄清楚每个组件是如何工作的:电源按钮如何工作?软件接口怎样与它连接?麦克风如何工作?对系统其他部分的影响是什么(例如,是否需要模数转换器)?
面试人会因为提到一些好的软件设计实践而得分。从调用最底层的驱动模块到上一个层次的对象是一个比较好的开头。同样,如果能听到一些诸如系统的某些部分会在将来的电话中被复用,并且尽可能将它们封装的说法也是很不错的。
我希望他们可以问一些关于特定功能或者可能设计目标(成本)的问题。但是,他们可以自己决定问题到底详细到什么程度。需要讨论网络吗?我们可以假设这是一个在IP网络上传输声音的电话(VoIP)。要完全跳过这个问题?那么我们可以专注于如何在一个小型数据库或者链表中存储电话号码。当他们能谈论一些他们感兴趣的东西,特别是那些我在其他面试中没有机会问到的问题时,我会感到非常高兴。
我希望能看到对这个系统有个比较好的把握,但是我也不介意面试人选择在某个方面钻研得深入一些。这个问题给出了一定的自由度,让他们可以针对设计电话时如何利用他们的经验提供了一个比较详细的描述。在我提问的时候,我不介意他们承认自己无知的同时谈论一些他们确实知道的东西。
对一个面试者就架构问题进行提问,并不是希望得到完美的技术细节。能够画出一些东西,即使不是非常清晰,也是非常重要的。这个问题的意图是希望能够看到面试人展示其解决问题的热情和高效地表达其思路的能力。

相关文章
|
7月前
|
存储 安全 编译器
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
|
2月前
|
存储 缓存 算法
作者推荐 | 【底层服务/编程功底系列】「底层技术原理」史上最清晰的采用程序员的视角方式进行深入探索Linux零拷贝技术原理及实现
作者推荐 | 【底层服务/编程功底系列】「底层技术原理」史上最清晰的采用程序员的视角方式进行深入探索Linux零拷贝技术原理及实现
28 0
|
2月前
|
算法 程序员 C语言
C++设计哲学:构建高效和灵活代码的艺术
C++设计哲学:构建高效和灵活代码的艺术
61 1
|
2月前
|
存储 缓存 IDE
嵌入式开发中的几个有用的经验!
嵌入式开发中的几个有用的经验!
21 0
|
7月前
|
安全 Java C++
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(上)
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计
|
7月前
|
传感器 XML 定位技术
《移动互联网技术》第九章 感知与多媒体: 了解质感设计的基本原则和设计方法
《移动互联网技术》第九章 感知与多媒体: 了解质感设计的基本原则和设计方法
42 0
|
8月前
|
架构师 算法 测试技术
嵌入式系统软件架构设计(长篇深度好文)
嵌入式系统软件架构设计(长篇深度好文)
1270 0
|
设计模式 程序员 开发者
重构·改善既有代码的设计.01之入门基础
近期在看Martin Fowler著作的《重构.改善既有代码的设计》这本书,这是一本经典著作。书本封面誉为软件开发的不朽经典。书中从一个简单的案例揭示了重构的过程以及最佳实践。同时给出了重构原则,何时重构,以及重构的手法。用来改善既有代码的设计,提升软件的可维护性。
583 1
重构·改善既有代码的设计.01之入门基础
|
存储 移动开发 小程序
H5/小程序小游戏项目系统开发技术(成熟概念)
H5/小程序小游戏项目系统开发技术(成熟概念)
105 0
|
前端开发 JavaScript Java
雷学委趣谈编程 大型鞋厂与开发工程化
朋友们,小白奶奶上次听雷学委趣味故事学会了类和对象。
168 0
雷学委趣谈编程 大型鞋厂与开发工程化