云计算百科
云计算领域专业知识百科平台

【06】新国都——新国都 嵌入式笔试,校招,题目记录及解析

新国都——新国都 嵌入式笔试,校招,题目记录及解析

  • 一、【不定项选择题】(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.改变×原值35,写作“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满足要求

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【06】新国都——新国都 嵌入式笔试,校招,题目记录及解析
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!