C++ 面试实战经验分享

最近面试了很多家公司,除了算法题,一部分面试官会问到程序语言(C++)相关的知识,也有的会到面向对象设计相关的知识。下面是一些我被问到的知识点,我把想到的答案整理了一下,欢迎大家批评指正。

C++ 语言特性

const

  • const 的几种用法,如:常成员函数,不得修改类中的任何数据成员的值函数 int getValue() const; (有一个面试官一口气给我写了三四个例子让我解释)
  • Q: What if xxx is immutable? A: use const keyword (算法题 follow-up)

inline 内联函数和宏的区别

  • 宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的
  • inline 内联函数有类型检查,具有函数特性;
  • Q:推荐使用哪个?A:内联函数,减少二义性。

虚函数表

为了实现 C++ 的多态,C++ 使用了一种动态绑定的技术。这个技术的核心是虚函数表。(填空题)

指针和引用的区别

  • 指针是存放变量地址的变量,可以被改变(其指向的地址,或者其指向的地址中所存放的数据)
  • 引用必须被初始化,其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)
  • 指针传递参数和引用传递参数
    • 指针:值传递的方式,在栈中开辟了内存空间存放实参的值,从而成为了实参的一个副本,不会影响主调函数的实参变量的值。
    • 引用:被调函数的形式参数作为局部变量在栈中开辟了内存空间,存放实参变量的地址,被调函数对形参的任何操作都被处理成间接寻址,,所以被调函数对形参的操作会影响主调函数中的实参变量。
  • Q:数组和指针的区别?(我被一家公司的两个面试官问了这个问题,应该是题库里的。)
  • A:数组和指针本质上都代表一块内存,数组名即代表这块内存的地址,而指针本身不代表任何有意义的内容,只有赋值后,才表示一块有意义的内存地址。两者定义的时机不同:数组在编译时就已经被确定下来,而指针直到运行时才能被真正的确定到底其指向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值