随笔分类 -  专业综合面试题

摘要:顺序表和链表 顺序表:物理顺序和逻辑顺序相同,可以随机访问; 但是删除和插入,需要移动大量元素;且需要大量连续存储空间。 链表:不再需要大量连续空间,可以动态申请分配空间。 不支持随机访问,需要额外的空间来存储指针。 判断链表是否有个环 用两个指针,slow 和 fast,slow一次走一步,fas 阅读全文
posted @ 2020-04-28 10:14 天凉好个秋秋 阅读(192) 评论(0) 推荐(0)
摘要:备注 最好时间复杂度 平均时间复杂度 最坏时间复杂度 空间复杂度 稳定性 插入排序 直接插入排序 将一个元素插入到另一有序的序列中 有序,只需要比较,O(n) O(n2) O(n2) O(1) 是 折半插入排序 有序的,顺序存储,比较的次数可以减少,但是插入的次数没有减少 一个元素折半查找是 O(l 阅读全文
posted @ 2020-04-27 17:24 天凉好个秋秋 阅读(116) 评论(0) 推荐(0)
摘要:简单选择排序 简单选择排序 VS 直接插入排序 简单选择排序是指每次从序列中选择出最小的元素,每一趟排序可以确定一个元素的最终位置。 空间复杂度:仅仅每趟交换元素,O(1) 时间复杂度:比较次数与初始状态无关,移动次数比较少 稳定:不稳定 补充说明不稳定: 序列5 8 5 2 9,我们知道第一遍选择 阅读全文
posted @ 2020-04-27 16:01 天凉好个秋秋 阅读(150) 评论(0) 推荐(0)
摘要:1.有的系统采用了文件名和描述信息分开。 在检索目录文件的时候,只用到了文件名,仅当找到一个目录项的时候,才会将文件描述信息读入内存。 2.多级目录结构 方便管理,层次结构清晰,也可以避免重名等问题 3.当前目录结构 每个用户都有各自的“当前目录”,登录后自动进入用户的“当前目录” 4.cache 阅读全文
posted @ 2020-04-27 11:22 天凉好个秋秋 阅读(1135) 评论(0) 推荐(0)
摘要:磁盘高速缓存 顾名思义,就是磁盘读写时候起到缓冲作用。CPU要读写数据时候,由于CPU和磁盘读写速度的差异性,CPU要读写数据到磁盘中 ,可以 先把数据丢到磁盘高速缓存里,然后cpu继续自己的工作,磁盘再从缓存中读取数据。 以空间换时间 虚拟磁盘 传统的方式中,一般会把程序一次性、且驻留在内存中。但 阅读全文
posted @ 2020-04-27 11:01 天凉好个秋秋 阅读(792) 评论(0) 推荐(0)
摘要:用户源程序变成可执行文件,需要经过以下几个过程: 1)编译:编译程序将源程序编译成若干个目标模块 2)链接:将目标模块和所需库函数链接在一起,形成完整的装入模块 3)装入:将模块装入内存运行 程序的链接方式分为: 1)静态链接:在程序运行之前,目标模块和它所需的库函数链接成一个完整的可执行程序,以后 阅读全文
posted @ 2020-04-27 10:26 天凉好个秋秋 阅读(652) 评论(0) 推荐(0)
摘要:插入排序 1.直接插入排序 默认 L(1) 有序,将 L(2) ~ L(n)依次插入到前面已经排好序的子序列中。 空间效率:O(1) ,就地排序 时间效率:比较和移动。最好情况下,有序,只需要比较不需要移动,只要 O(n)。 平均是 O (n2) 稳定性:稳定。 适用性:均可。 2.折半插入排序 主 阅读全文
posted @ 2020-04-26 18:00 天凉好个秋秋 阅读(159) 评论(0) 推荐(0)
摘要:顺序查找 无序线性表的顺序查找 有序的顺序表的顺序查找 查找可以提前结束。(A[i] < key ,key > A[i]) 查找判定树:若有n个查找成功结点,则必有相应的 n+1 个查找事变结点。 折半查找 需要有序(缩小范围),并且是顺序存储结构(需要定位查找区域) 时间复杂度 O(log2n) 阅读全文
posted @ 2020-04-26 15:34 天凉好个秋秋 阅读(184) 评论(0) 推荐(0)
摘要:根据关键字直接进行访问。 冲突是因为多个关键字映射到同一个函数中。 散列函数 尽量等概率、均匀。 直接定址法 除留余数法 数字分析法 处理冲突的方法 开放地址法 空闲地址既向它的同义词表项开放,又向它的非同义词表项开放。 1)线性探测法:顺序查看表中下一个单元 2)平方探测法:d = 12, -12 阅读全文
posted @ 2020-04-24 17:26 天凉好个秋秋 阅读(144) 评论(0) 推荐(0)
摘要:B树 多路平衡查找树。 多路:是说阶数,m阶B树,m是指树中所有结点的孩子结点数的最大值是m,也就是说m阶B树。 平衡:所有结点平衡因子等于0. 查找树:类似于排序树,结点内的关键字是有序的,有点类似 左 < 父结点 < 右。 1)每个结点至多有 m 棵子树,(m - 1)个关键字。 2)若根结点不 阅读全文
posted @ 2020-04-24 15:52 天凉好个秋秋 阅读(295) 评论(0) 推荐(0)
摘要:冒泡排序 从后往前(或者从前往后)两两比较,逆序则交换,每趟确定一个元素,且该元素下次不再交换。 空间复杂度:交换元素的时候用的,O(1) 时间复杂度:如果本趟元素没有发生交换,则说明已经有序。最好的情况下是 O(n),平均是 O(n2)。 稳定性:稳定 快速排序 思想:分治,重点在分。取一个piv 阅读全文
posted @ 2020-04-24 13:15 天凉好个秋秋 阅读(162) 评论(0) 推荐(0)
摘要:程序查询方式 信息交换的控制完全由主机执行程序实现,主机一直询问设备有没有准备好,读取设备的状态决定数据传送还是等待。 该方式下,cpu需要“踏步等待”,cpu与 I/O 串行工作。 设计简单,设备少,但是效率低。 中断方式 计算机在执行现有程序时,暂时中止现有程序的执行,转去对其他程序的处理,在处 阅读全文
posted @ 2020-04-23 21:52 天凉好个秋秋 阅读(2593) 评论(0) 推荐(0)
摘要:冯.诺依曼结构 核心思想是存储程序。将程序和数据存储在同一个存储器中,计算机可以在无人干预的情况下,自动完成逐条取出指令并执行。 特点: 1)指令和数据同等地位存储在存储器中,按地址寻址 2)组成:输入设备,运算器,存储器,控制器,输出设备。 3)早期以运算器为中心 阅读全文
posted @ 2020-04-23 15:54 天凉好个秋秋 阅读(322) 评论(0) 推荐(0)
摘要:二维数组指针 定义一个指向 a 的指针变量 p: int (*p)[4] = a; 1) p 指向数组 a 的开头,也即第 0 行;p+1前进一行,指向第 1 行。 2) *(p+1)表示取地址上的数据,也就是整个第 1 行数据。 3) *(p+1)+1表示第 1 行第 1 个元素的地址。 *(p+ 阅读全文
posted @ 2020-04-22 17:13 天凉好个秋秋 阅读(841) 评论(0) 推荐(0)
摘要:地址作为实参,表示实参与形参代表同一个对象; 实参是数值,此时形参是实参的备份 阅读全文
posted @ 2020-04-22 16:25 天凉好个秋秋 阅读(130) 评论(0) 推荐(0)
摘要:函数调用开销比较大,需要将当前程序的一些信息保存到栈中。 当程序中对某一个功能不复杂的函数频繁调用时,可以用inline修饰,当做内联函数。调用内联函数,c++编译器会将函数体中的代码插入到调用该函数的语句处,用实参代替形参。 注意:内联函数使用前必须进行完整的定义; 这是用空间换时间的措施,函数不 阅读全文
posted @ 2020-04-22 15:44 天凉好个秋秋 阅读(492) 评论(0) 推荐(0)
摘要:一个类的若干对象,拥有各自的数据成员,但是成员函数是一样的,可以共享。 为了让成员函数知道当前调用自己的是哪个对象,采用了this指针,this指针是隐式使用的,实际上是作为参数传递给成员函数。 阅读全文
posted @ 2020-04-22 15:40 天凉好个秋秋 阅读(119) 评论(0) 推荐(0)
摘要:auto 自动存储变量的关键字,也就是申明一块临时的变量内存。所有局部变量默认的存储类。 Register 早期c语言不会对代码进行优化,使用register会要求编译器将变量A直接放入寄存器中,提高读取速度。 C语言中register关键字修饰的变量不可以被取地址,但是c++中进行了优化。 c++ 阅读全文
posted @ 2020-04-22 11:51 天凉好个秋秋 阅读(475) 评论(0) 推荐(0)
摘要:static 对于静态局部变量, 内存:由栈区变成静态存储区 生存周期:离开作用域之后并没有被销毁,而是直到程序结束 初试化:为0 作用域:局部作用域 对于全局变量 const const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。 阅读全文
posted @ 2020-04-21 22:45 天凉好个秋秋 阅读(535) 评论(0) 推荐(0)
摘要:词法分析 从输入流识别出有意义的单词,词法单元 语法分析 用词法单元中的第一个分量创建语法树 语义分析 词法分析器使用语法树和符号表中的信息来检查源程序是否和语言定义中的语义一致。 还有一个重要作用:类型检查。 中间代码生成 代码优化 目标代码生成 阅读全文
posted @ 2020-04-21 22:36 天凉好个秋秋 阅读(123) 评论(0) 推荐(0)