面试题:腾讯2011.10.15校园招聘会笔试题

http://blog.csdn.net/hackbuteer1/article/details/6878287

1、下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的是(B

A、插入排序                      B、堆排序                    C、冒泡排序                     D、快速排序

 

2、以下关于Cache的叙述中,正确的是(B

A、CPU中的Cache容量应大于CPU之外的Cache容量

B、Cache的设计思想是在合理成本下提高命中率

C、Cache的设计目标是容量尽可能与主存容量相等

D、在容量确定的情况下,替换算法的时间复杂度是影响Cache命中率的关键因素

 

3、数据存储在磁盘上的排列方式会影响I/O服务的性能,一个圆环的磁道上有10个物理块,10个数据记录R1------R10存放在这个磁道上,记录的安排顺序如下表所示:

 

物理块

1

2

3

4

5

6

7

8

9

10

逻辑记录

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

 

 

假设磁盘的旋转速度为20ms/周,磁盘当前处在R1的开头处,若系统顺序扫描后将数据放入单缓冲区内,处理数据的时间为4ms(然后再读取下个记录),则处理这10个记录的最长时间为(C

A、180ms                           B、200ms                          C、204ms                             D、220ms

2+4+((2+4)+2*8)*9=204

 

4、随着IP网络的发展,为了节省可分配的注册IP地址,有一些地址被拿出来用于私有IP地址,以下不属于私有IP地址范围的是(C

A、10.6.207.84                              B、172.23.30.28                     C、172.32.50.80               D、192.168.1.100

私有IP地址共有三个范围段:

A:     10.0.0.0~10.255.255.255 /8   B:      172.16.0.0~172.31.255.255 /12   C:   192.168.0.0~192.168.255.255 /16

 

5、下列关于一个类的静态成员的描述中,不正确的是(D

A、该类的对象共享其静态成员变量的值                              B、静态成员变量可被该类的所有方法访问                 

C、该类的静态方法只能访问该类的静态成员变量                 D、该类的静态数据成员变量的值不可修改

 

8、(B)设计模式将抽象部分与它的实现部分相分离。

A、Singleton(单例)                                      B、 Bridge(桥接)                     

C、 Composite(组合)                                   D、 Facade(外观)

 

9、下面程序的输出结果为多少?

  1. void Func(char str_arg[100])  
  2. {  
  3.     printf("%d\n",sizeof(str_arg));  
  4. }  
  5.   
  6. int main(void)  
  7. {  
  8.     char str[]="Hello";  
  9.     printf("%d\n",sizeof(str));  
  10.     printf("%d\n",strlen(str));  
  11.     char *p = str;  
  12.     printf("%d\n",sizeof(p));  
  13.     Func(str);  
  14. }  

输出结果为:6   5     4      4

对字符串进行sizeof操作的时候,会把字符串的结束符“\0”计算进去的,进行strlen操作求字符串的长度的时候,不计算\0的。

数组作为函数参数传递的时候,已经退化为指针了,Func函数的参数str_arg只是表示一个指针,那个100不起任何作用的。

 

10、下面程序的输出结果为多少?

  1. void Func(char str_arg[2])  
  2. {  
  3.     int m = sizeof(str_arg);     //指针的大小为4  
  4.     int n = strlen(str_arg);     //对数组求长度,str_arg后面的那个2没有任何意义,数组已经退化为指针了  
  5.     printf("%d\n",m);  
  6.     printf("%d\n",n);  
  7. }  
  8. int main(void)  
  9. {  
  10.     char str[]="Hello";  
  11.     Func(str);  
  12. }  

输出结果为:      4         5

strlen只是对传递给Func函数的那个字符串求长度,跟str_arg中的那个2是没有任何关系的,即使把2改为200也是不影响输出结果的。。

 

11、typedef char *String_t; 和 #define String_d char * 这两句在使用上有什么区别?
答:typedef char *String_t 定义了一个新的类型别名,有类型检查。而#define String_d char * 只是做了个简单的替换,无类型检查,前者在编译的时候处理,后者在预编译的时候处理。
同时定义多个变量的时候有区别,主要区别在于这种使用方式String_t  a,b;  String_d  c,d;    a,b ,c都是char*类型,而d为char类型
由于typedef还要做类型检查。。#define没有。。所以typedef比#define安全。。

 

15、对一个正整数作如下操作:如果是偶数则除以2,如果是奇数则加1,如此进行直到1时操作停止,求经过9次操作变为1的数有多少个?

第9次操作:结果1由2产生。1个被操作数
8:结果2只能由4产生。1个被操作数
7:结果4由8、3产生。2个
6:结果8由16、7产生;结果3由6产生。共3个
5:结果16由32、15产生;结果7由14产生;结果6由12、5产生。共5个…
每次操作,偶数(2除外)都由该数减1和该数的2倍得来,奇数只由该数的2倍得来
各次操作的操作对象个数为:1,1,2,3,5,8,13,21,34,…
本题可以通过所给的变换规律,由易到难,确定操作可变为1的数组成斐波拉契数列,再根据所发现的规律求出经过9次操作变为1的数的个数。

 

算法编程题:

1、给定一个字符串,求出其最长的重复子串。
思路:使用后缀数组,对一个字符串生成相应的后缀数组后,然后再排序,排完序依次检测相邻的两个字符串的开头公共部分。

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#define MAXCHAR 5000 //最长处理5000个字符  
char c[MAXCHAR], *a[MAXCHAR];  
int comlen( char *p, char *q ){  
    int i = 0;  
    while( *p && (*p++ == *q++) )  
        ++i;  
    return i;  
}  
int pstrcmp( const void *p1, const void *p2 ){  
    return strcmp( *(char* const *)p1, *(char* const*)p2 );  
}  
int main(  ){  
    char ch;  
    int  n=0;  
    int  i, temp;  
    int  maxlen=0, maxi=0;  
    printf("Please input your string:\n");  
    while( (ch=getchar())!='\n' ){  
        a[n]=&c[n];  
        c[n++]=ch;  
    }  
    c[n]='\0';  
    qsort( a, n, sizeof(char*), pstrcmp );  
    for(i=0; i<n-1; ++i ){  
        temp=comlen( a[i], a[i+1] );  
        if( temp>maxlen ){  
            maxlen=temp;  
            maxi=i;  
        }  
    }  
    printf("%.*s\n",maxlen, a[maxi]);  
    system("PAUSE");  
    return 0;  
}  
   

 

 

posted @ 2012-04-18 17:01  A_zhu  阅读(347)  评论(0编辑  收藏  举报