打印

高手请挑战单片机、嵌入式面试!!

[复制链接]
4702|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21amcu|  楼主 | 2009-4-1 17:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言:
1.heap与stack差别?

2.C++程序如何保证不发生内存泄漏?

3.写出输出结果?
char *f[]={"ABCD","EFGHI","JK","MN"};
char **p;
p=f[]+2;
printf("%s",*p);
printf("%c",**p);

4.::、.、->有什么作用及区别?



WIN CE(应用程序)
1.MFC中类从CObject中提取,说明CObject实现那些功能?

2.MFC实现消息映射与命令传递通过哪三个宏?

3.CDC,CPaintDC,CClientDC,CWindowDC是MFC的什么?

4.CStatic类派生一个新类,这个新类要通过自绘实现底色透明,要实现哪个函数重载?

5.说明虚函数的作用?


ARM9系列(驱动程序)1.r0=0x00000000,r1=0x00000000,r2=0x00000002,r3=0x00000002.UMULL r0,r1,r2,r3。r0=?,r1=?

2.r0,r1,r2,r3,cpsr,spsr寄存器主要作用?

3.大端模式和小端模式区别?

4.S3C244MCU所使用ARM核集成MMU管理单元。MMU作用?

5.以你经验说明一下BootLoader?

6.写出WIN CE流驱动程序应用导出函数(4个以上),假设设备前缀定为FPA?



电子测试
1.画出三种三极管应用基本电路,及各特点?

2.画出用C51单片机扩展一个16KB RAM及四个8位IO接口芯片?

3.画一个H桥式电机驱动电路?

4.画一个正向放大10倍的运算放大电路?

5.画一个利用非门及电阻电容组成的振荡电路?

6.用C及汇编写一个基于C51芯片的基于外部中断1,跑马灯程序(8个LED轮流不停不亮)?

7.用CPLD/FPGA芯片,VHDL或Verilog HDL语言,则写三八译码器程序?

8.用DSP进行电机控制,用哪种,多少独立PWM及A/D口?并绘出利用RC将PWM信号转换为电压信号简单电路?

9.用EMI/EMC相关标准,在设计中应注意哪些方面来加以改善,具体措施?

相关帖子

沙发
一朝成名| | 2009-4-1 18:09 | 只看该作者

老板想聘副总?

使用特权

评论回复
板凳
一朝成名| | 2009-4-1 18:13 | 只看该作者

哦耶~!

第2题:这你的问老天爷去,杂泄露内存了?
第3题:
test.c: In function ‘main’:
test.c:6: error: expected expression before ‘]’ token

使用特权

评论回复
地板
feng0521| | 2009-4-1 22:54 | 只看该作者

是什么职位?

使用特权

评论回复
5
wangkj| | 2009-4-2 07:53 | 只看该作者

好像不全,应该再考考linux和arm汇编

另外原理图pcb也应该有。

使用特权

评论回复
6
songbangyan| | 2009-4-2 10:30 | 只看该作者

这不是考单片机程序员

哥哥耶,你这个那是给单片机程序员的哦?

使用特权

评论回复
7
etual| | 2009-4-2 11:15 | 只看该作者

呵呵,不错,再出点题给咱们看看吧。

不过有点不公平,人家学linux的,你考 WinCE估计他也不会
哈哈

另外,还真的是要求软硬精通啊 .... - -b

使用特权

评论回复
8
icefier| | 2009-4-2 11:33 | 只看该作者

隐隐约约记不得

使用特权

评论回复
9
xiaorunyi| | 2009-4-3 11:51 | 只看该作者

高杆的题

使用特权

评论回复
10
bigboy2050| | 2009-4-3 13:54 | 只看该作者

关注

好贴,关注。。。

使用特权

评论回复
11
mtm2000| | 2009-4-3 17:29 | 只看该作者

hao

好   只做了5个题   可怜啊 

使用特权

评论回复
12
宇审飞船| | 2009-4-3 19:21 | 只看该作者

这些题比较简单

都是最基本的题目,不要那么大惊小怪

使用特权

评论回复
13
21amcu|  楼主 | 2009-4-3 19:40 | 只看该作者

单片机软件工程师

前面C语言是必做题,电子测试题(考查一下硬件基础)
主要是看你的C语言基础怎么样,以及你的硬件基础,
至于嵌入式那块是考查看你知道多少,能答多少算多少,

还有考杳单片机常识的,编程问题的,绘图相关问题,
外加考查你处理生产问题。

总共分四页我没有上传,等我整理好了一起发上来和大家一起分享。

使用特权

评论回复
14
zhenglixin| | 2009-4-3 19:58 | 只看该作者

meishayisi

使用特权

评论回复
15
NE5532| | 2009-4-3 21:28 | 只看该作者

会的不多,不过能不能自己点一道题来做。

什么样的设计能保证产品的可靠性?

使用特权

评论回复
16
一朝成名| | 2009-4-4 21:27 | 只看该作者

堆与栈有什么区别?

一、预备知识—程序的内存分配

一个由c/C++编译的程序占用的内存分为以下几个部分

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。

例子程序

这是一个前辈写的,非常详细
//main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456在常量区,p3在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456"); 123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
}


二、堆和栈的理论知识

2.1申请方式

stack:
由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间

heap:
需要程序员自己申请,并指明大小,在c中malloc函数
如p1 = (char *)malloc(10);

