2012.4.13的360笔试

前面有几道逻辑的选择题,然后是计算机科学的基础知识选择题,最后是两道大的解答题。

第一道大题是这样的:不利用库函数实现函数 int atoi(const char *str)

atoi()函数是将字符串转换成整型。

// atoi: arrary to integer 

#include <stdio.h>
//#include <assert.h> 
//#include <ctype.h> 

int atoi(const char *str)
{
    int sign, n; 
    //assert(str!=NULL); 
    if(str==NULL)
      return -1; 
    /* 
    // skip white space
    while(isspace(*str))
        ++str;
    sign=1; 
    // skip sign 
    if(*str=='-')
    {
                 sign=-1;
                 ++str; 
    } 
    n=0; 
    while(isdigit(*str))
    {
                        n=n*10+(*str-'0');
                        str++; 
    }
    */ 
    while(*str==' ')
         str++; 
    sign=(*str=='-')?-1:1; 
    if(*str=='-'||*str=='+')
        str++;
    n=0; 
    while(*str>='0'&&*str<='9')
    {
                               n=n*10+(*str-'0');
                               str++; 
    } 
     
    return sign*n;                        
} 
 
int main()
{
    char s[1000]; 
    printf("Input number:");
    scanf("%s",s);
    printf("The number is %d",atoi(s)); 
    
    return 0; 
} 


其中若是用到库函数,可以防御性编程,包含头文件assert.h以便使用断言assert()。关于assert()函数用法有:assert()函数用法总结。同时可以包含头文件ctype.h来使用其中提供的判断字符是否为空格的isspace()函数和判断字符是否为数字的isdigit()。

查了一下资料,关于头文件ctype.h:

ctype.h里的函数
1 字符测试函数
    1> 函数原型均为int isxxxx(int)
    2> 参数为int,任何实参均被提升成整型
    3> 只能正确处理处于[0, 127]之间的值
比如:isdigit(int ch), isalnum(int ch)(检查ch是否是字母或数字)
2 字符映射函数
   1> 函数原型为int toxxxx(int)
   2> 对参数进行检测,若符合范围则转换,否则不变
比如:int tolower(int); 'A'~'Z' ==> 'a'~'z'   ,int toupper(int); 'a'~'z' ==> 'A'~'Z'


第二道大题是一段关于进程锁英文的一段小翻译

在选择题里有几道不太会:

1.192.168.99.20/30 有多少个可用的IP地址。

CIDR划分法,子网掩码为30位1,高30位为网络号,剩下2位为主机号。有可用IP地址4个。主机号全0代表本网地址,主机号全1代表广播地址,均为不可用地址,故可用IP地址为2个。

2.HTTP协议里的错误代码比如403是什么含义。

Forbidden:请求不允许

HTTP协议代码及含义

