嵌入式常见面试题 11~20

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

a) 一个整型数

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

c) 一个指向指针的的指针,它指向的指针是指向一个整型数

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

e) 一个有10个指针的数组,该指针是指向一个整型数的

a) int a;

b) int *a;

c) int **a;

d) int a[10];

e) int *a[10];

12. 使用C语言中的#define来定义一个常量来表示一年有多少秒?

#define SECONDS_PER_YEAR (606024*365)UL

一定要加括号,宏定义只是替换,不加括号会出错

13. 请问进程和线程有什么区别?

进程:资源分配的最小单位

线程:程序运行的最小单位

进程有自己的地址空间,当一个进程建立,系统就会为它分配地址空间,而线程是共享进程的数据,使用相同的地址空间。

一个进程中可包含多个线程,一个进程死掉不糊影响其他进程,一个线程死掉,整个进程都死了。

线程之间的通信更加方便,同一进程下的线程共享全局变量,静态变量等,而进程通信需要以IPC方式进行。

14. 请判断以下代码是否存在问题。

char * s1="hello";

char * s2="world";

char * s3=strcat(s1,s2);

有问题,s1与s2都为常量指针,其内容不可修改,运行就会产生段错误。

15. 请问下面的代码有什么问题?

void test1()

{

char string[10];

char* str1 = "0123456789";

strcpy( string, str1 );

}

字符串strl的末尾是以’ \0 ’结尾的,所以他的长度是11,而string的长度不够

16. 请问预处理器标识#error的目的是什么?

编译程序时,只要遇到 #error就会跳出一个编译错误当程序比较大时,往往有些宏定义是在外部指定的(如makefile),或是在系统头文件中指定的,当你不太确定当前是否定义了 XXX 时,就可以改成如下这样进行编译:

#ifdef XXX

#error "XXX has been defined"

#else

#endif

这样,如果编译时出现错误,输出了XXX has been defined,表明宏XXX已经被定义了。

17. 请解释以下三个变量声明的含义。

 int const *p;

 int * const p;

③ int const *p const;

int const*p=const int *p; const修饰的是指针 p,表示指针p的值不能改变,而p(即地址)是可以改变的;

int * const p; const修饰的是p(即地址)是常量,不可改变,但是*p的值可以改变。

int const *p const ; 上面两种情况兼得,表示只读,其地址以及地址中的值都不可改变

18. 请简述OSI七层模型和TCP/IP模型的组成?

OSI模型 TCP/IP模型

应用层 应用层

表示层

会话层

传输层 传输层

网络层 网络层

数据链路层

物理层 链路层

19. 请简述TCP/IP镞包含哪些分段,每一层有哪些常用协议?

应用层:http dns telnet ftp TFTP 。。。。

传输层:tcp udp

网络层:ip ICMP ARP rarp

数据链路层:ethnet ethnet2 802.3 ppp fr x.25 hdlc

物理层:比特流

20.请问TCP与UDP协议有什么区别?

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值