文章目录
- 1. 请简述TCP/IP包含哪些分段,每一层有哪些常用协议?
- 2. 请写一下strcpy函数的代码?
- 3. 简述嵌入式系统的定义和发展的4个阶段?
- 4. 简述嵌入式系统的组成?
- 5. 如何引用一个已经定义过的全局变量?
- 6. 堆栈溢出一般是由什么原因导致的?
- 7. Internet采用哪种网络协议?该协议的主要层次结构?
- 8. Internet物理地址和IP地址转换采用什么协议?
- 9. 从在浏览器地址栏中输入百度网址www.baidu.com到看到首页,这个过程中间经历了什么?
- 10. 从在浏览器地址栏中输入百度网址www.baidu.com到看到首页,都涉及到哪些网络协议?
- 11. 请问何谓单片机?单片机与一般微型计算机相比,具有哪些特点?
- 12. 简述以下移位操作代码的含义及其等效写法?
- 13. 何时使用多进程,何时使用多线程?
- 14. 请问线程是否具有相同的堆栈?
- 15. 如何判断排序算法的稳定性?
- 16. #include
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 内最大元素的字节数。