1、6个圆盘的汉诺塔,总的移动次数是()
解答:
汉诺塔问题的思想是递归,n个圆盘的汉诺塔,移动的思想可以归纳为三步:
(假设x,y,z三个柱子,n个圆盘都在x柱子上,现在要把圆盘都移动到z柱子上去)
(1)将n-1个圆盘借助z柱子移动到y柱子上
(2)再把第n个圆盘移到z柱子上
(3)把y柱子上的n-1个圆盘移到x柱子上
因此如果用f(n)来表示移动的次数,可以得到: f(n)=2f(n-1)+1; f(1)=1。
得到公式f(n) = 2^n - 1。
2、广义表K=(m,n,(p,(q,s)),(h,f)),则head[tail[head[tail[tail(K)]]]]的值为()
解答:
广义表规定:head表示表的第一个元素,可以是子表也可以是原子;tail表示除去head以外的所有元素组成的表,注意tail一定是一张表。
因此tail(K) = (n,(p,(q,s)),(h,f))
tail[tail(K)] = ((p,(q,s)),(h,f))
head[tail[tail(K)]] = (p,(q,s))
tail[head[tail[tail(K)]]] = (q,s)
head[tail[head[tail[tail(K)]]]] = q
3、在一个空的5阶B-树中依次插入关键字序列{6,8,15,16,22,10,18,32,20},插入完成后,关键字6所在结点包含的关键字个数为( 3 )
解答:
B-树的阶数指的是每个节点最多能有多少节点。
B-树插入的方式:
1、 若该结点中关键码个数小于m-1,则直接插入即可。
2、 若该结点中关键码个数等于m-1,则将引起结点的分裂。以中间关键码为界将结点一分为二,并把中间关键码插入到父结点。
4、TCP协议与UDP协议负责端到端连接,下列那些信息只出现在TCP报文,UDP报文不包含此信息(BC)
A、序列号
B、源端口
C、目标端口
D、窗口大小
解答:
UDP的包头结构为:
源端口 16位
目的端口 16位
长度 16位
校验和 16位
另外我们可以注意到,TCP是提供可靠传输的,而UDP并不提供可靠传输,而序列号和窗口大小都是为了提供可靠传输的。
4、程序员编写程序时使用文件系统提供的系统调用将内存中由address地址开始的n个字节或n个记录的信息写入指定文件中,但发现文件名不可用,可行的解决办法是(使用文件描述符代替文件名使用文件句柄代替文件名)
解答:无论是文件句柄(Windows中概念),还是文件描述符(linux中概念),其最终目的都是用来定位打开的文件在内存中的位置,只是它们映射的方式不一样。
注意,文件句柄定位到的是文件对象,而非文件。而文件对象是对这个文件的一些状态、属性的封装,例如读取到的文件位置等。
5、**以下代码可以使用的修饰符是:()
public interface Status {
/INSERT CODE HERE/ int MY_VALUE=10;
}**
解答: final, static, public
接口中字段的修饰符:public static final(默认不写)
接口中方法的修饰符:public abstract(默认不写)
6、下列描述中,哪些是外观模式的特点( )
对客户端屏蔽了子系统组件
单个子系统的修改不影响其他子系统
子系统类变化时,只需要修改外观类即可
解答:
外观模式是常用的一种设计模式
意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
就相当于去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。
优点:
1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。