腾讯2016秋招题目

来源:互联网 发布:七月与安生影评知乎 编辑:程序博客网 时间:2024/05/16 15:27
1.在Linux上,对于多进程,子进程继承了父进程的下列哪些?        BCD

进程地址空间
共享内存
信号掩码
已打开的文件描述符
相关知识:
  • 子进程继承父进程
    • 用户号UIDs和用户组号GIDs
    • 环境Environment
    • 堆栈
    • 共享内存
    • 打开文件的描述符
    • 执行时关闭(Close-on-exec)标志
    • 信号(Signal)控制设定
    • 进程组号
    • 当前工作目录
    • 根目录
    • 文件方式创建屏蔽字
    • 资源限制
    • 控制终端
  • 子进程独有

    • 进程号PID
    • 不同的父进程号
    • 自己的文件描述符和目录流的拷贝
    • 子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks)
    • 不继承异步输入和输出
  • 父进程和子进程拥有独立的地址空间和PID参数。

  • 子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
  • 经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”  。

2.文件系统管理的最小磁盘空间单位是()C
扇区
页面
文件
解析:

从应用程序包括用户界面的角度来看,存取信息的最小单位是Byte(字节);

从磁盘的物理结构来看存取信息的最小单位是扇区,一个扇区是512字节;

从操作系统对硬盘的存取管理来看,存取信息的最小单位是簇,簇是一个逻辑概念,一个簇可以是248163264个连续的扇区。一个簇只能被一个文件占用,哪怕是只有1个字节的文件,在磁盘上存储时也要占用一个簇,这个簇里剩下的扇区是无用的。所以,簇可以理解为磁盘存取信息的最小单位。


3.IP地址为140.123.0.0的地址是B类地址,若要切割为10个子网,而且都要连接上Internet,请问子网掩码应设为()
255.0.0.0
255.255.0.0
255.255.128.0
255.255.240.0
解析:
   划分10个子网,要从主机位取4位,B类地址中,后16位是主机地址。
  11111111   11111111   11110000  00000000
    计算出来是255.255.240.0

abcd类网络地址

   现在的IP网络使用32位地址,以点分十进制表示,如172.16.0.0。地址格式为:IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址。 

1. A类IP地址 

一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。 

2. B类IP地址 

一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。 

3. C类IP地址 

一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。 

4. D类地址用于多点广播(Multicast)。 

D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 

5. E类IP地址 

以“llll0”开始,为将来使用保留。 

全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。 

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: 

A类地址:10.0.0.0~10.255.255.255 

B类地址:172.16.0.0~172.31.255.255 

C类地址:192.168.0.0~192.168.255.255

A类地址的第一组数字为1~126。注意,数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。

B类地址的第一组数字为128~191。

C类地址的第一组数字为192~223。


4.栈溢出有上溢出和下溢出两种情况。

5.设有2条路由21.1.193.0/24和21.1.194.0/24,如果进行路由汇聚,汇聚这两条路由的地址是(C)
21.1.200.0/22
21.1.192.0/23
21.1.192.0/21
21.2.224.0/20

参考路由汇聚算法了解该知识点。 193 = 1100,0001 194 = 1100,0010 193和194的前6位相同,因此掩码长度为8+8+6 = 22。而1100,0000 = 192。 因此,最终答案为21.1.192.0/22。

但是题目选项中没有该选项,因此,需要找一个包含正确答案的最佳选项,即21.1.192.0/21。正确答案是C。


6.从一副标准扑克牌中抽牌,抽到黑色牌就继续抽,直至抽到红色牌,则停止。按照概率算,平均下来每次能抽到多少张牌?(也就是三国杀中甄姬的洛神技能,得到牌数的期望值)

正确答案: A   你的答案: B (错误)

1
1.2
0.8
0.9


正确答案是A(1)。

抽到黑色牌之后继续抽,表示黑色牌仍放入总扑克牌中,并不取出。因此,每次抽牌,红色和黑色牌的数目都是相同的,每次抽中黑色牌的概率都是1/2。

抽中0张黑色牌概率:a0 = 1/2
抽中1张黑色牌概率:a1 = (1/2) (1/2) = 1/4 = (1/2)^(1+1)
抽中2张黑色牌概率:a2 = (1/2) (1/2) * (1/2) = 1/8 = (1/2)^(2+1)
抽中3张黑色牌概率:a3 = 1/16 = (1/2)^(3+1)

