zoukankan      html  css  js  c++  java
  • 优酷土豆笔试题

    一.选择题:
        1. A,B,O,AB血型的比例为:10%,20%,30%,40%,现在选择一批人,如果需要这批人中,至少有一个是B型血的概率不小于90%,那么至少应该选择几个人?

            A.9     B.10     C.11     D:12
            解析:题目要求,至少有一个是B型血,那么我们可以求:一个B型血也没有,假设选择x个人,则有1-0.8^x >=0.9 即求0.8^x <= 0.1 。解之得x至少为11
        2. 二分查找,假设查找的记录数为627647,最坏情况下需要查找多少次?

            A: 17   B:18     C:19     D:20
           解析:二分查找,最坏情况下,是在最后一个区间才能查找到记录数(或失败),需要的查找次数最多为ceil(logn),即取上限,
        3. 4只老鼠,A说:今晚我们都偷奶酪了 B:我只偷樱桃了。c:我没偷奶酪 D:我们之中有人没偷奶酪。它们4个只有一个是对的,问是哪一个?

            A: A    B: B     C: C     D: D
            解析:一个一个进行假设,推出悖论即可。例如,假设只有B是对的,那么B只偷了樱桃,那么推出D也是对的,与只有一个是对的矛盾,故不对。A是对的。
        4. 快速排序的平均和最坏情况下的时间复杂度是:

            A:O(n) ,O(n)  B:O(n^2),O(n^2)  C:O(nlogn),O(nlogn)  D:O(nlogn),O(n^2)
            解析:快排的性能:平均时间复杂度O(nlogn),最坏情况下的时间复杂度 O(n^2),最坏情况产生的条件:每次划分的结果都是1个元素和n-1个元素。则快速排序退化,需要的时间复杂度为O(n^2)
        5.数据库中E-R图转化为关系模型,下面错误的是?

            A.一个实体转换为一个关系模型
            B.一个关联转换为一个关系模型
            C.实体转换为关系模型时,实体的主键就是关系模型的主键
            D.关联转换为关系模型时,关系模型的主键是所有关联实体的属性及联系本身的属性。

       解析:E-R图转换为关系模型的原则有:

        (1)一个实体型转换为一个关系模式。
        关系的属性:实体型的属性。
        关系的码:实体型的码。

        (2)一个m:n联系转换为一个关系模式。
         关系的属性:与该联系相连的各实体的码以及联系本身的属性。
         关系的码:各实体码的组合。

       (3)  一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并  

       (4) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
        6.高度为h二叉树的二叉树的节点数最多有()个,根节点的高度为1?

            A. 2^h   B.2h    C.2^(h-1)   D.2^h - 1

          解析:满二叉树的节点数最多,最多为2^h -1个节点
        7.忘记
        8.忘记
        9. 序列 6,7,4,2,8,1,___下一个数字最有可能是几?

            A.6      B.7       C.8      D.9
         解析:观察规律:6*7 = 42    ,4*2 = 8 ,  2*8=16 则下一个数字应该为6
        10.下面的程序,while循环会执行多少次?

            unsigned char k = 20;
            while(k>=0){
                k--;
            }
            A. 20次   B.一次也不执行   C.无限循环   D.21次

        解析:注意k是unsigned char类型,也就是无符号字节型的,故k>=0始终是成立的,因而会无限循环
        11.对于一个非空二叉树。下列说法错误的是:

            A.有两个子节点的节点数一定比没有子节点的节点数少1。
            B.深度为h的二叉树节点最底层最多含有2^h个节点(根的深度度为0)
            C.根据二叉树的前序和中序遍历结果,一定可以求出后序遍历结果。
            D.堆一定是一个完全二叉树。
            解析:堆不一定按照完全二叉树组织。完全二叉树是堆的一种实现形式。
        12.下列排序需要的空间复杂度最大的是?()

            A.冒泡排序     B.快速排序    C.堆排序    D.希尔排序

           解析:冒泡排序和堆排序需要一个额外的元素来实现交换,希尔排序需要记录增量的一个变量。 快速排序的递归实现则需要一个栈空间来实现递归,平均情况下,需要O(nlgn)的额外空间  
        13. 王sir家有两个孩子, 其中一个是女孩子,请问另外一个也是女孩子的概率是()?

            A. 1/4         B.1/2         C.1/6       D.1/8    
            解析:独立事件的概率    1/2
        14.以下哪一个不属于链表优于数组的表现?()

            A.插入方便     B.删除方便    C.插入删除时不需要移动元素  D.更加节省存储空间。
            解析:由于链表需要额外的空间记录指针等,因而实际上比数组更加浪费空间(不够紧凑)
        15.以下哪一个不是单链表的特点?____

            A.插入方便
            B.删除方便
            C.可以直接访问链表的第i个元素。
            D.插入和删除时不需要移动元素。
           解析:单链表不支持随机访问,访问节点需要从头指针遍历。
        16.下列程序中,执行test()函数后的结果是:

            void test(){
                class B{
                    public:
                        B(){
                            cout<<"B\t"<<endl;
                        }
                        ~B(){
                            cout<<"~B\t"<<endl;
                        }
                };
                struct C{
                    C(){
                        cout<<"C\t"<<endl;
                    };
                    ~C(){
                        cout<<"~c\t"<<endl;
                    };
                };
                struct D:B{
                    D(){
                        cout<<"D\t"<<endl;
                    };
                    ~D(){
                        cout<<"~D\t"<<endl;
                    };
                    C c;   
                };
                D d;
            }
            A.   D  C  B  ~B   ~C   ~D
            B.   B  C  D  ~D   ~C   ~B
            C.   C  B  D  ~D   ~B   ~C
            D.   C  D  B  ~B   ~D   ~C    
        解析:实例化时,父类比子类先实例化。析构时,顺序相反
        17.到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少?

            A. 75%
            B. 66.7%
            C. 60%
            D. 33.3%
            解析:相当于花费200元买到价值300元的东西,则折扣为(300-200)/300 = 33.3%
        18.const  char * const p下列的操作正确的是:

            A. p++
            B.(*p)++;
            C.*p = null;
            D.以上都不对
            解析:指针和指针所指的空间都被修饰为const,是不允许修改的      

        19.
        20.
    二.填空题:

        1.冒泡排序的时间复杂度是__O(n^2)__

        2.中奖概率:3个箱子,有一个有奖,抽取一个,然后主持人打开一个空的(无奖),然后问是否更换,问下不更换抽中的一个中奖的概率是    1/2  ?,更换为另外一个箱子中奖的概率是_1/2_?

        3.高度为h的二叉树,最底层最多有__2^h__个节点,?   
        4.四个节点的二叉树共有__14__种形态?

         解析:含有n个节点的二叉树的形态的数字为卡特兰数  C(2n,n)/(n+1)
        5.下面程序的输出是?_1,3,2_
            void test(int *a,int *b){
                *a = *a + *b;
                *b = *a - *b;
                *a = *a - *b;
            }
            int a = 1,b =2,c = 3;
            test(&a,&b);
            test(&b,&c);
            test(&a,&c);
            printf("%d,%d,%d",a,b,c);

       解析:test()实现两个数交换。
        6.数组a[60][70],按照列优先存储,每个元素占据2个单元。假设a[0][0]的地址是1024.则a[32][58]的地址是:    8048__

        注意是列优先存储。
        7.对于无序数组20,18,22,19,16,21,32.将数组按照升序排列,以元素20为枢轴元素,则快速排序一趟的结果是_18,16,19,20,22,21,32__

        8.c语言中的参数传递方式有_  值__传递和_引用__传递

        9.忘记
        10.忘记
    三。问答题
        1. 单向循环链表,从头开始报数,报道m或其倍数时,出列,按照出列的先后顺序从新组织单链表
           函数原型为: void convert(Node**head,int m);

             解析:约瑟夫环的形式。head为二级指针,是重新组织后的循环单链表的表头。
        2. 海量数据Top100
            a.一天的优酷视频播放量约1亿,视频总数约有100w。ID号是一个大小为20字节的字符串。如何求出当天播放视频的Top100
              可抽象为一个大文件,每行一个ID号,代表被播放的视频id。机器的内存不超过1G,如何抽取TOP100.先写思路,然后写程序。
            b.同样一个月的视频播放量约100亿。求出当月的视频播放top100,每台机器的内存不超过1G.描述所有可能的解决方案。

        解析:海量数据的处理。无法一次性装入内存,可先hash之分为多个文件处理,堆或者Trie树统计次数,求出每个文件中的Top 100。归并之求出总的top 100

      对于第二问:还可以hadoop mapReduce处理之。
        3. 1-n中找缺失的数字,有n-1个数字,每一个都位于1-n之间,但是之中缺失了一个数字,要求找出这个缺失的数字,线性时间复杂度

    解析:异或。原理:相同的数异或为0,0与其他数异或结果为该数。

  • 相关阅读:
    try? try! try do catch try 使用详解
    Swift Write to file 到电脑桌面
    NSLayoutConstraint 使用详解 VFL使用介绍
    automaticallyAdjustsScrollViewInsets 详解
    Swift 给UITableView 写extension 时 报错 does not conform to protocol 'UITableViewDataSource'
    OC Swift中检查代码行数
    Swift中 @objc 使用介绍
    SWift中 '?' must be followed by a call, member lookup, or subscript 错误解决方案
    Swift 中 insetBy(dx: CGFloat, dy: CGFloat) -> CGRect 用法详解
    求1000之内所有“完数”(注:C程序设计(第四版) 谭浩强/著 P141-9)
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2766989.html
Copyright © 2011-2022 走看看