嵌入式软件类笔试面试小结

嵌入式软件类笔试面试小结
嵌入式软件类笔试面试小结

最近忙于找工作,笔试面试了一些公司,本人主要找工作的方向是:嵌入式软件工程师。所以,针对嵌入式软件开发岗位的多次笔试与面试经历总结了一些常考查的知识点,希望有利于学弟、学妹们找工作。

C语言

首先,对C的考查是必须的。既然打算从事嵌入式软件开发岗位,C语言是基础,关于C主要需要把C语言三剑客即《C陷阱与缺陷》《C和指针》《C专家编程》,还有《C语言深度剖析》。其中《C和指针》、《C语言深度剖析》这两本书至少看2,3遍,从此对于C语言的基础考查,就很难难倒你了,没有捷径这几本书必须看的。

1关键字考查

volatile:防止编译器优化—这个关键字是为了告诉你请不要做没谱的优化,这个值可能变掉。(笔试中考查过)

volatile使用的几个例子

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

一个中断服务子程序中会访问到的非自动变量

●多线程应用中被几个任务共享的变量

一个指针可以是volatile吗

可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改一个指向一个buffer的指针时,必须用volatile来修饰这个指针。

说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数组是个整形数据,和整形变量不同的是,这个整形数据指向的是一段内存地址。

const:修饰的只读变量(笔试中考查过)

const:这个关键字是告诉你:请作为常量使用,而并非—放心吧,那肯定是常量

const int *p; //p可变,p指向的对象不可变

int const *p; // p可变,p指向的对象不可变

int * const p; //p不可变,p指向的对象可变

const int * const p;//指针p和p指向的对象都不可变

记忆方法说明:先忽略类型名(编译器解析的时候也是忽略类型名),我们看const离哪个近,“近水楼台先得月”,离谁近就修饰谁。

const int *p; //const修饰*p,p是指针,*p是指针指向的对象,不可变

int const *p; // const修饰*p,p是指针,*p是指针指向的对象,不可变

int * const p; //const修饰p,p不可变,p指向的对象可变

const int * const p;//前一个const修饰*p,后一个const修饰p,指针p和p指向的对象

//都可不变

int const a = 12;

const修饰的a值是不是一定无法改变呢?

非也,int *p = &a; *p = 5; 通过这两步,即可改变a的值,此时a值为5.

typedef与define(笔试中考查过)

把typedef看成是一种彻底的“封装”类型--在声明它之后不能再往里面增加别的东西。可以用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型名却不能这样做。

#define peach int

unsigned peach i;/*没问题*/

typedef int banana;

unsigned banana i;/*错误!非法*/

面试题:typedef和define有什么区别:

用法不同:typedef用来定义一种数据类型的别名,增强程序的可读性。define主要用来定义常量,以及书写复杂使用频率的宏。

执行时间不同:typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预编译的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。

●作用域不同:typedef有作用域限制。define不受作用域约束,只要是在define声明后面的引用都是正确的。

?对指针的操作不同:typedef和define定义的指针时有很大的区别。

注意:typedef定义是语句,因此句尾要加上分号。而define不是语句,千万不能在句尾加分号。

说明: #define PINT int *

PINT a,b; // 定义结果是a的类型是int *,b的类型是int

typedef int * PINT;

PINT a,b; //a,b都为int * 类型

static:是常考查的关键字,笔试面试中考查次数相当多(笔试面试都有考查过)

static修饰的局部变量存储于静态区,存储于静态区的变量有默认初始值为0,这种变量在程序执行之前创建,并在程序的整个执行期间一直存在,而不是每次在代码块开始执行时创建,在代码块执行完毕后销毁。普通变量存储于栈中,没有默认初始值。变量的链接属性和作用域不受影响,与普通局部变量一样。

static修饰函数,使得函数成为静态函数。指函数的作用域仅局限于本文件(所以又称内部函数)。

sizeof和strlen的区别(他们的使用也是考查的重点)

sizeof 和strlen 有以下区别:

sizeof 是一个操作符,strlen 是库函数。

sizeof 的参数可以是数据的类型,也可以是变量,而strlen 只能以结尾为‘\ 0‘的字符串作参数。

编译器在编译时就计算出了sizeof 的结果。而strlen 函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而strlen 计算的是字符串实际的长度。

数组做sizeof 的参数不退化,传递给strlen 就退化为指针了。

sizeof(a = b+1)---并没有向a赋值,返回a的长度大小,并非b的

union共用体(笔试考查过)

union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。

对这个关键字的考查,经常会考到判断大小端。

变量i 占4 个字节,但只有一个字节的值为1,另外三个字节的值都为0。如果取出低地址上的值为0,毫无疑问,这是大端模式;如果取出低地址上的值为1,毫无疑问,这是小端模式。既然如此,我们完全可以利用union 类型数据的特点:所有成员的起始地址一致。(这个函数笔试考查过,需要记住)

int checkSystem()

{

union check

{

int i;

char ch;

}c;

c.i = 1;

return(c.ch == 1);

}

auto,好多人都没有见过这个关键字,但是有些选择题目中可能会有涉及。auto:在缺省情况下,编译器默认所有变量都是auto的。(笔试选择题中出现过,要知道它是C语言的关键字)

