笔试真题解析 2016 SYDZ 校招在线笔试题


以下说法正确的有()

多个进程操作同一个文件时,应该要考虑到文件的一致性问题
可通过文件在不同进程间进行数据传递和共享
可以通过全局变量在不同进程间传递数据,但一般不推荐
一个进程可以访问到所有物理内存空间
【解析】
难点在 C 选项

进程间是相互独立的,其实完全可以看成A、B两个进程各自有一份单独的liba.so和libb.so,相应的动态库的代码段和数据段都是各个进程各自有一份的。然后在这个基础上,由于代码段是不会被修改的,所以操作系统可以采用copy on write的优化技术,让两个进程共享同一份物理内存。这是属于在不改变系统行为的基础上,为了节省内存的优化技术。

详见:使用内存映象实现进程间全局变量

详址:http://blog.csdn.net/hkbarton/article/details/14918

正确答案: A B C 


IP数据报分片的重组通常发生在()
源主机和数据报经过的路由器上
源主机上
数据报经过的路由器上
目的主机上
【解析】

当一个IP数据报封装成链路层的帧时,此数据报的总长度(即报头区加上数据部分)一定不能超过下层的数据链路层的MTU值,否则无法传输。 因此,我们需要对IP包进行分片,其中IP数据报的首部中,和IP数据包分片有关的字段为——总长度、标识、标志以及位偏移.分片由网络层的路由器完成        

目的主机收到所有分片后,对分片进行重新组装还原的过程叫做IP数据报重组。IP协议规定,只有最终的目的主机才可以对分片进行重组。

目的主机接收到所有的数据包的分包之后,根据数据包首部中保存的信息,还原最初的数据包。这就是数据包的重组过程。

正确答案: D


引入多道程序技术以后,处理器的利用率()
降低了
没有变化,只是程序的执行方便了
大大提高
没有影响
【解析】
因为I/O一般速度比较CPU慢很多,多道程序设计能够合理控制I/O,使CPU效率达到很高。
多道程序设计是指在主存中同时存放多道用户作业,使它们都处于执行的开始点和开始点之间,这些程序共享计算机系统资源。
多道程序设计的主要优点有:
(1)提高CPU的利用率。在多道程序环境下,多个程序共享计算机资源当某个程序等待I/O操作时,CPU可以执行其他程序,大大提高CPU的利用率。
(2)提高设备的利用率。在多道程序环境下,多个程序共享系统的设备,大大提高系统设备的利用率。
(3)提高系统的吞吐量。在多道程序环境下,减少了程序的等待时间,提高了系统的吞吐量。
正确答案: C



关于TCP协议以下说法正确的是:()
通讯双方被动关闭的一方进入TIME_WAIT状态
TIME_WAIT状态会持续2个MSL
TIME_WAIT状态会持续1个MSL
通讯双方主动关闭的一方进入TIME_WAIT状态
【解析】
持续2MSL的目的是为了可以重传ACK,让被动关闭方收到。被动方进入的是LAST_ACK状态,主动方进入的是TIME_WAIT状态。

详见:TCP协议中的三次握手和四次挥手(图解)

详址:http://blog.csdn.net/u013630349/article/details/49280179

正确答案: B D   你的答案: A B (错误)


以下说法正确的是()
在计算机中,运算器访问寄存器的速度是最快的
在等待中断的过程中,CPU不可以处理其他任务
同一段代码每次运行的时间一定是一样的
软中断是由软件触发的一种中断
【解析】
访问寄存器最快,依据:  寄存器>cache>RAM>ROM
软中断是由内核机制的触发事件引起的(例如进程运行超时、执行中断指令),而硬中断是由外设引发的
正确答案: A




TCP首部报文信息中跟建立链接有关的是()
PSH
SYN
FIN
ACK
【解析】
URG:Urget pointer is valid (紧急指针字段值有效)
SYN: 表示建立连接,用来同步序列。
FIN: 表示关闭连接
ACK: 表示响应,用来确认。
PSH: 表示有 DATA数据传输
RST: 表示连接重置。
正确答案: B D   你的答案: B C D (错误)



