1、若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用()遍历方法最合适

A 前序   B 中序   C 后序   D 按层次

解析:显然后序遍历比较合理。正常的逻辑应该就是:做好当前结点子树内部的交换,然后交换当前结点的左右子树。刚好符合后序遍历的算法逻辑。
1. 交换好左子树
2. 交换好右子树
3. 交换左子树与右子树
其他算法如先序和按层次其逻辑都差不多,即访问当前结点时交换其左右子树。从逻辑上来看稍显别扭一点点。因此说最合适应该是后序遍历,但是从实现上来说先序和按层次都是可以的。
1. 交换左子树与右子树
2. 遍历左子树
3. 遍历右子树
按层次遍历
1. 根结点入队列
2. 出队列,交换其左右子树,将子树的根入队列
3. 重复2直到队列为空
中序遍历相对较难实现一些。

2、链表不具备的特点是( )

A 可随机访问任何一个元素

B 插入、删除操作不需要移动元素

C 无需事先估计存储空间大小

D 所需存储空间与线性表长度成正比

解析:链表是线性表的链式存储,是用结点来存储数据元素。线性表采用链表作为存储结构时,不能进行数据元素的随机访问,其优点是插入和删除操作不需要移动元素。所以,本题应该选择A。

3、下列关于栈的叙述正确的是()

A 栈是非线性结构

B 栈是一种树状结构

C 栈具有先进先出的特征

D 栈有后进先出的特征

解析:栈实际上也是线性表,是按照“先进后出”或“后进先出”的原则组织数据的。

4、某棵完全二叉树上有698个节点,则该二叉树的叶子节点数为

A 349   B 350   C 255   D 351

解析:所谓完全二叉树是指除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。具有n个结点的完全二叉树,其父结点数为int(n/2),而叶子结点数等于总结点数减去父结点数。本题n=698,故父结点数等于int(698/2)=349,叶子结点数等于 698-349=349。

5、输入若已经是排好序的,下列排序算法最快的是()

A 插入排序   B Shell排序   C 合并排序   D 快速排序

解析:A:插入排序只需要遍历一遍,时间复杂度为O(n)

B:希尔排序基于插入排序,只有好的情况下才能达到O(n)

C:归并排序时间复杂度为nlogn

D:快速排序在排好序的情况下,时间复杂度为n^2
6、在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章?
A 应用层   B 表示层   C 会话层   D 传输层   E 网络层
解析:因为UDP要达到TCP的功能就必须实现拥塞控制的功能,而且是在路由之间实现,这个在底层明显是做不到拥塞控制的,在应用层也是做不到的,因为应用层之间和应用程序挂钩,一般只能操控主机的程序,而表示层是处理所有与数据表示及运输有关的问题,包括转换、加密和压缩,在传输层是不可能的,因为你已经使用了UDP协议,无法在本层转换它,只有在会话层.

  会话层(SESSION LAYER)允许不同机器上的用户之间建立会话关系。会话层循序进行类似的传输层的普通数据的传送,在某些场合还提供了一些有用的增强型服务。允许用户利用一次会话在远端的分时系统上登陆,或者在两台机器间传递文件。 会话层提供的服务之一是管理对话控制。会话层允许信息同时双向传输,或任一时刻只能单向传输。如果属于后者,类似于物理信道上的半双工模式,会话层将记录此时该轮到哪一方。
7、主机甲和乙已建立了 TCP 连接,甲始终以 MSS=1KB 大小的段发送数据,并一直有数据 发送;乙每收到一个数据段都会发出一个接收窗口为 10KB 的确认段。若甲在 t 时刻发生超时时拥塞窗口为 8KB,则从 t 时刻起,不再发生超时的情况下,经过 10 个 RTT 后,甲的发送窗口是()
A 10KB   B 12KB   C 14KB   D 15KB
解析:当t时刻发生超时时,把ssthresh设为8的一半,即为4,且拥塞窗口设为1KB。然后经历10个RTT后,拥塞窗口的大小依次为2、4、5、6、7、8、9、10、11、12,而发送窗口取当时的拥塞窗口和接收窗口的最小值,而接收窗口始终为10KB,所以此时的发送窗口为10KB,选A。

  实际上该题接收窗口一直为10KB,可知不管何时,发送窗口一定小于等于10KB,选项中只有A选项满足条件,可直接得出选A。

