笔试题目


考试范围:

1. 逻辑推理题(公共)(共2题,每题5分,共10分);

2. 编程语言知识题(公共)(共10题,每题5分,共50分);

3. 数据结构知识题(应用开发方向)(共4题,每题5分,共20分);

4. 编程综合题(应用开发方向)(共4题,每题5分,共20分);

5. 操作系统知识题(LINUX驱动方向)(共4题,每题5分,共20分);

6. 编程综合题(LINUX驱动方向)(共4题,每题5分,共20分);

7. 单片机知识题(MCU驱动方向)(共4题,每题5分,共20分);

8. 编程综合题(MCU驱动方向)(共2题,每题10分,共20分);

 

考试要求:

1. 考试时间为60分钟,每个人独立完成考试;

2. 请在“技术方向”中勾选【LINUX驱动方向)】或【MCU驱动方向)】或【应用开发方向】,并解答对应试题;

3. 答案写在答题纸上,不允许直接在卷面上答题;

4. 考试完毕,试卷和答题纸一并收回;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

一、 逻辑推理(公共)(共2题,每题5分,共10分)

1.  【单选】有四只小老鼠一块出去偷食物(它们都偷食物了),回来时族长问它们都偷了什么食物。

u  老鼠A说:我们每个人都偷了奶酪。

u  老鼠B说:我只偷了一颗樱桃。

u  老鼠C说:我没偷奶酪。

u  老鼠D说:有些人没偷奶酪。

族长仔细观察了一下,发现它们当中只有一只老鼠说了实话。那么下列的评论正确的是:

A.   所有老鼠都偷了奶酪;

B.   所有的老鼠都没有偷奶酪;

C.   有些老鼠没偷奶酪;

D.   老鼠B偷了一颗樱桃。

 

2.  【单选】有一富翁,为了确保自己的人身安全,雇了双胞胎兄弟两个作保镖。兄弟两个确实尽职尽责,为了保证主人的安全,他们做出如下行事准则:

u  每周一、二、三,哥哥说谎;

u  每逢四、五、六,弟弟说谎;

u  星期天两人都说真话。

一天,富翁的一个朋友急着找富翁,他知道要想找到富翁只能问兄弟俩,并且他也知道兄弟俩个的做事准则,但不知道谁是哥哥,谁是弟弟。另外,如果要知道答案,就必须知道今天是星期几。于是他便问其中的一个人:昨天是谁说谎的日子?结果两人都说:是我说谎的日子。你能猜出今天是星期几吗?

A.   星期一

B.   星期二

C.   星期三

D.   星期四

E.   星期五

F.   星期六

G.   星期天

 

二、 编程语言(公共)(共10题,每题5分,共50分)

1.  【填空】设有以下说明和定义:  

#define M 5

#define N M + M

 

则 printf("%d", N * N * 5); 的执行结果是       

 

2.  【填空】设定a是二维数组,则a[i][j]的指针访问方式为      

  

3.  【填空】设有以下说明和定义:

const char str1[] ="abc";

const char str2[] ="abc";

 

const char* str3 ="abc";

const char* str4 ="abc";

 

则 printf("%d", str1 == str2); 的执行结果是       

   printf("%d", str3 ==str4); 的执行结果是       

 

4.  【填空】设有以下说明和定义:

void func(char* x)

{

   x++;

   *x = 'a';

}

int main()

{

   char str[6] = { 0 };

   strcpy(str, "hello");

   

   func(str);

   cout << str;

 

   return 0;

}

 

则count输出是       

 

5.  【填空】下面的代码有什么问题?

char* s = "AAA";

s[0] = 'B';

 

6.  【填空】设有以下说明和定义:

union ONE

{

   long   i;

   int    j[5];

   char   k;

};

 

struct TWO

{

   int    A;

   ONE    B;

   double C;

};

 

则 printf("%d", sizeof(TWO) + sizeof(ONE)); 的执行结果是      

   

7.  【填空】设有以下说明和定义:

typedef int (*func)(int, int*);

int xxx(int a, int* p)

{

    returna + *p;

}

int dowork(func aaa, int bbb, int*ccc)

{

    returnaaa(bbb, ccc);

}

 

int sss = 4;

则dowork(&xxx, 3, &sss)的执行结果是       

 

8.  【填空】设有以下说明和定义:

int func(int x)

{

   int count = 0;

   while(x)

   {

        count ++;

        x = x & (x - 1);

   }

   return count;

}

 

则func(999)的执行结果是       

 

