关键词不能为空

当前您在: 主页 > 高中公式大全 >

朱丹妮经典嵌入式面试题

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-21 03:43
tags:

男生网名大全-我想要这一种幸福

2021年1月21日发(作者:唐庚)
经典嵌入式面试题


C
语言测试是招聘嵌入式系统程序员过程中必 须而且有效的方法。

些年,
我既参加也组织了许多这种测试,
在这过程中我 意识到这些测
试能为带面试者和被面试者提供许多有用信息,
此外,
撇开面试的压力不谈,这种测试也是相当有趣的。

从被面试者的角度来讲,你能 了解许多关于出题者或监考者的情况。
这个测试只是出题者为显示其对
ANSI
标准细 节的知识而不是技术技
巧而设计吗?这个愚蠢的问题吗?如要你答出某个字符的
ASCII值。
这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这
标志着出题者也许花 时间在微机上而不上在嵌入式系统上。
如果上述
任何问题的答案是



的话,那么我知道我得认真考虑我是否应该去
做这份工作。

从面试者的角度 来讲,一个测试也许能从多方面揭示应试者的素质:
最基本的,你能了解应试者
C
语言 的水平。不管怎么样,看一下这
人如何回答他不会的问题也是满有趣。
应试者是以好的直觉做出 明智
的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口
呢,
还是表现出 对问题的真正的好奇心,
把这看成学习的机会呢?我
发现这些信息与他们的测试成绩一样有用。

有了这些想法,
我决定出一些真正针对嵌入式系统的考题,
希望这些
令人头痛的考题能给正在找工作的人一点帮住。
这些问题都是我这些
年实际碰到的。其中有些 题很难,但它们应该都能给你一点启迪。

这个测试适于不同水平的应试者,
大多数初 级水平的应试者的成绩会
很差,
经验丰富的程序员应该有很好的成绩。
为了让你能自己 决定某
些问题的偏好,
每个问题没有分配分数,
如果选择这些考题为你所用,
请自行按你的意思分配分数。

预处理器(
Preprocessor


1 .
用预处理指令
#define
声明一个常数,用以表明
1
年中有多少秒
(忽略闰年问题)

#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:

?; #define
语法的基本知识(例如:不能以分号结束,括号的使用,
等等)

?; 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是
如何计算一年中有多少秒而不是计算 出实际的值,
是更清晰而没有代
价的。

?;
意识到这个表达式将 使一个
16
位机的整型数溢出
-
因此要用到长
整型符号
L,
告诉编译器这个常数是的长整型数。

?;
如果你在你的表达式中用到UL
(表示无符号长整型),那么你有
了一个好的起点。记住,第一印象很重要。


2 .
写一个

标准


MIN
,这个宏输入两个参数并返回较小的一个。

#define MIN(A,B) ( (A) <= (B) ? (A) : (B) )
这个测试是为下面的目的而设的:

?;
标识
#define
在宏中应用的基本知识。这是很重要的,因为直到 嵌

(inline)
操作符变为标准
C
的一部分,宏是方便产生嵌 入代码的唯
一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经
常是必须的方法 。

?;
三重条件操作符的知识。这个操作符存在
C
语言中的原因 是它使
得编译器能产生比
if-then- else
更优化的代码,了解这个用法是很重
要的。

?;
懂得在宏中小心地把参数用括号括起来

?;
我也用这个问题开始讨论宏的 副作用,例如:当你写下面的代码
时会发生什么事?
least = MIN(*p++, b);

3.
预处理器标识
#error
的目的是什么?

#error
停止编译并显示错误信息


如果你不知道答案,请看参考文献
1< br>。这问题对区分一个正常的伙计
和一个书呆子是很有用的。只有书呆子才会读
C
语言课本的附录去
找出象这种问题的答案。
当然如果你不是在找一个书呆子,
那么应试
者最好希望自己不要知道答案。

死循环(
Infinite loops



4.
嵌入式系统中经常要用到无限循环,你怎么样用
C
编写死循环
呢?

这个问题用几个解决方案。我首选的方案是:

while(1)
{
;}
一些程序员更喜欢如下方案:

for(;;)
{
;}

这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。
如 果一个应试者给出这个作为方案,
我将用这个作为一个机会去探究
他们这样做的基本原理。如果 他们的基本答案是:

我被教着这样做,
但从没有想到过为什么。

这会 给我留下一个坏印象。

第三个方案是用

goto
Loop:
...
goto Loop;

应试者如给出上面的方案,
这说明 或者他是一个汇编语言程序员
(这
也许是好事)或者他是一个想进入新领域的
BASI C/FORTRAN
程序
员。

数据声明(
Data declarations



5.
用变量
a
给出下面的定义

a)
一个整型数(
An integer




int a

b)
一个指向整型数的指针(

A pointer to an integer



int *a
c)
一个指向指针的的指针,它指向的指针是指向一个整型数(

A
pointer to a pointer to an intege

r


*(int *a)


int**a

d)
一个有
10
个整型数的数组(

An array of 10 integers

int a[10]
e)
一个有
10
个指针的数组,
该指针是指向一个整型数的。

An array
of 10 pointers to integers


int *a[10]

f)
一个指向有
10
个整型数数组的指针(

A pointer to an array of 10
integers


*

int a[10]



int (*a)[10]

g)
一个指向函数的指针,该函数有一个整型参数并返回一个整型数

A pointer to a function that takes an integer as an argument and
returns an integer




fun(*int a )


int (*max_function)(int a)
h)
一个有
10
个指针的 数组,该指针指向一个函数,该函数有一个整
型参数并返回一个整型数


