华为笔试题及解答
下面是一份华为笔试题,主要是概念原理型的题目,我做了一份解答,其中有些地方可能答得不太准确,还有少数地方不清楚答案.
如果你知道答案,希望能替我补充下,谢谢!
华为笔试题
1.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。
OSI 七层网络模型
应用层 |
表示层 |
会话层 |
传输层 |
网络层 |
数据链路层 |
物理层 |
TCP四层模型(一般都是四层,五层是不是加上物理层?)
应用层 |
传输层 |
网络层 |
链路层 |
2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?
IP协议(Internet Protocol)又称互联网协议,是支持网间互连的数据报协议,它与TCP协议(传输控制协议)一起构成了TCP/IP协议族的核心。它提供网间连接的完善功能, 包括IP数据报规定互连网络范围内的IP地址格式。
IP是网络层协议,工作在数据链路层的上面。
IP协议的作用就是向传输层(TCP层)提供统一的IP包,即将各种不同类型的MAC帧转换为统一的IP包,并将MAC帧的物理地址变换为全网统一的逻辑地址(IP地址)。这样,这些不同物理网络MAC帧的差异对上层而言就不复存在了。正因为这一转换,才实现了不同类型物理网络的互联。
TCP和UDP都是传输层协议.
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立连接。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立连接。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
3.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?
原理太多了,略去!(哪位能给个简单的,请补充,谢谢!)
交换机是在数据链路层实现的
路由器在网络层实现。
4.请问C++的类和C里面的struct有什么区别?
C++中的类有构造函数,析构函数,继承等等。
C中的struct中,没有构造函数等C++类才有的元素。
然而,C++中的class和struct基本上是等同的,除了一点
它们数据成员的默认访问权限是不同的。
class的默认访问权限为private,而struct为public.
它们数据成员的默认访问权限是不同的。
class的默认访问权限为private,而struct为public.
5.请讲一讲析构函数和虚函数的用法和作用。
假设有一个名为A的类,那么A的析构函数为如下形式
A::~A(){}, 没有参数也无返回值。
析构函数主要作用是在对象销毁前释放其占用的资源。
要将类的成员函数定义为虚函数,只需在函数声明前加上关键字virtual.
虚函数的作用是为了实现多态,可以在运行时决定具体调用哪个函数(动态绑定)。
虚函数的作用是为了实现多态,可以在运行时决定具体调用哪个函数(动态绑定)。
6.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
全局变量和局部变量的区别主要在于它们的作用域和生存期不同。
全局变量对于整个程序均可见,而局部变量只对它所在的函数或者语句块可见。
全局变量的生存期与程序的生存期相同,而局部变量的生存期在退出函数或语句块后便结束。
全局变量对于整个程序均可见,而局部变量只对它所在的函数或者语句块可见。
全局变量的生存期与程序的生存期相同,而局部变量的生存期在退出函数或语句块后便结束。
通过将全局变量和局部变量置于内存中不同的段来实现的,全部变量存放与全局数据区,局部变量位于栈内。
操作系统和编译器识别变量的过程不清楚,麻烦哪位补充一下。
7.8086是多少位的系统?在数据总线上是怎么实现的?
8086是16位的系统。
8086地址总线有20位,CPU有1M的寻址空间,然而8086只有16位,为了能够寻址1M内存空间,必须通过分段来完成,即:物理地址=16位的段基址左移4位 + 16位的段内偏移量, 这样就可以寻址全部的地址空间了。