1 内部名称
C和C++语言实现都会按照特定的规则把用户(程序员)定义的标识符(各种函数,变量,类型,以及命名空间)转换为相应的内部名称。当然,这些内部名称的命名方法还与用户为它们指定的连接规范有关,比如使用C的连接规范,则main的内部名称就是_main。
2 C为什么不支持重载,C++支持重载
部分采摘至《高质量c++/c语言》
其实这个原因,还是要从C和C++的命名规则来看
在C语言中,采用了极其简单的函数名称规则:仅在所有函数名的前面添加前缀“_”,从唯一识别函数的作用上,实际上和不添加前缀没什么区别。
但是C++则采用了不同的重命名规则(Name-Mangling)。同名函数可以根据函数的参数类型,参数个数,参数顺序等等生成不同的内部函数名,从而重载函数。例如在在他们的前面分别添加所属各级作用域的名称(class,namespace等),及重载函数经过编码的参数信息(参数类型,个数),作为前缀或者后缀,产生全局名字Sample_1_foo@pch@1、Sample_1_foo@int@1、Sample_2_foo@pch@1、Sample_2_foo@int@1。这样就可以区分了。另外,标准C++的不同实现会采用不同的Name_Mangling。
c++内存布局
智能指针的用途(以及内部的大概实现)
仿函数
C++特点是什么,多态实现机制?(面试问过)多态作用?两个必要条件?
面向对象的三个基本特征,并简单叙述之?
为什么要把基类的析构函数定义为虚函数
多态的用处(泛型)
C++虚函数是如何实现的?
进程间通信的方式
进程内存空间分布情况
线程间同步的几种方法
各种Linux下的命令(查看磁盘使用率,TCP抓包等等)
虚拟地址空间有多大
面试题
1-100中少一个数,快速缺的找出这个数
1-100中缺少两个数,找出这两个数
TCP半关闭
http有几种方法(常用的 GET,POST,PUT…)
TCP为什么是四次挥手
设计模式