牛客网 —— 腾讯2017校招开发工程师笔试试卷(二)
链接:https://www.nowcoder.com/test/6393508/summary
第一题:Linux进程通信方式: 套接字(网络通信),信号量,管道(PIPE),共享内存,FIFO(命名管道),信号(signal),文件锁。
第二题: 区分数组指针和指针数组:
数组指针:int *p[4]; 从右往左理解,因为[4],所以是一个数组,然后是int*,说明内部的元素是4个int指针。 (中文名字本质在左边,看代码本质在右边)
指针数组:int (*p)[4]; 因为有括号,所以说明它是一个指针,然后再从右往左理解。 (其实,最正规的理解是看运算符的优先级, [] > *)
因为本题本指针数组,所以该指针指向的数组每个元素都是长度为4的数组。m为{{1,2,3,4},{5,6,7,8},{9,0, , }}。
第三题:银行家算法用于避免死锁。 (有关于死锁的部分,概念可以完全去学习一下)
第七题:待会再学。
第12题:64位系统,32位系统:CPU一次处理的位数,寄存器的位数也和这个位数一致。 对于MAR,他也是一个寄存器,因此CPU处理字长决定了虚拟地址的长度,因此,指针的长度也会因此改变,在64位系统中为8B,在32位系统中为4B。 (因此,对于32位系统的计算机而言,超过4G的内存就没有必要了。)
第13题:空类求sizeof为1,加不加构造函数对sizeof没影响,但有了虚函数,则需要有一个指针指向虚函数表,32位下,指针sizeof为4(指针大小)。