笔试真题解析 ALBB-2015 校招研发在线笔试题

1)不算main这个进程自身,到底创建了多少个进程啊?

int main(int argc, char* argv[])

{

fork();

fork() && fork() || fork();

fork();

}

【解析】只看这句, fork() && fork() || fork(); 结果有5个进程。第一句 ,fork 后进程加倍,所以执行 fork() && fork() || fork() 后有10个进程。最后一句进程加倍,就是20个  减去主进程,结果共有 19个。

3)下面的函数哪个是系统调用而不是库函数()?

printf

scanf

fgetc

read

print_s

scan_s

【解析】

read()不是库函数,是系统调用,作用是读文件(Linux中的一切设备都看做文件)

函数原型:

Ssize_t read(int filedes, void *buf, size_t nbytes);

Returns:number of bytes read, 0 if end of file, -1 on error

如果read系统调用成功,则将返回读取到的字节数;如果遇到了文件尾EOF,则返回0。

正确答案: D

5)某二维平面上有12个位置不同的点,通过连接其中任意两点,可以画出59条不同的直线。那么,在59条直线中,经过3个或3个以上的点的直线有()条。

【解析】】

12个点,任意三个点或是以上不在同一条直线上,可以组成的直线为12*11/2=66

先在只有59条直线,说明7条直线重复

而三个点在一条线上,减少2条线的组合

四个点在一条线上,减少5条线的组合

五个点在一条线上,减少9条线的组合

所以可能的情况 2+5=7

即 三个点在一条线上,4个点在一条线上,其余的点均不在一条线上

1----1-----1

1-----1-----1-----1

所以经过三个或四个点的线有2条

7)下列不属于hash碰撞解决方法的是()。

线性探测

单旋转法

二次探测

拉链法

双重散列

多重散列

【解析】

旋转法是将数据的键值中进行旋转。

如5062101旋转之后得到1506210,

这是产生随机散列值(hash)的一种方法,不是解决hash碰撞的方法。

正确答案: B

8)针对外部存储器(如磁盘)上存放的程序和数据,说法正确的是()。

可由CPU直接进行读取写入操作

须在CPU访问之前移入内存

必须由文件系统管理的

必须由进程调度程序管理

程序和数据必须为只读

程序和数据只能被一个进程独占

【解析】

文件系统的数据都是需要被加载到内存中,才可以被CPU直接访问的。CPU的寻址空间指的是内存的寻址空间,外层由文件系统管理,CPU无法直接访问,外存(如磁盘)上存放的程序和数据必须在CPU访问之前移入内存

B、C存在争议,访问的时候如果没在内存,可以触发缺页中断,调入内存,虚拟内存机制。

正确答案: B

10)村长带着4对父子参加爸爸去哪儿第三季第二站某村庄的拍摄。村里为了保护小孩不被拐走有个前年的规矩,那就是吃饭时候小孩左右只能是其他小孩或自己的父母,那么4对父子在圆桌上共有多少种坐法。(旋转一下,每个人面对方向变更后算是一种新的坐法)

【解析】

(1)根据小孩左右只能是其他小孩或自己的父母进行划分,对小孩划分不太容易,对父母划分,集合是1 - 4个连续。(最多几个连续)

(2)当3个连续时,出现最后一个父母两边是孩子,会偷走一个。当父母都是间隔的,同样不成立。

(3)当4个相邻,两个孩子固定,还有两个位置,孩子随意 A(4,4) * A(2,2),该旋转有8种情况,没有重复,当2个相邻时,只有A(4,4),父母的摆放,当旋转以后,会有一半是对称的,一半重复,除以2。

正确答案: A(4,4)* A(2,2) * 8 + A(4,4) * 8 / 2 = 480

12)并发进程执行的相对速度是()。

由进程的程序结构决定

由进程本身来控制

进程被创建时决定

与进程度策略有关

与进程销毁时间有关

由内存分配策略决定