还有其他关键字就不一一列举了,书中都有详细介绍,我把常考到的简单说一些。

2、关于C的其他常考查知识点

设置地址为0x67a9 的整型变量的值为0xaa66(笔试中考查过)

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa66;

说明:这道题就是强制类型转换的典型例子,无论在什么平台地址长度和整型数据的长度是一样的,即一个整型数据可以强制转换成地址指针类型,只要有意义即可。

方法二:int *(int *)0x67a9 = 0xaa66;

不使用库函数写出strcpy strcat strcmp strlen strstr memset memcpy 这些函数的实现。或者直接考查,或者间接考查。首先要明白这几个函数如何使用,然后需要自己写出实现方式。我遇到过编写函数实现strcpy 、strlen 的直接考查。对strstr的使用以及函数实现的编写。strcpy 、strcmp、strlen编写程序多次使用到。memset memcpy选择填空中遇到过。(笔试中考查过)

链表和数组有什么区别(面试中考查过)

数组和链表有以下几点不同:

(1)存储形式:数组是一块连续的空间,声明时就要确定长度。链表是一块可不连续的动态空间,长度可变,每个结点要保存相邻结点指针。

(2)数据查找:数组的线性查找速度快,查找操作直接使用偏移地址。链表需要按顺序检索结点,效率低。

(3)数据插入或删除:链表可以快速插入和删除结点,而数组则可能需要大量数据移动。

(4)越界问题:链表不存在越界问题,数组有越界问题。

说明:在选择数组或链表数据结构时,一定要根据实际需要进行选择。数组便于查询,链表便于插入删除。数组节省空间但是长度固定,链表虽然变长但是占了更多的存储空间。

关于布尔值(笔试中考查过,要知道C中无布尔值)

布尔值只有0和1

C并不具备显试的布尔类型,所以使用整数来代替。其规则是:

零的假,任何非零值皆为真。

短路求值&& ||(在线笔试中有涉及)

&&操作符的左操作数总是首先进行求值,如果它的值为真,然后就紧接着对右操作数求值。如果操作数的值为假,那么右操作数便不再进行求值,因为整个表达式的值肯定是假的。

||操作数也是同理。当左操作数的值为真,右操作数便不再求值。

a[0]与a(这个是必须弄清楚的,多次考查过)

int a[5];

a[0]是一个元素,a是整个数组。

sizeof(a) = 20;

sizeof(&a[0]) = 4;//取元素a[0]的首地址

sizeof(&a) = 4; //取数组a的首地址,在VC++6.0为20,Bug

数组名的类型是“指向int的常量指针”

a是数组首元素的首地址,也就是a[0]的首地址

&a[0]表示数组首元素的地址;

&a表示数组的首地址

看法:在表示地址时:a与&a[0]含义用法是一致的

a作为右值时其意义与&a[0]是一样,代表的是数组首元素的首地址,而不是数组的首地址(用在表达式sizeof(a)中时,a表示的数组名,此时a并没有被用作右值)。但是注意,这仅仅是代表,并没有一个地方(这只是简单的这么认为,其具体实现细节不作过多讨论)来存储这个地址,也就是说编译器并没有为数组a分配一块内存来存其地址,这一点就与指针有很大的差别。

a不能作为左值!

main()

