1.以下不属于 TCP 拥塞控制方法的是()
- A、 慢启动
- B、 拥塞避免加法增大
- C、 慢启动阈值 ssthresh 减半
- D、 慢重传
TCP 拥塞控制方法共有四种:慢启动,拥塞避免,快重传,快恢复
2.关于udp协议,正确的是()
- A、 udp需要三次握手,但不需要建立连接
- B、 2500B的udp包能够一次穿透以太网
- C、 DNS、NFS和SNMP使用的是UDP
- D、 UDP和TCP一样都会出现粘包问题
只有TCP有粘包现象,UDP永远不会粘包
3.哪个不是进程之间的通信方式?
- A、 共享内存
- B、 消息传递
- C、 系统管道
- D、 临界区
临界区是一种概念,指的是访问公共资源的程序片段,并不是一种通信方式
4.Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用 命令。
- A、 cat
- B、 more
- C、 less
- D、 menu
cat命令:将文件内容一次全输出显示在屏幕上。
more命令:分屏显示文件内容,每次只显示一屏,只允许向前浏览。
less命令:与more相似,并且支持向前,向后浏览。
5.下列命令能查找当前目录一个月(30天)以前大于100M的日志文件(.log)并删除
- A、 find . -name "*.log" –m time +30 –type f –size +100M |xargs rm –rf {} ;
- B、 find . -name "*.log" –mtime +30 –type f –size +100M |xargs rm –rf {} ;
- C、 find . -name "*.log" –mtime +30 –type –size 100M |xargs rm –rf {} ;
- D、 find . -name "*.log" –mtime +30 –type f –size 100M |xargs rm –rf {} ;
find 查找
. 在当前目录查找
-name 指定文件名
-mtime 指定修改时间(以天为单位) +xx 修改时间大于xx天 -xx修改时间小于xx天
-type 文件类型 -f是普通文件
-size 指定文件大小 +xx文件大小大于xx -xx文件大小小于xx
xargs 把前一命令输入当作后一命令输出,通常配合管道使用
6.若一个叶子结点是某子树的中序遍历序列的最后一个结点,则它必是孩子树的先序遍历中的最后一个结点。这种说法()
- A、 正确
- B、 错误
一个结点是某子树的中序遍历序列的最后一个结点,则它必是孩子树的先序遍历中的最后一个结点,这句话就是错的,因为该结点可能只有左子树没有右子树(最后遍历是是根节点),但题目中强调了叶子结点,那就对了
前序遍历(DLR):通过根节点、左节点、右节点的顺序来进行遍历,简称”根左右“。
中序遍历(LDR):通过左节点、根节点、右节点的顺序进行遍历,简称”左根右“。
后序遍历(LRD):通过左节点、右节点、根节点的顺序进行遍历,简称”左右根“。
7.在n 个结点的无向图中,若边数大于n-1, 则该图必是连通图。( )
- A、 正确
- B、 错误
以下两种说法是对的 :
在n个结点的无向图中,若该图是连通图,则其边数大于等于n-1,
在n个结点的无向图中,若边数大于(n-2)(n-1)/2,则该图必是连通图
就是说连通是比较强的条件
8.关于C++中volatile关键字的说法错误的是:
- A、 使用volatile修饰的变量,在使用的时候,每一次都是重新从内存中取值,而不是从寄存器中
- B、 使用volatile修饰的变量,不会被编译器优化
- C、 volatile变量,与非Volatile变量之间的操作,是不会被编译器交换顺序的
- D、 volatile变量间的操作,是不会被编译器交换顺序的
volatile只限制用该关键字修饰的变量的操作顺序
9.使用public公有继承时,基类中的私有成员在派生类中可以直接访问?
- A、 正确
- B、 错误
只能通过其基类的方法进行访问或者通过友元函数进行访问
10.mysql中普通索引和唯一索引的区别?
主键一定是唯一索引,唯一索引也可以加到其他字段上,保证唯一性。
在InnoDB中,每一个索引都对应一个B+树,对于普通索引或者是非主键的唯一索引而言,想要查询到记录就要先查询到索引树节点的主键的值,然后做一次回表查询主键索引获取记录行。
从这普通索引和唯一索引对查询语句和更新语句的性能影响来进行分析。
查询过程:
查询的时候都是从索引树树根开始,逐层查找到叶子节点,直到找到叶子节点所在的数据页,数据页包含很多条记录,然后数据页内根据二分查找定位记录。
- 对于普通索引来说,查找到满足条件的第一个记录(后,需要查找下一个记录,直到碰到第一个不满足条件的记录。而这个查找下一条记录的过程中可能涉及到从磁盘读取新的数据页。
- 对于唯一索引来说,由于索引定义了唯一性,查找到第一个满足条件的记录后,就会停止继续检索。不会读取新的数据页。
但是对于InnoDB而言,读取一条新的记录,会读取记录所在的整个数据页到内存,所以基本上普通索引中因为判断而需要读取新的数据页的概率很低很低。所以普通索引和唯一索引查询时候的性能差距很小。
对于更新过程,性能差距主要在于change buffer。如果对应的要操作的数据不再内存,change buffer可以保存数据的更新操作,在下次对应的数据读取到内存的时候,在把相关操作追加到数据上,减少了磁盘的随机IO操作。
如果数据也在内存中:两种索引的差距只在于唯一索引多一次判断,相差性能很小
- 对于唯一索引来说,找到对应位置,判断到没有冲突,插入这个值,语句执行结束;
- 对于普通索引来说,找到位置,插入这个值,语句执行结束。
如果数据不在内存:
- 对于唯一索引来说,需要将数据页读入内存,判断到没有冲突,插入这个值,语句执行结束;
- 对于普通索引来说,则是将更新记录在change buffer,语句执行就结束了。
也就是说更新过程对于唯一索引而言,无法利用changebuffer的优势,只能读取数据页到内存,然后在做是否约束条件冲突的判断,而普通索引,由于不会产生冲突,所以可以暂存操作,减少读取数据页到内存中的次数,性能相对于唯一索引明显提升。