8、linux 系统中,给文件授予可执行权限的命令是()

A chown   B mv   C sudo  D chmod

解析:chown更改文件的拥有者,mv移动,sudo以管理员权限运行,chmod给文件授予可执行权限。

9、下面关于Linux文件系统的inode描述错误的是:
A inode和文件是一一对应的
B inode描述了文件大小和指向数据块的指针
C 通过inode可获得文件占用的块数
D 通过inode可实现文件的逻辑结构和物理结构的转换
解析: 一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。 除了硬链接以外,还有一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。 这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:"No such file or directory"。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
10、进程阻塞的原因不包括________。
A 时间片切换   B 等待I/O   C 进程sleep   D 等待解锁

解析:进程有3个状态:就绪态。执行态、阻塞态。三种状态的转换包含有:

就绪->执行,执行->就绪,执行->阻塞,阻塞->就绪

等待I/O、进程sleep、等待解锁等原因都会导致进程暂停。关于"时间片切换",当进程已经获得了除cpu外所有的资源,这时的状态就是就绪态,当分配到了时间片就成了执行态,当时间片用完之前一直未进入阻塞态的话,此后便继续进入就绪态。所以进程的就绪与阻塞是完全不同的。

11、如何减少换页错误?

A 进程倾向于占用CPU

B 访问局部性(locality of reference)满足进程要求

C 进程倾向于占用I/O

D 使用基于最短剩余时间(shortest remaining time)的调度机制

解析:换页错误又称缺页错误,当一个程序试图访问没有映射到物理内存的地方时,就会出现缺页错误, 这时操作系统就要去虚拟内存中加载这块内存页。

减少换页错误的方法,即降低缺页中断率:
1、内存页框数。增加作业分得的内存块数。
2、页面大小。页面划分越大,中断率越低。
3、替换算法的优劣影响缺页中断次数
4、程序局部性。程序局部性好可减少缺页中断(为什么?)。
那么B是对的,而对于D,最短剩余时间调度是CPU调度就绪进程的方式,与页面置换算法无关,不要搞混淆了。
局部性原理是一个经典的原理,分为时间局部性和空间局部性,意思是应用一旦访问了一个空间的数据,则这个空间中的相邻区域的内容也很可能被访问,一旦访问了某一段代码,则其周围的代码也很可能被访问。局部性原理的运用就是根据这个,把可能访问的数据和代码都加在到内存中,以后访问就不用加载了(因为主要的消耗在IO端)。这也是迪杰斯特拉提出的goto语句有害的依据,应为goto语句能打破局部性原理,造成计算机的延迟加剧。

12、在内存分配的"最佳适应法"中,空闲块是按()。

A 始地址从小到大排序

B 始地址从大到小排序

C 块的大小从小到大排序

D 块的大小从大到小排序

13、某网站的数据库有一个成绩表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

