嵌入式系统和linux工程的师面试地的题目_第1页
嵌入式系统和linux工程的师面试地的题目_第2页
嵌入式系统和linux工程的师面试地的题目_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一. 1、简答题。下面的题目必须全部答对才给分(20 分):1 、 如何在 C 中初始化一个字符数组。2 、 如何在 C 中为一个数组分配空间。3 、 如何初始化一个指针数组。4、 如何定义一个有 10 个元素的整数型指针数组。5 、 s10 的另外一种表达方式是什么。6 、 GCC3.2.2 版本中支持哪几种编程语言。7 、 要使用 CHAR_BIT 需要包含哪个头文件。8、 对 (-1.2345) 取整是多少?9 、 如何让局部变量具有全局生命期。10、C 中的常量字符串应在何时定义?11 、如何在两个 .c 文件中引用对方的变量。12 、使用 malloc 之前需要做什么准备工作。13

2、、 realloc 函数在使用上要注意什么问题。14 、strtok 函数在使用上要注意什么问题。15 、gets 函数在使用上要注意什么问题。16、C 语言的词法分析在长度规则方面采用的是什么策略?17 、 a+b 所表示的是什么意思?有什么问题?18 、如何定义 Bool 变量的 TRUE 和 FALSE 的值。19 、C 语言的 const 的含义是什么。 在定义常量时, 为什么推荐使用 const ,而不是 #define20 、 C 语言的 volatile 的含义是什么。使用时会对编译器有什么暗示。一. 2、问答题。"匈牙利命名法 "有什么优缺点? (2 分)2