{

int a[5]={1,2,3,4,5};

int *ptr=(int *)(&a+1);

printf("%d\n%d\n",*(a+1),*(ptr-1));//此处把a换成&a[0]也是可以的}

&a + 1-----取数组a 的首地址,该地址的值加上sizeof(a) 的值,即&a + 5*sizeof(int),也就是下一个数组的首地址,显然当前指针已经越过了数组的界限。

(int *)(&a+1)------则是把上一步计算出来的地址,强制转换为int * 类型,赋值给ptr。

*(a+1)----- a,&a的值是一样的,但意思不一样,a是数组首元素的首地址,也就是a[0]的首地址,&a是数组的首地址,a+1是数组下一元素的首地址,即a[1]的首地址,&a+1是下一个数组的首地址。所以输出2

*(ptr-1)-----因为ptr是指向a[5],并且ptr是int * 类型,所以*(ptr-1)是指向a[4],

输出5。

大端存储与小端存储(笔试中考查过)

小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址。

大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。

我们常用的X86结构是小端模式,而KEIL-C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

内存对齐(常考查知识点)

字,双字,和四字在自然边界上不需要在内存中对齐。(对字,双字,和四字来说,自然边界分别是偶数地址,可以被4整除的地址,和可以被8整除的地址。)无论如何,为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。

struct Test

{

char c1;

short s;

char c2;

int i;

}a;

sizeof(a) = 12;(s两个字节为一个字,会在偶数地址对齐)

缺省情况下,编译器默认将结构、栈中的成员数据进行内存对齐。因此,上面的程序输出就变成了:c1 00000000, s 00000002, c2 00000004, i 00000008。编译器将未对齐的成员向后移,将每一个都成员对齐到自然边界上,从而也导致了整个结构的尺寸变大。尽管会牺牲一点空间(成员之间有部分内存空闲),但提高了性能。

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

struct Test

{

char c1;

char c2;

short s;

int i;

}a1;

sizeof(a1) = 8;

c1 00000000, c2 00000001, s 00000002, i 00000004

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

struct Test

{

char c1;

double e;

}a;

sizeof(a) = 16;(这儿以8字节对齐)

struct Test

{

char c1;

short e;

char c2;

}a;

sizeof(a) = 6;(这儿以2个字节对齐)

关于内存对齐,有时候还会涉及到知识点柔性数组和位域,需要简单了解一下。

冒泡排序、递归的使用也是有所考查。

C语言是重点,还有其他知识点未有涉及,还需仔细看书。

数据结构与算法

数据结构与算法常考到的有单链表、双链表、二叉树。

对于单链表的考查,会考查到单链表的创建、插入、删除,单链表逆序,判断单链表是否有环的两种方法。(创建、插入、删除、逆序笔试中我都遇到过,判断是否有环,往年的笔试题目中看到过)

双链表的插入。(我笔试中遇到过,也有同学面试中考查过,现场写程序)

二叉树的遍历方式(前序遍历、中序遍历、后序遍历)。(面试中考查过,现场写程序)栈与队列的区别,如何用两个栈实现一个队列。(同学笔试、面试中考查过)

哈希表(同学面试中考查过)

二分法查找(笔试中考查过)

快速排序、桶排序、堆排序、分治法排序、冒泡排序他们的时间复杂度、稳定性。(选

择、填空有考查过)

部分知识点详细说明:

判断单链表中是否有环

用两个栈实现一个队列的功能

入队时,将元素压入s1。

出队时,判断s2是否为空,如不为空,则直接弹出顶元素;如为空,则将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队。

计算机网络

主要考查TCP与UDP,他们如何进行通讯,TCP的三次握手四次挥手如何实现。他们都用到了哪些函数。(笔试面试都考查过)

在window系统下,htonl(),htons(),ntohl(),ntohs()都表示什么功能。(笔试考查过)

详细说明:

TCP用到的函数:

创建套接字socket

绑定地址bind

设置监听端口listen

等待连接accept

发送数据send

接收数据recv

关闭连接close

连接服务器connect

TCP协议中的三次握手和四次挥手

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。

首先Client端发送连接请求报文,Server端接受连接后回复ACK报文,并为这次连接分

配资源。Client端接收到ACK报文后也向Server端发送ACK报文,并分配资源,这样TCP 连接就建立了。

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

假设客户端发起中断连接请求,也就是发送FIN报文。服务器端收到FIN报文后,意思是说:“我客户端没有数据要发送给你了”,但是如果你还有数据没有发送完成,则不必急着关闭socket,可以继续发送数据。所以你发送ACK,“告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候客户端进入了FIN_WAIT状态,继续等待服务器端的FIN报文。当客户端确定数据已发送完成,则向客户端发送FIN报文,“告诉客户端,好了,我这边数据发完了,准备好关闭连接了”。客户端收到FIN报文后,“就知道可以关闭连接了,但是他还是不相信网络,怕客户端不知道要关闭,所以,发送ACK后进入TIME_WAIT状态,如果客户端没有收到ACK则可以重传”,客户端收到ACK后,“就知道可以断开连接了”。客户端等待了2msl后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。OK,TCP连接就这样关闭了!

为什么连接的时候是三次握手,关闭的时候却是四次握手?

因为服务器端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭socket,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务器端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。

在window系统下,htonl(),htons(),ntohl(),ntohs()

操作系统

linux进程与线程的区别,多进程设计、多线程设计用到了哪些函数。(笔试面试都考查过,内容较多,详细知识点就不列举了)

Linux下的GDB调试如何使用,核心转存(Core Dump)主要解决哪类问题?

core dump 主要来对付segment fault(段错误)。

何为段错误?

包括四个原因产生的错误:数组访问越界、访问空指针、栈溢出、修改只读内存。(笔试考查过,面试2家公司都考查过)

Linux进程间通讯的主要方式有:无名管道(pipe)、有名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)。(笔试多次考查,面试也考过)

OSI标准的七层(应用层、表示层、会话层、传输层、网络层、数据链路层、物理层)。(笔试、面试都有考查过,必须背熟)

Linux应用程序地址布局

在学习Linux应用程序开发时,经常会遇到如下概念:代码段、数据段、BSS段(Block Started by Symbol,又名:未初始化数据段)、堆(heap)和栈(stack)。而这些部分也是构成Linux应用程序的重要组成部分。

从低地址到高地址分别为:代码段、数据段、BSS段、堆、栈

堆向高内存地址生长

栈向低内存地址生长

数据存放

1、代码段:代码,全局常量(const)、字符串常量

2、数据段:全局变量(初始化以及未初始化)、静态变量(全局的和局部的、初始化的以及未初始化的)

3、堆:动态分配的区域

4、栈:局部变量(初始化以及未初始化的,但不包含静态变量)、局部只读变量(const)

5、BSS段(属于数据段):用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。

操作系统方面的知识点,也是笔试面试重点考查的地方。尤其是面试的时候。

其他琐碎知识点

MMU的作用(笔试选择填空)

1. 将虚拟地址转化为物理地址

2. 访问权限管理

cache的功能(笔试选择填空)

高速缓冲存储器Cache是位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。

在cache中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从cache中调用,从而加快读取速度,由此可见,在CPU中加入cache是一种高效的解决方案,这样整个内存储器(cache+内存)就变成了既有cache的高速度,也有内存的大容量的存储系统了。