在C++中用new运算符
如p2 = (char *)malloc(10);
但是注意p1、p2本身是在栈中的。

2.2 申请后系统的响应

栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。

堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。

2.3申请大小的限制

栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。

堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

2.4申请效率的比较:

栈由系统自动分配,速度较快。但程序员是无法控制的。

堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.

另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是在栈是直接在进程的地址空间中保留一快内存,虽然用起来最不方便。但是速度快,也最灵活

2.5堆和栈中的存储内容

栈: 在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。
当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。

堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。

2.6存取效率的比较

char s1[] = "aaaaaaaaaaaaaaa";
char *s2 = "bbbbbbbbbbbbbbbbb";

aaaaaaaaaaa是在运行时刻赋值的;
而bbbbbbbbbbb是在编译时就确定的;

但是,在以后的存取中,在栈上的数组比指针所指向的字符串(例如堆)快。

比如:
#include <stdio.h>
void main()
{
char a = 1;
char c[] = "1234567890";
char *p ="1234567890";
a = c[1];
a = p[1];
return;
}

对应的汇编代码
10: a = c[1];
00401067 8A 4D F1 mov cl,byte ptr [ebp-0Fh]
0040106A 88 4D FC mov byte ptr [ebp-4],cl
11: a = p[1];
0040106D 8B 55 EC mov edx,dword ptr [ebp-14h]
00401070 8A 42 01 mov al,byte ptr [edx+1]
00401073 88 45 FC mov byte ptr [ebp-4],al
第一种在读取时直接就把字符串中的元素读到寄存器cl中,而第二种则要先把指针值读到edx中,在根据edx读取字符,显然慢了。
?

2.7小结:

堆和栈的区别可以用如下的比喻来看出:

使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

堆和栈的区别主要分:

操作系统方面的堆和栈,如上面说的那些,不多说了。
还有就是数据结构方面的堆和栈,这些都是不同的概念。这里的堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权;栈实际上就是满足先进后出的性质的数学或数据结构。
虽然堆栈,堆栈的说法是连起来叫,但是他们还是有很大区别的,连着叫只是由于历史的原因。

使用特权

评论回复
17
sinanjj| | 2009-4-5 10:23 | 只看该作者

前几个问题实际上很经典

绝对能考出真才实学,

等级不一样,回答也不一样。

一会当个复习作一下

使用特权

评论回复
18
sinanjj| | 2009-4-5 10:45 | 只看该作者

songbangyan答的多而不精

一朝成名回答的这一道题估计就够了。

但是我还是觉得不如直接上英文的好。。。。。。。



2.C++程序如何保证不发生内存泄漏?
很难,最好的方法是,别让要求内存的代码跑2次(别放循环里),
泄露了也没事。

3.写出输出结果?
char *f[]={"ABCD","EFGHI","JK","MN"};
char **p;
p=f[]+2;
printf("%s",*p);
printf("%c",**p);
考指针的。为什么不用结构体考?
JKJ


4.::、.、->有什么作用及区别?
都是内存解析用的。
有语法区别。
::


WIN CE(应用程序)
(不会,不感兴趣)

ARM9系列没玩过
3.大端模式和小端模式区别?
地字节在前在后的问题。

4.S3C244MCU所使用ARM核集成MMU管理单元。MMU作用?
虚拟内存

5.以你经验说明一下BootLoader?
就是开机后第一执行的代码。相当于BIOS,作用?实际上你可以让它干很多东西,因为它就是代码段。
一般的当然要当BIOS用,和linux接口。

6.写出WIN CE流驱动程序应用导出函数(4个以上),假设设备前缀定为FPA?
说了不用wince


电子测试
1.画出三种三极管应用基本电路,及各特点?
抄很容易,知道改那个电阻等细节在什么情况下比较难
省事直接用MOS管啊,没这么多计算的。

2.画出用C51单片机扩展一个16KB RAM及四个8位IO接口芯片?
书上原图,不过现在都选个集成RAM/ROM够的。所以,,,俺也忘了,就记得总线地址设计还有点意思。

3.画一个H桥式电机驱动电路?
俺不是学电机的

4.画一个正向放大10倍的运算放大电路?
没实际做过,不敢发表评论。


5.画一个利用非门及电阻电容组成的振荡电路?
看看晶振等效图--------你是不是就想考这个。
没实际做过,实际上真用很悬。


6.用C及汇编写一个基于C51芯片的基于外部中断1,跑马灯程序?
汇编的不会。

7.用CPLD/FPGA芯片,VHDL或Verilog HDL语言,则写三八译码器程序?
没用过,不会------恩,一点不会。

8.用DSP进行电机控制,用哪种,多少独立PWM及A/D口?并绘出利用RC将PWM信号转换为电压信号简单电路?
没玩过。


9.用EMI/EMC相关标准,在设计中应注意哪些方面来加以改善,具体措施?
很多,主要看是啥板子,用在啥地方。

使用特权

评论回复
19
sinanjj| | 2009-4-5 16:00 | 只看该作者

heap与stack的解释还是不是很经典

仔细看了一下,发现离elf的标准还很远。

还是看看elf标准吧。

使用特权

评论回复
20
songbangyan| | 2009-4-5 19:04 | 只看该作者

那是一个人闲暇时候回答的

能力有限,我所知道的也就是那些了。博而不精!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

9

帖子

0

粉丝