3、 、 下面 x, y, *p 的值是多少,有什么问题? (2分 )int x, y, z = 2; int *p=&z; x=sizeof*p;y=x/*p; /* x=?, *p=?, y=?, 有什么问题? */3 、 下面的语句是什么意思?如何声明或定义才使它们更易懂?(10 分 )int (*foo()();int (*foo();int (*foo)();(*(void(*)()0)();void (*signal(int,void(*)(int)(int);4、 本题 (2分 )。一般使用 malloc 时,需要进行强制类型转换,如:char *s; s = (char *

4、)malloc(31);下面中 ?该如何填写,才可以正确执行强制类型转换?int (*monthp)31; monthp =(?)malloc(31);5 、 关于 C 语言运算符优先级的记忆技巧是什么? (2分) /* 下面 r 的值是多少 */int hi, low, r; hi=7;low=3; r=hi<<4+low;指针和数组的区别是什么?用一个简单的声明把它们区分开。(2分 )指针和数组的声明在什么情况下是相同的?(2分 )7 、 C 语言的左值 (lvalue) 和右值 (rvalue) 的含义是什么? (2 分)8 、 为什么 C 语言可以实现 printf(cha

5、r *format,.) 这样可变参数的调用形式?这样有什么缺点? (2分 )9 、 说明C语言中术语”声明""定义""原型”的含义? (2分)10 、举一个例子,说明使用 assert 和防错代码的区别。 (5分)11 、对语句 if else 与操作符 ? : 使用场合的比较。 (2分)12 、 编写一个函数,输入一个的整型数字,可以选择按照 8/10/16 进制输出字符串。 注意边界值。(5分)13 、本题 (2分)。下面是一个 16x16 的黑白图标:static unsigned short stopwatch = 0x07c6, 0x1ff7

6、, 0x383b, 0x600c, 0x600c, 0xc006, 0xc006,0xdf06, 0xc106, 0xc106, 0x610c, 0x610c, 0x3838, 0x1ff0, 0x07c0, 0x0000, ;如何修改声明,可以使之在源代码中形象地表现出图形的模样。14 、说出可以使用 calendar1130 变量的四种类型定义。 (5分) 如: int calendar1231;/* 二维数组 */15 、使用 strcmp ,当字符串相同时会返回 '0' 。但 '0' 一般作为逻辑假, 因此下面的语句不容 易理解 :if (!strcmp

7、(s, "string") return EQUATION; 如何经过简单修改,使之更易懂? (2分 )16 、编写一个自己的完全 C 语言版本的 memset 函数,并且评价这个实现的性能和可移植性。(5 分)17 、在树和图这些数据结构中,通常使用指针来组织数据。如果我们要把这些数据保存到文件 中,指针是没有意义的。我们该如何解决这个问题。(2分 )18 、用2 种不同的方法计算 long 变量的 "1"bit 的个数。 (2分)19 、任意给出一个 C 的基本数据类型,如何编码判断这个数据类型是有符号还是无符号的? (2分)不得上机实验, 写出下面

8、代码的输出。 解释这个行为是标准定义的, 还是依赖实现的。 ( 2 分)int i; for (i = 0; i < 10; i+) int j = i;printf ("%dn", j); 20 、列出5种以上你所看过的 C 编程的书籍,并写简要书评。 (5分) 对 C 的评价。如果要你改造 一把菜刀,使之更加安全,你是否会使用这样的菜刀,为什么 ? (5分)一. 3、分析题。 本题 (各5分)。假设下面代码中的变量都是合法变量,调用外部的函数都是 正确的。回答几个问题 :这些代码意图要干什么? 是否有问题? 如果有问题,该如何修改,或者如何避免类似错误发生?如果没

9、有问题,如果代码有输出,输出是什么?1 、 int isvowel (char c) return c='a'|c='e'|c='i'|c='o'|c='u' 2 、 while (c='t'|c=' '|c='n')c=getc(f);3 、 /* 当 x=2, y=3, z=? */ if (x=0) if (y=0) z=-1; else z=x+y;/* 处理网络事件 */void process_network_code(int x, int y) /* 选

10、择 modes_pointer 资源 */switch (line) break;case THING1: /* 处理异常 1#, 使用老的 modes_pointer 资源 */doit1();case THING2:/* 处理异常 2#, 需要重新启动服务 */*/if (x = STUFF) /* 重新申请 modes_pointer 资源,没有初始化do_first_stuff();/* 在这种条件下,有些资源不用重新申请*/if (y = OTHER_STUFF) break;do_later_stuff();/* 初始化 modes_pointer initialize_modes

11、_pointer(); break;default: /*/* 申请剩下的资源,并初始化资源 */处理普通事 件, 使用老的*/modes_pointer 资 源 */processing(); /* 使用 modes_pointer 资源,处理事件 */ use_modes_pointer();5 、 int is_gb2312_char(char c1, char c2)if (c1 >= 0xa1 && c2 >= 0xa1)return 1;else return 0;6、面 x, y 的值是多少,有什么问题?int x = 10, y = 3;x A= y

12、; y A= x;x A= y; /* x=?, y = ? */ 7、 int days=31,28,31,30,31,30,31,31,30,31,30,31,;int calendar1231; int (*monthp)31;int *dayp; int i;memset(calendar, 0, sizeof(calendar);i = 0;for (monthp = calendar; monthp < &calendar12; monthp+)for (dayp = *monthp; dayp < &(*monthp)31; dayp+)if (day

13、p - *monthp < dayscalendar - monthp)*dayp = i+ % 7 + 1;8 、 void printnum(long n)if (n < 0)putchar('-');n = -n;if (n >= 10) printnum(n/10);("0123456789"n%10); 9 、 *pv, unsigned char ch, size_t size)unsigned char *pch = (unsigned char *) pv; putcharvoid * memchr(voidunsigned

14、 char *pchEnd =pch + size;while (pch < pchEnd) if (*pch = ch) return (pch); pch+; return NULL; 10 、 void * memchr(void*pv, unsigned char ch, size_t size)unsigned char *pch = (unsigned char *) pv;unsigned char *pchPlant =pch + size;unsigned char chSave = *pchPlant;*pchPlant = ch;while (pch != ch)

15、pch+; *pchPlant = chSave;return (pch = pchPlant) ? NULL : pch); 11 、 voidUnsToStr(unsigned short int u, char *str)char *pch;assert(u <= 65535);pch = &str5;*pch = '0'do *-pch = u % 10 + '0' while (u / 10) > 0);strcpy(str,pch); 12 、 void*memmove(void *pvT o, void pvFrom, size

16、_t size)char *pbT o = (char *)pvTo;char *pbFrom = (char *)pvFrom;(pbTo < pbFrom) ? tailmove : headmove) (pbTo, pbFrom, size);return (pvTo); 13 、 void *memcpy(void*pvT o, void pvFrom, size_t size) char *pbT o = (char *)pvTo; char *pbFrom = (char *)pvFrom; while (size- > 0);*pbT o+ = *pbFrom+;re

17、turn (pvTo); 14 、#include <stdio.h>int main(int argc, char *argv) char s="0123456789" int i = 0;do printf ("%c", i+s);while(si?1:printf("n")-1);return 0; 15、int fibonacci(int x) if (x = 1 | x =2)return 1;returnfibonacci(x - 2) + fibonacci(x - 1); 16 、这里有一个程序cdecl.

18、c 。写出它的工作流程。写出它的使用方法。给出一个典型输入用例,记录下它的输出。.4 、综合编程题。 要求:1、完成需求,程序运行正确。2、工作原理文档,使用文档完整。5、用工具分析出是哪些代码或函数3 、代码规整优美。注释得当。 4 、运行速度足够快。造成速度瓶颈。1、编写一个排序程序。被排序 的文件有 8MB 大小,一行一个随机整数 (ASCII 格式 )。要求对这些整数进行 排序,并计算平均值,打印出排序所需的时间。 (20 分)2、 用 dummy header 技巧实现一个链表 DEMO 。要求具有 create, insert, delete, search功能。 编写一个应用程序

19、, 使用上面的函数。 使用 dummy header 技巧有什么优点。 (20 分 )3、 用 heapsort 算法实现优先队列。要求具有 create, insert, delete 功能。编写一个应用程序, 使用上面的函数。 使用 heapsort 算法有什么优点。 (20 分 )用 trie( 一种多叉树 )实现一个字典。要求具有 create, insert, delete, search功能。编写一个应用程序,使用上面的函数。使用 trie 树有什么优点。 (20 分)二、POSIX 方面的知识。二. 1、简答题。下面的题目必须全部答对才给分:(5分 )1 、在 UNIX 环境中,

20、编译流程是什么?2 、 ABI , ELF 的英文全称是什么3 、一般 UNIX 的程序有多少段,举一个实际的例子说明。4 、如何在 kernel 二进制代码中找一个字符串。5 、段地址 F000:FFF0 转换为线形地址的值是多少 (16 进制表达 )。6 、在一个 UNIX 文件系统中,文件的唯一性标志是什么?二. 2、问答题。1 、 写一些代码。如何用文件实现信号灯?要求如果程序崩溃了,这个文件也将自动被删除 为什么可以这样实现信号灯? (5分 ) 传统的 signal 函数信号处理为什么是不可靠的,信号 和系统调用有何关系? (5 分) 在图形库系统中往往提供 timer 的功能,调用

21、来实现 timer ? (5分)写一些代码,演示如何正确除了使用 ALARM 信号外,你还可以使用什么系统2、使用 write 系统调用。注意看好手册再回答。 (2分 )如果一个文件以 rw 模式打开,在进行 read/write 操作转换时,需要进行什么操作。 (2分 )3 、 解释终端结构 termios.c_cc的 MIN/TIME 数值变化的带来 read/write 的特性。 (5 分 ) 如何理解终端、控制终端、虚拟终端、控制台、 tty 等类同的概念? (5分 )4 、 解 释 计 算 机 中Copy-On-Write 的概念。 (2 分)调用 fork 之后,子进程没有继承父进

22、程的属性有哪些? (5分 ) 解释为什么每个程序在装入执行之后,总是已经预先打开了 stdout 、 stdin 、stderr ?(2分) 在 fork 之前,父进程打开了一个文件。在 fork 之后,如果子进程移动了文件指针, 父进程的文件指针有什么变化;如果子进程关闭了文件,父进程有什么变化?为什么会这样? (5分 ) 标准输入、输出和错误输出分别是什么类型的缓冲, 这些缓冲在用户空间还是在核心空 间? 怎样关闭他们的缓冲?如果父进 程关闭了缓冲,在 fork 之后建立的子进程是否也关闭了缓冲? (5分 ) vfork 和 fork 相比,有什么特色? (2 分) system 函数是否

23、等同于 fork+exec ?(2 分)wait 系统调用有多少种条件可以退出? (2分 )5 、 系统调用和库函数调用有什么区别。 (2分 ) 在 linux2.4.x 上的 glibc 和 newlib(一种嵌入式 C 库 )的系统调用有什么不同? (2分 ) 在 linux2.4.x 上,对系统调用 execve 如 果调用成功,它返回的值是多少。 (2分 )6、 列出你所知道的 2 个内存跟踪库。 (2分 ) 设计一个内存跟踪方案,为什么选择这个方案(5分 )二.3 、综合编程题。要求: 1、完成需求,程序运行正确。 2、工作原理文档,使用文档完整。 3 、代码规整优美。注释得当。4

24、、运行速度足够快。1 、 这里有一个 8MB 的文件, 编写一个 copy 程序,拷贝这个文件,并计算所需时间。用工具分析 出是哪些代码或函数造成速度瓶颈。 提示:如果只是使用 read/write 调用,不是一个 好的实现。 (20 分)2、 Linux 系统中,什么时候会出现类似 Y2K 的问题。写一个程序证明。(20 分)3 、 编写一个程序,测试系统最小的睡眠时间间隔。 (20分 )4、 编写一个 pipe 程序,测试有N个管道,size大小的buffer情况下,pipe的传输性能是多少?(20分)5 、在 ext2 文件系统上, 单个文件最大可以达到多少? 写一个程序获得这方面的限制

25、。 (20分)三、Linux 编程基本使用知识。1)三. 1 、命令和 shell编写一个脚本,统计一个目录下面所有 C 代码的行数。 (2分 )2)编写一个 sed 脚本,去除 HTML文件中的 HTML 标记。 (2 分)3)编写一个脚本获得当前系统 eth0的 IP 地址。 (2分 )4)编写一个脚本以交互的方式,进行DNS 的设定。 (2分 )5)使用 ls 命令编写一个脚本,实现ls -R ,递归列出当前目录下的所有目录、文件。(2分)6 ) 在一个目录下,找 soft-link files,用下面的命令,原理是可行的,但无法操作,该如何解决?要 2种方法。 (2分) ls -l |

26、 grep ->7) 如何把标准错误输出,重定向到标准输出上。(2分 )8 ) 我们的系统中的软件包是使用 RPM 管理的。要求下面的问题写出 shell 命令和运行结 果。( 5 分 ) 如何知道系统中安装了几个软件包。如何知道系统中安装了哪几类 (group) 软件包。如何知道 kernel 软件包的简述。 如何知道 kernel 软件包的 Changelog 。 如何知道 kernel 软件包有几个文件。 如何知道 kernel 软件包安装后有 多大。三. 2、编辑工具的使用。 (各2分 )1 )如何使用 vi 进行块拷贝、粘贴、删除的操作2 )如何设置 Tab 的长度,以及自动缩进的长度3 )如何使用 tag 进行代码阅读4)如何在110行,有确认的进把所有的RedHat改为RedFlag5 )在 SourceNavigator 中,如何跳到一个变量的声明处?如何得知光标当前的位置在那 个函数体内?三.3、编译器与调试器。 (各2分 )1 )如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论