习题整理1.15、16、17

习题整理1.15、16、17,第1张

习题整理1.15、16、17

10.任何一个带权的无向连通图的最小生成树( )。

解析:如果无向图中有一条边的权值为负数那么算法在运行是因为是贪心算法,所以会造成生成树不存在的情况。
如果图中的所有节点之间的权值都相同,而且每个节点都有到其他节点的边,那么生成的最小生成树不就有很多。
11.在jdk 1.7中,以下说法正确的是( )。

解析:这题纯粹是想考察JDB1.8和1.9的接口新特性(因为其提到JDK1.7)
1.8接口可以定义default方法和static方法;1.9接口中可以定义私有方法。
因此在JDK1.7中,接口只能定义抽象方法,既Java中所有的非抽象方法都必须在类内定义。
15.在Java中,以下数据类型中,需要内存最多的是()

解析:Object 是引用数据类型,只申明而不创建实例,只会在栈内存中开辟空间,默认为空,空占1 bit
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
18.对于一个共有n个结点、K条边的森林,共有几棵树?

解析:由一颗树的性质:结点等于边+1【n= k+ 1】。
等价于 n - k =1。
故共有 n - k 棵树。
20.设某散列表的长度为1000,散列函数为除留余数法,H(K)=K%P,则P通常情况下最好选择()。

解析:小于等于表长的最大质数
22.以下哪个式子有可能在某个进制下成立()

解析:存在于八进制转十进制
13
18+3=11
14
1
8+4=12
1112=132
204
2
8*8+0+4=132
23.NumberList是一个顺序容器,以下代码执行后,NumberList里的元素依次为:

解析:类似于Java中的ArrayList,
初始时Arraylist为{2,4,1,3,5}
第一次循环 i=0;v=2;2是偶数,所以把2从ArrayList中移除
这时ArrayList变为{4,1,3,5}
第二次循环i=1;v=1(因为新的ArrayList中4的索引是0),1不是偶数,
依次 3和 5都不是偶数
所以只删除了元素2
那么剩下的就是{4,1,3,5}
26.以下能对一维数组 a 进行正确初始化的语句是( )

解析:A:大括号写成了小括号
28.已知输入序列为abcd经过输出受限的双向队列后能得到的输出序列有()

解析:d先出队列,说明abc必须已经在队列中,没有任何一种排列可以使AD形成
29.下列叙述哪些是对的?

解析:E、数据结构的基本运算中,搜索肯定不是必须的,比如栈中就没有搜索
5.若有向图中存在拓扑序列,则该图不存在回路。

解析:拓扑结构是无环的有向图。
10.设某无向图有n个顶点,则该无向图的邻接表中有()个表头结点。

解析:无向图 n个顶点 表头节点n 边节点2n
11.c++当中,对两个数组 a 和 b 进行如下初始化

解析:题目说的是长度,应该是strlen(),对a求长度为6,但是对b求长度是一个未知的大小,应该strlen()知道遇到’’才停止,所以a,b之间的长度不能比较,sizeof是大小,sizeof(a)=7,sizeof(b)=6,应该把题目的长度换成大小
13.下列叙述中正确的是( )

解析:在栈中,栈底指针保持不变,有元素入栈,栈顶指名增加,有元素出栈,栈顶指针减少。在循环队列中,队头指针和队尾指针的动态变化决定队列的长度。在循环链表中,前一个结点指向后一个结点,而最后一个结点指向头结点,只有头结点是固定的。线性链表中,由于前一个结点包含下一个结点的指针,尾结点指针为空,要插入或删除元素,只需要改变相应位置的结点指针即可,头指针和尾指针无法决定链表长度。故本题答案为 A 选项。
18.判断下列说法是否正确:含有12个结点的平衡二叉树的最大深度是5. ( )

解析:
19.在程序设计中,要对两个16K×16K的多精度浮点数二维数组进行矩阵求和时,行优先读取和列优先读取的区别是()

解析:如果数组很大的话应该是行优先快,因为数组在内存中是按行优先存储的,在虚存环境下,如果整个数组没有在内存中的话可以比列优先减少内存换进换出的次数。就算整个数组都在内存中,列优先访问a [ i ] [ j ] 还得计算一次乘法,行优先只需加一就可以了,这个可以忽略
21.下面关于Spring的说法中错误的是()

解析:*D.Spring提供了AOP方式的日志系统
Spring并没有为我们提供日志系统,我们需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现我们自己的日志系统。 **
23.在对问题的解空间树进行搜索的方法中,一个结点有多次机会成为活结点的是:()

解析:分支限界法:
分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。
在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。
此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。
24.假设字符串char s[20] = “abc123”,char
p = s。那么表达式(*p+3)的结果为()

解析:a的ASCII码是97,a+3的ASCII码是100,对应的是字母d。
28.下面说法正确的是?()

解析:yield()让当前正在运行的线程回到可运行状态,以允许具有相同优先级的其他线程获得运行的机会。因此,使用yield()的目的是让具有相同优先级的线程之间能够适当的轮换执行。但是,实际中无法保证yield()达到让步的目的,因为,让步的线程可能被线程调度程序再次选中。
29.下面有关java的引用类型,说法正确的有?

解析:四种引用类型
JDK1.2 之前,一个对象只有“已被引用”和"未被引用"两种状态,这将无法描述某些特殊情况下的对象,比如,当内存充足时需要保留,而内存紧张时才需要被抛弃的一类对象。
所以在 JDK.1.2 之后,Java 对引用的概念进行了扩充,将引用分为了:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)4 种,这 4 种引用的强度依次减弱。
一,强引用
Object obj = new Object(); //只要obj还指向Object对象,Object对象就不会被回收 obj = null; //手动置null
只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null,这样一来,JVM就可以适时的回收对象了
二,软引用
软引用是用来描述一些非必需但仍有用的对象。在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。这种特性常常被用来实现缓存技术,比如网页缓存,图片缓存等。
在 JDK1.2 之后,用java.lang.ref.SoftReference类来表示软引用。
三,弱引用
弱引用的引用强度比软引用要更弱一些,无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。在 JDK1.2 之后,用 java.lang.ref.WeakReference 来表示弱引用。
四,虚引用
虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收,在 JDK1.2 之后,用 PhantomReference 类来表示,通过查看这个类的源码,发现它只有一个构造函数和一个 get() 方法,而且它的 get() 方法仅仅是返回一个null,也就是说将永远无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue 引用队列一起使用。
5.java中将ISO8859-1字符串转成GB2312编码,语句为 ?

解析:正确是这样:
new String(“这是要转换的字符串”.getBytes(“ISO-8859-1”), “GB2312”);
8.在64位机器上运行以下代码段会输出什么结果。 ()

解析:a为字符数组,sizeof(a)为字符数组大小 :2
b为指针,指向存放数据元素a
[0]的地址,题目说是64位机器,所以地址为64位,即8个字节。
9.下面那个代码块实现对字符串的拷贝有错误的是()

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5707963.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存