C++面试常见考点
这两周参加了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字节。
----------------------------------分割线---------------------------------
今天就先记到这里,接下来慢慢补充。
严于律己,宽于待人。
C++面试常见考点的更多相关文章
- Python面试常考点之深入浅出链表操作
Python面试常考点之深入浅出链表操作 在Python开发的面试中,我们经常会遇到关于链表操作的问题.链表作为一个非常经典的无序列表结构,也是一个开发工程师必须掌握的数据结构之一.在本文中,我将针对 ...
- LeetCode面试常见100题( TOP 100 Liked Questions)
LeetCode面试常见100题( TOP 100 Liked Questions) 置顶 2018年07月16日 11:25:22 lanyu_01 阅读数 9704更多 分类专栏: 面试编程题真题 ...
- HTML&CSS面试高频考点(二)
HTML&CSS面试高频考点(一) ♥ 6. W3C盒模型与怪异盒模型 标准盒模型(W3C标准) 怪异盒模型(IE标准) 怪异盒模型下盒子的大小=width(content + bord ...
- java异常面试常见题目
在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...
- JavaScript面试核心考点(精华)
引言 Javascript是前端面试的重点,本文重点梳理下 Javascript 中的常考基础知识点,然后就一些容易出现的题目进行解析.限于文章的篇幅,无法将知识点讲解的面面俱到,本文只罗列了一些重难 ...
- Java面试常见知识点总结(三)
21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...
- Java集合排序(面试必考点之一)
集合是Java面试必考知识点,而集合的排序也是非常重要的,工作中经常用到,那么这个知识点也是必须要掌握的,下面是我曾经面试时被面试官问的问题: 根据API可知,Java集合的工具类Collection ...
- python基础面试常见题
1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途径学习的Python? 通过自学,包括网上查看一些视频,购买一 ...
- 大数据测试之ETL测试工具和面试常见的问题及答案
转载自: http://www.51testing.com/html/87/n-3722487.html 概述 商业信息和数据对于任何一个企业而言都是至关重要的.现在很多公司都投入了大量的人力.资金和 ...
随机推荐
- JSX语法
什么是JSX语法:就是符合 xml 规范的 JS 语法:(语法格式相对来说,要比HTML严谨很多) 1. 如何启用 jsx 语法? 安装 `babel` 插件 - 运行`cnpm i babel-co ...
- python基础之 026 包以及包的引入
内容梗概: 1. from xxx import xxx知识点补充 2. 包 1. 知识点补充. 我们现在知道可以使⽤用import和from xxx import xxx来导入一个模块中的内容.那有 ...
- dfs的一个小实现(啊哈算法的例题)
给定n个盒子,将n个小球放进这些盒子里,判断都有多少种情况 写深度优先搜索最重要的是理解当前步怎么做,下一步就当系统已经帮你实现好了(因为只要写好当前步,下一步解决方法和当前步是一样的). #incl ...
- WDA基础十三:常用模板管理
常用的模板一般是SMW0和OAOR,根据不同需求来的. WAD有个不好的地方就是不支持GUI上的OLE和DOI,所以需要做转换,下面是常用的方式: FUNCTION ZCRM_DOWNLOAD_TEM ...
- java旅程(二) 基本语法
java变量: 数值型 整数类型(byte,short,int,long)浮点类型(float,double) 字符型 char 基本数据类型 ...
- Const的使用
const意味为readonly,即只读,const可被施加于任何作用域内的对象,函数参数,函数返回类型,成员函数本体 使用: const修饰变量时本质是 const在谁后面谁就不可修改,const在 ...
- 前端基础之html常用标签
前言: 1.在B-S模式下,server服务端和客户端之间 使用http协议(规定 客户端应该怎么请求服务端,服务端应该怎么响应)通信: 2.传输过程 浏览器 向服务端发起 post/get请求 服务 ...
- Java反序列化修复方案
1)下载与当前大版本相同的commons-collections包(原来是3.2.x就替换为3.2.2,原来是4.x就替换为4.4.1) 下载链接:http://commons.apache.org/ ...
- Easyui的datagrid的行编辑器Editor中添加事件(修改某个单元格带出其他单元格的值)
项目中有个datagrid需要编辑行时,用到Editor的属性,那么如何添加一个事件 问题:同一个编辑行中的某个单元格值改变时,修改其他单元格的值 页面用到的datagrid <table id ...
- Java Web(二) Servlet详解
什么是Servlet? Servlet是运行在Web服务器中的Java程序.Servlet通常通过HTTP(超文本传输协议)接收和响应来自Web客户端的请求.Java Web应用程序中所有的请求-响应 ...