3.下面那些算法是不可逆的(B

A.RSA   B.MD5  C.DES  D.BASE64

不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。

不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密,利用的就是不可逆加密算法。近年来,随着计算机系统性能的不断提高,不可逆加密的应用领域正在逐渐增大。在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS(Secure Hash Standard:安全杂乱信息标准)等。

4.一个磁盘的转速是7200rpm,平均寻道时间12ms,一个磁道的平均扇区数是400个,问一个扇区的访问时间是多少ms。

硬盘转速:转速(Rotational Speed),是硬盘内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数。转速的快慢是标示硬盘档次的重要参数之一,它是决定硬盘内部传输率的关键因素之一,在很大程度上直接影响到硬盘的速度。硬盘的转速越快,硬盘寻找文件的速度也就越快,相对的硬盘的传输速度也就得到了提高。硬盘转速以每分钟多少转来表示,单位表示为RPM,RPM是Revolutions Perminute的缩写,是转/每分钟。RPM值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。硬盘的主轴马达带动盘片高速旋转,产生浮力使磁头飘浮在盘片上方。要将所要存取资料的扇区带到磁头下方,转速越快,则等待时间也就越短。因此转速在很大程度上决定了硬盘的速度。

家用的普通硬盘的转速一般有5400rpm、7200rpm几种,高转速硬盘也是现在台式机用户的首选;而对于笔记本用户则是5400rpm为主,虽然已经有公司发布了7200rpm的笔记本硬盘,但在市场中还较为少见;服务器用户对硬盘性能要求最高,服务器中使用的SCSI硬盘转速基本都采用10000rpm,甚至还有15000rpm的,性能要超出家用产品很多。

平均寻道时间:平均寻道时间的英文拼写是Average Seek Time,它是了解硬盘性能至关重要的参数之一。它是指硬盘在接收到系统指令后,磁头从开始移动到移动至数据所在的磁道所花费时间的平均值,它一定程度上体现硬盘读取数据的能力,是影响硬盘内部数据传输率的重要参数,单位为毫秒(ms)。不同品牌、不同型号的产品其平均寻道时间也不一样,但这个时间越低,则产品越好。

磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。磁盘上的磁道是一组记录密度不同的同心圆。

12ms + 1min/(7200*400) ~=12.02ms

5.C++中虚函数在父类和子类中的调用问题。

6.操作系统中进程都有哪些状态,其都是由哪些事件引起的状态转换。

1.进程的基本状态 
(1)执行状态(Running):进程占用处理机,进程的程序正在执行。单处理机系统中只能有一个进程处于执行状态,多处理机系统中可能有多个进程处于执行状态。 
(2)阻塞状态(Blocked):也叫等待或睡眠状态,是进程由于等待某种事件的发生而处于暂停执行的状态。如进程因等待I/O的完成、等待缓冲空间等。 
(3)就绪状态(Ready):进程已分配到处理机以外的所有必要资源,具备了执行的所有条件。可能会有多个进程处于就绪状态,排成就绪队列。 
2.新状态和终止状态 
(1) 新状态:进程刚刚建立,还没有送入就绪队列的状态。 
(2) 终止状态:一个进程已正常结束或非正常结束,OS已将它从就绪队列中移出,还未将它撤销时的状态。 
3. 进程状态的转换 
进程在执行期间可以多次处于就绪状态和执行状态,也可多次处于阻塞状态,但处于新状态只有一次。 
(1)新状态->就绪状态:当就绪队列允许接纳新进程时,系统便把处于新状态的进程移入就绪队列。 
(2)就绪态->执行状态:进程调度程序为处于就绪状态的进程分配处理机后,该进程进入执行状态。 
(3)执行态->阻塞状态:正在执行的进程因需要等待某事件而无法执行。 
(4)阻塞状态->就绪态:进程所等待的事件发生了,进程就从阻塞状态进入就绪状态。 
(5)执行态->就绪状态:正在执行的进程因时间片用完而被暂停执行;或者在可抢占调度方式中,一个优先权高的进程到来后,正在执行的低优先权的进程被强制撤下处理机,转换为就绪状态。 
(6)执行态->终止状态:一个进程已完成或发生某种特殊事件,进程将变为终止状态。

7.程序的执行结果:char a[3];  char *b="china";  a=b;  printf("%s",a);

编译不通过,应该用strcpy()函数,用过后返回的a为"china"

8.中缀前缀后缀表达式。

表达式的三种形式:

中缀表达式:运算符放在两个运算对象中间,这是我们书写的时候最熟悉的一种形式,如:(2+1)*3
后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:2 1 + 3 *)
前缀表达式:同后缀表达式一样,不包含括号,运算符放在两个运算对象的前面,如:* + 2 1 3

9.排序的稳定性,哪种排序是不稳定的(C

A.冒泡排序  B.插入排序  C.堆排序  D.二叉树排序

插入排序、冒泡排序、二叉树排序、二路归并排序及其他线性排序是稳定的。

选择排序、希尔排序、快速排序、堆排序是不稳定的。




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值