以下说法正确的有()
在时间片轮询调度算法中,时间片越短则CPU利用率越高
优先级越高的进程占用CPU的运行时间就一定越多
在遍历大型二维数组int a[x][y]时,先遍历x或先遍历y的处理时间都是一样的
使用cache可以提高CPU的利用率
【解析】
时间片轮询调度是一种古老而又简单的算法,广泛运用于无操作系统的微处理器中。在系统中,每个进程被分配一个时间段,称作时间片, 即该进程允许运行的时间。如果在时间片结束时进程还在运行,则 CPU 将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束 ,则 CPU 当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。
时间片轮询调度中有趣的一点是如何确定时间片的长度。从一个进程切换到另一个进程是需要一定时间的,因为要保存和装入寄存器值及内存映像等保护现场的工作,更新各种表格和队列等。假如进程切换,有时称为上下文切换,需要的时间为 5 毫秒,再假设时间片长度设定为 20 毫秒,则在做完 20 毫秒有用的工作之后, CPU 将花费 5 毫秒来进行进程切换。 CPU 时间的 20% 被浪费在了管理开销上。进程切换时间一定的情 况下,如果时间片长度设定的越小时,这种浪费更明显。所以,时间片长度与 CPU 利用率是一对不可调和的矛盾,必须处理好它们之间的关系。
为了提高   CPU   效率,我们可以将时间片长度设得大一些,这时浪费的时间只有就会相对减小。但在一个分时系统中,各个任务对时间片长度的要求是不一致的。例如在一个系统中,可能要求每秒钟更新一下显示内容,每几十毫秒要扫描一下按键,每几毫秒要检测一下串口缓冲区等……可见,各个任务对时间的依赖程度是不一样的。如果时间片设得太长,某些对实时性要求高的任务可能得不到执行,使得系统的实时性变差。
总之,时间片的设定应满足对实时性要求最高的那个任务,这样才能确保每个任务都可以及时得到执行而不被错过。

A选项,时间片越短,说明其它进程或线程获得CPU,此时需要进行中断,CPU不能处理其它任务。

B选项,优先级越高,说明它获得CPU的可能性越大,但本身该作业所需占用CPU的时间就很少。
C选项,因为是按行顺序进行存储的,所以先遍历x,再遍历y相对要快一点,这涉及到读取操作。
正确答案: D   你的答案: C (错误)



以下程序统计给定输入中每个大写字母的出现次数(不需要检查输入合法性)
void AlphabetCounting(char a[],int n){
  int count[26]={},i,kind=0;
  for(i=0;i<n;++i) (1);
  for(i=0;i<26;++i){
    if(++kind>1) putchar(';');
    printf("%c=%d",(2));
   }
}
以下能补全程序,正确功能的选项是()

++count[a[i]-'Z'];'Z'-i,count['Z'-i]
++count['A'-a[i]];'A'+i,count[i]
++count[i];i,count[i]
++count['Z'-a[i]];'Z'-i,count[i]
++count[a[i]];'A'+i,count[a[i]]
【解析】
正确答案: D


设非空二叉树中度数为0的结点数为n0,度数为1的结点数为n1,度数为2的结点数为n2,则下列等式成立的是()
n0=n1+n2
n0=2n1+1
n0=n2+1
n0=n1+1
【解析】
正确答案: C


IP地址205.140.36.68的哪一部分表示网络号()
205
205.140
68
205.140.36
【解析】
A类 第一位固定为0 0~127 24bit
1.0.0.0 -- 127.255.255.255
B类 前两位固定为10 128.0~191.255 16bit
128.0.0.0 -- 191.255.255.255
C类 前三位固定为110 192.0.0~223.255.255 8bit
192.0.0.0 -- 223.255.255.255
D类 前四位固定为 1110,后面为多播地址,D类地址为多播地址
E类 前五位固定为11110,后面保留为今后所用
正确答案: D



有两个袋子,白色袋子里有7个红球和3个蓝球,黑色袋子里有3个红球和7个蓝球。每次取一个球,取完立刻放回,所有球都从某一个袋子里取,袋子的选择是随机的。共取出6个红球和4个蓝球。问所有球是从黑色袋子里取出的概率是()
0.1
0.48
0.66
0.16
【解析】
正确答案: D