因此,抽中n张牌的概率为an = (1/2)^(n+1)。

则平均每次抽中牌的张数(即得到牌数的期望值)为Sn = 1*a1+2*a2+...+n*an = 1*(1/2)+2*(1/4)+...+n*(1/2)^(n+1)


上式是一个差比数列求和问题。
Sn = 1*a1+2*a2+...+n*an = 1*(1/4)+2*(1/8)+...+n*(1/2)^(n+1)(1/2)*Sn = 1*(1/8)+2*(1/16)+...+n*(1/2)^(n+1)+n*(1/2)^(n+2)作差有,(1/2)*Sn = (1/4)+(1/8)...+(1/2)^(n+1) - n*(1/2)^(n+2)  (使用等比数列求和公式求解)(1/2)*Sn = (1/2) - (1/2)^(n+1) - n*(1/2)^(n+2)最终得到,Sn = 1 - (1/2)^(n) - n*(1/2)^(n+1)Sn = 1 - (n+2)*(1/2)^(n+1)

因此,得到牌的期望值是Sn = 1 - (n+2)*(1/2)^(n+1)。当牌数很多的时候,期望值趋向于1。



7.下面关于DNS说法正确的是(ABC)

DNS的作用是域名和IP地址的相互映射
DNS协议运行在UDP协议之上
DNS协议端口号为53
DNS的默认缓存时间为1小时
解析:DNS是域名系统的缩写,他是由解析器和域名服务器组成的。域名服务器是保存有该网络中所有主机的域名和对应的ip地址。域名必对应一个ip地址,而ip地址不一定有域名。将域名映射为ip地址的过程就称为域名解析。域名虽便于人们记忆,但计算机只能互相认识ip地址。DNS就是进行域名解析的服务器。 DNS主要是UDP协议,但是当请求字节过长超过512字节时,是用TCP协议,它可以分割成多个片段。 所以选C。

8.下列说法错误的是?(B)
struct声明的类型是值类型
值类型是在堆上分配的
值类型不会被垃圾回收
值类型不需要指针来引用
引用类型在堆上分配,值类型在栈上分配
解析:
参考博客:http://blog.csdn.net/qiaoquan3/article/details/51202926#comments
1、值类型和引用类型的主要区别在于:
1)范围方面
C#的值类型包括:结构体(数值类型、bool型、用户定义的结构体),枚举,可空类型。
C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。


2)内存分配方面:

数组的元素不管是引用类型还是值类型,都存储在托管堆上。

引用类型在栈中存储一个引用,其实际的存储位置位于托管堆。简称引用类型部署在托管推上。而值类型总是分配在它声明的地方:作为字段时,跟随其所属的变量(实 例)存储;作为局部变量时,存储在栈上。(栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放)

3)适用场合

值类型在内存管理方面具有更好的效率,并且不支持多态,适合用做存储数据的载体;引用类型支持多态,适合用于定义应用程序的行为。

  • 引用类型可以派生出新的类型,而值类型不能,因为所有的值类型都是密封(seal)的;
  • 引用类型可以包含null值,值类型不能(可空类型功能允许将 null 赋给值类型,如   int? a = null;  );
  • 引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值。

2、回到本题,得到结论:1. struct声明的是值类型;2. 值类型在栈上分配,引用类型在堆上分配;3. 值类型不需要指针来引用。
    另外再补充一点,垃圾回收不会回收值类型,只会在引用类型上动手,回收无效空间。

3、所以,本题只有B是错的。


9.64位机上,一个结构体有三个成员,分别是char、int、short类型,三个成员位于结构体中不同位置时整个结构体的大小可能是下面哪些值?(AC)

12
7
8
16

三个数据,一共6种排列:
int4B   char1B   short2B
根据内存对齐原则:
1. charintshort   char1 + 空3 + int4 + short2 + 空2 = 12
2. charshortint   char1 + 空1 + short2 + int4 = 8
3. intshortchar   int4 + short2 + char1 + 空1 = 8
4. intcharshort   int4 + char1 + 空1 + short2 = 8
5. shortintchar   short2 + 空2 + int4 + char1 + 空3 = 12
6. shortcharint   short2 + char1 + 空1 + int4 = 8








原创粉丝点击