《 嵌入式系统设计与实践》一一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)。要完全跳过这个问题?那么我们可以专注于如何在一个小型数据库或者链表中存储电话号码。当他们能谈论一些他们感兴趣的东西,特别是那些我在其他面试中没有机会问到的问题时,我会感到非常高兴。
我希望能看到对这个系统有个比较好的把握,但是我也不介意面试人选择在某个方面钻研得深入一些。这个问题给出了一定的自由度,让他们可以针对设计电话时如何利用他们的经验提供了一个比较详细的描述。在我提问的时候,我不介意他们承认自己无知的同时谈论一些他们确实知道的东西。
对一个面试者就架构问题进行提问,并不是希望得到完美的技术细节。能够画出一些东西,即使不是非常清晰,也是非常重要的。这个问题的意图是希望能够看到面试人展示其解决问题的热情和高效地表达其思路的能力。

相关文章
|
SQL 关系型数据库 数据库
MySQL · 社区动态 · Online DDL 工具 gh-ost 支持阿里云 RDS
背景 Online DDL 一直都是 DBA 运维时比较头疼的事,一般都会选择在业务低峰期谨慎的操作,比较常用的几个工具比如 percona pt-online-schema-change , Facebook OSC, 本质上它们都是基于触发器的,简单来讲就是通过数据库的触发器把作用在源表的操作在一个事务内同步到修改后的表中,这在业务高峰期时会极大的加重主库的负载。
5728 0
|
2月前
|
存储 人工智能 弹性计算
2026年阿里云新用户定义与新人优惠政策全解
阿里云是全球领先的云计算与AI科技公司。本文详解其新用户定义(无付费记录的会员)及2026年新人福利:ECS低至99元/年、轻量服务器38元/年秒杀、160+款产品免费试用,助力个人与企业轻松上云。
571 11
|
3月前
|
Shell Windows
鼠标右键管理,鼠标右键功能如何更改?鼠标右键选项太多怎么处置呢?
这是一款绿色单文件Windows右键菜单管理工具,支持文件、文件夹、桌面、回收站等全场景右键项增删改;界面简洁,操作只需勾选/取消,实时刷新生效;还支持按文件类型定制及Shell高级扩展,兼顾新手与进阶用户需求。(239字)
774 1
|
3月前
|
弹性计算 人工智能 安全
从0到1落地OpenClaw:阿里云ECS及Mac/Linux/Windows本地搭建+免费百炼API配置集成Skill指南
OpenClaw(曾用名Clawdbot、Moltbot)是2026年开源AI智能体领域的核心工具,其核心价值在于支持本地部署、数据隐私可控,通过Skill(技能插件)扩展实现办公自动化、代码开发、文件管理、实时联网等全场景任务,真正让AI从“聊天工具”升级为“可执行任务的全能助手”。OpenClaw本身不具备大模型推理能力,需对接外部大模型API才能发挥全部功能,而阿里云百炼作为国内成熟的大模型服务平台,为新用户提供免费调用额度,且与OpenClaw实现深度适配,是新手零成本解锁AI能力的最优选择。
501 6
|
3月前
|
人工智能 自然语言处理 Linux
AI Agent驱动跨境流量重构!OpenClaw部署教程(阿里云/Win11/MacOS/Linux)+GEO实操+API配置指南
2026年,跨境电商行业正经历流量入口的结构性迁移——以OpenClaw为代表的AI Agent工具崛起,推动流量逻辑从传统SEO(搜索引擎优化)向GEO(生成式引擎优化)转型。消费者不再依赖关键词搜索筛选商品,而是通过自然语言向AI Agent寻求个性化推荐,完成“发现商品→比较选项→下单结账”的全闭环交易。数据显示,AI Agent带来的流量虽仅占跨境电商总流量的0.04%,但其转化率比全站平均水平高出14%,成为高价值流量的核心来源。
848 0
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | AI 基石,无处不在的朴素贝叶斯算法
```markdown 探索贝叶斯定理:从默默无闻到AI基石。18世纪数学家贝叶斯的理论,初期未受重视,后成为20世纪机器学习、医学诊断和金融分析等领域关键。贝叶斯定理是智能背后的逻辑,朴素贝叶斯分类器在文本分类等应用中表现出色。贝叶斯网络则用于表示变量间条件依赖,常见于医学诊断和故障检测。贝叶斯推理通过更新信念以适应新证据,广泛应用于统计和AI。尽管有计算复杂性等局限,贝叶斯算法在小数据集和高不确定性场景中仍极具价值。了解并掌握这一算法,助你笑傲智能江湖! ```
543 2
算法金 | AI 基石,无处不在的朴素贝叶斯算法
|
程序员 编译器 C语言
来,手把手带你写C语言的HelloWorld
本文介绍了如何使用Vscode进行C语言开发,包括安装必要插件、编写Hello World程序及代码解释。Feri强调了注释的重要性,以增强代码可读性和维护性,帮助开发者更好地协作与成长。君志所向,一往无前!
678 1
|
机器学习/深度学习 Python
线性回归 最小二乘法的求解推导与基于Python的底层代码实现
作为最常见的方法之一,线性回归仍可视为有监督机器学习的方法之一,同时也是一种广泛应用统计学和数据分析的基本技术。它是一种用于估计两个或多个变量之间线性关系的方法,其中一个变量是自变量,另一个变量是因变量。线性回归假设这两个变量之间存在线性关系,并试图找到一条最佳拟合直线,使预测值与实际值之间的误差最小化。
|
监控 NoSQL Java
【线上问题】服务CPU彪高排查
后端程序员出去面试经常会有面试官喜欢问你有没有排查过线上问题,遇到后怎么排查的。
838 0
【线上问题】服务CPU彪高排查
|
机器学习/深度学习 人工智能 并行计算
StableDiffusion-01本地服务器部署服务 10分钟上手 底显存 中等显存机器 加载模型测试效果 附带安装指令 多显卡 2070Super 8GB*2
StableDiffusion-01本地服务器部署服务 10分钟上手 底显存 中等显存机器 加载模型测试效果 附带安装指令 多显卡 2070Super 8GB*2
477 0