9.  【简答】要对绝对地址0x100000赋值,我们可以用(unsignedint*)0x100000 = 1234;那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?

 

10. 【简答】请简要描述new/delete和malloc/free之间的差异;

  

三、 数据结构(应用开发方向)(共4题,每题5分,共20分)

1.  【单选】下列数据结构中,按先进后出原则组织数据的是______。

A.   线性链表      B.  栈         C. 循环链表   D.  顺序表

  

2.  【单选】深度为5的二叉树至多有______个结点。

A.   16           B.  32         C. 31          D.  10

  

3.  【单选】使用深度优先算法遍历下图,遍历的顺序为______。

A.   ABCDEFG

B.   ABDCFEG

C.   ABDECFG

D.   ABCDFEG

 

4.  【单选】已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是______。

A.   堆排序

B.   直接插入排序

C.   快速排序

D.   直接选择排序

 

四、 编程综合(应用开发方向)(共4题,每题5分,共20分)

class Graph

{

public:

   Graph() { s_gCount++; }

   virtual ~Graph() { s_gCount--;}

 

   virtual int drawOut() = 0;

 

   static int getTotalCount() { return s_gCount; }

 

protected:

   int m_x;

   int m_y;

   static int s_gCount;

};

 

回答下列问题:

1.    这个类能否生成实例,为什么?

 

2.    上述代码中是否存在错误,如存在请指出?

 

3.    如果Rectangle类公共继承该类,那么s_gCount对Rectangle的成员属性是什么?

 

4.    请画出该类的对象模型示意图(C++对象模型)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

五、 操作系统知识题(LINUX驱动方向)(共4题,每题5分,共20分)

1.  【多选】嵌入式Linux常用的文件系统有下常用的_________。

A.   FAT32      B.  JFFS2       C. YAFFS2      D.  NTFS

 

2.  【填空】使用gcc编译器生成可执行文件的四个相互关联的步骤是______、_______、_______和_______。

   

3.  【多选】请从下面选出Linux字符设备驱动开发时需要的几个步骤_________。

A.   register_chrdev_region

B.   alloc_chrdev_region

C.   cdev_add

D.   cdev_open

E.   cdev_del

F.   unregister_chrdev_region

 

4.  【填空】通过ls -al /dev命令查看主机的一个设备信息如下:

    crw-rw----   1  root     root      10,  49  Oct 12 16:35 dymind_test

    请问:crw-rw----中的c含义是:__________,10的含义是____________,49的含义是_____________。

   

六、 编程综合(LINUX驱动方向)(共4题,每题5分,共20分)

1.  用户进程间通信主要哪几种方式,线程间同步主要有哪几种方式?

 

2.  编写一个SHELL脚本程序,将当前目录及其子目录中所有后缀为.o类型文件的文件名输出到用户指定的文件test.txt中。

 

3.  浅谈bootloader, kernel, filesystem三者之间的关系。

 

4.  假定helloworld项目目录如下:

# tree helloworld

 helloworld

 |– file1.h

 |– file1.cpp

 |– file2.h

 |– file2.cpp

请尝试为其编写一个Makefile文件。

 

七、 单片机知识题(MCU驱动方向)(共4题,每题5分,共20分)

1.  【填空】十进制4的8位二进制反码是______________,十进制-4的8位二进制码是_______________。

   

2.  【填空】指令MOV A,#20H中,

   源操作数的寻址方式为________________,目的操作数的寻址方式_________________。

 

3.  【单选】三态缓冲器的输出状态,不包括以下哪种状态_________。

A.   低电平        B.  高阻态        C.  高电平       D.  低阻态

 

4.  【单选】单片机的晶振为12MHz,主倍频器倍频系数为10,分频系数为5;定时器1的时钟分频器分频系数为2,时钟输入为单片机主频,现在要定时100us,则定时器的初始值为_________。

A.   600           B.  1200          C. 2400         D.  4800

   

八、 编程综合(MCU驱动方向)(共2题,每题10分,共20分)

1.  PWM(脉宽调制)在单片机驱动电路中很常用,如果单片机没有PWM功能,但具有一个以上的定时器外设以及IO口,如何用普通IO口模拟PWM功能?

   

 

 

2.      设定有如下6个8段LED数码管动态显示接口电路,

请问:

1.    图中LED数码管驱动是共阴极还是共阳极?

2.    根据图示,完成下列绝对地址的定义;

#define COM_8155     PBYTE[0x00]

#define PA_8155      PBYTE[    ]

#define PB_8155      PBYTE[    ]

3.    8155命令寄存器如下图所示,

   

请完成8155初始化函数。