【解析】

一个进程被中断后, 哪个进程可以运行、被中断的进程什么时候能再去占用 处理器,这是与进程调度策略有关的. 所以,进程执行的相对速度不能由进程自己来控制, 还与进程调度 策咯有关。

正确答案: D

13)有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值?

C=(int32)(A+B),D=(int32)(A-B)

C=(int32)(A+B),D=(int32)((A-B)>>1)

C=(int32)(A+B),D=B

C=(int32)(A+B),D=(int32)(A+2*B)

C=(int32)(A*B),D=(int32)(A/B)

都不可以,可能溢出

【解析】

第一项:A=(C+D)/2,B=C-A

第二项:D右移一位,不知道移出的是1还是0,不能恢复

第三项:A=C-D,B=D

第四项:B=D-C,A=C-B

第五项:虽然可以C*D再开方,但是不能确定A和B的正负

但是对于无符号数,A不行,这里简单起见,以3bit数为例。例如A=111,B=110。C=A+B=001(溢出),D=A-B=001,所以A不能正确恢复了。C仍然可以,A=C-D=001-110=111。D答案,同样因为溢出不能恢复。

正确答案: C

16)下列关于线程调度的叙述中,错误的是()。

调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会

调用线程的yeild()方法,只会使与当前线程相同优先级的线程获得运行机会

当有比当前线程的优先级高的线程出现时,高优先级线程将抢占CPU并运行

一个线程由于某些原因进入阻塞状态,会放弃CPU

具有相同优先级的多个线程的调度一定是分时的

分时调度模型是让所有线程轮流获得CPU使用权

【解析】

yield()暂时交出 cpu 控制权,从 running 状态转为 runnalbe 状态,但是仍有 可能被调度,sleep()线程指定休眠一段时间,wait()在其他线程调用此对 象的 notify()或 notifyAll()方法时才能继续执行。

线程中 sleep()方法和 yeild()方法的主要区别:

1.sleep()方法会给其他线程运行的机会,而不管其他线程的优先级,因此会给较 低优先级的线程运行的机会;yeild()方法只会给优先 级相同的或者比自己高的线程运行的机会.

2.sleep()方法声明抛出 InterruptionException 异常,而 yeild()方法没有声明 抛出任何异常.

3.sleep()方法比 yeild()方法具有更高的可移植性.

4.sleep()方法使线程进入阻塞状态,而 yeild()方法使线程进入就绪状态. 当前运行的线程可以调用另一个线程的 join()方法,当前运行的线程将转到阻 塞状态,直到另一个线程运行结束,它才会恢复运行. join()有两种形式:public void join()和 public void join(long timeout)可 以设置阻塞的时间。

关于选项C,当有比当前线程的优先级高的线程出现时,高优先级线程将抢占CPU并运行。这个在没有基于优先级抢占的系统里面是错误的,因为不存在抢占。在有基于优先级抢占的系统里面是对的。但是现在的系统基本都是有基于优先级抢占的,不抢占的那只是出现在课本里。

正确答案: B E

【17】

http://www.nowcoder.com/test/question/done?tid=740329&qid=15744#summary

【18】

http://www.nowcoder.com/questionTerminal/7cd288c3259e455cb10b5d8fdbae5a39

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-29 20:57:30

笔试真题解析 ALBB-2015 校招研发在线笔试题的相关文章

《PHP程序员面试笔试真题解析》——新书上线

你好,是我--琉忆.很高兴可以跟你分享我的新书. 很高兴,在出版了PHP程序员面试笔试宝典后迎来了我的第二本书出版--<PHP程序员面试笔试真题解析>. 如果你是一个热爱PHP的程序员,刚踏入PHP职场,你值得拥有这本书来自学一番,再去尝试找PHP相关的工作,对你帮助绝对不是一般的大!! PS:宝典和真题解析其实是一套的~ 以下简单的对我的新书做个介绍~ 前言 本书的适用群体:刚接触PHP,自学一段时间PHP后打算去找PHP相关的PHP面试工作的群体.这部分群体可以尝试着去练习这部分企业中经常

