c++面试常考的知识点汇总

1. 链表和顺序表的优缺点,在什么场合下适合顺序表,什么场合下适合用链表。

1)顺序表存储
   原理:顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快。但是不可以动态增加长度
   优点:存取速度高效,通过下标来直接存储,访问速度快,通过下标访问
   缺点:a.插入和删除比较慢,b.不可以增长长度    
   比如:插入或者删除一个元素时,整个表需要遍历或移动元素来重新排一次顺序
2)链表存储
   原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题
   优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可
   缺点:查找速度慢,因为查找时,需要循环链表访问
3)应用场景:频繁的查找却很少的插入和删除操作可以用顺序表存储,如果频繁的插入和删除操作很少的查询就可以使用链表存储

2、什么是缺省参数?

定义所谓缺省参数,顾名思义,就是在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,你就无须指定该参数。缺
省参数使用主要规则:调用时你只能从最后一个参数开始进行省略,换句话说,如果你要省略一个参数,你必须省略它后面所有的参数,即:带缺省值的参数必须放在参数表的最后面。 缺省值必须是常量。显然,这限制了缺省参数的数据类型,例如动态数组和界面类型的缺省参数值只能是 nil;至于记录类型,则根本不能用作缺省参数。 缺省参数必须通过值参或常参传递。声明是带有缺省参数的函数,则缺省值只能写在声明当中。

1). 如果函数已经带有缺省参数的函数原型声明,则在该函数的定义中不允许出现缺省值。
2). 一旦为函数的某个参数指定了缺省值,则必须为后续参数也定义缺省值,从右到左定义缺省参数。
        void showmessage(char *text,int length=1,int color ) ; //错color也应定义缺省值。
3). 调用函数时,如果略去一个参数传递,则略去后续所有参数传递,调用时将参数从左至右,逐一传递给行参。
       showmessage("hello");
       showmessage("hello",5);
       showmessage("hello",5,8);
       showmessage("hello", ,8);          // 错误

5、什么是引用? 引用有什么作用? 引用和指针有什么区别?
6、什么是函数重载,函数重载底层是怎么实现的? C语言中为什么不能支持函数重载?extern “C” 是什么意思?
7、列出常见的函数调用约定?
8、什么命名空间?它有什么用?

9、什么是结构体?结构体是如何进行内存对齐的? 结构体有什么作用?
10、C++中类和结构体有什么区别? C语言中结构体和C++中结构体有什么区别?
11、写一个函数:获取结构体中某个成员相对于结构体起始位置的偏移
12、什么是类?如何定义一个类?C++有几种访问限定符? C++的三大特性?什么是封装?
13、C++有几种作用域?分别是什么?
14、空类的大小是多少?为什么?

15、什么是this指针?this指针具有什么特性?C++是如何将成员函数和对象绑定在一起的?
16、什么是构造函数?构造函数的作用?构造函数有什么特性?在什么时候调用的?什么是缺省的构造函数?编译器在什么情况下会合成缺省缺省的构造函数?假如类中已经定义了构造函数? 编译器还会在合成吗?
17、什么是初始化列表?类中的数据成员是怎么来初始化的?那些数据成员必须要在类的初始化列表中初始化?为什么?
18、explicit关键字是什么意思?
19、什么是拷贝构造函数?拷贝构造函数是在什么时候调用的?为什么拷贝构造函数的参数必须是引用?如果不是引用,会造成什么后果?
20、什么是析构函数,析构函数有什么特性?在什么时候掉用的?
21、什么是运算符重载?运算符重载有什么特性?那些运算符不能重载?如何重载=和<<、>>运算符?运算符重载时要注意什么?[]、–>、前置++和后置++重载
22、什么是友元,友元有什么特性? 友元的优缺点?
23、什么是类的静态成员?静态数据成员会不会计算在对象的大小中?它有什么特性?静态成员函数中可以调用非静态成员函数吗?非静态成员函数中可以调用静态成员函数吗? 为什么?
24、C/C++中的const有什么区别? const修饰类的成员函数时又什么作用?可以修饰类的构造函数吗? 可以修饰普通的全局函数吗? const对象可以调用非const的成员函数和const成员函数吗?非const对象可以调用const成员函数和非const成员函数吗?const成员函数可以调用非const和const成员函数吗?非const成员函数可以调用const和非const成员函数吗? 为什么?
25、什么是内敛函数?内敛函数有什么优缺点?内敛函数和宏函数有什么区别?既然宏有缺陷为什么C++中没有将宏去掉呢?

26、说说C语言内存管理方式,C++内存管理方式,malloc/realloc/calloc之间的区别?Malloc/free和new/delete new[]/delete[] 之间的区别?

27、什么是操作符new,new 操作符和定位表达式? 定位表达式一般是怎么用的?
28、什么是深拷贝浅拷贝? 给出String类普通版/简洁版/引用计数版三种不同处理方式
29、什么是继承? private、protected和public三种继承方式之间的区别? 什么是赋值兼容规则?什么是Is-a,什么是has-a? 继承体系中构造函数和析构函数的调用顺序?友元和静态成员是否可以继承? 理解单继承、多继承、菱形继承、菱形虚拟继承的对象模型

30、什么是多态? 多态的实现原理? 什么是虚表,虚表使用来干什么的? 多态调用时怎么来实现的?什么是动态绑定和静态绑定?多态有什么优缺点? 什么是重载、覆盖,重写?掌握带有虚函数的单继承、多继承、菱形继承以及菱形虚拟继承的对象模型,什么是纯虚函数?什么是抽象类?
31、什么是泛型编程,函数模板的概念、实例化,模板的参数推演,模板参数列表,函数模板的重载,实例化;类模板,类模板的实例化,特化以及类型萃取? 什么是模板的分离编译?

32、auto_ptr、scoped_ptr、shared_ptr的区别?什么是智能指针的循环引用? 为什么要定制删除器,如何定制?
33、写出C++中的四种类型转化

34、什么是异常,异常的剖出和捕获,异常捕获的匹配规则,异常规范

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值