c++面试学习2
1. 排序算法及其比较次数
排序次数的数量级决定了排序算法的复杂度(作为个人纪录,下面图片写的不要清晰 见谅)
2. fgets(s,n,f)函数的功能:
原型是char *fgets(char *s, int n, FILE *stream);
从流中读取n-1个字符,除非读完一行,s用来接收字符串,如果读取成功返回s的指针,否则返回NULL。n-1是一次读取的长度,默认为1k,即1024。f是文件指针,就是从f这个文件输入流中读取n-1个字符保存到s中。
3.数据库中索引,簇索引,非簇,唯一,复合,覆盖索引的区别
数据库中的索引是一种用于提高查询效率的数据结构,包括簇索引、非簇索引、唯一索引、复合索引和覆盖索引。
数据表的索引从数据的存储方式上可以分为簇索引和非簇索引。簇索引和非簇索引是一种数据存储方式,
簇索引:使用主键作为索引,可以加速基于主键的查询,因为它将数据存储在按照主键排序的结构中,查找主键时可以直接定位到数据的物理位置,每个表只能创建一个簇索引。叶子节点就是数据节点。
非簇索引:非簇索引不按照主键排序,而是将主键和索引组合在一起存储,叶子节点包含的是索引字段值和指向数据页数据行的逻辑指针。每个表可以创建多个非簇索引。
簇索引的叶子节点就是数据节点,非簇索引的叶子节点仍是索引节点,只不过有指向对应数据块的指针。
4.C++中const修饰函数有什么作用
const int& fun(int& a); //修饰返回值 int& fun(const int& a); //修饰形参 int& fun(int& a) const{} //const成员函数
const修饰返回值:
const修饰成员函数,则这个成员函数不可以修改成员变量。但是如果成员变量前加mutable修饰,则可以修改该成员变量。
此外,如果声明对象前加const修饰,则是常对象,常对象只能调用常成员函数