在Arm系统中函数调用的时候,参数是通过哪种方式传递的?(笔试简答题)

当参数小于等于4的时候通过r0—r3来进行传递的,当参数大于4的时候是通过压栈的方式传递。

dup—复制文件描述符

lseek—定位文件

fork—创建进程

备注:以上知识点基本上都是我笔试面试遇到过的,也有少部分是身边同学遇到过的。有些纯软件的公司会考查到C++与数据库,这类公司招聘的是软件工程师。对于爱好做嵌入式的童鞋可能不太适合,对于我,也不太熟悉数据库与C++,所以知识点未能涉及这方面的内容。对于想去纯软件类、互联网类的公司的童鞋,还需要熟悉数据库。

HR面

除了对专业课、知识点的考查外。面试的经验也是很重要的。第一次面试的时候,面试很傻,技术面的时候没想着把面试官引向自己熟悉的领域,反而老是暴漏自己的不足之处。二面综合面,面试官老盯着我看,觉得有些尴尬就避免与面试官直视,这种看法是不正确的。应该面带微笑的与面试官进行眼神的交流,盯着面试官看。后来的面试也是这么做的。当面试官问到你项目的事情时,应该滔滔不绝的讲述,多与面试官说项目的事情,毕竟自己做的项目还是比较熟悉的,但是面试官可能并不熟悉你的项目。面试的时候不要过于谦虚。关于HR面,有些问题是常会被问到的,我整理了一下。公司看中的是你的学习能力、自信、团队精神,这是要尽量在面试中体现出来。

请介绍一下你自己

说明:不要简单的说自己叫什么,哪个学校,哪个专业就完了,太少

例:我叫***,今年**岁,就读于安徽大学,集成电路工程专业嵌入式系统方向,全日制在读研究生。我喜欢写代码,我从大二开始就积极参加各类编程项目中,虽然还没有毕业但是在嵌入式软件方向也算是有4。5年微薄的编程经历了。我对技术有浓厚的兴趣,责任心强,思路清晰,沟通能力好,精通C语言,熟悉linux系统。平常有时间看看博客,并也喜欢在技术论坛上写技术类的文章,与网友一起讨论。谢谢。(最后几句多好,这逼还是要装的。)

你未来3--5年的职业规划是怎样的

例:我希望从现在开始,1-2年内能够在我目前申请的这个职位上沉淀下来,通过不断的努力后,尽最大努力做好公司的项目,以便提升自己的个人能力,最好能有晋升,希望3--5年内可以从开发做到架构师。同时我也希望自己能够在企业的平台上得到进一步的职业能力提升。(既然选的是技术,就要表现出对技术的浓厚兴趣,还有上进心。给HR的感觉是--我就是要沿着技术线路一直干下去)

你还有什么问题问我吗

说明:这个问题看上去可有可无,其实很关键,面试官不喜欢说“没有问题”的人,没有问题就是自寻死路,没有问题传达出你对公司缺乏兴趣,而只是来寻找一笔薪水。其实在面试过程中谦虚礼貌的问面试官怎么称呼,该部门工作中的信息,如项目情况,开发技术再或者说贵公司的晋升机制是什么样的等。表现出一种很积极主动的状态是非常讨巧的。也可以更多的了解到自己来的工作环境。企业很欢迎这样的求职者,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。

我一般会问:加入我有幸进入贵公司,我想入职后可以尽快上手公司的项目。我目前距离毕业入职还有一段时间,我需要学点什么知识做准备?(当然这个问题是问技术面的面试官,他一般会告诉你学什么,但是,你给他的感觉就是,这孩子好学、有上进心)。

你最大的缺点是什么?

例:我目前做的项目相对来说比较简单,没有参与到公司的大型项目中,这是我的不足的地方,但是(这是重点)主要是的目前在学校没有这个机会,假如能有这个机会,我相信我会做的很好。(自信)

假如HR说,那你性格方面的不足呢,这是HR的杀手锏,你不能真说自己的缺点吧,那怎么办?看例子

例:我的缺点就是比较执着,比如在技术方面比较爱钻研,有时候会有一个技术问题加班到深夜。(公司就爱喜欢加班的孩子)

你对薪资的要求?

说明:公司问你薪资,大部分也就是问问,其实薪资公司已经订好了

例:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多。

说明:但是,如果非得要你说薪资的话,不要说6k到8k,这样公司就觉得是6k,直接给具体数字。如果,手里已经拿到offer了,就不用客气,大胆要薪资就行,低于某个数值肯定不去。

作者:雨中漫步

联系邮箱:1529010808@https://www.360docs.net/doc/795152162.html,

时间:2015年11月8日

地点:安徽大学(馨苑校区)

由于个人能力原因,如有错误的地方请发邮件联系我,如有不懂的地方也可邮件联系。谢谢!

嵌入式软件工程师笔试题

