笔试真题解析 ALBB-2015 系统project师研发笔试题

4)在小端序的机器中,假设
union X
{
    int x;
    char y[4];
};
假设
X a;
a.x=0x11223344;//16进制
则:()
y[0]=11
y[1]=11
y[2]=11
y[3]=11
y[0]=22
y[3]=22
【解析】
union是联合体(共用体),也就是 int x; 和 char y[4];的首地址同样,给x赋值的同一时候改变了y数组的值
a.x=0x11223344;
小端存储,低位存在低地址。

0x44是最低位,所以它存放在最低的地址。y[0]取的是低地址的值,所以y[0]=0x44,y[3]=0x11
正确答案: D

8)Linux系统中某个可执行文件属于root而且有setid,当一个普通用户mike执行这个程序时,产生的进程的有效用户和实际用户各自是____?

root mike
root rooy
mike root
mike mike
deamon mike
mike deamon
【解析】
setid的用途是同意普通用户完毕一些任务,而完毕这些任务须要特权和通常被禁止的訪问权限。
在实际应用中,通经常使用来同意普通用户以root用户的角色执行仅仅有root帐号才干执行的程序或命令。
当一个具有setid訪问模式的文件被运行时,进程的有效UID将会变成文件全部者的UID,并使用该UID的訪问权限来訪问其它的文件和资源。
因为可运行文件属于root,因此当程序设置了setid权限位时,普通用户会暂时变成root权限。但实际用户任然是原来的mike。


正确答案: A


10)硬币游戏:连续扔硬币,直到某一人获胜。A获胜条件是先正后反,B获胜是出现连续两次反面。问AB游戏时A获胜概率是()?

1/6
1/4
1/3
1/2
2/3
3/4

【解析】

文字游戏:A没有要求连续!

A赢的条件是:正反
B赢的条件是:反反
从第一次抛硬币開始计算
如果第一次是:正,概率是1/2
第二次假设是 反 则A赢。假设是正,则都不赢,继续抛,直道出现 反 也就是A赢为止。
也就是说在第一次结果为 正 的情况下A必赢
如果第一次是:反,概率是1/2
第二次假设是 反 则B赢。概率是1/2,假设是 正 则又出现A必赢的情况
所以A赢的概率是1/2+(1/2)*(1/2)=3/4
B赢的概率是(1/2)*(1/2)=1/4
正确答案: F

12)有一个用数组C[1..m]表示的环形队列。m为数组的长度。

如果f为队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向)。若队列非空。则计算队列中元素个数的公式应为?

(m+r-f)mod m
r-f
(m-r+f) mod m
(m-r-f) mod m
(r-f) mod m
须要推断边界

【解析】

假设r>f则元素个数为r-f
假设r<f,则元素个数为r-f的补集。也就是m+r-f
统一起来就写成 ——(m+r-f)mod m

正确答案:A

13)下列keyword序列为堆的是()?
100,60,70,50,32,65
60,70,65,50,32,100
65。100,70,32,50。60
70,65,100,32,50,60
32。50,100,70,65,60
50。100,70,65。60,32

【解析】

我们所说的堆一般指二叉堆。二叉堆是全然二叉树或者是近似全然二叉树。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。
2.每一个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
当父结点的键值总是大于或等于不论什么一个子节点的键值时为最大堆。

当父结点的键值总是小于或等于不论什么一个子节点的键值时为最小堆。

一般都用数组来表示堆。i结点的父结点下标就为(i – 1) / 2。

它的左右子结点下标分别为2 * i + 1和2 * i + 2。如第0个结点左右子结点下标分别为1和2。


首先,BCDF选项的第一个数(跟节点)既非最大也非最小。不满足堆的定义,排除
E选项中,根节点最小,可能是最小堆。可是100却大于其孩子节点60。所以不是堆
A选项是最大堆,
100的子节点是60,70. 且100>60,100>70
60的子节点是50,32 且60>50,60>32
70的子节点是65 且70>65

二叉堆不是二叉搜索树,是优先队列!

正确答案:A


14)有4个进程A,B,C,D,设它们依次进入就绪队列。因相差时间非常短可视为同一时候到达。

4个进程按轮转法分别执行11,7,2,和4个时间单位,设时间片为1。四个进程的平均周转时间为 ()?

15.25
16.25
16.75
17.25
17.75
18.25
【解析】
详见:教你理解时间片轮转调度算法

详址:http://wenku.baidu.com/link?

url=Tlva3QeSTkoEjECHThJKqok5LdOzJehFWcSQPj18QsoowVX6pZlrVGM2ft_jffbAUyCqO5mAIyLvf6OFZqYknJJfi527cIamlIadZQM65VG

细节与远方。

正确答案:B


15)下列关于网络编程错误的是?
UDP是不可靠服务
主动关闭的一端会出现TIME_WAIT状态
服务端编程会调用listen()。client会调用bind()
TCP建立和关闭连接都仅仅须要三次握手
linux通过提供socket接口来进行网络编程
长连接相对短连接能够节省建立连接的时间
【解析】
C。server端调用bind(),
client端不须要bind。
D,
TCP建立连接须要三次握手 断开连接须要四次;
server端 
socket-->bind-->listen-->accept 
client 

socket-->connect

正确答案:CD


16)A公司打算搭建一个Andriod App下载的Web网站。计划将眼下常见的手机APP都放到这个网站上提供下载。由于业务开展初期下载量非常小,技术部门就用了1台server,给server配置了一个公网IP对外进行服务。随着销售部门的推广到位。用户量和下载量呈指数级上载。要求技术部门立即进行改造。假设你是技术部门经理,你会怎么改造这个网站,以满足高负载的需求。


提示:短时间改动站点的代码不现实。其它方面的各种改造建议都能够,建议越多越好。


【解析】
硬件方面:
1、添加带宽,多机房部署。购买CDN。
2、添加server,添加server的硬件资源。
软件方面:
1、首先为了防止由于大量用户下载APP,带宽占用过高导致站点原有的功能瘫痪或者体验严重下降,须要将APP下载的地址和站点服务分开部署。
2、动静态分离,使用CACHE。


3、NGINX反响代理,多点集群。

原文地址:https://www.cnblogs.com/wzjhoutai/p/7245136.html