文章目录
- 选择题
- 1.链表具有的特点(A)
- 2.关于队列叙述正确的是(D)
- 3.栈,队列,链表,二叉树(B)
- 4.一个从大到小的数组,按从小到大排序,哪种最快(C)
- 5. 下列排序算法中,时间复杂度和记录的初始排列无关的是(B)
- 6.下面哪种排序法对1234576最快(B)基本有序
- 7. 下列排序算法中哪种算法是不稳定的算法(D)
- 8.解析XML时,需要校验节点是否闭合,如必须有与之对应,用(B)数据结构实现比较好(设计模式题)
- 9.下面SQL语句的作用时()可能是c
- 10.以下不是使用UDP的应用层协议是(B)
- 11.多进程在主存中彼此不干扰的环境下运行,操作系统是通过(B)来实现的
- 12.下列各序列中不是堆的是(B)
- 13. 可能的pop顺序 C
- 14.对10TB的数据文件进行排序,应使用的方法是(D)
- 15.下列选项中,不可能是快速排序第二趟排序结果的是(C)
- 填空题
- 简答题
- 编程题
选择题
1.链表具有的特点(A)
顺序表:线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法。
链表:用一组任意的存储单元来存放线性表的结点,这组存储单元既可以是连续的,也可以是不连续的
2.关于队列叙述正确的是(D)
3.栈,队列,链表,二叉树(B)
二叉树是非线性数据结构,即每个数据结点至多只有一个前驱,但可以有多个后继。
(D)
4.一个从大到小的数组,按从小到大排序,哪种最快(C)
5. 下列排序算法中,时间复杂度和记录的初始排列无关的是(B)
6.下面哪种排序法对1234576最快(B)基本有序
7. 下列排序算法中哪种算法是不稳定的算法(D)
8.解析XML时,需要校验节点是否闭合,如必须有与之对应,用(B)数据结构实现比较好(设计模式题)
9.下面SQL语句的作用时()可能是c
10.以下不是使用UDP的应用层协议是(B)
11.多进程在主存中彼此不干扰的环境下运行,操作系统是通过(B)来实现的
12.下列各序列中不是堆的是(B)
当做完全二叉树,根节点不小于子节点
13. 可能的pop顺序 C
14.对10TB的数据文件进行排序,应使用的方法是(D)
对于10TB的海量数据,数据不可能一次全部载入内存,传统的排序方法就不适用了,需要用到外排序的方法。外排序采用分治思想,即先对数据分块,对块内数据进行排序,然后采用归并排序的思想进行排序,得到数据的一个有序序列。具体的思路建议可以查资料看一下。
15.下列选项中,不可能是快速排序第二趟排序结果的是(C)
参考牛客上的一道题:
填空题
1.程序段的时间复杂度(O(logn))
2.一个二叉树有10个度为1的节点,7个度为2的节点,则该二叉树一共有(25)个节点
有一个公式:度为0的节点数 = 度为2的节点数 +1
3.排序复杂度
4.一个长度为n的单链表,从表头插入元素的复杂度是(O(1))、表尾插入元素的 复杂度为(O(n))
5.数据库的保护一般分为【安全性控制】、【完整性控制】、【并发性控制】、【数据恢复】
简答题
静态链接库和动态链接库的区别是什么:
动态链接库是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件名的扩展名一般是dll,也有可能是drv,sys和fon,它和可执行文件(exe)非常类似,区别在于动态链接库中虽然包含了可执行代码却不能单独执行,而应由应用程序直接或间接调用。
动态链接库是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的可执行文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。
而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在操作系统的管理下,才在应用程序与相应的动态链接库之间建立链接关系。当要执行所调用动态链接库中的函数时,根据连接产生的重定位信息,操作系统才转去执行动态链接库中相应的函数代码。
一般情况下,如果一个应用程序使用了动态链接库,Win32系统保证内存中只有动态链接库的一份复制品,这是通过内存映射文件实现的。DLL首先被调入Win32系统的全局堆栈,然后映射到调用这个动态链接库的进程地址空间。在Win32系统中,每个进程拥有自己的32为位线性地址空间,如果一个动态链接库被多个进程调用,每个进程都会收到该动态链接库的一份映像。
简述MySQL中外连接,内连接的区别
内连接(inner join):取出两张表中匹配到的数据,匹配不到的不保留
外连接(outer join):取出连接表中匹配到的数据,匹配不到的也会保留,其值为NULL
进程之间可以采用那些方式进行通讯
- 无名管道( pipe ): 管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
- 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
- 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
- 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
- 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
- 共享内存( shared memory ) : 共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
- 套接字( socket ) : 套解字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。