zoukankan      html  css  js  c++  java
  • 笔试相关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球称重问题
  • 相关阅读:
    Android Studio 字体和字号调整
    【IDEA】项目中引入Spring MVC
    【Double】double精度问题和int、long除不尽取舍问题
    【进制转换】原码反码和补码的理解以及进制转换
    【工具】SwitchHost的使用
    【工具】谷歌浏览器使用技巧
    【Git和GitHub】学习笔记
    【IE兼容性】代码中多语言样式+IE不兼容解决
    【Trello】使用指南
    【实操】进制转换:除基倒取余法
  • 原文地址:https://www.cnblogs.com/michaely/p/2701333.html
Copyright © 2011-2022 走看看