2015微软实习在线笔试题 - Professor Q&#39;s Software

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Professor Q develops a new software. The software consists of N modules which are numbered from 1 to N. The i-th module will be started up by signal Si. If signal Si is generated multiple times, the i-th module

笔试真题解析 TT-2014 研发

1 在一个单链表中,若p所指的结点不是最后结点,在p所指结点之后插进s所指结点,则应执行操纵() [解析] s->next=p->next;p->next=s 2 在下列排序方法中,不稳定的方法有() [解析] 不稳定排序的意思是在排序过程中,相等的两个数比较之后不会改变其原来的位置,即不需要交换. 常见的稳定排序有: 冒泡排序,插入排序,归并排序,基数排序. 常见的不稳定排序有: 选择排序,堆排序,希尔排序,快速排序. 3 在多级存储体系中,"Cache-主存"结构

笔试真题解析 ALBB-2015 算法project师实习生机试

1.用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有____个0. [解析] 计算N.下3进制结果末尾有多少个0,事实上就是计算3进制中的3被进位多少次,仅仅要将N!因式分解成3^m*other.m就是答案.技巧性的解法就是m=N/3+N/(3^2)+N/(3^3)....+N(3^k) (k<=N/3) -- N=30:N/3+N/9+N/27=14. 2.小赵和小钱二人分别从寝室和图书馆同一时候出发.相向而行.过了一段时间后二人在中途相遇.小赵继续向图

笔试真题 ALBB-2015 算法工程师实习生 笔试真题 解析

1.用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有____个0. [解析] 计算N!下3进制结果末尾有多少个0,其实就是计算3进制中的3被进位多少次,只要将N!因式分解成3^m*other,m就是答案.技巧性的解法就是m=N/3+N/(3^2)+N/(3^3)....+N(3^k) (k<=N/3) -- N=30:N/3+N/9+N/27=14. 2.小赵和小钱二人分别从寝室和图书馆同时出发,相向而行.过了一段时间后二人在中途相遇,小赵继续向图书馆前进

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

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]取的

2015阿里校招研发工程师笔试题

1.C++内存分配中说法错误的是() A 对于栈来说,生长方向是向上的,也就是向着内存地址增加的方向 //错,对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向:对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长. B 对于堆 ,大量的new/delete操作会造成内存空间不连续 //对,对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低.对于栈来讲,则不会存在这个问题,因为 //栈是先进后出的队列,他们是如此的一一对应,以至

美团2015校招哈尔滨站笔试题--第二题

有一组随机排列的字母数组,请编写一个时间复杂度为O(n)的算法,使得这些字母安装字母从小到大顺序排好.说明:字母区分大小写,相同的字母,排序后小写排在大写前.例如:R,B,B,b,W,W,B,R,B,w排序后:b,B,B,B,B,R,R,w,W,W1)描写思路(2分)2)请用你熟悉的编程语言编写代码实现(8分) /** * * @author 无心流泪 * 空间换时间 */ public class InterviewExercise { public void mySort(char[] st

九宫格----记网易游戏2015年研发类笔试题

最近一直在找工作,昨天参加了网易游戏的研发类笔试,题量比较大,大题有6个. 1.最小字典序字符串, 2.递归绘图函数转非递归 3.游戏编程中常用的数据结构4叉树,有三问,一问是写出如何判断点在矩形中和判断两矩形是否相交,第二问是写创建四叉树的实现,第三问是如何根据已知的矩形块,在四叉树中寻找包含的物体. 4.KD树,英文题,没怎么看,第一问问给出的一个算法的复杂度,并分析:第二问是自己实现算法(没怎么看) 5.求带权二叉树的最长路径,权值可以为负值 6.九宫格,就是手机手势密码.有三问,一问是如