嵌入式开发常见面试题(定义篇)

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

应用层:http dns telnet ftp TFTP…
传输层:tcp udp
网络层:ip ICMP ARP rarp
数据链路层:ethnet ethnet2 802.3 ppp fr x.25 hdlc
物理层:比特流

2. 请写一下strcpy函数的代码?

char * strcpy(char *dst, const char *src)
{
if((dst == NULL) || (src == NULL))
return NULL;
int *p = dst;
while((*dst++=*src++) != ‘\0’)
return p;
}

3. 简述嵌入式系统的定义和发展的4个阶段?

定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统
嵌入式系统发展的4个阶段:
无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。

4. 简述嵌入式系统的组成?

硬件层、中间层、系统软件层和应用软件层。

5. 如何引用一个已经定义过的全局变量?

可以用引用头文件的方式,也可以用extern关键字

6. 堆栈溢出一般是由什么原因导致的?

1) 没有回收垃圾资源;
2) 层次太深的递归调用。

7. Internet采用哪种网络协议?该协议的主要层次结构?

tcp/ip协议
应用层/传输层/网络层/数据链路层/物理层

8. Internet物理地址和IP地址转换采用什么协议?

ARP(Address Resolution Protocol):地址解析协议

9. 从在浏览器地址栏中输入百度网址www.baidu.com到看到首页,这个过程中间经历了什么?

按时间顺序:
1) 客户端浏览器获取用户在地址栏输入的域名;
2) 客户端浏览器将域名发送给DNS域名系统,请求解析;
3) DNS解析域名得到相应的IP,返回给客户端浏览器;
4) 客户端浏览器根据IP向服务器发起TCP三次握手,建立TCP连接;
5) 客户端浏览器向服务器发送HTTP请求,请求百度首页;
6) 服务器通过HTTP响应向客户端浏览器返回百度首页文件;
7) 释放TCP连接
8) 客户端浏览器解析HTML文件,根据文件内容获取CSS、JS等资源文件,将页面渲染展示给用户。

10. 从在浏览器地址栏中输入百度网址www.baidu.com到看到首页,都涉及到哪些网络协议?

TCP/IP五层模型中网络层及以上用到的协议:
应用层:HTTP DNS HTTPS
传输层:TCP UDP
网络层:IP ARP

11. 请问何谓单片机?单片机与一般微型计算机相比,具有哪些特点?

单片机是在一块集成电路上把CPU、存储器、定时器/计数器及多种形式的I/O接口集成在一起而构成的微型计算机。
特点:
1) 单片机的程序存储器和数据存储器是分工的,前者为ROM,后者为RAM;
2) 采用面向控制的指令系统,控制功能强;
3) 多样化的I/O接口,多功能的I/O引脚;
4) 产品系列齐全,功能扩展性强。

12. 简述以下移位操作代码的含义及其等效写法?

P1 = P1 << 2
P1 = P1 >> 3
1) P1 = P1 << 2:表示P1左移2位,左移一位相当于乘以2
等效写法:P1 << = 2
2) P1 = P1 >> 3:表示P1右移3位,右移一位相当于除以2
等效写法:P1 >> = 3

13. 何时使用多进程,何时使用多线程?

使用多进程:对资源的管理和保护要求高,不限制开销和效率时;
使用多线程:要求效率高,频繁切换时,资源的保护管理要求不是很高时。

14. 请问线程是否具有相同的堆栈?

(真正的程序执行都是线程来完成的,程序启动的时侯操作系统就创建了一个主线程。)
每个线程都有自己的堆栈。

15. 如何判断排序算法的稳定性?

若待排序序列中两个数相等 arr[i] = arr[j],排序前 i 在 j 前面,排序后 i 仍在 j 前面,则表示该排序算法稳定,否则不稳定。

16. #include <file.h> 与 #include “file.h”的区别?

前者是从 Standard Library 的路径寻找和引用 file.h,而后者是从当前工
作路径搜寻并引用 file.h。

17. 什么是平衡二叉树?

左右子树都是平衡二叉树,且左右子树的深度差值的绝对值不大于 1。

18. 什么函数不能声明为虚函数?

constructor

19. 全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?

可以,在不同的 C 文件中以 static 形式来声明同名全局变量。
可以在不同的 C 文件中声明同名的全局变量,前提是其中只能有一个 C 文件中对此变量赋初值,此时连接不会出错。

20. 程序的内存分配?

一个由 C/C++编译的程序占用的内存可分为以下几个部分:
1) 栈区(stack)---- 由编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈。
2) 堆区(heap)---- 一般由程序员分配释放,若程序员不释放,程序结束时可能由 OS 回收。注意它与数据结构中的堆不同,分配方式类似于链表。
3) 全局区(静态区static)---- 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
4) 文字常量区 ---- 常量字符串就是放在这里的。程序结束后由系统释放。
5) 程序代码区 ---- 存放函数体的二进制代码。

例子:(这是一个前辈写的,非常详细)

//main.cpp
int a=0; //全局初始化区
char *p1; //全局未初始化区
main()
{
int b;栈
char s[] = ”abc”; //栈
char p2; //栈
char p3=”123456″; //123456\0 在常量区,p3 在栈上。
static int c=0; //全局(静态)初始化区
p1 = (char
)malloc(10);
p2 = (char
)malloc(20); //分配得来得 10 和 20 字节的区域就在堆区。
strcpy(p1,”123456″); //123456\0 放在常量区,编译器可能会将它与 p3 所向”123456″优化成一个地方。
}

21. 在 32 位平台上,下面例子联合的大小是多少字节?

union test {
int x;
char y;
float z;
};
4字节。
32 位机器上int为 4 字节、char 为 1 字节、float 为 4 字节。union 大小为 union 内最大元素的字节数

  • 1
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yscc-16

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值