1.在TCP协议的三次握手中,应答方在收到发起方发送的“SYN=1,序号=1”数据报时,对其应答的描述是( )
- A、 SYN=2 序号=y ack=y+1
- B、 SYN=1 序号=2 ack=2
- C、 SYN=1 序号=y ack=2
- D、 SYN=2 序号=y ack=2
2.应用程序ping收到的是( )
- A、 TCP应答
- B、 ICMP请求
- C、 ICMP应答
- D、 TCP差错报告
Ping 命令是通过向计算机发送 ICMP 回应报文并且监听回应报文的返回,以校验与远程计算机或本地计算机的连接。
3.采用多路复用I/O监听3个套接字的数据时,如果套接字描述符分别是:5,17,19,则select(int maxfd,struct fd_set* rdset,NULL,NULL)中的maxfd应取为( )
- A、 4
- B、 20
- C、 5
- D、 9
Maxfd是三个套接字描述符中最大数字加上1。
4.文件操作的唯一依据是?
- A、 文件名
- B、 文件句柄
- C、 物理地址
文件句柄fd是唯一标识,相当于id。
5.给定如下代码: int x[4]={0}; int y[4]={1}; 数组x和y的值为()
- A、 A: {0,0,0,0},{1,1,1,1}
- B、 B: {0,0,0,0},{1,0,0,0}
- C、 C: {0,不确定},{1,不确定}
- D、 D: 与编译器相关
如果初始化时指定的的元素个数比数组大小少, 剩下的元素都回被初始化为0。
6.Linux中包括两种链接:硬链接(Hard Link)和软连接(Soft Link),下列说法正确的是( )
- A、 软连接可以跨文件系统进行连接,硬链接不可以
- B、 当删除原文件的时候软连接文件仍然存在,且指向的内容不变
- C、 硬链接被删除,磁盘上的数据文件会同时被删除
- D、 硬链接会重新建立一个inode,软链接不会
硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。
一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。
硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个快捷方式指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
软链接可以跨文件系统,硬链接不可以。
软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在)。
软链接可以对目录进行连接,硬链接不可以。
两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建软链接。
7.观察下面一段代码:
class ClassA {
public:
virtual ~ClassA(){
};
virtual void FunctionA(){
};
};
class ClassB {
public:
virtual void FunctionB(){
};
};
class ClassC : public ClassA, public ClassB {
public:
};
int main() {
ClassC aObject;
ClassA *pA = &aObject;
ClassB *pB = &aObject;
ClassC *pC = &aObject;
return 0;
}
关于pA,pB,pC的取值,下面的描述中正确的是:
- A、 pA,pB,pC的取值相同
- B、 pA,pB,pC的取值都不相同
- C、 pC不等于pA也不等于pB
- D、 pC和pA相同
ClassC虚表指针有两个,分别在在对象首地址偏移0和4字节,pA指向的是基类ClassA基类虚表指针,pB指向的是基类ClassB虚表指针,然后pC指向按继承顺序第一个继承的类虚表指针也就是pA,所以pC=pA,pB与他们不相等
8.设某颗二叉树中有360个结点,则该二叉树的最小高度是?(包括根节点)
- A、 10
- B、 9
- C、 8
- D、 7
深度为h的二叉树最多有2^h-1个节点,因此h最小取9
9.不能声明为虚函数的是( )
- A、 析构函数
- B、 构造函数
- C、 类的成员函数
- D、 以上都不对
构造函数不能声明为虚函数的原因是:
1.创建对象时,需要确定对象的类型,而虚函数是在运行时动态确定其类型的。在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型;
2.虚函数的调用需要通过vptr虚函数表指针,而该指针是存放在对象的内存空间中的,若构造函数声明为虚函数,那么由于对象尚未创建,还没有内存空间,也就没有对应虚函数表来调用虚构造函数了;
3.虚函数的作用在于通过父类的指针或者引用,在调用它的时候能够通过动态链编调用子类重写的虚成员函数。而构造函数是在创建对象时是系统自动调用的,不可能通过父类或者引用去调用,因此就规定构造函数不能是虚函数。
(虚函数不懂)
10.http2.0在1.1的基础上有和优化?
1.头部压缩:建立索引表,增大实时性,并发性
2.分流:信息分割为更小的消息和帧
3.多路复用:单个TCP链接,解决多次http请求