解析:统计函数不能在Where后面当做限定条件使用,因为where的过滤时机是在查看每一行属性的时候,而统计函数需要在所有数据都查看之后才统计,所以这里用Where后面直接加什么都不对。
14、有土豆,萝卜各一筐,土豆有 240 个,萝卜有 313 个,把这两筐平均分给一些小朋友,一直土豆分到最后余 2 个,萝卜分到最后还余 7 个,求最多有多少个小朋友 参加分水果?
A 14   B 17   C 28   D 34
15、4个袋子,15个球,每个袋子至少放一个球,而且袋子中的球数量不能重复,有多少种方式?
A 4   B 5   C 6    D 7
解析:1,2,3,9  1,2,4,8   1,2,5,7   1,3,4,7   1,3,5,6   2,3,4,6
16、下列关于 java 语言的特点,描述错误的是()
A java是跨平台的编程语言
B java支持分布式计算
C java是面向过程的编程语言
D java支持多线程
解析:Java是面向对象的编程语言
17、instanceof运算符能够用来判断一个对象是否为:
A 一个类的实例   B 一个实现指定接口的类的实例   C 全部正确   D 一个子类的实例
解析:此解析见我另外一篇博客:Java中的instanceof关键字 https://www.cnblogs.com/zsh-blogs/p/10574183.html
18、关于PreparedStatement与Statement描述错误的是()
A 一般而言,PreparedStatement比Statement执行效率更高
B PreparedStatement会预编译SQL语句
C Statement每次都会解析/编译SQL,确立并优化数据获取路径
D Statement执行扫描的结果集比PreparedStatement大
解析:此解析见我另外一篇博客:PreparedStatement与Statement区别 https://www.cnblogs.com/zsh-blogs/p/10574381.html
19、有这么一段程序:
请问以上程序执行的结果是()
A true,true   B true,false   C false,true   D false,false
20、对于一个已经不被任何变量引用的对象,当垃圾回收器准备回收该对象所占用的内存时,将自动调用该对象的哪个方法()
A finalize   B notify   C notifyAll   D hashCode
解析:垃圾回收过程中的对象销毁–Finalization

  就在移除一个对象并回收它的内存空间之前,Java垃圾回收器将会调用各个实例的finalize()方法,这样实例对象就有机会可以释放掉它占用的资源。尽管finalize()方法是保证在回收内存空间之前执行的,但是对具体的执行时间和执行顺序是没有任何保证的。多个实例之间的finalize()执行顺序是不能提前预知的,甚至有可能它们是并行执行的。程序不应该预先假设实例执行finalize()的方法,也不应该使用finalize()方法来回收资源。

  在finalize过程中抛出的任何异常都默认被忽略掉了,同时对象的销毁过程被取消

  JVM规范并没有讨论关于弱引用的垃圾回收,这是明确声明的。具体的细节留给实现者决定。

  垃圾回收是由守护进程执行的

21、【加减二叉树】

  二叉树是除了叶子节点之外所有的节点都最多有两个子节点的树。满二叉树则是除叶子节点外所有节点都有两个子节点的树,且所有叶子节点到根节点的距离都相 等。   现在有一棵无限大的满二叉树,根节点编号为1。编号为i的节点的左儿子编号为2*i,右儿子2*i+1(比如根节点1的左儿子为2,右儿子为3,2的左儿子为4,右儿子为 5。)。牛牛在这棵树上做一个游戏,他从妞妞那里得到了两个数n和k,妞妞希望他拿着数字0从根节点开始往下走,每次选择一条边移动,到达一个节点时选择加 上这个节点的编号或者减去这个节点的编号。在走到第k个节点时所得到的数字刚好等于n。

   这样的路径当然有很多。为了增加难度,妞妞决定让牛牛告诉她经过的节点的编号和最小的路径。 妞妞很聪明,给出的问题都是一定存在答案的。

  你能帮帮牛牛吗?