(一) 1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2 char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p 3 char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 4以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母 {for( size_t i=0; i

web开发工程师面试题(含答案)

Web开发工程师试题 姓名:参与web项目个 一、选择题 1、提供Java存取数据库能力的包是() A.java.sql B.java.awt C.https://www.360docs.net/doc/795152162.html,ng D.java.swing 答案:A 2、以下语句中,没有创建出字符串对象的是_______。 A. String str; C. String str= new String(); B. String str = “Hello”; D. new String(“Hello”); 答案:A 3、有关会话跟踪技术描述正确的是(多选) A. Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端 B. 关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期 C. 在禁用Cookie时可以使用URL重写技术跟踪会话 D. 隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示 正确答案为:ABC

4、下列选项中不属于CSS 文本属性的是() A.font-size B.text-transform C.text-align D.line-height 答案:D 5、、如何去掉文本超级链接的下划线? A.a {text-decoration:no underline} B.a {underline:none} C.a {decoration: no underline} D.a {text-decoration:none} 答案:D 6、在Ajax技术中,关于HTTP 协议向服务器传送数据的方式描述正确的是()。 A、包括Post、Get方式 B、如果传输数据包含机密信息,建议采用MD5数据提交方式 C、GET执行效率和POST方法一样 D、Post传送的数据量较小,不能大于1B 答案:A 7、在jQuery中,下面()写法是错误的。 A、$(“div p”) B、$(“div.containner”) C、$(“table a”,content) D、$(#divID) 答案:D 8、点击页面的按钮,使之打开一个新窗口,加载一个网页,以下JavaScript代码中可行的是( AD ) A.

嵌入式软件工程师笔试题华为优选稿

嵌入式软件工程师笔试 题华为 集团公司文件内部编码:(TTT-UUTT-MMYB-URTTY-ITTLTY-

(一)1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2char*constpcharconst*pconstchar*p上述三个有什么区别 答案: char*constp;//常量指针,p的值不可以修改 charconst*p;//指向常量的指针,指向的常量值不可以改 constchar*p;//和charconst*p 3 charstr1[]="abc"; charstr2[]="abc"; constcharstr3[]="abc"; constcharstr4[]="abc"; constchar*str5="abc"; constchar*str6="abc"; char*str7="abc"; char*str8="abc";

cout<<(str1==str2)<

第三套嵌入式软件工程师考试试题B卷

第三套嵌入式软件工程师 考试试题B卷 The document was prepared on January 2, 2021

嵌入式Linux软件工程师认证考试 B卷 20个小题,每小题1分,共20分) 1、在下列ARM处理器的各种模式中,()模式有自己独立的R8-R14寄存器。 A、系统模式(System)、 B、终止模式(Abort) C、中断模式(IRQ) D、快中断模式(FIQ) 2、按照ARM过程调用标准(APCS),栈指针使用()寄存器, A、R0 B、R13 C、R14 D、R15 3、在ARM体系结构中,()寄存器作为连接寄存器,当进入子程序时或者处理器响应异常的时候,用来保存PC的返回值;()寄存器作为处理器的程序计数器指针。 A、R0,R14 B、R13,R15 C、R14,R15 D、R14,R0 4、在ARM体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor),应采用何种方法() A、直接修改CPU状态寄存器(CPSR)对应的模式 B、先修改程序状态备份寄存器(SPSR)到对应的模式,再更新CPU状态 C、使用软件中断指令(SWI) D、让处理器执行未定义指令 5、下面关于MMU和Linux描述错误的是:() A、MMU是内存管理单元Memory Management Unit的缩写 B、uClinux可以运行在有MMU的处理器上 C、Linux内核功能强大,内存管理功能丰富,即使在没有MMU的处理器上,也可 以通过软件实现地址映射。 D、Linux系统正是利用MMU,才能使得各个进程有独立的寻址空间

华为-资料开发工程师:面试题目

华为-资料开发工程师:面试题目 资料开发工程师面试题说明:请不要在本试卷上答题,请将答案写在答题纸上 一、写作题 1、写作题一:调用日记信息等级说明请在原文的基础上,优化以下内容的组织方式。 要求:原文的关键信息必须涵盖在优化后的内容中。 注意:不需要对原文中一些表达不清楚的句子进行优化。 待优化的原文如下:调试日志信息等级:0-8,8为关闭。从0到7依次分别为Debug、Informational、Notification、Warning、Error、Critical、Alert、Emergency。调试日志信息输出到操作系统日志中。在操作系统日志中只包括3个等级,分别为:Information、Warning、Error。 二者对应关系如下:Debug、Information、Notification对应操作系统日志的Information级别出现:Warning对应操作系统日志的Warning级 别;Error、Critical、Alert、Emergency对应操作系统日志的Error级别。该参数根据实际情况修改,以定位出现的问题。

2、写作题二:公司放假政策读懂下文内容,并优化,使得表达简洁和清晰。 要求:原谅的关键信息必须涵盖在优化后的内容中待优化的原文如下:2008年节假日放假安排根据国家规定,为便于公司各部门及早合理安排工作。请各部门根据放假安排提前安排好工作,确保各项业务正常运作。公司对口驻海外机构的部门以及有特别工作需要的部门应安排轮值,以确保公司全球业务的正常开展。 现根据属地化原则,将公司中国大陆地区法定节假日放假安排如下:元旦:放假3天;春节:放假7天;清明节:放假3天;“五一”国际劳动节:放假3天;端午节:放假3天;中秋节:放假3天;国庆节:放假7天。年休假按国家规定执行,每年5天带薪年休假。本政策适用于2008.1.1起生效。如有变动将另行通知。本政策适用于常驻中国大陆员工,包括各全资子公司。合资子公司参考执行。 二、翻译题英译汉 The Intelligent Network(IN) is an additional network build on the basis o f the existing telecommunication network to ease the introduction of ne w services. It aims to provide services on all existing and future telecom munication networks such that the telecommunication services provid ers can effectively and cost- effectively provide new services for costumers. Also , it provides custom

完整word版嵌入式软件工程师笔试题 华为

(一)1什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。在这种所有模块都使用一组标准的包含文件和相同的编译选项。2、程序由多个模块 组成,情况下,可以将所有包含文件预编译为一个预编译头。 const char *p 上述三个有什么区别?2 char * const p char const * p 答案:p的值不可以修改char * const p; //常量指针,和char const *p const char *p ;//char const * p;//指向常量的指针,指向的常量值不可以改 3 char str1[] = abc; char str2[] = abc; const char str3[] = abc; const char str4[] = abc; const char *str5 = abc; const char *str6 = abc; char *str7 = abc; char *str8 = abc; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 0 0 1 1 结果是:是指针,它们指str5,str6,str7,str8str1,str2,str3,str4是数组变量,它们有各自的内 存空间;而向相同的常量区域。 以下代码中的两个sizeof用法有问题吗?4 ] [C易中的小写字母转换成大写字母// 将str void UpperCase( char str[] ) { for( size_t i=0; i

Java软件开发工程师笔试题(答案).

Java工程师笔试题 一、填空题(本大题10小题,每空1分,共20分)。 1.Java语言的三大特性即是: 继承、封装、多态。 2.在Java中,char 型采用____unicode_______编码方案,这样,无论是中文字符还是英文字符,都是占用__2___个字节的内存空间。 3. 形式参数指的是方法被__定义____ 时的参数行,实际参数是方法被__调用__ _ 时所传递进去的变量或值。 4.JSP内置对象中,application对象是代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息,而session 对象则是每个客户专用的。 5.如果想把一个对象写入一个流,那么这个类就必须实现Seralizable 接口。 6.程序中实现多线程的方法有两种:继承Thread类和实现___Runable _ 接口。 7.多线程中,可以通过调用相应的setPriority() 方法来修改一个线程的相对优先级。 8.面向对象编程的五大设计原则,分别是单一职责、开放封闭、 里氏替换、依赖倒置、接口分离 9.通过Ajax,客户端获取的数据主要有两种类型:文本型和xml 10.Socket通常也称为套接字,用于描述__ ip 和_ _接口 二、选择题(本大题20 小题,每小题2分.共40分)。 1.在JA V A中,如果父类中某些方法不包含任何逻辑,并且需要由子类重写.应该使用( )关键字来声明父类的这些方法: A) final B) static C) abstract D) void 2.在JA V A中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是()。 A) interface A extend B,C B) interface A implements B,C C) class A implements B,C D) class A implements B, implements C

