oracle 校招题目

这篇博客介绍了Oracle校招中的C语言相关题目,包括单项选择题和程序设计。内容涵盖CPU时间、程序优化、数组返回问题、整数划分、随机抽取问题、双败淘汰赛算法、二叉树层数、拓扑排序、内存管理、TCP协议编程等知识点。还给出了中位数计算和字符串排序的代码实现,以及矩形覆盖问题的算法设计思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.单项选择题

1.1    使用C语言将一个1G字节的字符数组从头到尾全部设置为字符'A',在一台典型的当代PC上,需要花费的CPU时间的数量级最接近:

 

     A. 0.001秒      B. 1秒         C. 100秒     D. 2小时

 

解答:现在机器cpu都是GHz,每次需要若干个指令,大约在1秒。

 

 

1.2    在某些极端要求性能的场合,我们需要对程序进行优化,关于优化,以下说明正确的是:

 

A.  将程序整个用汇编语言改写会大大提高程序性能。

 

B.  在优化前,可以先确定哪部分代码最为耗时,然后对这部分代码使用汇编语言改写,使用的汇编语句数目越少,程序就运行越快。

 

C.  使用汇编语言虽然可能提高程序性能,但是降低了程序的可移植性和可维护性,所以应该绝对避免。

 

D. 适当调整汇编指令的顺序,可以缩短程序运行的时间。

 

解答:A中,不应该将程序整个改写,应该只改写关键部分,整个改写降低了程序的可移植性和可维护性,B,汇编语句不是数目越少越快,循环等

C。不应该绝对避免

 

1.3  对如下c语言程序在普通的x86 pc上面运行时候的输出叙述正确的是:

 

char *f()

{

    char X[512];

    

    sprintf(X, "hello world");

 

    return X+6; 

}

 

void main()

{

    printf("%s",f());

}

 

A.程序可能崩溃,也可能输出hello world

 

B.程序可能崩溃,也可能输出world

 

C.程序可能崩溃,也可能输出hello

 

D.程序一定会崩溃

 

解答:

 

这个程序是想返回一个数组的值,X是一个数组,是函数f()中的一个局部变量,在这个函数结束的时候,将会释放掉这个数组,

 

而X+6只是一个指向world的一个地址,f()返回的就是这个地址,但是地址中的内容没有了。

 

这里主要是讨论的数组返回的问题参考地址:http://www.cnblogs.com/yangxi/archive/2011/09/18/2180759.html

 

 

1.4   方程x1+x2+x3+x4 =30有多少满足x1>=2,x2>=0,x3>=-5, x4>=8的整数解?

 

A.3276     B. 3654 C.2925    D.17550 

 

解答:整数划分问题;y1 = x1 - 2 >= 0,y2 = x2 >= 0,y3 = x3 + 5 >= 0,y4 = x4 - 8 >= 0;故y1 + y2 + y3 + y4 = 25,Num = 28 * 27 * 26/6 = 3276

 

1.5   一个袋子里装了100个苹果,100个香蕉,100个桔子,100个梨,如果每分钟从里面随机抽取一个水果,那么最多过多少分钟时间能肯定至少拿到一打相同种类的水果?(1打=12个)

 

A. 40 B. 12 C.24 D.45

 

解答:4中水果都取了11个,用时间4*11=44分钟,再取一个。45分钟

 

1.6      双败淘汰赛与淘汰赛相仿,也是负者出局,但负一场后并未被淘汰,只是跌入负者组,在负者组再负者(即总共已负两场)才被淘汰。现在有10个人参加双败淘汰赛,假设我们取消最后的胜者组冠军VS负者组冠军的比赛,那么一个需要举行多少场比赛?

 

A. 16 B.17 C.18D.19E.20

 

解答:10个人需要进行9场产生9个第一次失败的人,在失败者的9个人需要8场比赛,淘汰8个人,所以需要9+8=17

 

 

1.7     n个节点的二叉树,最多可以有多少层?

A. n/2   B. log(n)C. n-1D.n

 

解答:每层一个节点的二叉树

 

1.8.

下面哪个序列不是上图的拓扑排序?

A. ebfgadchB.adbdgfchC.adchebfgD.aedbfgch

 

解答:

拓扑排序方法如下:

(1)从有向图中选择一个没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值