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

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

1.3 延伸阅读
有很多关于设计模式的优秀参考书。以下两本是我最喜欢的。
Gamma, Erich; Richard Helm, Ralph Johnson, and John Vlissides(1995),设计模式:可复用面向对象软件的基础。Boston: Addison-Wesley。有很多关于设计模式的参考资料,但这本书是革命性的著作。由于这四个作者,这本书常称为“四人帮”(GoF)书(标准的设计模式可以称做GoF模式)。
Freeman, Eric T., Elisabeth Robson, Bert Bates, Kathy Sierra (2004). 《Head First Design Patterns》. Cambridge, MA: O'Reilly Media.
面试问题:Hello World
这里有一个装了编译器和编辑器的计算机。请实现“Hello World”程序。在基本版本运行后,增加一个功能,从命令行中获取名字。最后,告诉我在你的代码开始执行之前(main()函数之前)发生了什么(感谢Phillip King提供了这个问题)。
在很多嵌入式系统中,需要从头开始开发。在这个任务的第一部分,我希望面试人能够从一个白板开始,填入基本的功能,即使是在一个不熟悉的开发环境中。我希望他具备解决这个直接明了问题的编程技能。
这是一个基础的编程问题,因此最好能熟悉简历上所述的编程语言。对这个问题来说,任何语言都是一样的。在我要求实现“Hello world”时,我考察语言的细节(如包含哪个头文件,在C和C++中使用命令行参数)。我期望面试者能基于编译错误去发现和解决语法问题(然而,当他能输入整个程序而没有任何错误,即使是拼写错误也没有时,也会给我留下极其深刻的印象)。
注意:我自己是个不错的打字员,但如果有人在旁边看着我,我会每隔一个字母就输错。没有问题,很多人都会这样。所以,不要因为这而乱了方寸。专注在键盘和代码上,而不是在你的打字技巧上。
这个问题的第二部分是关于嵌入式系统的切入点。纯计算机科学家会把计算机看做一个理想的盒子,在其中执行他的完美算法。当问及在main函数之前发生了什么时,他通常会说:“你知道的,程序运行了。”但他并没有理解其中的含义。
但是,如果他提到“start”或者“cstart”,那么他已经在面试中有个不错的开始了。总的说来,我希望他能知道除了我们看到的代码之外,程序还需要初始化,而不管是在什么平台。我期望能听到他说设置异常向量来处理中断、初始化关键外设、初始化栈空间、初始化变量,还有如果有C++对象则调用构造函数。如果他能说清楚编译器隐式地做了什么以及初始化代码显式地做了什么,那就更棒了。
最好的回答就是一步一步描述清楚发生了什么,并且解释为什么这些事情如此重要以及它们如何在嵌入式系统中发生。有经验的嵌入式工程师通常会从向量表开始,从向量表重置到系统加电行为的描述。本书的后面章节将讨论这些问题,因此即使这些名词对大家来说是陌生的也不用担心。
如果电气工程师(EE)来问这个问题,候选人就可以进一步讨论系统加电行为,那么他会给面试额外的分数。比如,解释为什么系统不可能在开关打开后1毫秒之内启动并运行。电气工程师期望听到加电时序、电压上升时间、时钟稳定时间、处理器重置/初始化延时等。

相关文章
|
8天前
|
前端开发 C# Android开发
揭秘Uno Platform跨平台开发魅力:企业级应用的优势与挑战,一篇文章带你深入探究代码背后的秘密
【9月更文挑战第8天】Uno Platform在企业级应用领域展现出强大潜力,凭借其跨平台特性,能够使用C#和XAML为Windows、iOS、Android及Web构建应用,显著降低开发成本。本文将探讨其优势与挑战,并通过示例代码展示其实际应用。Uno Platform不仅提供丰富的UI控件和布局选项,还支持MVVM架构,提升代码的可维护性和可测试性。
19 2
|
19天前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
76 1
|
4月前
|
存储 算法 Java
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(一)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
80 1
|
4月前
|
传感器 C++
精通嵌入式开发:从原理到实践
嵌入式开发是一门涉及硬件和软件交叉领域的技术,要想精通这门技术,需要从理论基础到实际操作都有深入的了解和实践。
42 3
|
4月前
|
存储 缓存 算法
作者推荐 | 【底层服务/编程功底系列】「底层技术原理」史上最清晰的采用程序员的视角方式进行深入探索Linux零拷贝技术原理及实现
作者推荐 | 【底层服务/编程功底系列】「底层技术原理」史上最清晰的采用程序员的视角方式进行深入探索Linux零拷贝技术原理及实现
50 0
|
4月前
|
Java API
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(三)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
73 0
|
4月前
|
存储 设计模式 监控
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(二)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
73 0
|
架构师 算法 测试技术
嵌入式系统软件架构设计(长篇深度好文)
嵌入式系统软件架构设计(长篇深度好文)
3637 0
|
设计模式 程序员 开发者
重构·改善既有代码的设计.01之入门基础
近期在看Martin Fowler著作的《重构.改善既有代码的设计》这本书,这是一本经典著作。书本封面誉为软件开发的不朽经典。书中从一个简单的案例揭示了重构的过程以及最佳实践。同时给出了重构原则,何时重构,以及重构的手法。用来改善既有代码的设计,提升软件的可维护性。
613 1
重构·改善既有代码的设计.01之入门基础
|
存储 移动开发 小程序
H5/小程序小游戏项目系统开发技术(成熟概念)
H5/小程序小游戏项目系统开发技术(成熟概念)
124 0