嵌入式笔试题

嵌入式笔试题 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 下面就由为大家介绍一下嵌入式笔试题的文章,欢迎阅读。 嵌入式笔试题篇11:用C语言实现大小端的测试Int CheckCpu(){union{int a;char b;}c;c.a=1;if(c.b==1)printf(“小端);else printf(“大端);}2:volatile的作用有哪些?Volatile第一变量相当于告诉编译器这个变量的值会随时发生变化,每次使用之前都要去内存里从新读取它的值,并不要随意针对它做优化,主要用在:1:一个中断子程序中会访问到的非自动变量;2:多线程应用中被几个线程共享的变量;3:并行设备的硬件寄存器。 3:C语言中static关键字的作用有哪些?1:在函数体中,一个被声明为静态的变量在这个变量在调用过程中维持其值不变;2:在模块内(但在函数体外),一个被声明为静态的变量,可以被这个模块内的所用函数使用,但不能被模块外的函数使用,它是一个本地的全局变量;3:在模块内,一个被声明为静态变量的函数,智能被这个模块内的函数调用;4:static全局变量与局部变量的区别:static全局变量只能被初始化一次,防止其他单元文件中被引用;5:static局部变量与局部变量的区别:static局部变量只能被初始化一次,下一次依据上一次结果的值;6:static函数与普通函数的区别:static在内存中只用一份,普通函数在每

一次调用中维持一份拷贝。 4:请问下面三种变量的区别:Int const *p : 指向常整型的指针;Int *const p; 指向整型的常指针;Int *const *p:指向常整型的常指针;5:在ARM系统中,在函数调用的时候,参数是通过哪种方式传递的。 当参数小于等于4的时候是通过r0~r3来进行传递的,当参数大于4的时候是通过压栈的方式进行传递。 6:中断与异常有何区别.异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常;所谓中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。 所谓异常是指软件运行过程中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断CPU的运行。 7:用预处理指令#define表示一年中有多少秒#define SECONDS_PER_YEAR (60*60*24*365)UL注意后面必须加UL,表示计算的结构是常整型。 8:简述SPI,UART,I2C三种传输方式。 SPI:高速同步串行口,首发独立,可同步进行SPI接口主要应用在EEPROM,Flash,实时时钟,A/D转化器,数字信号处理,是一种全双工同步通讯总线,该接口一般使用四条线:串行时钟线(sck),主出从入线,主入从出线,低电平有效地的从机选择线。

