嵌入式面试问题(1)——HelloWorld

来源:互联网 发布:数组java99乘法表 编辑:程序博客网 时间:2024/06/05 02:04

这里有一个装了编译器和编辑器的计算机。请实现”HelloWorld“程序。在基本版本运行后,增加一个功能,从命令行中获取名字。最后,告诉我在你的代码开始执行之前(main()函数之前)发生了什么


在很多嵌入式系统中,需要从头开始开发。在这个任务的第一部分,我希望面试人能够从一个白板开始,填入基本的功能,即使是在一个不熟悉的开发环境中。我希望他具备解决这个直接明了明天的编程技能。
这是一个基础的编程问题,因此最好能熟悉简历上所述的变成语言。对这个问题来说,任何语言都是一样的。在我要求实现”HelloWorld“的时候,我考察语言的细节(如包含哪一个头文件,在C和C++中使用命令行参数)。我期望面试者可以基于编译错误去发现和解决语法问题。


这个问题的第二部分是关于嵌入式系统的切入点。纯计算机科学家会把计算机看作一个理想的盒子,在其中执行他完美的算法。在问及在main函数之前发生了什么的时候,他通常都会说:”你知道的,程序运行了。“但是他没有理解其中的含义。
但是如果他提到了”start“或者”cstart“,那么他已经在面试中有一个不错的开始了。总的来说,我希望他能知道除了我们看到的代码之外,程序还需要初始化,而不管是在什么平台。我期望能听到他说设置异常向量来处理中断、初始化关键外设、初始化栈空间、初始化变量,还有如果有C++对象则掉哦那个构造函数。如果他能说清楚编译器隐式的做了什么以及初始化代码显式的做了什么,那就更棒了。


最好的回答就是一步一步描述清楚发生了什么,并解释为什么这些事情会如此的重要,以及他们如何在嵌入式系统中发生。有经验的嵌入式工程师通常会从向量表开始,从向量表重置到系统加电行为的描述。本书的后面章节将讨论这些问题,因此即使这些名词对大家来说是陌生的也不用担心。
如果电气工程师来问这个问题,候选人就可以进一步讨论系统加电行为,那么他会给面试额外的分数。比如,解释为什么系统不可能在开关打开后1毫秒之内启动并运行。电气工程师期望听到加电时序、电压上升时间、时钟稳定时间、处理器重置/初始化延时等。

原创粉丝点击