以下选项中采用分治方法的算法有()
堆排序算法
插入排序算法
归并排序算法
二分查找算法
快速排序算法
【解析】
正确答案: C D E



已知有向图G=(V,E)其中V={V1,V2,V3,V4,V5,V6,V7}
E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V2,V6>,<V3,V5>,<V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},
则G的拓扑序列是:()
V1, V4,V2,V6, V3,V5,V7
V1,V2,V3,V4, V5,V6,V7
V1,V3, V4,V2,V6,V5,V7
V1,V3,V4, V6,V2, V5,V7
【解析】
1.明白何为拓扑排序,其特点为什么?  以及排序结果是否唯一?

对一个 有向无环图 (Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。排序结果不唯一。

2.如何完成拓扑排序。

由AOV网构造拓扑序列的拓扑排序算法主要是循环执行以下两步,直到不存在入度为0的顶点为止。
(1) 选择一个入度为0的顶点并输出之;
(2) 从网中删除此顶点及所有出边。
循环结束后,若输出的顶点数小于网中的顶点数,则输出“有回路”信息,否则输出的顶点序列就是一种拓扑序列

3.拓扑排序及应用。

拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。例如,在日常工作中,可能会将项目拆分成A、B、C、D四个子部分来完成,但A依赖于B和D,C依赖于D。为了计算这个项目进行的顺序,可对这个关系集进行拓扑排序,得出一个线性的序列,则排在前面的任务就是需要先完成的任务。再进行多线程程序中可能会用到,将多线程单线程化。

正确答案: B C 


下面算法中可以判断出一个有向图是否有环的是:()
求最短路径
深度优先遍历
广度优先遍历
拓扑排序
【解析】
判断无向图中是否存在回路(环)的算法描述
如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。

算法:

第一步:删除所有度<=1的顶点及相关的边,并将另外与这些边相关的其它顶点的度减一。

第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复步骤一。

如果最后还有未删除顶点,则存在环,否则没有环。

有向图是否有环的判定算法,主要有深度优先和拓扑排序两种方法。
广度优先搜索过程中如果访问到一个已经访问过的节点,可能是多个节点指向这个节点,不一定是存在环

正确答案: B D   你的答案: C D (错误)


某公司数据库密码规定为7位组成的字符串,存储之前,需要将其加密,加密算法为:依次将每个字符依次将每个字符的ASC码值乘以2,再加上10,若计算到的新字符的值等于115,则继续将其除以3,否则不进行除法运算。最后将该得到的新字符串中所有字符前后互换(第一位和最后一位,第二位和倒数第二位交换,依次交换),编程求字符串“1234567”加密后的字符串。

package MyPack;  
  
  
public class DBpassword {  
    public static void main(String[] args){  
        String str = "1234567";  
        //String aStr = "";  
        char[] bt = new char[7];  
        char temp;  
          
        for(int i=0;i<str.length();i++){  
            //char转ASCII  
            int ch = ((int)str.charAt(i))*2+10;  
            if(ch == 115){  
                ch = ch/3;  
            }  
              
            //ASCII转char  
            char cr = (char)ch;  
            bt[i]=cr;  
            /*String str1 = String.valueOf(cr); 
            aStr = aStr +str1;*/  
              
              
        }  
          
        for(int j = 0;j<bt.length/2;j++){  
            temp = bt[j];  
            bt[j] = bt[bt.length-1-j];  
            bt[bt.length-1-j] = temp;  
              
        }  
           
        for(int n = 0;n<bt.length;n++){  
            System.out.print(bt[n]);  
        }  
    }  
  
} 


给出程序输出:

public class FinallyTest1 {  
    static char label;  
    public static void main(String[] args) {       
        System.out.println(test1());  
        System.out.println(label);  
    }  
    public static char test1() {  
        try {  
            System.out.println('A');  
            return label = 'A';   
        }  
        finally {  
            System.out.println('B');  
            label = 'B';  
        }  
    }    
}  

解析:

ABAB

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值