An array of ten pointers to functions that
take an integer argument and return an integer

fun(*int a[10])

int (*a[10])(int)

答案是:


a) int a; // An integer

b) int *a; // A pointer to an integer

c) int **a; // A pointer to a pointer to an integer

d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers

等价于
int *(a[10]);
f) int (*a)[10]; // A pointer to an array of 10 integers

g) int (*max_function)(int a); // A pointer to a function a that takes an
integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an
integer argument and return an integer
人们经 常声称这里有几个问题是那种要翻一下书才能回答的问题,

同意这种说法。当我写这篇文章时 ,为了确定语法的正确性,我的确
查了一下书。但是当我被面试的时候,我期望被问到这个问题(或者< br>相近的问题)。
因为在被面试的这段时间里,我确定我知道这个问题
的答案。应试者如果 不知道所有的答案(或至少大部分答案),那么
也就没有为这次面试做准备,如果该面试者没有为这次面 试做准备,
那么他又能为什么出准备呢?

6.
关键字
static
的作用是什么?


C
语言中,关键字
static
有三个明显的作用:
< br>一旦声明为静态变量
,
在编译时刻开始永远存在
,
不受作用域范围约< br>束
,
但是如果是局部静态变量
,
则此静态变量只能在局部作用域内使< br>用
,
超出范围不能使用
,
但是它确实还占用内存
,
还 存在
.
?;
在模块内(但在函数体外),一个被声明为静态的变量可以被模
块内所用函数访问,
但不能被模块外其它函数访问。
它是一个本地的
全局变量。
?;
在模块内,一个被声明为静态的函数只可被这一模块内的其它函
数调用。
那就是,
这个函数被限制在声明它的模块的本地范围内使用。

大多数应试者 能正确回答第一部分,
一部分能正确回答第二部分,

少人能懂得第三部分。
这是一个应试者的严重的缺点,
因为他显然不
懂得本地化数据和代码范围的好处和重要性。
7
.关键字
const
有什么含意?

总结:
1
)只读。
2
)使用关键字
const
也许能产生更紧凑的代码。
3

使编译器很自然地保护那些不希望被改变的参数,
防止其被无意的代码修改。

我只要一听到被面试者说:

意味着常数

,我 就知道我正在和
一个业余者打交道。去年
Dan Saks
已经在他的文章里完全概括 了
const
的所有用法,因此
ESP(
译者:
Embedded Systems
Programming)
的每一位读者应该非常熟悉
const< br>能做什么和不能做
什么
.
如果你从没有读到那篇文章,只要能说出
co nst
意味着

只读

