3.如果使用比较高效的算法判断单链表有没有环的算法中,至少需要几个指针?
解析:快慢指针法,判断链表有没有环,可以用快慢指针来实现,两指针的移动速度不一样。如果相遇,则表示有环,否则表示无环
5.对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是()
解析:无向图的邻接矩阵是一个对称矩阵等同于一个二维数组,数组的大小为n2,一般用一个长度为N(N+1)/2的1维数组可以节省空间
8.在有向图 G 的拓扑序列中,若顶点 Vi 在顶点 Vj 之前,则下列情形不可能出现的是()。
拓扑排序,如果G中有一条从Vj到Vi的路径,在Vj被选中前,Vi的入度不可能为0,也就是Vi不可能在vj之前,与Vi在Vj前相矛盾!
9.执行()操作时,需要使用队列作为辅助存储空间。
解析:辅助储存空间
图的拓扑排序,图的深度优先遍历,关键路径算法用的栈辅助
树的层次遍历,图的广度优先遍历用的队列辅助
11.在开发中使用泛型取代非泛型的数据类型(比如用ArrayList取代ArrayList),程序的运行时性能会变得更好。()
解析:使用泛型的好处:检查数据类型,不需要做强制类型转换,利于代码重用。所以泛型只是提高了数据传输安全性,并没有改变程序运行的性能
13.n 个节点的满二叉树调整成一个最小堆的最优复杂度
解析:N个节点,分支节点N/2,每个分支最多进行两次比较和互换操作,因此整个构建过程时间复杂度为N
14.在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象
解析:Apache就是一个Http服务器,Tomcat是一个web容器,静态的htmlApache还可以处理,但是动态的需要转发给Tomcat去处理了,比如jsp页面,请求先经由Apache转发给Tomcat再由Tomcat解析请求。所以应该是web容器去解析成request对象。
16.下列关于JAVA多线程的叙述正确的是()
解析:A,start是开启线程,run是线程的执行体,run是线程执行的入口。
B,CyclicBarrier和CountDownLatch都可以让一组线程等待其他线程。前者是让一组线程相互等待到某一个状态再执行。后者是一个线程等待其他线程结束再执行。CyclicBarrier(栅栏):可以让一组线程等待其他线程。 CountDownLatch(闭锁): 可以让一组线程等待某个事件发生
C,Callable中的call比Runnable中的run厉害就厉害在有返回值和可以抛出异常。同时这个返回值和线程池一起用的时候可以返回一个异步对象Future。Callable能够抛出checked exception
D,start()方法让thread进去可运行状态(runnable),等待获取CPU的使用权
18.给出下面的代码段:
解析:A是构造方法,调用构造方法要先初始化
20.有一个单向链表,头指针和尾指针分别为p,q,以下哪项操作的复杂度不受队列长度的影响?
解析:要删除最后一个节点,需要知道前一个节点,由于是单链表,不能直接由尾部节点得到前一个节点。它的前一个节点的next要置null,所以必须知道
习题整理12.19
最新推荐文章于 2022-08-12 00:24:46 发布