22、【走斜线】

  有天他来到一张方格地图上,整张地图可以看做一个二维坐标轴。牛牛此刻处于原点(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步到达目的地的基础下尽量走斜线,你能计算出牛牛到底走了多少条斜线吗?

23、【得分最大】

  牛牛和妞妞从他们的好朋友果果处得到了两个盒子,盒子里是一些写了分值的彩球。牛牛和妞妞发现两个盒子里的彩球数目是相等的,就决定一人一个。

  妞妞拿到自己的盒子之后,决定跟牛牛玩一个游戏,规则如下:

  一开始两个人盒子里的彩球数目都是n个,由妞妞先手,两人轮流实行下面两个操作中的一个(只能选其中一个执行,不能不执行。),直到两个盒子里的彩球都被 拿完位置。

  1、从自己的盒子里选一个球拿出来,把球上面的分值加在自己的总得分上边。

  2、从对方的盒子里选一个球拿出来,把这个球移出游戏(对方不能再拿这个球)。

  妞妞和牛牛都十分聪明,不会出错,并且尽可能让自己的得分比对方多。妞妞想知道,在游戏结束的时候,他能比牛牛多得多少分呢?

牛客网校招全国统一模拟笔试(三月场)- Java方向的更多相关文章

  1. 牛客网校招全国统一模拟笔试(二月场)- Java方向

    1.请问下面关于与wait()一起使用的方法notify()的各种陈述,哪个正确? A 多个线程同时等待某个条件,则只有等待时间最长的哪个线程被通知 B 多个线程同时等待某条件,则没有办法预测哪个线程 ...

  2. 2019牛客网暑假多校训练第四场 K —number

    链接:https://ac.nowcoder.com/acm/contest/884/K来源:牛客网 题目描述 300iq loves numbers who are multiple of 300. ...

  3. 牛客网暑期ACM多校训练营 第九场

    HPrefix Sum study from : https://blog.csdn.net/mitsuha_/article/details/81774727 k较小.分离x和k. 另外的可能:求a ...

  4. 牛客网NOIP赛前集训营 第6场 T1 最长路

    [题解] 先建反向图,然后跑拓扑排序求出最长路. 将所有的点按照最长路从小到大分层,把上一层连向这一层的边按照边权为第一关键字.起点的排名为第二关键字排序. 按照这个顺序更新这一层的答案,按照这一层每 ...

  5. 【转自牛客网】C++类职位校招

    作者:./a.out链接:https://www.nowcoder.com/discuss/14022来源:牛客网 话说在牛客网上混迹了半年,也没啥拿的出手的贡献.现在基本上自己的校招生涯要告一段落, ...

  6. 牛客网 --java问答题

    http://www.nowcoder.com/ 主要是自己什么都不怎么会.在这里可以学习很多的! 第一天看题自己回答,第二天看牛客网的答案! 1 什么是Java虚拟机?为什么Java被称作是“平台无 ...

  7. 【华为机试】找最高分(通过此题熟悉牛客网Node输入输出)

    来源:牛客网 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据.每组输入第一行是两个正整数N和M(0 ...

  8. 牛客网刷题(纯java题型 1~30题)

    牛客网刷题(纯java题型 1~30题) 应该是先extend,然后implement class test extends A implements B { public static void m ...

  9. 牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

随机推荐

  1. Pycharm进行版本管理

    即然pycharm为python提供了这么强大的IDE,那么,我们代码管理,没理由不用版本管理工具Git,SVN等等 在pychram中使用GitHub进行代码管理;需要准备: 1)GitHub帐号: ...

  2. top结果解释

    top结果解释 top命令功能类似Windows的任务管理器,但不如任务管理器的直观明了,下面对各项内容进行简单介绍. 信息行 top--命令/up-更新时间/users-用户数/load avera ...

  3. html5-button元素

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. uva 10163 Storage Keepers

    题意: 有n个仓库,m个人,一个仓库只能由一个人托管,每个人可以托管多个仓库. 每个人有一个能力值a,如果说他托管了k个仓库,那么这些仓库的安全值都是a/k. 雇佣一个人的花费也是a. 如果一个仓库没 ...

  5. Lua 服务器与客户端实例

    =============================================================== 服务器,main.lua ======================= ...

  6. 第三方统计分析埋点工具对比,神策、Ptmind、GrowingIO、国双,还有谷歌分析,谁更好?

    第三方统计分析埋点工具对比,神策.Ptmind.GrowingIO.国双,还有谷歌分析,谁更好?https://www.colabug.com/2985393.html GA.Mixpanel 和神策 ...

  7. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    elasticsearch启动时遇到的错误 问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144: 解决: 切换到root用户 执行命令: sysctl -w vm ...

  8. highchart应用示例2-上:圆角柱状图,下:多指标曲线图

    1.ajax调用接口获取数据 function getCityData() { var date1 = $('#datetimepicker1').val(); var date2 = $('#dat ...

  9. byte & 0xff char 转换

    https://blog.csdn.net/lixingtao0520/article/details/75450883 版权声明:本文为博主原创文章,转载请注明作者与出处,http://blog.c ...

  10. Promise的简单用法

    众所周知的,Javascript是一种单线程的语言,所有的代码必须按照所谓的“自上而下”的顺序来执行.本特性带来的问题就是,一些将来的.未知的操作,必须异步实现.本文将讨论一个比较常见的异步解决方案— ...