就可以了。
尽管这个答案不是完全的答案 ,
但我接受它作为一个正确
的答案。
(如果你想知道更详细的答案,
仔细读一 下
Saks
的文章吧。


如果应试者能正确回答这个问题,我将问他一个附加的问题:

下面的声明都是什么意思?

const int a;
int const a;
const int *a;
int * const a;
int const * a const;
/******/
前两个的作用是一样,
a
是一个常整型数。

第三个意味着
a
是一个指向常整型数的指针
(也就是,
整型数是不可
修改的,但指针可以) 。

第四个意思
a
是一个指向整型数的常指针
(也就是说,
指针指向的整
型数是可以修改的,但指针是不可修改的)。

最后一个意味着
a
是一个指向常整型数的常指针
(也就是说,
指针指
向的整型数是不可修改的 ,同时指针也是不可修改的)。

如果应试者能正确回答这些问题,那么他就给我留下了一个好 印象。
顺带提一句,也许你可能会问,即使不用关键字
const
,也还是能很
容易写出功能正确的程序,那么我为什么还要如此看重关键字
const
呢?我也如下的几下 理由:

?;
关键字
const
的作用是为给读你代码的人传达非 常有用的信息,
实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目
的。
如果你曾花很多时间清理其它人留下的垃圾,
你就会很快学会感
谢这点多余的信息。
( 当然,懂得用
const
的程序员很少会留下的垃
圾让别人来清理的。)

?;
通过给优化器一些附加的信息,使用关键字
const
也许能产生更< br>紧凑的代码。

?;
合理地使用关键字
const
可以使编 译器很自然地保护那些不希望
被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少
bug
的出现。


8.
关键字
volatile有什么含意
?
并给出三个不同的例子。

一个定义为
volat ile
的变量是说这变量可能会被意想不到地改变,这
样,编译器就不会去假设这个变量的值了 。精确地说就是,优化器在
用到这个变量时必须每次都小心地重新读取这个变量的值,
而不是使
用保存在寄存器里的备份。

下面是
volatile
变量的几个例子:

?;
并行设备的硬件寄存器(如:状态寄存器)

?;
一个中断服务子程序中会访问到的非自动变量
(Non-automatic
variables)
?;
多线程应用中被几个任务共享的变量

回答不出这个问题的人是不会被雇佣的。我认为这是区分
C
程序员
和嵌入式系统程序 员的最基本的问题。搞嵌入式的家伙们经常同硬
件、中断、
RTOS
等等打交道,所有 这些都要求用到
volatile
变量。
不懂得
volatile
的 内容将会带来灾难。

假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得
volatile
完全的重要
性。

?;
一个参数既可以是
const
还可以是
volat ile
吗?解释为什么。

?;
一个指针可以是
volatile
吗?解释为什么。

?;
下面的函数有什么错误:
int square(volatile int *ptr){return *ptr *
*ptr;}
下面是答案:

?;
是的。
一个例子是只读的状态寄存器。
它是
volatile
因为它可能被
意想不到地改变。它是
const因为程序不应该试图去修改它。

?;
是的。尽管这并不很常见。一个例子是当 一个中断服务子程序修
改一个指向一个
buffer
的指针时。

?;
这段代码有点变态。
这段代码的目的是用来返回指针
*ptr
指向值的
平方,但是,由于
*ptr
指向一个
volatile
型参 数,编译器将产生类似
下面的代码:

int square(volatile int *ptr)

{
int a,b;
a = *ptr;
b = *ptr;
return a * b;
}
由于
*p tr
的值可能被意想不到地该变,
因此
a

b
可能是不同的 。

果,这段代码可能返不是你所期望的平方值!正确的代码如下:

long square(volatile int *ptr)

{
int a;
a = *ptr;
return a * a;
}
位操作(
Bit manipulation



9.
嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整
型变量
a
,< br>写两段代码,
第一个设置
a

bit 3

第二个清除
a

bit 3

在以上两个操作中,要保持其它位不变。

对这个问题有三种基本的反应

?;
不知道如何下手。该被面者从没做过任何嵌入式系统的工作。

?;

bit fields

Bit fields
是被扔到
C
语言死角的东西,它保证你的
代码在不同编译器之间是不可移植的,
同时也保证了的 你的代码是不
可重用的。
我最近不幸看到
Infineon
为其较复杂的通信 芯片写的驱动
程序,它用到了
bit fields
因此完全对我无用,因为我的编译器用其
它的方式来实现
bit fields
的。从道德讲:永远不要让一个非嵌入式
的家伙粘实际硬件的边。

?;


#defines


bit masks
操作。这是一个有极高可移植性的方
法,是应该被用到的方法。最佳的解决方案如下:

#define BIT3 (0x1 << 3)
static int a;
void set_bit3(void) {a |= BIT3;}
void clear_bit3(void) {a &= ~BIT3;}
一些人喜欢为设置和清除值而定义 一个掩码同时定义一些说明常数,
这也是可以接受的。
我希望看到几个要点:
说明常数 、
|=

&=~
操作。


访问固定的内存位置(
Accessing fixed memory locations



10.
嵌入式系统经常具有要求程序员 去访问某特定的内存位置的特
点。在某工程中,要求设置一绝对地址为
0x67a9
的 整型变量的值为
0xaa55


编译器是一个纯粹的
ANSI
编译器。写代码去完成这一任务。

这 一问题测试你是否知道为了访问一绝对地址把一个整型数强制转
换(
typecast
)为一指针是合法的。这一问题的实现方式随着个人风
格不同而不同。典型的类似代码如下:

int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa55;
A more obscure approach is:

一个较晦涩的方法是:

*(int * const)(0x67a9) = 0xaa55;
即使你的品味更接近第二种方案,
但我建议你在面试时使用第一种方
案。


中断(
Interrupts



11. < br>中断是嵌入式系统中重要的组成部分,
这导致了很多编译开发商
提供一种扩展
— —
让标准
C
支持中断。具代表事实是,产生了一个
新的关键字
__i nterrupt

下面的代码就使用了
__interrupt
关键字去定
义了一个中断服务子程序
(ISR)
,请评论一下这段代码的。

__interrupt double compute_area (double radius)

{
double area = PI * radius * radius;
printf(
return area;
}
这个函数有太多的错误了,以至让人不知从何说起了:

?; ISR
不能返回一个值。如果你不懂这个,那么你不会被雇用的。

?; ISR
不能传递参数。如果你没有看到这一点,你被雇用的机会等
同第一项。

?;
在许多的处理器
/
编译器中,浮点一般都是不可重入的。有些处理

/
编译器需要让额处的寄存器入栈,有些处理器
/
编译器就是不允许

ISR
中做浮点运算。此外,
ISR
应该是短而有效率的,在
ISR

做浮点运算是不明智的。

?;
与第三点一脉相承,
prin tf()
经常有重入和性能上的问题。如果你
丢掉了第三和第四点,我不会太为难你的。不用说 ,如果你能得到后
两点,那么你的被雇用前景越来越光明了。


*****
代码例子(
Code examples


12 .
下面的代码输出是什么,为什么?

void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts(
}
这个问题测试你是否懂得
C
语言中的整数自动 转换原则,我发现有
些开发者懂得极少这些东西。
不管如何,
这无符号整型问题的答案 是
输出是




原因是
当表达式中存在有符号类型 和无符号类型时所有的操作数都
自动转换为无符号类型



因此< br>-20
变成了一个非常大的正整数,所以该表达式计算出的结果大

6

这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是
丰常重要的。
如果你答 错了这个问题,
你也就到了得不到这份工作的
边缘。

13.
评价下面的代码片断:

unsigned int zero = 0;
unsigned int compzero = 0xFFFF; //1's complement of zero
对于一个
int
型不是
16
位的处理器为说,上面的代码是不正确的。
应编写如下:

unsigned int compzero = ~0;
这一问题真正能揭露出应试者是否懂得处理器字长的重要性。
在我的
经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,
然而
PC
机程序往往把硬件作为一个无法避免的烦恼。

到了这个阶段,应试者或者完全 垂头丧气了或者信心满满志在必得。
如果显然应试者不是很好,
那么这个测试就在这里结束了。
但如果显
然应试者做得不错,
那么我就扔出下面的追加问题,
这些问题是比较
难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希
望更多看到应试者应付问题 的方法,而不是答案。不管如何,你就当
是这个娱乐吧
...
动态内存分配(
Dynamic memory allocation



14.
尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆
heap
)中动态分配内存的过程的。那么嵌入式系统中,动态分配
内存可能发生的问题是 什么?

这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行
时间等等 。这个主题已经在
ESP
杂志中被广泛地讨论过了(主要是

P.J. Plauger,
他的解释远远超过我这里能提到的任何解释),所有
回过头看一下这些杂志 吧!
让应试者进入一种虚假的安全感觉后,

拿出这么一个小节目:

下面的代码片段的输出是什么,为什么?

char *ptr;
if ((ptr = (char *)malloc(0)) == NULL) puts(
else puts(
这是一个有趣的问题。
最近在我的一个同事不经意把
0
值传给了函 数
malloc
,得到了一个合法的指针之后,我才想到这个问题。这就是上
面的代码 ,该代码的输出是

。我用这个来开始讨
论这样的一问题,
看看被面试者是否想 到库例程这样做是正确。
得到
正确的答案固然重要,
但解决问题的方法和你做决定的基 本原理更重
要些。


15 Typedef

C
语言中频繁用以声明一个已经存在的数据类型的同
义字。也可以用预处理器做类似的事。例如,思考一 下下面的例子:

#define dPS struct s *
typedef struct s * tPS;
以上两种情况的意图都是要定义
dPS


tPS
作为一个指向结构
s
指针。哪种方法更好呢? (如果有的话)为什么?这是一个非常微妙
的问题,任何人答对这个问题(正当的原因)是应当被恭喜的 。答案
是:
typedef
更好。思考下面的例子:

dPS p1,p2;
tPS p3,p4;
第一个扩展为
struct s * p1, p2;
上面的代码定义
p1
为一个指向结构的指针,
p2
为一个实 际的结构,
这也许不是你想要的。


第二个例子正确地定义了
p3

p4
两个指针。


晦涩的语法

16 . C
语言同意一些令人震惊的结构
,
下面的结构是合法的吗,如果< br>是它做些什么?

int a = 5, b = 7, c;
c = a+++b;
这个问题将做为这个测验的一个愉快的结尾。
不管你相不相信,
上面< br>的例子是完全合乎语法的。
问题是编译器如何处理它?水平不高的编
译作者实际上会争论 这个问题,
根据最处理原则,
编译器应当能处理
尽可能所有合法的用法。因此,上面的 代码被处理成:
c = a++ + b;
因此
,
这段代码持行后
a = 6, b = 7, c = 12


如 果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我
也不把这个当作问题。
我发现 这个问题的最大好处是这是一个关于代
码编写风格,代码的可读性,代码的可修改性的好的话题。


好了,伙计们,你现在已经做完所有的测试了。这就是我出的
C
言测试题,我怀着愉快的心情写完它,希望你以同样的心情读完它。
如果是认为这是一个好的测试,
那么尽量都用到你的找工作的过程中
去吧。

memcmp

Compare characters in two buffers.

比较两块内存中的字符


int memcmp( const void *buf1, const void *buf2, size_t count );
memset

Sets buffers to a specified character

将内存块设置为指定的字符

sprintf

Write formatted data to a string

将格式化的数据写到字符串




一、单项选择题

1
、如下哪一个命令可以帮助你知道
shell
命令的用法(

A


A. man



B. pwd




C. help




D. more
2

Linux
分区类型默认的是:


B


A. vfat



B. ext2/ext3


C. swap


D. dos
3
、在大多数
Linux
发行版本中,以下哪个属于块设备



B


A.
串行口


B.
硬盘



C.
虚拟终端


D.
打印机

4

下面哪个命令行可用来马上重新启动正在运行的
Linux
系统?

A.
restart --delay=0
B.
reboot -w



D

C.
halt
-p


D.
shutdown
-r
now
5
、在
Linux
系统,默认的
shell
是什么(

A








6
、下面哪条命令可用来确保文件
“myfile”
存在(

B




A. cp
myfile
/dev/null
B. touch
myfile

C. create
myfile


D. mkfile
myfile

7


LILO
的配置文件是:


B


A. /etc/conf




B. /etc/

C. /proc/kcore




D. /usr/local/
8
、用
“useradd
jerry”
命令添加一个用户,这个用户的主目录是什么


A


A./home/jerry





B./bin/jerry
C./var/jerry




D./etc/jerry 9

Linux
文件权限一共
10
位长度,分成四段,第三段表 示的内容是


D


A.
文件类型







B.
文件所有者的权限

C.
文件所有者所在组的权限

D.
其他用户的权限

10
、某文件的组外成员的权限为只读 ;所有者有全部权限;组内的权
限为读与写,则该文件的权限为(

D


A.467




B.674




C.476




D.764
11
、不是
shell
具有的功能和特点的是



A


A.
管道









B.
输入输出重定向






C.
执行后台进程







D.
处理程序命令

12
、如何从当前系统中卸载一个已装载的文件系统(

A


A. umount







B. dismount
C. mount

u





D.


/etc/fstab
中删除这个文件系统项

13
、你用
vi
编辑器编写了一个 脚本文件

,你想将改文件名称
修改为

,下列命令(

B
)可以实现。


A. cp

B. mv

C. ls >


D. ll >
14
、在
/home/stud1/wang
目录下有一文件
f ile
,使用



D
)可实现
在后台执行命令 ,
此命令将
file
文件中的内容输出到

文件中。

A. cat file >



B. cat file
C. &cat file




D. &cat file >

15
、字符设备文件类型的标志是



B


A. p


B. c


C. s


D. l
16
、删除文件命令为(

D


A. mkdir




B. rmdir




C. mv




D. rm
17



B
)命令可更改一个文件的权限设置?


A. attrib

B. chmod




C. change




D. file
18
、用命令
ls -al
显示出文件
ff
的描述如下所示 ,由此可知文件
ff

类型为(

A



-rwxr-xr-- 1 root root 599 Cec 10 17:12 ff
A.
普通文件





B.
硬链接





C.
目录





D.
符号
链接

19
、系统中有用户
user1

user2
,同属于
users
组。在
us er1
用户目
录下有一文件
file1

它拥有
644的权限,
如果
user2
用户想修改
user1
用户目录下的< br>file1
文件,应拥有(

B
)权限。


A. 744




B. 664




C. 646




D. 746
20
、< br>在指令系统的各种寻址方式中,
获取操作数最快的方式是

1 -B


若操作数的地址包含在指令中,则属于(
2-A
)方式。


1



A








B








C











D
、间接寻址


2



A








B








C











D
、间接寻址

21
、在
CPU
和物理内存之间进行地址转换时,


B
)将地址从虚拟
(逻辑)地址空间映射到物理地址空间。

A

TCB



B

MMU

C

CACHE

D

DMA
22

Linux
将存储设备 和输入
/
输出设备均看做文件来操作,

C
)不是
以文件的 形式出现。

A.
目录









B.
软链接


C. i
节点表









D.
网络适配器


23
、关于文件系统的安装和卸载,下面描述 正确的是(
A




A.
如果光盘未经卸载,光驱是打不开的


B.
安装文件系统的安装点只能是
/mnt



C.
不管光驱中是否有光盘,系统都可以安装
CD-ROM
设备


D. mount /dev/fd0 /floppy
此命令中目录
/floppy
是自动生成的

24
、为了查 看
Linux
启动信息,可以用(
B
)命令

A. cat /etc/








C. cat/proc/cpuinfo





25
、用下列(
A
)命令查 看
Linux
使用了多少内存

/proc/meminfo





B. cat /bin/meminfo

/proc/meminfo





/user/local/meminfo
26
、下列(
D
)设备是字符设备。

A. hdc




B. fd0




C. hda1




D. tty1
27
、下列说法正确的是(
D


A. ln -s


作用是制作文件

的符号链接,
其名称为

B. df
命令可以查看当前目录占用磁盘空间的大小





df

diskfree

C. comm
命令打印两个文本文件中的相同的内容

D. rm
命令可以用来删除目录

28
、有如下的命令:
$$dd if=f1 of=f2
。其中
if=f1
表示(
A



A.

f1
作为源文件,代替标准输入


B.

f1
作为目标文件,代替标准输出


C.
当条件满足
f1
的时候,执行真正的拷贝


D.
拷贝的过程中,不转化文件

29

为了查找出当前 用户运行的所有进程的信息,
我们可以使用

B

命令:


A. ps -a

B. ps -u

C. ls -a

D. ls

l
31



D
)设备是字符设备。

A

hdc

B

fd0
C

hda1

D

tty1
32
、文件
exer1
的访问权限为
rw-r-- r--
,现要增加所有用户的执行权
限和同组用户的写权限,下列命令正确的是(
A




A

chmod a+x g+w exer1


B

chmod 765 exer1

C

chmod o+x exer1





D

chmod g+w exer1
33

删除当前目录
abc
以及下面的所有子 目录和文件,
并不要求提示
任何确认信息的命令是(
B


A. del abc*.*

B. rm

rf abc
C. rmdir abc

D. rm

r abc *.*

34
、如果忘记了
ls
命令的用法,可以采用(

C
)命令获得帮助


a.

ls

ls
ls

ls
35
、在安装开 始前,用光盘启动系统,想要进入字符界面安装,需要
输入的命令是(

C



doc



text
note
36
、要给文件
file1
加上其他人可执行属性的命令是(

C



a+x
a+x

o+x

o+x
37
、怎样新建一个新文件:


A



hello.c

hello.c
hello.c
hello.c
38
、在
bash
命令中,当用(

B
)参数时,表示
bash
是交互的。

A
、-
c

B
、-
i


C
、-
s


D
、-
d
39
、重定向的符号
“>
表示:


C


A

输出追加

B

输入追加

C

输出重定向,
原来的文件会被改写
D

管道

40

linux
系统能够直接读取的分区类型是(

D





16

32
3
41
、下列提法中,属于
ifconfig
命令作用范围的是(

B



A
、编译源程序








B
、配置网卡的
IP
地址



C
、配置系统内核







D
、加载网卡到内核中

42
、下列对
shell
变量
FRUIT
操作,正确的是(
C


A
、为变量赋值:
$$FRUIT=apple


B
、显示变量的值:
fruit=apple



C
、显示变量的值:
echo
$$FRUIT



D
、判断变量是否有值:
[
-f
“$$FRUIT” +

43
、一般可以用(
C

)实现自动编译。

A

gcc

B

gdb *

C

make

D


vi
44
、处理机主要由处理器、存储器和总线组成,总线包括(

D



A
、数据总线、串行总线、逻辑总线、物理总线


B
、并行总线、地址总线、逻辑总线、物理总线


C
、并行总线、串行总线、全双工总线

D
、数据总线、地址总线、控制总线


45
、假设当前目录下有文件
Makefile
,下面是其内容:

pr1: prog.o subr.o
gcc

o pr1 prog.o subr.o
prog.o: prog.c prog.h
gcc

c

l prog.o prog.c
subr.o: subr.c
gcc

c

o subr.o subr.c
clear:
rm

f pr1*.o
现在执行命令
make clear
,实际执行的命令是(

A




A. rm

f pr1*.o

B. gcc

c

l prog.o prog.c

C. gcc

c

o subr.o subr.c

D.
都执行


46< br>、
Linux
将存储设备和输入
/
输出设备均看做文件来操作,下列选 项

C
)不是以文件的形式出现。

A.
目录









B.
软链接


C. i
节点表









D.
网络适配器

47
、有如下的命令:
$$dd if=f1 of=f2
。其中
if=f1
表示(

A



A.

f1
作为源文件,代替标准输入


B.

f1
作为目标文件,代替标准输出


C.
当条件满足
f1
的时候,执行真正的拷贝


D.
拷贝的过程中,不转化文件

48.
文件之间可以建立两种 链接关系:软链接和硬链接,硬链接的特
点是(
B


A.
等同于文件复制操作


B.
类似于文件复制,但新的链接文件并不占用文件磁盘存储空间


C.
删除源文件,将使其他链接文件失效


D.
可以对目录文件名建立硬链接

49.
下面哪一个选项不是
linux
系统的进程类型(
D


A.
交互进程

B.
批处理进程

C.
守护进程

D.
就绪进程

50
、下面(

B
)特性不符合嵌入式操作系统特点。

A
、实时性





B
、不可定制



C
、微型化






D
、易移植




51
、下面关于
C
语言程序的描述,正确的是(


C





A
、总是从第一个定义的函数开始执行




B
、要调用的函数必须在
main()
函数中定义




C
、总是从
main()
函数开始执行

D

main()
函数必须放在程序的开始


52
、在
FTP
协议中,控制连接是由(

B

)主动建立的。

A
、服务器端



B
、客户端



C
、操作系统




D
、服务提供商

53
、以下叙述中,不符合
RISC
指令系统特点的(


B



A
、指令长度固定,指令种类少








B
、寻址方式种类丰富,指令功能尽量增强




C
、设置大量通用寄存器,访问存储器指令简单








D
、选取使用频率较高的一些简单指令

54
、当我们与某远程网络 连接不上时,就需要跟踪路由查看,以便了
解在网络的什么位置出现了问题,满足该目的的命令是(
C




A

ping








B

ifconfig
C

traceroute






D

netstat
55.
下列哪种文件系统的写入是
LINUX
所不能完全支持的:
D
A. FAT


B. UFS


C. JFS

D. NTFS
56.
LINUX
支持网络文件系统
NFS,
下列哪个命令实现了将位于

192.168.1.4
机器上的

/opt/sirnfs
目录挂载到本机
/mnt/sirnfs
下:

A
A

mount -t nfs 192.168.1.4:/opt/sirnfs /mnt/sirnfs
B

mount -t nfs /mnt/sirnfs 192.168.1.4:/opt/sirnfs
C

mount nfs

t 192.168.1.4:/opt/sirnfs /mnt/sirnfs
D

mount nfs

t /mnt/sirnfs 192.168.1.4:/opt/sirnfs
57
、同
CISC
相比 ,下面哪一项不属于
RISC
处理器的特征
_ D
A

采用固定长度的指令格式,
指令规整、
简单、
基本寻址方式有
2

3
种。

B
、减少指令数和寻址方式,使控制部件简化,加快执行速度。

C

数据处理指令只对寄存器进行操作,
只有加载
/
存储指令可以访问
存储器,以提高指令的执行效率,同时简化处理器的设计。

D

RISC
处理器都采用哈佛结构

58
、在下 列
ARM
处理器的各种模式中,
__D___
模式有自己独立的
R8 -R14
寄存器。

A
、系统模式
(System)


B
、终止模式
(Abort)
C
、中断模式
(IRQ)
D
、快中断模式
(FIQ)
59
、按照
ARM
过 程调用标准(
APCS

,栈指针使用
_B___
寄存器,

A

R0

B

R13

C

R14

D

R15
60
、在
ARM
体系结构中,
_C_ __
寄存器作为连接寄存器,
当进入子程
序时或者处理器响应异常的时候,
用 来保存
PC
的返回值;
_C___
寄存
器作为处理器的程序计数器指 针。

A

R0

R14
B

R13

R15
C

R14

R15 D

R14

R0
61
、在
ARM
体系 结构中,要从主动用户模式(
User
)切换到超级用
户模式(
Superv isor

,应采用何种方法?
C
A
、直接修改
CPU< br>状态寄存器(
CPSR
)对应的模式

B
、先修改程序状态备 份寄存器(
SPSR
)到对应的模式,再更新
CPU
状态

C
、使用软件中断指令(
SWI


D
、让处理器执行未定义指令

62
、下面关于
MMU
Linux
描述错误的是:
C
A

MMU
是内存管理单元
Memory Management Unit
的缩写

B

uClinux
可以运行在有
MMU
的处理器上

C

Linux
内核功能强大,内存 管理功能丰富,即使在没有
MMU
的处
理器上,也可以通过软件实现地址映射。

D

Linux
系统正是利用
MMU
,才能使得各个进 程有独立的寻址空间

63

DNS
域名系统主要负责主机名和(
A

)之间的解析。

A

IP
地址






B

MAC
地址

C
、网络地址






D
、主机别名
64
、在
vi
编辑器中的命令模式下,重复上一次对编辑的文本进行的
操 作,可使用(


C

)命令。

A
、上箭头


B
、下箭头


C

<.>

D

<*>
65
、进程有三种状态:


C




A
、准备态、执行态和退出态




B
、精确态、模糊态和随机态

C
、运行态、就绪态和等待态




D
、手工态、自动态和自由态

66
、下列变量名中有效的
shell
变量名是(
C



A

-1-time





B

_2$$3



C

bo_chuang_1



D

2009file
67
、文件系统的主要功能是(
A



A
、实现对文件的按名存取







B
、实现虚拟存储




C


提高外存的读写速度








D
、用于保存系统文档

68
、在
ARM Linux
体系中,用来处理外设中断的异常模式是
__C____
A
、软件中断(
SWI





B
、未定义的指令异常

C
、中断请求(
IRQ





D
、快速中断请求(
FIQ


69、在
Linux
系统中,驱动程序注册中断处理程序的函数是
_B____
A

trap_init





B

request_irq
C

enable_irq





D

register_irq
70


ARM Linux
系统中,
中断处理程序进入< br>C
代码以后,
ARM
的处

__A__
工作模式
A
、超级用户(
SVC





B
、中断
(IRQ)
C
、快速中断(
IRQ





D
、和进入中断之前的状态有关系

71
、在ARM
体系构建的嵌入式系统中,由电平模式触发的中断,其
对应的中断标准应该在何时被 清除?
A
A
、当中断处理程序结束以后,才可以清除

B
、进入相应的中断处理程序,即可以清除

C
、产生
IRQ
中断的时候,处理器自动清除

D
、任何时候都可以清除

72
、在操作系统中,
Spoo ling
技术是用一类物理设备模拟另一类物理
设备的技术,实现这种技术的功能模块称做(< br>

B




A
、可林斯系统


B
、斯普林系统

C
、图灵机系统


D


虚拟存储系统

73
、通过修改下面文件哪个文件

,可以设定开机时候自动安装的文
件系统(
C


A. /etc/mta








B. /etc/fastboot

C. /etc/fstab








D. /etc/
74
、下面关于
Shell
的说法,不正确的是:


D


A.
操作系统的外壳


B.
用户与
Linux
内核之间的接口程序


C.
一个命令语言解释器


D.
一种和
C
类似的程序语言

75

init
可执行文件通常存放在(

C
)目录中。

A

/etc











B

/boot
C

/sbin









D

/root
76
、假设
root
用户执行
“init 0”
命令,系统将会(

B



A

暂停






B

关机






C

重新启动






D


始化

77
、嵌入式系统应用软件一般在宿主机上开发,
在目标机上运行,

此需要 一个(

B

)环境。

A
、交互操作系统





B
、交叉编译



C
、交互平台








D
、分布式计算




78
、已知有变量
data1
定义如下:
C
union data
{ int i;

char ch;

float f;
} data1;

则变量
data1
所占的内存存储空间可表示为。

A

sizeof(int)





B

sizeof(char)
C

sizeof(float)




D

sizeof(int)+sizeof(char)+sizeof(float)
79
、软件开发模型给出了软件开发活动各阶段之间的关系,

D
)不
是软件开发模型。


A
、瀑布模型



B
、螺旋模型



C
、原型模型




D
、程序模型

80

实时操作系统

RTOS< br>)
内核与应用程序之间的接口称为


C



A
、输入
/
输出接口

B
、文件系统


C

API




D
、图形用户接口

81
、在操作系统中,除赋初值外,对信号量仅能操作的两种原语是



C




A
、存操作、取操作



B
、读操作、写操作



C

P
操作、
V
操作




D
、输入操作、输出操作

82
、在下列
AR M
处理器的各种模式中,只有
__A___
模式不可以自由
地改变处理器的工 作模式。

A
、用户模式(
User



B
、系统模式
(System)
C
、终止模式
(Abort)
D
、中断模式
(IRQ)
83

32
位体系结构的
ARM
处理器有
_B___
种不同的处理器工作模式,

__B_ _
个主要用来标识
CPU
的工作状态和程序的运行状态的状态寄
存器。

A

7

7

B

7

6
C

6

6

D

6

7
84

已知
Linux系统中的唯一一块硬盘是第一个
IDE
接口的
master

备 ,该硬盘按顺序有
3
个主分区和一个扩展分区
,
这个扩展分区又划
分 了
3
个逻辑分区,则该硬盘上的第二个逻辑分区在
Linux
中的设备
名称是(

D


A. /dev/hda2
B. /dev/hda3

C. /dev/hda5
D. /dev/hda6
85
、为了查看
Linux
启动信息,可以用:


B


A

cat /etc/


B

dmesg

C


cat/proc/cpuinfo


D

lilo
86
、某文件的组外成员的权限为只写;所有者有读写权限; 组内的权
限为只读,则该文件的权限为(

B


A 467




B 642




C 476




D 764
87
、下面哪个命令行可用来马上重新启动正在运行的Linux
系统?


D


A.
restart --delay=0

B.
reboot -w

C.
halt
-p



D.
shutdown
-r
now

88
、在
bash
命令中,当用(

B
)参数时,表示
bash
是交互的。

A
、-
c

B
、-
i


C
、-
s


D
、-
d
89
、重定向的符号
“>>
表示:


A


A

输出追加

B

输入追加

C

输出重定向,
原来的文件被改写
D

管道

90

Linux
文件权限一共
10
位长度,分成四段,第 一段表示的内容是


A


A
文件类型

B
文件所有者的权限

C
文件所有者所在组的权限

D
其他用户的权限

91



B
)命令可更改一个文件的权限设置?


A. attrib

B. chmod




C. change




D. file
92
、你用
vi
编辑器编写了一个脚本文件

,你想将该文件名称< br>修改为

,下列命令(

B
)可以实现。


A. cp

B. mv

C. ls >

D. ll >
93
、在使用
GCC
编译器的过程中 ,以下(
B
)选项可用来指定生成的
目标文件名

A

-c


B

-o

C

-S


D

-E
94
、假设当前目录下有文件
Makefile
,下面是其内容:

pr1: prog.o subr.o
gcc

o pr1 prog.o subr.o
prog.o: prog.c prog.h
gcc

c

l prog.o prog.c
subr.o: subr.c
gcc

c

o subr.o subr.c
clear:
rm

f pr1*.o
现在执行命令
make subr.o
,实际执行的命令是(
C




A. gcc

o pr1 prog.o subr.o

B. gcc

c

l prog.o prog.c

C. gcc

c

o subr.o subr.c

D.
都执行


95
、为了使 用生成的目标文件能够用于
gdb
调试,在编译时
GCC

使用(< br>C
)选项。

A

-c
B

-w

C

-g

D

-o
96
、存盘并退出
vi
的指令是(

D



A

q B

q! C

w D

wq
97.
下列关于
/etc/fstab
文件描述,正确的是(

D




A. fstab
文件只能描述属于
linux
的文件系统


B. CD_ROM
和软盘必须是自动加载的


C. fstab
文件中描述的文件系统不能被卸载


D
启动时按
fstab
文件描述内容加载文件系统

98.

ARM

入式

统中

PC
指向

是正
在(
C


指令

址。











A
执行


B
译码


C
取指


D
都不是

99.

ARM


处< br>理
16-bit






的< br>数






B













A Byte



B
Halfword





C Word
D








100.

实时系统是指
( B )
A
响应快的系统


B
时间约束的系统

C
单任务系统


D
内核
小的系统

101.
下面属于
blob
运行过程第一阶段的是(
C






A
外围的硬件初始化(串口,
USB
等)


B
根据用户选择,进入命令行模块或启动
kernel


C
寄存器的初始化

D
堆栈的初始化

答案:
C< br>第一阶段的代码在
start.s
中定义,大小为
1KB
,它包括从系
统上电后在
0x00000000
地址开始执行的部分。这部分代码运行在
F lash
中,它包括对
S3C44B0
的一些寄存器的初始化和将
Blob< br>第二阶
段代码从
Flash
拷贝到
SDRAM
中。

102.
下列几种流行的嵌入式
GUI
中,没有采用分层设计的一种是:
B
I

B. Qt/Embedded
C. Nano-X Window
D. OpenGUI
103. Qt/Embedded
的底层图形引擎基于一下哪种接口技术:

A
A

framebuffer
B

GAL

C

IAL

D

GFX < br>104.

Linux
使用
GCC
编译器时有如下命令
:Gcc

g test.c

o test
,其中
参数
-g
的作用是
(D)
A .
生成目标文件
test.o
B.
生成汇编文件
test.s C .
进行预编译

D .

含调试信息

105.
LINUX
支持网络文件系统
NFS,
下列哪个命令实现了将位于

192.168.1.4





/opt/sirnfs







/mnt/sirnfs
下:





A
A

mount -t nfs 192.168.1.4:/opt/sirnfs /mnt/sirnfs
B

mount -t nfs /mnt/sirnfs 192.168.1.4:/opt/sirnfs
C

mount nfs

t 192.168.1.4:/opt/sirnfs /mnt/sirnfs
D

mount nfs

t /mnt/sirnfs 192.168.1.4:/opt/sirnfs
106
、同
CISC
相 比,下面哪一项不属于
RISC
处理器的特征
___D_____
A

采用固定长度的指令格式,
指令规整、
简单、
基本寻址方式有
2

3
种。

B
、减少指令数和寻址方式,使控制部件简化,加快执行速度。

C

数据处理指令只对寄存器进行操作,
只有加载
/
存储指令可以访问
存储器,以提高指令的执行效率,同时简化处理器的设计。

D

RISC
处理器都采用哈佛结构

107
、< br>32
位数
0x12345678
用小端格式表示,则在
AXD
调试器下观察
数据在内存中分布的情况是(
B









A 12
34
56
78
B 78
56
34
12

C 21
43
65
87

D 87
65
43
21



108

RISC
是指(
C


A
复杂指令计算机


B
并行机

C
精简指令计算机


D
多处理器
计算机

109
、在
ARM
体系结构中,
__C__
寄存器作为连接寄存器,当进入子
程序时或者处理器响应异常的时候,用来 保存
PC
的返回值;
_C___
寄存器作为处理器的程序计数器指针。

A

R0

R14
B

R13

R15
C

R14

R15

D

R14

R0
110
、在
ARM< br>体系结构中,要从主动用户模式(
User
)切换到超级用
户模式(
S upervisor

,应采用何种方法?
C

男生网名大全-我想要这一种幸福


男生网名大全-我想要这一种幸福


男生网名大全-我想要这一种幸福


男生网名大全-我想要这一种幸福


男生网名大全-我想要这一种幸福


男生网名大全-我想要这一种幸福


男生网名大全-我想要这一种幸福


男生网名大全-我想要这一种幸福



本文更新与2021-01-21 03:43,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/542113.html

经典嵌入式面试题的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文