1.若有一个栈的输入序列是1,2,3,...,n,输出序列的第一个元素是n,则第i个输出元素是(n-i+1)
解析:当出栈的第一个元素(n)刚好是入栈顺序(1,2,3,...,n)的最后一个元素,那么说明它前面的元素(1,2,3,...n-1)已经全部进栈了,那么出栈的顺序就已经定死了,必须是n,n-1,n-2,...3,2,1。所以就可以根据规律第i个元素为n-i+1,如第一个,n-1+1=n,第二个n-2+1=n-1;
2.系统内可以有无父进程的进程。(√)
解析:init进程是所有linux进程的父进程,进程号为1,也是内核态转用户态的入口,通过调用init函数,由1号内核态进程转成init进程。
3.接口中的方法默认为public abstract,属性默认为public static final。接口中的方法不能有实现,Java中类只支持单继承,而接口可以支持多继承。
4.操作系统(三个状态):
5.线程是调度的基本单位,而进程是资源分配的基本单位。
6.衡量数字通信系统传输质量的指标分为两种:可靠性和有效性指标,有效性主要指标为传输速率,可靠性主要指标误码率或者说是误信率。
7.两种方法的区别:
(1).start方法:
用 start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法。但要注意的是,此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。
(2).run方法
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码。
8.复杂度计算:
解释:初始条件 sum=0,i=0;
每一次是:sum = sum+i;
开始 while 循环
第一次:sum= sum+(++i)= 0+1;
第二次:sum=0+1+2 (这里的 0+1 是第一次 sum 的值,3 是本次 ++i 的值,后面的次数同理)
第三次:sum=0+1+2+3
以此类推,可以看出 sum 的值构成一个等差数列,所以是 sum = (1+k)k/2;
题目已知,sum<n,也就是 sum = n 时结束。
所以,sum=(1+k)k/2=n,可以解出 k 值,由时间复杂度计算原理,消除常数项,低阶项(本题只有 1/2 阶所以不管)得到最终的结果。
9.常用的溢出检测机制主要有进位判决法和双符号位判决法。
双符号位判决法采用两位表示符号,即00表示正号、11表示负号,则溢出时两个符号位就不一致了,从而可以判定发生了溢出。
假设X、Y分别两个加数符号位,Z为运算结果符号位。
当X=Y=00(两数同为正),而Z=01(结果为负)时,正溢出;
当X=Y=11(两数同为负),而Z=10(结果为正)时,负溢出.
10.输出(///////MyClass.class)
11.TCP面向连接、UDP面向无连接 // TCP面向字节流传输;UDP面向数据报传输。边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。