1.
在创新工场你可免费的吃顿午餐,不过得像在学校一样排队打饭打菜哦,打饭的队伍最长的时候0表示女性,1表示男性,某一次打饭的队伍是这样的:001111111010001,设第i个数字为ai,则存在()种ijkg满足i<j<k<g且ai=0,aj=1,ak=0,ag=1。
A 79
B 75
C 83
D 70
//A
2.
某系统中有3个并发进程,都需要同类资源4 个,试问该系统不会发生死锁的最少资源数是:
9
10
11
12
解析:3个进程要想不死锁 每个进程都需要4个同类资源, 所以 只要每个进程都有3个资源 另外一个在给一个额外的资源。 那么3个进程中有一个可以运行。。运行完以后 释放资源然后其余的 进程在申请资源就可以了
3.
int func(unsigned int i)
{
unsigned int temp = i;
temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa)>>1);
temp = (temp & 0x33333333) + ((temp & 0xcccccccc)>>2);
temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0)>>4);
temp = (temp & 0xff00ff) + ((temp & 0xff00ff00)>>8);
temp = (temp & 0xffff) + ((temp & 0xffff0000)>>16);
return temp;
}
请问func(0x7f530829)的返回值是()
解析: 求数的二进制表示中1的个数的“平行算法”,思路就是先将n写成二进制形式,然后相邻位相加,重复这个过程,直到只剩下一位。
4.
关于内存正确的是
A 内存的存取速度不能低于cpu速度,否则会造成数据丢失
B 程序只有在数据和代码等被调入内存后才能运行
C 采用虚拟内存技术后程序可以在硬盘上直接运行
D 某计算机的内存容量为16MB,那么他的地址总线为24位
//B
5.
下列关于线性调度的叙述中,错误的是()。
A 调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会
B 调用线程的yeild()方法,只会是与当前线程相同优先级的线程获得运行机会
C 当有比当前线程的优先级高的线程出现时,高优先级线程抢占CPU并运行。
D 一个线程由于某些原因进入阻塞状态,会放弃CPU
E 具有相同优先级的多个线程的调度一定是分时的
F 分时调度模型是让所有线程轮流获得CPU使用权
A:对的
B:错误 A和B之间区别就是:sleep()方法会给其他线程运行的机会,而不管其他线程的优先级,因此会给较低优先级的线程运行的机会;yeild()方法只会给优先级相同的或者比自己高的线程运行的机会.
C:有问题: 有部分系统是非抢占式的,那就会排队运行,c不绝对吧?错的?
D:对的 我理解的阻塞是程序会停在那边等待...cpu就会去执行别的任务,等阻塞消失后再通知cpu继续执行此程序。
E:错的 大部分是这样,但有部分操作系统不存在分时调度
F:对的 分时调度模型是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片
6.
硬币游戏:连续扔硬币,直到 某一人获胜,A获胜条件是先正后反,B获胜是出现连续