您现在正在浏览:首页 > 职教文章 > 求职技巧 > 华为面试题

华为面试题

日期: 2009-8-21 3:21:17 浏览: 160 来源: 学海网收集整理 作者: 未知

Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?
A1:OSI/ISO根据整个计算机网络功能将网络分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层七层。也称"七层模型"
TCP/IP"四层模型" 网络接口层,IP层(网络层) tcp/udp层(传输层),应用层,(如果说五层,那么另外一层应该是"物理层")
Q2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?
2 IP协议是网络层的协议,它实现了Internet中自动路由的功能,即寻径的功能,TCP协议是一个传输层的协议它向下屏蔽了IP协议不可靠传输的特性,向上提供一个可靠的点到点的传输,UDP提供的是一种无连接的服务,主要考虑到很多应用不需要可靠的连接,但需要快速的传输
Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?
交换机用在局域网中,交换机通过纪录局域网内各节点机器的MAC地址就可以实现传递报文,无需看报文中的IP地质。路由器识别不同网络的方法是通过识别不同网络的网络ID号(IP地址的高端部分)进行的,所以为了保证路由成功,每个网络都必须有一个
唯一的网络编号。路由器通过察看报文中IP地址,来决定路径,向那个子网(下一跳)路由,也就是说交换机工作在数据链路层看MAC地址,路由器工作在网际层看IP地质
但是由于现在网络设备的发展,很多设备既有交换机的功能有由路由器的功能(交换试路由器)使得两者界限越来越模糊。
(交换机与路由器的区别:
交换机一般用于LAN-WAN的连接,交换机归于网桥,是数据链路层的设备,有些交换机也可实现第三层的交换。路由器用于WAN-WAN之间的连接,可以解决异性网络之间转发分组,作用于网络层。他们只是从一条线路上接受输入分组,然后向另一条线路转发。这两条线路可能分属于不同的网络,并采用不同协议。相比较而言,路由器的功能较交换机要强大,但速度相对也慢,价格昂贵,第三层交换机既有交换机线速转发报文能力,又有路由器良好的控制功能,因此得以广播应用。)
Q4:请问C++的类和C里面的struct有什么区别?
A4:C++的类具有数据封装,其包含属性访问级别可以为Private,public 和protect,还具有实现类接口功能和辅助功能的操作函数,而struct属性访问只有public,没有数据封装功能,也就没有实现信息隐藏着一面向对象的思想的机制,struct本身不含有操作函数,只有数据
Q5:请讲一讲析构函数和虚函数的用法和作用?
A5:析构函数是在类对象死亡时由系统自动调用,其作用是用来释放对象的指针数据成员所指的动态空间,如果在构造函数中你申请了动态空间,那么为了避免引起程序错误,你必须在西沟函数中释放这部分内存空间
如果基类的函数用 virtual修饰,成为虚函数,则其派生类相应的重载函数仍能继承该虚函数的性质,虚函数进行动态联编,也即具有多态性,也就是派生类可以改变基类同名函数的行为,在面向对象世界中,多太是最强大的机制,须函数就是这一机制的c++的实现方式
Q6:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
全局变量是整个程序都可访问的变量,谁都可以访问,生存期在整个程序从运行到结束(在程序结束时所占内存释放),而局部变量存在于模块(子程序,函数)中,只有所在模块可以访问,其他模块不可直接访问,模块结束(函数调用完毕),局部变量消失,所占据的内存释放。
操作系统和编译器是怎么知道的?
操作系统和编译器,可能是通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载. 局部变量则分配在堆栈里面
Q7:一些寄存器的题目,主要是寻址和内存管理等一些知识。
Q8:8086是多少位的系统?在数据总线上是怎么实现的?
A8:是16位,数据总线实现?
华为的笔试题(2004-7-24 from smth)
1. 找错
Void test1()
{
char string[10];
char *str1 =”0123456789”;
strcpy(string, *str1);
}

Void test2()
{
char string[10], str1[10];
for(I=0; I﹤10;I++)
{
str1[i] =’a’;
}
strcpy(string, str1);
}

Void test3(char* str1)
{
char string[10];
if(strlen(str1)﹤=10)
{
strcpy(string, str1);
}
}
2. 找错
#define MAX_SRM 256
DSN get_SRM_no()
{
static int SRM_no;
int I;
for(I=0;I﹤MAX_SRM;I++,SRM_no++)
{
SRM_no %= MAX_SRM;
if(MY_SRM.state==IDLE)
{
break;
}
}
if(I﹥=MAX_SRM)
return (NULL_SRM);
else
return SRM_no;
}
3. 写出程序运行结果
int sum(int a)
{
auto int c=0;
static int b=3;
c+=1;
b+=2;
return(a+b+C);
}

void main()
{
int I;
int a=2;
for(I=0;I﹤5;I++)
{
printf(“%d,”, sum(a));
}
}
4.
int func(int a)
{
int b;
switch(a)
{
case 1: 30;
case 2: 20;
case 3: 16;
default: 0
}
return b;
}
则func(1)=?
5:
int a[3];
a[0]=0; a[1]=1; a[2]=2;
int *p, *q;
p=a;
q=&a[2];
则a[q-p]=?
6.
定义 int **a[3][4], 则变量占有的内存空间为:_24____
7.
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

返回顶部