1.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?
答:交换机属于OSI第二层即数据链路层设备。它根据MAC地址寻址,通过站表选择路由,站表的建立和维护由交换机自动进行。路由器属于OSI第三层即网络层设备,它根据IP地址进行寻址,通过路由表路由协议产生。交换机最大的好处是快速,路由器最大的好处是控制能力强。
2.请问C++的类和C里面的struct有什么区别?
答:struct的成员的默认访问说明符为Public,而class的成员的默认访问说明符为Private。
补充:c++中可以控制成员的访问权限,并且C中的struct没有类的继承,多态等性质。C语言中的struct没有成员函数,没有静态数据。而c++的类有。但是C中的struct可以用函数指针来表示模拟成员函数。面试技巧
两者的程序思想也不同,C的struct是面向过程编程思想,仅仅是一些数据的堆砌。而C++中的类是面向对象的编程思想,是数据与方法的集合。
3.请讲一讲析构函数和虚函数的用法和作用。
答:析构函数是在对象生存期结束时自动调用的函数,用来释放在构造函数分配的内存。
虚函数是指被关键字virtual说明的函数,作用是使用C++语言的多态特性
补充:
默认的析构函数不用显示调用,自建的析构函数要在程序末尾调用。 析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载。
虚函数可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时,基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数,而不是基类中定义的成员函数(只要派生类改写了该成员函数)。若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都会调用基类中定义的那个函数。
如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virturl函数名=0面试题目
我们把这样的函数(方法)称为纯虚函数。
如果一个类包含了纯虚函数,称此类为抽象类 。
4.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
答:一些变量在整个程序中都是可见的,它们称为全局变量。一些变量只能在一个函数中可知,称为局部变量。这就是他们的区别。
在任何函数外面定义的变量就是全局变量,在函数内部定义的变量是局部变量,这是它们在程序中的实现过程。
操作系统和编译器是根据程序运行的内存区域知道他们的,程序的全局数据放在所分配内存的全局数据区,程序的局部数据放在栈区。
补充:
全局变量和局部变量的区别主要在于生存周期不同,全局变量在整个程序生成期间可见,局部变量在自己的作用域内可见。全局变量的内存分配是静态的,位于PE文件在数据区,在main()前由C、C++运行期函数初始化,如果没有初值,会被初始化为0。局部变量的内存分配是动态的,位于线程堆栈中。如果没有初始化的,初值视当前内存内的值而定。在同一作用域中如果两个变量的名字相同,遵循低作用域覆盖高作用域的原则。面试英语
不过这里需要注意静态局部变量,也就是使用static修饰的变量。该变量的作用域为包含变量定义文件,生成周期同全局变量。也是存放在内存的静态存储区域。参考这篇文章
详细例子:
//main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
int 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"优化成一个地方。
}
请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?
答:IP是Internet Protocol的简称,是网络层的主要协议,作用是提供不可靠、无连接的数据报传送。TCP是TransmitControl Protocol(传输控制协议)的缩写,在运输层,TCP提供一种面向连接的,可靠的字节流服务;UDP是UserDatagram Protocol(用户数据报协议)的缩写,在运输层,UDP提供不可靠的传输数据服务
补充:详细点击下:
深入浅出讲解TCP/UDP协议
5.8086是多少位的系统?在数据总线上是怎么实现的?
答:8086的机器字长是16位,8086使用40个引脚的16个做地址/数据复用引腿来传输数据,一次读写过程由一个基本总线周期完成,它由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD、WR及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。可见,地址与数据信号不会同时出现在一个时钟(CLK)周期,二者可以分时复用同一组引线。
补充:
型号 发布年份 数据总线宽度 外部总线宽度 地址总线宽度
8086 1978 6 16 20
8088 1979 16 8 20
80286 1982 16 16 20
80386 1986 32 32 32
80486 1989 32 32 32
华为面试题目及答案
最新推荐文章于 2018-08-12 12:02:31 发布