Init_8155()

{

P2_0 = (       );

COM_8155 = 0x03;

}

 

4.    完成动态显示子函数;

sbit P2_0 = P2^0;

uchar DIR_BUF[6] = { 1, 2, 3, 4, 5, 6};

uchar code BIT_TAB[6] = { 1, 2, 4, 8,________, 0x20};

uchar code SEG_TAB[] = { 0x3f, 0x06,0x4f, 0x66, 0x6d, 0x7d,

                         0x07, 0x7f, 0x6f,0x77, 0x7c, 0x39,

                         0x5e, 0x79, 0x71,0x40, 0x73, 0x1c, 0x00};

 

void LED_Disp(void)

{

   uint x = 0;

   uchar a = 0;

   uchar i = 0;

 

   for (i = 0; i < 6; i++)

   {

        a = DIR_BUF[i];

   

        P2_0 = ________;

        PB_8155 = ________;

        PA_8155 = ________;

   

        for (x = 500; x > 0; x--)

        {

   

        }

   }

}






































笔试答题纸

姓名:                          出生日期:            性别:

电话:                          邮箱地址:

应聘职位:嵌入式软件开发工程师  所学专业:

技术方向:□ LINUX驱动方向     □ MCU驱动方向        □ 应用开发方向

---------------------------------------------------------------------------------------------------------------------------------------

 

考试要求:

1.考试时间为60分钟,每个人独立完成考试;

2.答案写在答题纸上,不允许直接在卷面上答题;

3.考试完毕,试卷和答题纸一并收回;

题号

总分

得分

 

 

 

 

 

 

 

一、   逻辑推理(公共)(共2题,每题5分,共10分)

序号

1

2

答案

 

 

 

二、   编程语言(公共)(共10题,每题5分,共50分)

序号

答案

1

 

2

 

3

 

4

 

5

 

6

 

7

 

8

 

9

 

 

 

10

 

 

 

 

三、   数据结构(应用开发方向)(共4题,每题5分,共20分)

序号

1

2

3

4

答案

 

 

 

 

 

四、   编程综合(应用开发方向)(共4题,每题5分,共20分)

1.   这个类能否生成实例,为什么?

 

 

2.   上述代码中是否存在错误,如存在请之处?

 

 

3.   如果Rectangle类公共继承该类,那么s_gCount对Rectangle的成员属性是什么?

 

 

4.   请画出该类的对象模型示意图(C++对象模型)。

 

 

 

 

 

 

 

 

 

 

 

五、   操作系统知识题(LINUX驱动方向)(共4题,每题5分,共20分)

序号

答案

1

 

2

 

3

 

4

 

 

六、   编程综合(LINUX驱动方向)(共4题,每题5分,共20分)

1.  用户进程间通信主要哪几种方式,线程同步的方法主要有哪几种方式?

 

 

2.  编写一个SHELL脚本程序,将当前目录及其子目录中所有后缀为.O类型文件的文件名输出到用户指定的文件test.txt中。

 

 

3.  浅谈bootloader, kernel, filesystem三者之间的关系。

 

 

 

 

 

4.  假定helloworld项目目录如下:

# tree helloworld

 helloworld

 |– file1.h

 |– file1.cpp

 |– file2.h

 |– file2.cpp

请尝试为其编写一个Makefile文件。

 

 

 

 

 

 

 

 

七、   单片机知识题(MCU驱动方向)(共4题,每题5分,共20分)

序号

答案

1

 

 

2

 

 

3

 

 

4

 

 

 

八、   编程综合(MCU驱动方向)(共2题,每题10分,共20分)

1.  PWM(脉宽调制)在单片机驱动电路中很常用,如果单片机没有PWM功能,但具有一个以上的定时器外设以及IO口,如何用普通IO口模拟PWM功能?

 

 

 

 

 

 

2.      设定有如下6段8位LED数码管动态显示接口电路

序号

答案

1

 

 

2

 

 

3

 

 

4

 

 

 

 

 

 























笔试答案

--------------------------------------------------------------------分割线-------------------------------------------------------------------

考试要求:

1.        时间为60分钟;

2.        考试完毕,试卷和答题纸一并收回;

 

评价标准:

1.        有多个答案的,全部正确满分,部分正确按给定的评分标准给分;

2.        60分以上为及格,可进入面试;80分以上为优秀;

 

--------------------------------------------------------------------分割线-------------------------------------------------------------------

 

一、      逻辑推理(公共)(共2题,每题5分,共10分)

序号

1

2

答案

A

D

 

