其他分享
首页 > 其他分享> > 嵌入式面试题答案**

嵌入式面试题答案**

作者:互联网

答案解析:

题1答案:

(1)复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。

(2)复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。

(3)用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

题2答案:

    互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

    同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问。

题3答案:

题4答案:

题5答案:

 

 

题6答案:

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

题7答案:

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

题8答案:

  可以。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。

题9答案:

a|=1<<3;      //bit3置1
a&=~(1<<3)  //bit3置0 

 题10答案:

题11答案:

1、结构体

2、联合体:

题12答案:

答:

1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

题13答案:

答:指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。

题14答案:

答:能,局部会屏蔽全局。

  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

  对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

题15答案:

题16答案:

  答:真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。

  每个线程有自己的堆栈。

题17答案:

答:TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于广播和细节控制交给应用的通信传输,两者主要的不同体现在一下几个方面:

  1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

  2、TCP提供可靠的服务。它通过校验和,丢包时的重传控制,序号标识,滑动窗口、确认应答,次序乱掉的分包进行顺序控制实现可靠传输。即通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达; UDP尽最大努力交付,即不保证可靠交付。

  3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高要求的通信或广播通信场景。

  4、每一条TCP连接只能是点到点的; UDP支持一对一,一对多,多对一和多对多的交互通信方式。

  5、TCP对系统资源要求较多,UDP对系统资源要求较少。

UDP有时比TCP更有优势:

UDP以其简单、传输快的优势,在越来越多场景下取代了TCP, 如实时游戏。

  (1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。

  (2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP在内置的系统协议栈中,极难对其进行改进。

  采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大。

  基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题造成的影响。

题18答案:

 

 

题20答案:

 

  线程同步是指多线程通过特定的设置(如互斥量,事件对象,临界区)来控制线程之间的执行顺序(即所谓的同步)也可以说是在线程之间通过同步建立起执行顺序的关系。

 

(1)互斥量

(2)事件对象

(3)临界区

  线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,临界区对象就是其中一种。

  在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程。但是多个线程同时运行的时候可能调用线程函数,在多个线程同时对同一个内存地址进行写入,由于CPU时间调度上的问题,写入数据会被多次的覆盖,所以就要使线程同步。

题21答案:

(1)数组:

(2)指针

题22答案:

  消息队列。

题23答案:

  一个程序至少一个进程,一个进程至少一个线程。

(1)进程线程的区别
 (2)执行过程
(3)优缺点
 (4)多进程和多线程的优缺点 
  1)多进程优点
  2)多进程缺点
  1)多线程的优点
  2)多线程缺点
(5)线程最多有多少个?

  看用户虚拟内存有多少,根据分配的栈空间决定。

  进程最多可以创建的线程数是根据分配给调用栈的大小,以及操作系统(32位和64位不同)共同决定的。

题24答案:

 题25答案:

题26答案:

Linux下使用虚拟内存空间给每一个进程,32位操作系统下,每个进程都有独立的4G虚拟内存空间。
其中包括:

(1)内核区:用户代码不可见的区域,页表就存放在这个区域中。

(2)用户区

 

 

 题27答案:

 

 

(1)创建状态New  

  满足运行条件(分配到除CPU外的资源),进入就绪状态

(2)就绪状态Runnable/Start  

  获取CPU资源,得到时间片,进入运行状态

(3)运行状态Running
(4)Time Waiting

  睡眠时间到,进入就绪状态

(5)Waiting

  被唤醒,进入就绪状态

(6)阻塞状态Blocked  

  I/O完成或者同步块释放,进入就绪状态

(7)消亡/终止状态Dead/Terminated

 题49答案 :

 

标签:访问,TCP,嵌入式,互斥,线程,答案,进程,试题答案
来源: https://www.cnblogs.com/yuanqiangfei/p/15861709.html