这两周参加了3家公司的面试,一家是做嵌入式的外企,一家是做智能家居的初创公司,一家是做网络分析的公司。

  通过参加面试,越发的觉得语言只是基础,虽然都是计算机领域,但是不同的业务肯能用到的技术不同,所以需要针对自己申请的岗位做一些额外的知识点整理,比如嵌入式的岗位需要准备计算机组成原理等偏底层的知识点;智能家居和网络分析可能就网络知识需要的多一些。但是基础也要准备好,今天是第一次在博客园写博客,从今天开始我要坚持写博客,及时把知识点整理归纳,让知识体系化。

  言归正传,下面就记录一下,这几次面试遇到的考点吧!

 一、修饰符

  1、const,涉及指针的底层const和顶层const

    名词顶层const(top-level-const)表示指针本身是个常量,而名词底层const(low-level-const)表示指针所指向的对象是一个常量。

    example:

      int i = 0;

      int *const p1 = &i; // 不能改变p1的值,这是一个顶层const

      const int ci = 42; // 不能改变ci的值,这是一个顶层const

      const int *p2 = &ci; // 允许改变p2的值,这是一个底层const

    PS: 记忆技巧,看const修饰符后面跟的是什么,int *const p1,const后面是p1表示p1是常量;const int *p2,const后面是int表示指针指向的对象是常量。

  2、static

    staitic修饰的成员是类所有对象所共享的,静态成员是存储在静态存储区的,因此使用sizeof运算符时,类的大小并不包含static成员。

    

  3、派生访问说明符

    C++中,一个类可以被另一个类继承,被继承的类称为基类(或父类),继承的类称为派生类(或子类)。通过继承机制,可以使数据仅在有继承关系的类中才可见,安全性得到了保证。

    派生访问说明符的目的是控制派生类用户(包括派生类的派生类在内)对于基类成员的访问权限:

                派生访问说明符对基类访问权限的影响

行表头->派生访问说明符
列表头->基类访问权限
内容->基类访问权限在相应的派生访问说明符下权限改变
  public protected private
public public  protected  private
protected protected  protected private
private X X X

    PS:派生访问权限会影响基类成员在派生类中的访问权限,如上表。

 二、构造函数和析构函数

  1、构造派生类时,各个构造函数和析构函数的调用顺序

    构造调用顺序:基类构造函数->派生类成员构造函数->派生类的构造函数。

    析构调用顺序:派生类的析构函数->派生类成员的析构函数->基类析构函数。

    PS:实际上编译器会把基类和派生类成员的初始化插入派生类构造函数最前面。派生类成员初始化顺序与成员在类中声明次序相关,而与初始化列表无关。

  2、拷贝构造函数

    涉及到深拷贝时需要自己重写拷贝构造函数,避免指针指向非法空间。

    PS:同时,析构函数中也要注意释放空间。

 三、内存

  1、内存对齐

    编译器默认是4字节对齐

    

    sizeof(Data) = 12;

    c_a对齐为4字节,s_c对齐为4字节。

 

----------------------------------分割线---------------------------------

今天就先记到这里,接下来慢慢补充。

严于律己,宽于待人。