资料开发工程师面试题

资料开发工程师面试题 说明:请不要在本试卷上答题,请将答案写在答题纸上 一、写作题 1、写作题一:调用日记信息等级说明 请在原文的基础上,优化以下内容的组织方式。要求:原文的关键信息必须涵盖在优化后的内容中。注意:不需要对原文中一些表达不清楚的句子进行优化。 待优化的原文如下: 调试日志信息等级:0-8,8为关闭。从0到7依次分别为Debug、Informational、Notification、Warning、Error、Critical、Alert、Emergency。调试日志信息输出到操作系统日志中。在操作系统日志中只包括3个等级,分别为:Information、Warning、Error。二者对应关系如下:Debug、Information、Notification对应操作系统日志的Information级别出现:Warning对应操作系统日志的Warning级别;Error、Critical、Alert、Emergency对应操作系统日志的Error 级别。该参数根据实际情况修改,以定位出现的问题。 2、写作题二:公司放假政策 读懂下文内容,并优化,使得表达简洁和清晰。要求:原谅的关键信息必须涵盖在优化后的内容中 待优化的原文如下: 2008年节假日放假安排 根据国家规定,为便于公司各部门及早合理安排工作。请各部门根据放假安排提前安排好工作,确保各项业务正常运作。公司对口驻海外机构的部门以及有特别工作需要的部门应安排轮值,以确保公司全球业务的正常开展。 现根据属地化原则,将公司中国大陆地区法定节假日放假安排如下:元旦:放假3天;春节:放假7天;清明节:放假3天;“五一”国际劳动节:放假3天;端午节:放假3天;中秋节:放假3天;国庆节:放假7天。年休假按国家规定执行,每年5天带薪年休假。本政策适用于2008.1.1起生效。如有变动将另行通知。本政策适用于常驻中国大陆员工,包括各全资子公司。合资子公司参考执行。 二、翻译题 英译汉 The Intelligent Network(IN) is an additional network build on the basis of the existing telecommunication network to ease the introduction of new services. It aims to provide services on all existing and future telecommunication networks such that the telecommunication services providers can effectively and cost-effectively provide new services for costumers. Also , it provides customers with more powerful function of network control to obtain information conveniently and flexibly.

嵌入式软件工程师经典笔试题

预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编 译器这个常数是的长整型数。 4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。 记住,第一印象很重要。 2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) <= (B) (A) : (B)) 这个测试是为下面的目的而设的: 1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变 为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到 要求的性能,嵌入代码经常是必须的方法。 2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if- then-else更优化的代码,了解这个用法是很重要的。 3). 懂得在宏中小心地把参数用括号括起来 4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3. 预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种 问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) {

研发和工艺工程师考面试考试题

研发和工艺工程师考面试考试题 一.填空题: 1.请写出一款4层板的PCB正片工艺流程:(开料-内层线路-压合-钻孔-沉铜-板电-外层线路-图形电镀-蚀刻-阻焊-字符-表面处理-测试-外形-终检); 2.常用的刚性板材按照tg值分类有哪些:(tg140)、(tg150)、(tg180);FR4板材常见的板材供应商有(生益)、(联茂)、(建滔)等; 3.铜箔1/1的定义是:(将1盎司的铜平均分布在一平方英尺的基板范围内,该铜箔即为1盎司); 4.板材中的tg值定义是:(板材玻璃转化温度),板材tg的测试方法有:(DSC)和(DMA); 5.板材中的Td值定义是:(); 6.刚性板常用的半固化片型号/理论厚度:(7628)/(0.19)mm、(2116)/(0.12)mm、(3313)/(0.1)mm、(1080)/(0.08)mm、(106)/(0.05)mm; 7.刚性板材有(经)向和(纬)向之分,大料的长方向是(纬)向; 8.常用的高频板材有哪些品牌:(罗杰斯)、(雅龙)、(旺灵);高频板按照材料类型分为:(PTFE)和(非PTFE); 9.常用的钻刀的直径范围为:(0.2)--(6.5)mm;钻刀的主要材料为:(碳化钨合金); 0.3mm的钻刀一般可以研磨(4-5 )次,总寿命约可钻(8000-12000 )孔;孔壁粗糙度的标准是(25 )um; 10.硫酸铜电镀缸的药水名称有:(硫酸)、(五水硫酸铜)、(盐酸)、(铜光剂);其中,硫酸的作用是(导电); 11.请写出多层板的沉铜工艺流程:(膨松→二级溢流水洗→除胶渣→回收→二级溢流水洗→预中和 →二级溢流水洗→中和→二级溢流水洗→整孔→二级溢流水洗→微蚀→二级溢流水洗→预浸→活化→二级 溢流水洗→加速→二级溢流水洗→沉铜→二级溢流水洗); 12.沉铜工艺中,除油剂的作用是:(整孔,将负电荷调整为正电荷、清楚板面油渍);加速剂的作用是:(剥锡壳,露出钯离子),减速剂浓度太高会导致(背光不良)缺陷; 13.铜光剂深度能力的计算公式为(可在试卷空白处旁边画图描述):(); 14.阴极移动是通过阴极杆的往复运动来实现工件的移动。阴极移动振幅(50-75)mm,移动频率(10-15)次/min; 15.阳级中的磷铜球的铜含量为(99.9)%,磷含量为(0.04-0.065)%,还有一些其它杂质;阳极膜分子式为(Cu3P)的作用是:(阳极膜本身对(Cu+--e→Cu2+)反应有催化、加速作用,从而减少cu+的过快产生); 16.电镀铜的延展性合格标准为(>15 )%,TOC的控制标准为(<4000)g/L,延展性不合格导致的缺陷为(孔内断铜),当延展性不合格时,处理槽液的方法为:(碳处理); 17. IPC标准规定的孔铜标准为:二级标准为最小(18)um、平均(20)um;,三级标准为最小(20 )um、平均(25)um; 18.行业中常见的干膜品牌为(杜邦)、(旭化成)、(日立)、(长兴)等;常规干膜的厚度为(40 )um,一般可填充(5-7 )um的板面凹坑;干膜保护膜被撕起后曝光,导致的后果是(干膜聚合不充分); 19.干膜的显影点为控制(50-60 )%;做显影点的目的为(确定显影速度); 20.点光源曝光机的能量均匀性采用5点法测试,合格标准为(≥80)%,计算公式为:(最小值/最大值); 21.阻焊盘中孔的定义为:(PTH孔落在焊盘内),盘中孔容易产生的缺陷为(); 22.干膜的曝光尺级数确定标准为:(以残膜的那一格为准);

嵌入式软件笔试题

凹凸笔试题目(嵌入式软件开发) 2007-02-07 Embedded Software Design Engineer 1 读程序段,回答问题 int main(int argc,char *argv[]) { int c=9,d=0; c=c++%5; d=c; printf("d=%d\n",d); return 0; } a) 写出程序输出 b) 在一个可移植的系统中这种表达式是否存在风险?why? #include "stdio.h" int a=0; int b; static char c; int main(int argc,char *argv[]) { char d=4; static short e; a++; b=100; c=(char)++a; e=(++d)++; printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e); return 0; } a) 写出程序输出 b) 编译器如果安排各个变量(a,b,c,d)在存中的布局(eg. stack,heap,data section,bss section),最好用图形方式描述。 2 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C支持中断,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。 __interrupt double compute_area(double radius) { double area = PI * radius *radius;

