笔试相关2

1. 关于Cookie和Session的概念哪一树是正确的

A. Cookie存储在客户端,但过期时间设置在服务器上

B.Session存储在客户端,但过期时间设置在服务器上

C. Cookie中可以存储ASCII空格' ',而session中不行

D. Cookie可以设置生效的路径,而Session则不能

答案选D

 

2. 快速排序的平均和最坏情况下的时间复杂度是:

A:O(n) ,O(n)  B:O(n^2),O(n^2)  C:O(nlogn),O(nlogn)  D:O(nlogn),O(n^2)
答案:D        

解析:快排的性能:平均时间复杂度O(nlogn),最坏情况下的时间复杂度 O(n^2),最坏情况产生的条件:每次划分的结果都是1个元素和n-1个元素。则快速排序退化,需要的时间复杂度为O(n^2)

 

3. 序列 6,7,4,2,8,1,___下一个数字最有可能是几?

  A.6      B.7       C.8      D.9

答案:A

解析:观察规律:6*7 = 42    ,4*2 = 8 ,  2*8=16 则下一个数字应该为6

 

4.下面的程序,while循环会执行多少次?

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

答案:C

解析:注意k是unsigned char类型,也就是无符号字节型的,故k>=0始终是成立的,因而会无限循环

 

5.下列程序中,执行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

答案:B    
解析:实例化时,父类比子类先实例化。析构时,顺序相反

 

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

 

 

7.下面程序的输出是?_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()实现两个数交换。

 

8.堆和栈中_堆_需要手动进行内存释放。

解析:栈是由编译器在程序运行时分配空间区域,由操作系统维护。(局部变量,函数参数等)

        堆是由malloc()函数分配的内存块,内存释放由程序员手动控制,在C中使用free,在C++中使用delete。
 它们的主要区别有:
 1.管理方式不同 
    程序在运行时栈由操作系统自动管理,无需程序员手动控制;而堆空间的申请释放工作由程序员控制,容易产生内存泄露。
 2.空间大小不同
    栈是向低地址扩展的数据结构,是一块连续的内存区域。 
    堆是向高地址扩展的数据结构,是一块不连续的内存区域,系统用链表来存储。
 3.产生碎片不同
    对于堆来讲,频繁的malloc/free势必会造成内存空间的不连续,从而造成大量的碎片。而栈没有。
 4.增长方式不同
 5.分配方式不同
 6.分配效率不同
    堆的分配效率比栈要低得多。
 
9.关于一次称重问题
10.关于12球称重问题
posted @ 2012-09-25 15:42  Michael020  阅读(184)  评论(2编辑  收藏  举报