1 关于多态,面向对象的几个要点
作为面向对象的程序员,这个问题是必须要弄清楚的,网上、教科书上都是标准答案,关键是理解内涵哦。

2 关于虚函数表和RTTI
这个Inside C++ Object Model讲的相当明确
虚函数表的第一项就是关于RTTI的,RTTI就是Run Time Type Identification。
后面就是虚函数指针项了。
 
3 C++对象的内存布局
在引入了虚函数、继承、多继承、虚拟继承后,再加上内存对齐,这个问题就不那么简单了。
 
4 构造函数、析构函数与虚函数
一系列问题,作为一个C++程序员,这个务必要搞清楚。
 
5 虚函数的缺省参数问题
代码估计更能描述清楚问题:
class A
{
public:
    virtual void function(int type = 0) {...}   
}
 
class B : public A
{
public:
    virtual void function(int type = 2) {...} // 注意这里type缺省值被改成了2
}
这样改有什么问题呢?
我们知道virtual是动态绑定的,为了效率考虑,缺省参数是静态绑定的,使用的是基类的缺省参数。这样一来上面的做法就会出现问题了。
如果能使用静态绑定和动态绑定来解释这个问题,那你就上了一个台阶了,我是从来没这样用过啊,不知道问题所在。有文章说没有吃过苦头的C++程序员不是好程序员,驯服不了C++这个怪物,此言非虚!?
 
6 关于运算符
重载的问题,运算符和函数
 
7 关于new与delete的形式

 
8 关于private继承
不知道多少人用过,用了又能有多少好处,而且有些语言已经禁止private继承了,纠缠这个有何意义呢。
 
9 关于STL的Iterator
STL有很多牛思想,不过我还没被问过,像Traits编程技法等等。面试常见的是,++前置与后置的效率问题。

为了编译器区分前置和后置++,C++规定后置形式有一个int类型参数 ,当函数被调用时,编译器传递一个0做为int参数的值给该函数。不这样规定,无法区分,因为都仅以自身对象为入参。

class  CInt  {
private:
int m_value;
//
CInt & CInt:: operator ++ () // 前置的是没有参数的,并且返回引用
{
this->m_value += ;
return *this;
}
const CInt CInt::operator++ (int) // 后置的有一个匿名参数,并且返回const值
{
CInt old = *this;
++(*this);
return old;
}
};

上面的实现解释了一个关键问题:前置比后置效率高 ,后置需要构造临时对象并返回。

为什么前置和后置返回参数不同呢

前置仅仅是对自身进行运算,并将自身返回,这样外面可以直接对这个返回对象再进行操作 ,如(++it)->function()。

后置因其返回的不是原来的对象,此时再进行额外操作,改变的是临时对象的状态,并不异义 ,容易误解。

那为什么不返回const &呢?因为不能这么做,返回引用将无效,临时对象已经不存在了。

所以后置返回const 对象即限制对此临时对象进行误操作,并显式地告诉调用者此对象仅为原对象的副本。

10 关于C++的异常
C++有异常处理机制,虽然不够完善,但还是应该去仔细了解了解。
 
11 关于C++与C的效率问题
      这个问题最不好讲,效率的比较,环境是什么,先决条件又是什么呢,从语言层面讲C++比起C语言来主要的效率损失来自于virtual导致的非直接调用,这个Inside C++ Object Model讲的相当明确了。

