新国都——新国都 嵌入式笔试,校招,题目记录及解析
- 一、【不定项选择题】(3*10)
- 1.下面不正确的字符串常量是()
- 2. 关于蓝牙和GPRS网络,下面描述正确的有()
- 3.下列各个错误中,哪一个不属于编译错误()
- 4. 有以下程序段,执行后,mul的值为()
- 5.C语言中,定义PI为一个符号常量,正确的是()
- 6. 想对一个文本文件的尾部追加写入,应当在fopen语句中使
- 9.对于循环体的执行效率,下述说法正确的是()
- 10. 关于Linux库文件的描述正确的是()
- 二、判断题 (2*10 )
- 1 Linux系统中,若文件的权限为644,则该文件可以被同组的其他用户读写()
- 2 do-while语句构成的循环只能用break语句退出.()
- 3 在C语言中,要求参加运算的数必须是整数的运算符是%。()
- 4 在函数体内用malloc(x)向请内存使用,当函数被调用完后,会自动释放所申请的内存。
- 5 CMOS电平可以直接驱动TTL电路,而TTL电平不可以直接驱动CMOS电路
- 6 LCD虽然可以显示很绚丽的图形,但它不可以自发光,需要借助外界光源。
- 7 有以下程序段int k=0 while(k=1)k+ +; while循环执行的次数是无限次
- 8 设定 #define defS struct s * , typedef struct s * tpfPS; 则defPS p1, p2; tpfPS p3, p4;其中p1,p2,p3,p4都为结构体指针
- 9 linux平台(platform)设备驱动必须提供probe和remove方法。
- 三、填空题 (4*5)
- 1 给128个字符编码,至少需要位二进制数。
- 2 基本的三种逻辑运算是
- 3 uchar a[] = {0x60,0x70,0x80, 0x90, 0x00, 0x10, 0x20, 0x30,040,0×50}; uchar len strlen(a); 则 len = 4
- 4 写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个
- 5 32位系统下,C++程序,char str[] = "hello world";sizeof(str) =
- 四、简答题(10*3)
- 1.如何引用一个已经定义过的全局变量?
- 2 什么是进程和线程?有何区别?
- 3 简述就5V系统而言TTL电平和CMOS电平定义是什么?二者可以互相驱动吗?(10分)
-
- 1 TTL电路
-
- TTL电平
- 2、 CMOS电路
-
- CMOS电平
- 3、TTL和COMS电路比较:
- TTL与CMOS相互驱动
新国都——新国都 嵌入式笔试,校招,题目记录及解析
一、【不定项选择题】(3*10)
1.下面不正确的字符串常量是()
A
A. 'abc'
B."12'12"
C."0"
D.""
2. 关于蓝牙和GPRS网络,下面描述正确的有()
BC (C不太确定)
A.蓝牙是传输语音的,GPRS是传输数据的
B.蓝牙传输距离短,GPRS传输距离更长
C.蓝牙传输速度慢,GPRS传输速度快
D.蓝牙和GPRS工作频点相同
3.下列各个错误中,哪一个不属于编译错误()
A
A.改变×原值3为5,写作“x==5;”
B.花括号不配对
C.复合语句中的后一条语句后未加分号
D.变量有引用、无定义
4. 有以下程序段,执行后,mul的值为()
B
int a[] = { 1,3,5,7,9 };
int mul, * data, x;
mul = 1;
data = &a[1];
for (x = 0; x < 3; x++)
mul *= *(data + x);
A.15
B.105
C.315
D.945
注意:data = &a[1]; data 的首地址是指向数组a的第二个元素, 执行结果为 mul35*7 = 105
5.C语言中,定义PI为一个符号常量,正确的是()
A
A. #define PI 3.14
B. define PI 3.14
C. #include PI 3.14
D. include PI 3.14
6. 想对一个文本文件的尾部追加写入,应当在fopen语句中使
D
A.w
B. r
C. wb
D.a
c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)fgets()函数
C 库函数 – fopen()
声明 下面是 fopen() 函数的声明。
FILE *fopen(const char *filename, const char *mode)
参数
- filename – 这是 C 字符串,包含了要打开的文件名称。
- mode – 这是 C 字符串,包含了文件访问模式,模式如下:
模式 描述
"r"打开一个用于读取的文件。该文件必须存在。
"w"创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
"a"追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。
"r+"打开一个用于更新的文件,可读取也可写入。该文件必须存在。
"w+"创建一个用于读写的空文件。
"a+"打开一个用于读取和追加的文件。
如果是wb+,则表示以二进制(读写)方式写入,参考:fopen中w w+ wb区别
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
对于文件使用方式有以下几点说明:
1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
2. 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。
3. 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
4. 若要向一个文件追加新的信息,用“a ”方式打开文件。文件可存在可不存在,若不存在会自动创建。
5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。如果成功的打开一个文件, fopen()函数返回文件指针, 否则返回空指针
(NULL)。由此可判断文件打开是否成功。 fclose()函数用来关闭一个由fopen()函数打开的文件 , 其调用格式为:
int fclose(FILE *stream);
该函数返回一个整型数。当文件关闭成功时, 返回0, 否则返回一个非零值。
可以根据函数的返回值判断文件是否关闭成功。
9.对于循环体的执行效率,下述说法正确的是()
ABCD
A.循环体内工作量最小化
B.在多重循环中,应将最忙的循环放在最内层
C.尽量减少循环的嵌套层次
D.避免在循环体内做无谓的判断语句,将循环语句置于判读语句的代码块之中
10. 关于Linux库文件的描述正确的是()
AB CD不确定
A库文件可分为动态库和静态库
B.不同的进程可以访问同一个动态库中的同一个全局变量
C.动态库可以重新编译成静态库
D.静态库可以重新编译成动态库
- ABD吧;B选项不同的进程访问动态库全局变量的时候会拷贝一份新的,无法改变原来的那个;D选项没搜到,我觉得是因为静态库包含源代码,所以可以重新编译,而动态库不包含源代码
二、判断题 (2*10 )
1 Linux系统中,若文件的权限为644,则该文件可以被同组的其他用户读写()
644 第三个数字4是同组只读
B.错
2 do-while语句构成的循环只能用break语句退出.()
还有goto /return(c/cpp)
B.错
3 在C语言中,要求参加运算的数必须是整数的运算符是%。()
A.对
4 在函数体内用malloc(x)向请内存使用,当函数被调用完后,会自动释放所申请的内存。
malloc分配的是堆内存,用完需要free
B.错
5 CMOS电平可以直接驱动TTL电路,而TTL电平不可以直接驱动CMOS电路
A.对
只要工作电源电压为5V,就可以用CMOS门驱动TTL门。因为TTL电源电压为5V,CMOS电源电压为3V ~ 18V。CMOS电源电压为5V是,输出就是TTL电平。
在同样5V电源电压情况下,COMS电路可以直接驱动TTL,因为CMOS的输出高电平大于2.0V,输出低电平小于0.8V;而TTL电路则不能直接驱动CMOS电路,TTL的输出高电平为大于2.4V,如果落在2.4V~3.5V之间,则CMOS电路就不能检测到高电平,低电平小于0.4V满足要求,所以在TTL电路驱动COMS电路时需要加上拉电阻。如果出现不同电压电源的情况,也可以通过上面的方法进行判断。
6 LCD虽然可以显示很绚丽的图形,但它不可以自发光,需要借助外界光源。
7 有以下程序段int k=0 while(k=1)k+ +; while循环执行的次数是无限次
8 设定 #define defS struct s * , typedef struct s * tpfPS; 则defPS p1, p2; tpfPS p3, p4;其中p1,p2,p3,p4都为结构体指针
9 linux平台(platform)设备驱动必须提供probe和remove方法。
三、填空题 (4*5)
1 给128个字符编码,至少需要位二进制数。
7
n位二进制可以编码2^n个字符,2^7 = 128
2 基本的三种逻辑运算是
与 或 非
3 uchar a[] = {0x60,0x70,0x80, 0x90, 0x00, 0x10, 0x20, 0x30,040,0×50}; uchar len strlen(a); 则 len = 4
unsigned char a[] = { 0x60,0x70,0x80, 0x90, 0x00, 0x10, 0x20, 0x30,0x40,0x50 };
unsigned char len = strlen(a);
unsigned char len2 = sizeof(a);
printf("strlen(a) = %d\\n",len); // 4 到 0x00停止, ‘\\0’ == 0 == 0x00
printf("sizeof(a) = %d\\n", len2);// 10,共有9各元素 和 一个结束符,共10个
【C语言】‘\\0’、‘0’、’ '、“0”、0的区别详解
4 写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个
#define MIN(x, y) ((x) < (y) ? (x) : (y))
5 32位系统下,C++程序,char str[] = “hello world”;sizeof(str) =
12
四、简答题(10*3)
1.如何引用一个已经定义过的全局变量?
全局变量声明在所有函数体外部。
- 同一源文件内可以直接引用。
- 其他源文件引用前必须引入该全局变量声明所在的头文件,或使用extern关键字声明,表示该全局变量的定义位于其他源文件中。
2 什么是进程和线程?有何区别?
-
进程:操作系统资源分配的基本单位
-
线程:线程是处理器任务调度和执行的基本单位
-
区别:(1)进程之间相互独立,无法共享资源;同一个进程创建的线程能够共享进程的部分资源,如代码段、全局(静态)数据、堆区。(2)进程崩溃不会影响其他进程;线程崩溃会导致该进程下所有线程崩溃。(3)每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
-
联系:线程属于进程,是进程任务实际的执行者,进程中的线程共享进程的部分资源。
-
Linux中没有真正的线程,线程 == 轻量级进程(Light Weight Process,LWP)
3 简述就5V系统而言TTL电平和CMOS电平定义是什么?二者可以互相驱动吗?(10分)
1 TTL电路
TTL集成电路的主要型式为晶体管-晶体管逻辑门(transistor-transistor logic gate),TTL大部分都采用5V电源。
TTL电平
输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。
-
1.输出高电平Uoh和输出低电平Uol
Uoh≥2.4V,Uol≤0.4V
-
2.输入高电平和输入低电平
Uih≥2.0V,Uil≤0.8V
2、 CMOS电路
CMOS电路是电压控制器件,输入电阻极大,对于干扰信号十分敏感,因此不用的输入端不应开路,接到地或者电源上。CMOS电路的优点是噪声容限较宽,静态功耗很小。
CMOS电平
1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪声容限。
-
1.输出高电平Uoh和输出低电平Uol
Uoh≈VCC,Uol≈GND
-
2.输入高电平Uoh和输入低电平Uol
Uih≥0.7VCC,Uil≤0.2VCC (VCC为电源电压,GND为地)
3、TTL和COMS电路比较:
-
1)TTL电路是电流控制器件,而CMOS电路是电压控制器件。
-
2)TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。COMS电路的速度慢,传输延迟时间长(25-50ns),但功耗低.
TTL与CMOS相互驱动
在同样5V电源电压情况下,
- COMS电路可以直接驱动TTL,因为CMOS的输出高电平约5V满足TTL高电平输入大于2.0V的条件,CMOS输出低电平约0V,满足TTL输入低电平小于0.8V条件;
CMOS的输出作为TTL的输入,能否驱动就看电压范围是否符合;
是符合的
CMOS : Uoh≈VCC = 5 ,Uol≈GND = 0
TTL : Uih≥2.0V,Uil≤0.8V
- 而TTL电路则不能直接驱动CMOS电路,TTL的输出高电平为大于2.4V,如果落在2.4V~3.5V之间,则CMOS电路就不能检测到高电平,低电平小于0.4V满足要求,所以在TTL电路驱动COMS电路时需要加上拉电阻。如果出现不同电压电源的情况,也可以通过上面的方法进行判断。
不符合
TTL : Uoh≥2.4V,Uol≤0.4V
CMOS : Uih≥0.7VCC = 3.5V,Uil≤0.2VCC = 1V
TTL的输出高电平为大于2.4V,而CMOS的 Uih ≥ 3.5V, 如果TTL输出的高电平落在2.4V~3.5V之间,则CMOS电路就不能检测到高电平,TTL输出的低电平小于0.4V满足要求
评论前必须登录!
注册