嵌入式系统期末考试题库及答案

《嵌入式系统》试题库 《嵌入式系统》试题库 一、填空题 嵌入式系统的基本定义为:以应用中心,以计算机技术为基础,软件硬件可裁剪,适、 1应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从模块结构来看,嵌入式系统由三大部分组成,分别是:硬件、软件和开发平台。、 2从层次角度来看,嵌入式

系统由四大部分组成,分别是:应用软件层、操作系统层、、 3板级支持包(或硬件抽象层) 和硬件层。嵌入式产品的主要度量指标包括:上市时间、设计成本和产品质量。、 4嵌入式系统的设计过程包括:需求分析、规格说明、体系结构设计、构件设计、系统、 5集成和系统测试。需求分析包括:功能性需求分析和非功能性需求分析。 6、确定输入信号是数字信号还 是模拟信号属于功能性需求。 7、确定系统的物理尺寸和重量属于非功能性需求。 8、在嵌 入式系统的设计过程中,其中规格说明解决“做什么”。 9、在嵌入式系统的设计过程中,其 中体系结构设计解决“如何做”。 10、在嵌入式系统的设计过程中,软硬件划分应该在体系结构设计阶段完成。 11、在嵌入式系统的设计过程中,处理器的选择应该在体系结构设计阶段 完成。、 12在嵌入式系统的设计过程中,嵌入式操作系统的选择应该在体系结构设计阶段完成。、13在嵌入式系统的设计过程中,完成原理图设计应在构件设计阶段完成。、 14在嵌入式系统 的设计过程中,完成版图设计应在构件设计阶段完成。、15在嵌入式系统的设计过程中,完 成软件设计应在构件设计阶段完成。 16、反映嵌入式系统设计人员的水平能力主要在于总体 设计(需求分析、规格说明和体系 17、结构设计)和系统调试。设计流程指的是设计过程中所经历的过程步骤。、 18核的模块级重用和基于平台的系统级重用。 IP 设计重用技术主要分为基于19、 软硬件协同设计由系统描述、软硬件划分、软硬件协同综合以及软硬件协同模拟与验 20、证几个阶段组成。嵌入式处理器的分类包括三种,分别是:嵌入式微处理器、微控制器(或单片机)和、21页共页第 1 44 《嵌入式系统》试题库

IT开发工程师经典面试

IT开发工程师经典面试 1、请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”,企业喜欢有礼貌的求职者。 2、你觉得你个性上最大的优点是什么? 回答提示:沉着冷静、条理清楚、立场坚定、顽强向上、乐于助人和关心他人、适应能力和幽默感、乐观和友爱。我在xxx公司做了两年项目,使我适合这份工作。 3、说说你最大的缺点? 回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌岌可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分,企业喜欢聪明的求职者。 4、你对加班的看法? 回答提示:实际上好多公司问这个问题,并不证明一定要加班,只是想测试你是否愿意为公司奉献。 回答样本:如果是工作需要我会义不容辞加班,我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班。 5、你对薪资的要求? 回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,

相关文档
最新文档