c++面试问题的几个方向的更多相关文章

  1. [灵魂拷问]MySQL面试高频100问(工程师方向)

    作者:呼延十 juejin.im/post/5d351303f265da1bd30596f9 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉 ...

  2. 2014面试总结--java、数据 方向

    这里不讲详细的题目.仅仅是总结一下体会. 好一点的公司考察的都比較全面,主要看你对原理性的理解.还有你的思维逻辑:就眼下来讲,对深度的考察大于广度.而我个人如今这个阶段也比較专注于深度. 列一些常常问 ...

  3. 【转】阿里2015校招面试回忆(成功拿到offer)

    原文转自:http://blog.jobbole.com/78722/ 1. 引言 继上次<百度2015校园招聘面试题回忆(成功拿到offer)>文章过后,大家都希望除了题目之外,最好能给 ...

  4. 阿里2015回顾面试招收学历(获得成功offer)

    1. 引言 继上次"百度2015校园招聘面试题回顾录(成功拿到offer)"文章过后,大家都希望除了题目之外.最好能给出自己当时的回答情况,看看有没有什么回答技巧,这样更有參考价值 ...

  5. ofo C++面试

    面试官不是C++方向,所以上来就是三个算法题. 1. 假设一个男生和他女朋友约吃饭,男生到的时间点是 6 点 到6点半,女生到的时间可能是 6点15到6点30,都是等概率的到达,问男生比女生到的晚的概 ...

  6. 写在19年初的后端社招面试经历(两年经验): 蚂蚁 头条 PingCAP

    去年(18年)年底想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer.想着可以总结一下经验,分享一下自己这一段"骑驴找马"过 ...

  7. 阿里2015校招面试回忆录(成功拿到offer)

    1. 引言 继上次“百度2015校园招聘面试题回忆录(成功拿到offer)”文章过后,大家都希望除了题目之外,最好能给出自己当时的回答情况,看看有没有什么回答技巧,这样更有参考价值. 嗯,建议的很对, ...

  8. HR面试:过五关斩六将后,小心阴沟翻船!(史上最全、避坑宝典)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  9. 记2014“蓝桥杯全国软件大赛&quot;决赛北京之行

    5月29,30日 最终到了这一天.晚上有数据结构课,10点多的火车,我们就没有去上课,下午在宿舍里收拾东西,晚上8点左右从南校出发,9点半多到达火车站和老师学长学姐们会和. 第一次去北京,第一次买的卧 ...

随机推荐

  1. CircuitBreaker design pattern---reference

    It's common for software systems to make remote calls to software running in different processes, pr ...

  2. Cesium加载影像

    注意:使用自定义数据源时,Cesium.Viewer类参数必须设置为 baseLayerPicker:false A. 使用天地图数据源 //天地图var provider=new Cesium.We ...

  3. Install-Package : “XXXX”已拥有为“XXXX”定义的依赖项。

    Install-Package : “AutoMapper”已拥有为“NETStandard.Library”定义的依赖项.所在位置 行:1 字符: 16+ Install-Package <& ...

  4. Asp.net MVC中文件上传的参数转对象的方法

    参照博友的.NET WebApi上传文件接口(带其他参数)实现文件上传并带参数,当需要多个参数时,不想每次都通过HttpContext.Request.Params去取值,就针对HttpRequest ...

  5. vue学习图解

    vue2.0版本的学习图解个人心得!本文为原创禁止转载!!转载需要注明出处,谢谢合作!!!

  6. Codeforces_765_D. Artsem and Saunders_(数学)

    D. Artsem and Saunders time limit per test 2 seconds memory limit per test 512 megabytes input stand ...

  7. day21-1 类的继承

    目录 类的继承 什么是继承 为什么用继承 对象的继承 继承与抽象 继承的应用 对象属性查找顺序 类的继承 什么是继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承) ...

  8. 梦想CAD控件网页版线型

    增加线型 主要用到函数说明: _DMxDrawX::AddLinetype 增加一个线型定义.详细说明如下: 参数 说明 BSTR pszName 线型名 BSTR pszLineDefine 线定义 ...

  9. vue之基础---组件基础

    (1)基本示例 Vue组件示例 /* 先注册组件,定义一个名为button-component的新组件 */ Vue.component('button-component',{ data:funct ...

  10. nginx平滑升级实战

    Nginx 平滑升级 1.查看旧版Nginx的编译参数 [root@master ~]# /usr/local/nginx/sbin/nginx -V [root@master ~]# ll ngin ...