一、若二叉树采用二叉链表存储结构,要交换其全部分支结点左、右子树的位置,利用()遍历方法最合适html
A 前序 B 中序 C 后序 D 按层次java
解析:显而后序遍历比较合理。正常的逻辑应该就是:作好当前结点子树内部的交换,而后交换当前结点的左右子树。恰好符合后序遍历的算法逻辑。
1. 交换好左子树
2. 交换好右子树
3. 交换左子树与右子树
其余算法如先序和按层次其逻辑都差很少,即访问当前结点时交换其左右子树。从逻辑上来看稍显别扭一点点。所以说最合适应该是后序遍历,可是从实现上来讲先序和按层次都是能够的。
1. 交换左子树与右子树
2. 遍历左子树
3. 遍历右子树
按层次遍历
1. 根结点入队列
2. 出队列,交换其左右子树,将子树的根入队列
3. 重复2直到队列为空
中序遍历相对较难实现一些。node
二、链表不具有的特色是( ) linux
A 可随机访问任何一个元素 算法
B 插入、删除操做不须要移动元素 数据库
C 无需事先估计存储空间大小 编程
D 所需存储空间与线性表长度成正比网络
解析:链表是线性表的链式存储,是用结点来存储数据元素。线性表采用链表做为存储结构时,不能进行数据元素的随机访问,其优势是插入和删除操做不须要移动元素。因此,本题应该选择A。多线程
三、下列关于栈的叙述正确的是() 编程语言
A 栈是非线性结构
B 栈是一种树状结构
C 栈具备先进先出的特征
D 栈有后进先出的特征
解析:栈实际上也是线性表,是按照“先进后出”或“后进先出”的原则组织数据的。
四、某棵彻底二叉树上有698个节点,则该二叉树的叶子节点数为
A 349 B 350 C 255 D 351
解析:所谓彻底二叉树是指除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺乏右边的若干结点。具备n个结点的彻底二叉树,其父结点数为int(n/2),而叶子结点数等于总结点数减去父结点数。本题n=698,故父结点数等于int(698/2)=349,叶子结点数等于 698-349=349。
五、输入若已是排好序的,下列排序算法最快的是()
A 插入排序 B Shell排序 C 合并排序 D 快速排序
解析:A:插入排序只须要遍历一遍,时间复杂度为O(n)
B:希尔排序基于插入排序,只有好的状况下才能达到O(n)
C:归并排序时间复杂度为nlogn
实际上该题接收窗口一直为10KB,可知无论什么时候,发送窗口必定小于等于10KB,选项中只有A选项知足条件,可直接得出选A。
八、linux 系统中,给文件授予可执行权限的命令是()
A chown B mv C sudo D chmod
解析:chown更改文件的拥有者,mv移动,sudo以管理员权限运行,chmod给文件授予可执行权限。
解析:进程有3个状态:就绪态。执行态、阻塞态。三种状态的转换包含有:
就绪->执行,执行->就绪,执行->阻塞,阻塞->就绪
等待I/O、进程sleep、等待解锁等缘由都会致使进程暂停。关于"时间片切换",当进程已经得到了除cpu外全部的资源,这时的状态就是就绪态,当分配到了时间片就成了执行态,当时间片用完以前一直未进入阻塞态的话,此后便继续进入就绪态。因此进程的就绪与阻塞是彻底不一样的。
十一、如何减小换页错误?
A 进程倾向于占用CPU
B 访问局部性(locality of reference)知足进程要求
C 进程倾向于占用I/O
D 使用基于最短剩余时间(shortest remaining time)的调度机制
解析:换页错误又称缺页错误,当一个程序试图访问没有映射到物理内存的地方时,就会出现缺页错误, 这时操做系统就要去虚拟内存中加载这块内存页。
减小换页错误的方法,即下降缺页中断率:
一、内存页框数。增长做业分得的内存块数。
二、页面大小。页面划分越大,中断率越低。
三、替换算法的优劣影响缺页中断次数
四、程序局部性。程序局部性好可减小缺页中断(为何?)。
那么B是对的,而对于D,最短剩余时间调度是CPU调度就绪进程的方式,与页面置换算法无关,不要搞混淆了。
局部性原理是一个经典的原理,分为时间局部性和空间局部性,意思是应用一旦访问了一个空间的数据,则这个空间中的相邻区域的内容也极可能被访问,一旦访问了某一段代码,则其周围的代码也极可能被访问。局部性原理的运用就是根据这个,把可能访问的数据和代码都加在到内存中,之后访问就不用加载了(由于主要的消耗在IO端)。这也是迪杰斯特拉提出的goto语句有害的依据,应为goto语句能打破局部性原理,形成计算机的延迟加重。
十二、在内存分配的"最佳适应法"中,空闲块是按()。
A 始地址从小到大排序
B 始地址从大到小排序
C 块的大小从小到大排序
D 块的大小从大到小排序
1三、某网站的数据库有一个成绩表myscore,但愿找出成绩表中平均得分小于90的全部试卷。
A select paper_id from myscore where sum(score) < 90 group by paper_id
B select paper_id from myscore group by paper_id having avg(score) < 90
C select paper_id from myscore where avg(score) < 90
D select paper_id from myscore where avg(score) < 90 group by paper_id
就在移除一个对象并回收它的内存空间以前,Java垃圾回收器将会调用各个实例的finalize()方法,这样实例对象就有机会能够释放掉它占用的资源。尽管finalize()方法是保证在回收内存空间以前执行的,可是对具体的执行时间和执行顺序是没有任何保证的。多个实例之间的finalize()执行顺序是不能提早预知的,甚至有可能它们是并行执行的。程序不该该预先假设实例执行finalize()的方法,也不该该使用finalize()方法来回收资源。
在finalize过程当中抛出的任何异常都默认被忽略掉了,同时对象的销毁过程被取消
JVM规范并无讨论关于弱引用的垃圾回收,这是明确声明的。具体的细节留给实现者决定。
垃圾回收是由守护进程执行的
2一、【加减二叉树】
二叉树是除了叶子节点以外全部的节点都最多有两个子节点的树。满二叉树则是除叶子节点外全部节点都有两个子节点的树,且全部叶子节点到根节点的距离都相 等。 如今有一棵无限大的满二叉树,根节点编号为1。编号为i的节点的左儿子编号为2*i,右儿子2*i+1(好比根节点1的左儿子为2,右儿子为3,2的左儿子为4,右儿子为 5。)。牛牛在这棵树上作一个游戏,他从妞妞那里获得了两个数n和k,妞妞但愿他拿着数字0从根节点开始往下走,每次选择一条边移动,到达一个节点时选择加 上这个节点的编号或者减去这个节点的编号。在走到第k个节点时所获得的数字恰好等于n。
这样的路径固然有不少。为了增长难度,妞妞决定让牛牛告诉她通过的节点的编号和最小的路径。 妞妞很聪明,给出的问题都是必定存在答案的。
你能帮帮牛牛吗?
2二、【走斜线】
有天他来到一张方格地图上,整张地图能够看作一个二维坐标轴。牛牛此刻处于原点(0,0),他想要到点(x,y)去。
牛牛有强迫症,他规定本身必须刚好k步走到点(x,y),中途能够通过任何点包括(x,y),可是第k步必定要到达(x,y)。 一步有八种走法,直线东(+1,0)南(0,-1)西(-1,0)北(0,+1),斜线东南(+1,-1)东北(+1,+1)西南(-1,-1)西北(-1,+1)。
牛牛会在能k步到达目的地的基础下尽可能走斜线,你能计算出牛牛到底走了多少条斜线吗?
2三、【得分最大】
牛牛和妞妞从他们的好朋友果果处获得了两个盒子,盒子里是一些写了分值的彩球。牛牛和妞妞发现两个盒子里的彩球数目是相等的,就决定一人一个。
妞妞拿到本身的盒子以后,决定跟牛牛玩一个游戏,规则以下:
一开始两我的盒子里的彩球数目都是n个,由妞妞先手,两人轮流实行下面两个操做中的一个(只能选其中一个执行,不能不执行。),直到两个盒子里的彩球都被 拿完位置。
一、从本身的盒子里选一个球拿出来,把球上面的分值加在本身的总得分上边。
二、从对方的盒子里选一个球拿出来,把这个球移出游戏(对方不能再拿这个球)。
妞妞和牛牛都十分聪明,不会出错,而且尽量让本身的得分比对方多。妞妞想知道,在游戏结束的时候,他能比牛牛多得多少分呢?