摘要: 下面的代码片段的输出是什么?为什么? 解析:这是一道动态内存分配(Dynamic memory allocation)题。 尽管不像非嵌入式计算那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程。面试官期望应试者能解决内存碎片、碎片收集、变量的执行时间等问题。这是一个有趣的问题。故意把0 阅读全文
posted @ 2017-02-05 22:19 我有一壶酒 阅读(607) 评论(0) 推荐(0) 编辑
摘要: 在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。 解析:这一问题测试你是否知道为了访问一个绝对地址把一个整型数强制转换(typecast)为一个指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的代码如下: 阅读全文
posted @ 2017-02-05 22:17 我有一壶酒 阅读(2190) 评论(0) 推荐(0) 编辑
摘要: 这段C程序的结果是多少? 嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Littl 阅读全文
posted @ 2017-02-05 22:11 我有一壶酒 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 关键字static的作用是什么? 解析:这个简单的问题很少有人能回答完全。大多数应试者能正确回答第一部分,一部分能正确回答第二部分,但是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。答案:在C语言中,static关键字至少有下列几个作用:●  阅读全文
posted @ 2017-02-05 22:03 我有一壶酒 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 关键字const有什么含意?下面的声明都是什么意思? 解析:只要一听到被面试者说“const意味着常数”,面试官就知道自己正在和一个业余者打交道。因为ESP(Embedded Systems Programming,嵌入式系统编程)的每一位求职者都应该非常熟悉const能做什么和不能做什么。正确的说 阅读全文
posted @ 2017-02-05 21:37 我有一壶酒 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 我们经常使用“volatile”这个关键字,它是什么意思? 解析:volatile问题。当一个对象的值可能会在编译器的控制或监测之外被改变时,例如一个被系统时钟更新的变量,那么该对象应该声明成volatile。因此编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上。volatil 阅读全文
posted @ 2017-02-05 21:30 我有一壶酒 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 请看下面的程序(一个中断服务子程序ISR),请指出这段代码的错误。)[中国台湾某著名CPU生产公司2005年面试题] 答案:(1)ISR不能返回一个值。如果你不懂这个,那么是不会被雇用的。(2)ISR不能传递参数。如果你没有看到这一点,被雇用的机会等同第一项。(3)在许多处理器/编译器中,浮点一般都 阅读全文
posted @ 2017-02-05 21:27 我有一壶酒 阅读(1391) 评论(0) 推荐(0) 编辑
摘要: 给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a的bit 3。在以上两个操作中,要保持其他位不变。 答案: 阅读以下代码,写出程序运行结果。[中国著名杀毒软件企业J公司2008年4月面试题] 解析:15×4(字节)=60所以要求输出的十六进制结果是3C。这样在大系统里面使用未初 阅读全文
posted @ 2017-02-05 21:21 我有一壶酒 阅读(732) 评论(0) 推荐(0) 编辑
摘要: A.5B.7C.9D.11解析:13如果是一个十进制的话,它可以用13=1*101+3*100来表示。现在我们不知道13是几进制,那我们姑且称其X进制。X进制下的13转化为十进制可以用13=1*X1+3*X0;表示;X进制下的16转化为十进制可以用16=1*X1+6*X0;表示;X进制下的244转化 阅读全文
posted @ 2017-02-05 21:18 我有一壶酒 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 写出下面程序的运行结果。[德国某著名软件咨询企业2005年10月面试题] 解析:这是我所见到的概率面试例题中出得非常好的一道。从表面上看,你完全无法看出它是一个概率问题。这里暗含的思想是一个1/4圆和一个正方形比较大小的问题,如下图所示。 RAND_MAX是随机数中的最大值,也就是相当于最大半径R。 阅读全文
posted @ 2017-02-05 19:15 我有一壶酒 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 看清以下数字排列的规律,设1点的坐标是(0,0),x方向向右为正,y方向向下为正。例如,7的坐标为(-1,-1),2的坐标为(0,1),3的坐标为(1,1)。编程实现输入任意一点坐标(x,y),输出所对应的数字。[芬兰著名软件公司2005年面试题] 解析:规律能看出来,问题就在于如何利用它。很明显这 阅读全文
posted @ 2017-02-05 19:12 我有一壶酒 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 以下代码的输出结果是什么?[中国著名金融企业J银行2008年面试题] A.10,0,9,1B.10,10,9,0C.10,1,9,2D.9,10,8,0解析:for循环括号内被两个分号分为3部分:i=0是初始化变量;x>8是循环条件,也就是只要x>8就执行循环;那y=i++是什么?在第一次循环时执行 阅读全文
posted @ 2017-02-05 19:01 我有一壶酒 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 递归是程序设计中的一种算法。一个过程或函数直接调用自己本身或通过其他的过程或函数调用语句间接地调用自己的过程或函数,称为递归过程或函数。递归是计算机语言中的一种很有用的工具,很多数学公式用到递归定义,例如N!:当n>0时,f(n)=n×f(n–1)。有些数据结构(如二叉树),其结构本身就有递归的性质 阅读全文
posted @ 2017-02-05 18:38 我有一壶酒 阅读(1646) 评论(0) 推荐(0) 编辑
摘要: (1)一个整型数(An integer)(2)一个指向整型数的指针(A pointer to an integer)(3)一个指向指针的指针,它指向的指针是指向一个整型数(A pointer to a pointer to aninteger)(4)一个有10个整型数的数组(An array of 阅读全文
posted @ 2017-02-05 17:38 我有一壶酒 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 以下程序的输出是( )[美国某软件公司2009年12月面试题目] 解析:本题定义一个指针指向一个10个int元素的数组。a+1表明a指针向后移动1*sizeof(数组大小);a+1后共向后移动40个字节。*a+1仅针对这一行向后移动4个字节,如下图所示。 答案:输出如下:1 11 2 2 11 一个 阅读全文
posted @ 2017-02-05 17:36 我有一壶酒 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 写出函数指针、函数返回指针、const指针、指向const的指针、指向const的const指针。答案: 找出下面程序的错误,并解释它为什么是错的。[中国台湾某著名杀毒软件公司2005年10月面试题] 解析:这道程序体存在着函数指针的错误使用问题。答案:正确的程序如下: 下面的数据声明都代表什么?[ 阅读全文
posted @ 2017-02-05 17:30 我有一壶酒 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 下列程序会在哪一行崩溃?[美国著名软件企业M公司2007年11月面试题] 解析:int *p=&s.i;相当于int *p; p=&si;。当执行p[0]=4; p[1]=3;的时候,p始终等于&si。s.p=p相当于建立了如下关系:s.p存了p的值,也就是&s.i;s.p[1]相当于*(&s.i+ 阅读全文
posted @ 2017-02-05 17:19 我有一壶酒 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 写出下面程序的运行结果。[美国著名硬盘公司S 2008年4月面试题] 解析:本题考的是指针与地址的关系问题。本程序结构如下:(1)先声明了一个整型数组a[3],然后分别给数组赋值。(2)又声明了两个整数指针p、q,但是并没有定义这两个指针所指向的地址。(3)使整数指针p的地址指向a(注意a就是a[0 阅读全文
posted @ 2017-02-05 17:09 我有一壶酒 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 这个函数有什么问题?该如何修改?[美国著名硬盘公司S 2008年4月面试题] 解析:这个str里存的地址是函数strA栈帧里“hello word ”的首地址。函数调用完成,栈帧恢复到调用strA之前的状态,临时空间被重置,堆栈“回缩”,strA栈帧不再属于应该访问的范围。存于strA栈帧里的“he 阅读全文
posted @ 2017-02-05 16:59 我有一壶酒 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 这个程序测试后会有什么结果?[美国某著名计算机嵌入式公司2005年9月面试题] 解析:毛病出在函数GetMemory中。void GetMemory(char *p, int num)中的*p实际上是主函数中str的一个副本,编译器总是要为函数的每个参数制作临时副本。在本例中,p申请了新的内存,只是 阅读全文
posted @ 2017-02-05 16:50 我有一壶酒 阅读(1719) 评论(1) 推荐(0) 编辑