栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > C++面试题库

蓝凌软件C++笔试题收集整理

蓝凌软件C++笔试题收集整理

一, 选择题。

 

差不多都出自高质量C++编程,很简单

 

二, 判断题

同上

 

 

三.问答及编程题

  1. 引用与指针有什么区别?

  1) 引用必须被初始化,指针不必。

  2) 引用初始化以后不能被改变,指针可以改变所指的对象。

  3) 不存在指向空值的引用,但是存在指向空值的指针

 

  1. 什么是平衡二叉树? 

左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1

 

  1. 什么函数不能声明为虚函数? 
      constructor

 

  1. 冒泡排序算法的时间复杂度是什么? 
      O(n^2)

 

  1. 局部变量能否和全局变量重名? 
    答:能,局部会屏蔽全局。要用全局变量,需要使用“::” 
    局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

 

  1. 如何引用一个已经定义过的全局变量? 
    答:extern 
    可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错

 

  1. do……while和while……do有什么区别? 
    答:前一个循环一遍再判断,后一个判断以后再循环

 

  1. 请写出下列代码的输出内容 
    #include<stdio.h> 
    main() 

    int a,b,c,d; 
    a=10; 
    b=a++; 
    c=++a; 
    d=10*a++; 
    printf(“b,c,d:%d,%d,%d”,b,c,d); 
    return 0; 

    答:10,12,120

 

  1. Static用法(至少三种) 
    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 
    从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。 
    static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 
    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; 
    static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; 
    static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

 

  1. 队列和栈有什么区别? 
    队列先进先出,栈后进先出

 

  1. 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? 
    用宏定义,c++用inline

 

  1. 进程和线程的差别。 
    线程是指进程内的一个执行单元,也是进程内的可调度实体. 
    与进程的区别: 
    (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 
    (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 
    (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. 
    (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

 

  1. 一语句实现x是否为2的若干次幂的判断 
    int i = 512; 
    cout << boolalpha << ((i & (i – 1)) ? false : true) << endl;

 

  1. unsigned int intvert(unsigned int x,int p,int n)实现对x的进行转换,p为起始转化位,n为需要转换的长度,假设起始点在右边.如x=0b0001 0001,p=4,n=3转换后x=0b0110 0001 
    unsigned int intvert(unsigned int x,int p,int n){ 
    unsigned int _t = 0; 
    unsigned int _a = 1; 
    for(int i = 0; i < n; ++i){ 
    _t |= _a; 
    _a = _a << 1; 

    _t = _t << p; 
    x ^= _t; 
    return x; 
    }

 

  1. char * const p; 
    char const * p 
    const char *p 

    上述三个有什么区别? 
    char * const p; //常量指针,p的值不可以修改 
    char const * p;//指向常量的指针,指向的常量值不可以改 
    const char *p; //和char const *p

 

  1. 请问以下代码有什么问题: 
    int main() 

    char a; 
    char *str=&a; 
    strcpy(str,”hello”); 
    printf(str); 
    return 0; 

    没有为str分配内存空间,将会发生异常 
    问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。

 

  1. 关键字volatile有什么含意? 
    提示编译器对象的值可能在编译器未监测到的情况下改变。

 

  1. c和c++中的struct有什么不同? 
    c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private

 

  1. 不用库函数,用C语言实现将一整型数字转化为字符串 
    int getlen(char *s){ 
    int n; 
    for(n = 0; *s != ‘’; s++) 
    n++; 
    return n; 

    void reverse(char s[]) 

    int c,i,j; 
    for(i = 0,j = getlen(s) – 1; i < j; i++,j–){ 
    c = s[i]; 
    s[i] = s[j]; 
    s[j] = c; 


    void itoa(int n,char s[]) 

    int i,sign; 
    if((sign = n) < 0) 
    n = -n; 
    i = 0; 
    do{ 
    s[i++] = n%10 + ‘0’; 
    }while((n /= 10) > 0); 

    if(sign < 0) 
    s[i++] = ‘-‘; 

    s[i] = ‘’; 
    reverse(s); 

 

  1. STL算法包括哪些,大概比较下

 

VECTOR。  STRING     LIST   DUQUE   MAP    MULTIMAP    SET

 

VECTOR 是动态数组 方便于查找下标 

list 是链表 方便于插入删除

deque在堆中存放数据

     每个堆存放几个元素 堆和堆之间用指针指向,结合了VECTOR和LIST

  1. 堆HEAP和 栈STACK的区别

 

栈的空间是由系统分配和回收的

堆的空间是由程序员分配和回收的

栈的空间有限  堆的空间相对大很多

在C中 对内存的分配多用MALLOC 在C++中则用NEW

局部变量和函数参数基本上存放在堆空间中

在编译时候对变量和函数的空间分配在栈中进行

 

22.类的静态成员怎么初始化?const和defined的区别?

int Test::i = 0;

宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段。宏的功能很强大,但也容易出错。且没有类型检查。

 

  1. 设计并实现单键模式(自己找下,很简单)

 

  1. 如何判断一个链表里是否有环,编码实现或者大概说明(很多,就不仔细写了)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/265599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号