二、       编程语言(公共)(共10题,每题5分,共50分)

序号

答案

1

55

2

*(a + i + j)

3

0    1

4

hallo

5

s[0] = 'B'; // 对常量指针进行赋值操作不合法。

6

52

7

7

8

8

9

1、定义函数指针:typedef void(*)() voidFuncPtr;

2、然后使用0x100000调用它:*((voidFuncPtr)0×100000)();

10

1、new/delete是操作符,而malloc/free是库函数;

2、mallco/free主要完成内存的分配和回收;new操作符在内存分配后,还会调用构造函数完成对象初始化,delete操作符在内存回收前,还会调用析构函数完成对象清理;

 

三、       数据结构(应用开发方向)(共4题,每题5分,共20分)

序号

1

2

3

4

答案

B

C

C

B

 

四、       编程综合(应用开发方向)(共4题,每题5分,共20分)

1.   这个类能否生成实例,为什么?

不能生成实例,因为该类具备纯虚函数;

 

2.   上述代码中是否存在错误,如存在请之处?

s_gCount变量没有初始化;

需要在类外部添加初始化语句:int Graph::s_gCount = 0;

 

3.   如果Rectangle类公共继承该类,那么s_gCount对Rectangle的成员属性是什么?

protected

 

4.  请画出该类的对象模型示意图(C++对象模型)。

 

五、       操作系统知识题(LINUX驱动方向)(共4题,每题5分,共20分)

序号

1

2

3

4

答案

B、C

预处理、编译、汇编、链接

ACEF、BCEF

字符设备、主设备号、次设备号

评分标准

2分/个

1分/个

5分/个

1分/个

 

六、       编程综合(LINUX驱动方向)(共4题,每题5分,共20分)

1.  用户进程间通信主要哪几种方式,线程同步的方法主要有哪几种方式?

    管道、信号、消息队列、共享内存、信号量、套接字。

 

2.  编写一个SHELL脚本程序,将当前目录及其子目录中所有后缀为.O类型文件的文件名输出到用户指定的文件test.txt中。

ls -a | *.o > test.txt

 

3.  浅谈bootloader,kernel,filesystem三者之间的关系。

嵌入式linux启动过程如下:bootloader ->kernel -> filesystem -> application。

1)  bootloader,它是linux-kernel移植的基石,Bootloader是在系统启动之后、Kernel运行之前所执行的第一段代码,其任务是为调用Kernel准备必要的软硬件环境。

2)  完成bootlaoder的移植后,就是kernel的移植。主要包括添加特定模块的驱动,针对具体要求对内核进行配置。这里有两点要注意:一是有些参数要与所用的bootloader相对应,如nand的分区参数;二是bootlaoder对特定模块的驱动在进入kernel后便会由kernel接管。

3)  filesystem主要是建立根文件和一些系统功能的实现,kernel启动后加载filesystem。

 

4.  假定helloworld项目目录如下:

# tree helloworld

helloworld

 |– file1.h

|– file1.cpp

|– file2.h

|– file2.cpp

请尝试为其编写一个Makefile文件。

helloworld: file1.o file2.o

            g++ -o file1.o file2.o

file1.o: file1.cpp file1.h

         g++ -c file1.cpp

file2.o: file2.cpp file2.h

         g++ -c file2.cpp

clean:  rm *.o helloworld

 

七、       单片机知识题(MCU驱动方向)(共4题,每题5分,共20分)

序号

1

2

3

4

答案

11111011

11111100

立即数寻址

寄存器寻址

D

B

评分标准

2分/个

2分/个

5分/个

5分/个

 

八、       编程综合(MCU驱动方向)(共2题,每题10分,共20分)

1.  PWM(脉宽调制)在单片机驱动电路中很常用,如果单片机没有PWM功能,但具有一个以上的定时器外设以及IO口,如何用普通IO口模拟PWM功能?

设置一全局变量代表PWM周期,另一全局变量作为PWM占空比,定时器的初始值设PWM时钟。每次定时器中断中某一全局变量自加一,期间某一IO一直输出高,直到变量达到占空比值,再输出低,直到变量值达到PWM周期,清零,接着循环。

注:此题考查笔试者的MCU编程思想,笔试者的答案中应该包含PWM周期、PWM占空比、PWM时钟关键字。

 

2.       设定有如下6段8位LED数码管动态显示接口电路

序号

1

2

3

4

答案

共阴极

0x01

0x02

1

0x10

1

SEG_TAB[a]

BIT_TAB[i]

评分标准

2分/个

2分/个

2分/个

1分/个

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值