zoukankan      html  css  js  c++  java
  • 腾讯笔试

    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

    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

    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、该类的静态数据成员变量的值不可修改

    6、已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key) = key%7计算散列地址,并散列存储在散列表A【0....6】中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为(C

    A、1.5                  B、1.7                           C、2.0                       D、2.3

    依次进行取模运算求出哈希地址:

    A

    0

    1

    2

    3

    4

    5

    6

    记录

    63

    48

     

    38

    25

    74

    52

    查找次数

    1

    3

     

    1

    1

    2

    4

    74应该放在下标为4的位置,由于25已经放在这个地方,所以74往后移动,放在了下标为5的位置上了。

    由于是等概率查找,所以结果为:1/6*(1+3+1+1+2+4)= 2.0

    7、表达式“X=A+B*(C--D)/E”的后缀表示形式可以为(C

    A、XAB+CDE/-*=                     B、XA+BC-DE/*=                      C、XABCD-*E/+=                         D、XABCDE+*/=

    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、到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少?

    12、题目:已知rand7() 可以产生 1~7 的7个数(均匀概率),利用rand7()  产生rand10()   1~10(均匀概率)

    记住这道题重点是:均匀概率

    1. //rand7 产生的数概率是一样的,即1~7出现概率一样,由于我们对结果做了一定的筛选只能通过 1~5,而1~5出现的概率也是一样的,又由于范围为1~5 所以 temp1 出现 1~5的概率 为1/5 ,同理 后面的 出现 temp2 的概率为 1/2  
    2. //首先temp1出现在1~5的概率为1/5,而temp2出现 1~2 的概率为1/2,也就是说 5*(temp2-1) 出现5或0的概率为1/2,所以假如你要得到1~5的数的话 那么 5*(temp2-1) 必须0,所以因为你要保证 5*(temp2-1)=0,这个概率只有1/2,再加上 你前面指定1~5 的概率 为1/5 ,所以结果为 1/5*1/2=1/10  
    3. int rand10()  
    4. {  
    5.     int temp1;  
    6.     int temp2;  
    7.     do  
    8.     {  
    9.         temp1 = rand7();  
    10.     }while(temp1>5);  
    11.     do  
    12.     {  
    13.         temp2 = rand7();  
    14.     }while(temp2>2);  
    15.     return temp1+5*(temp2-1);  
    16. }  

    int rand7()

    {
        int x=0;
        do
        {
            x=(rand7()-1)*7+rand7();
        }
        while(x>40);
        return x%10+1;

    }

    13、给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。

    算法编程题:

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

    生成后缀数组 O(N)
    排序 O(NlogN*N) 最后面的 N 是因为字符串比较也是 O(N)
    依次检测相邻的两个字符串 O(N * N)
    总的时间复杂度是 O(N^2*logN), 

  • 相关阅读:
    get_folder_size.ps1
    python3-database-shelve
    Windows中实现不依赖账户登录的开机启动程序
    SpringBoot+SpringDataJPA如何实现自定义且自由度高的查询[多表,多查询条件,多排序条件,分页,自定义sql封装]
    Windows phone 8.1之数据绑定(Data Binding)
    TextBox使用技巧--转载
    在Eclipse中使用git把项目导入到git中--转载
    运用多种知识点实现一个综合小游戏
    Git帮助之初始化项目设置向导
    如何从Eclipse导入github上的项目源码--转载
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2221779.html
Copyright © 2011-2022 走看看