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 概述 商业信息和数据对于任何一个企业而言都是至关重要的.现在很多公司都投入了大量的人力.资金和 ...
随机推荐
- 『Python』setup.py简介
setup.py应用场合 网上见到其他人这样介绍: 假如我在本机开发一个程序,需要用到python的redis.mysql模块以及自己编写的redis_run.py模块.我怎么实现在服务器上去发布该系 ...
- 『计算机视觉』各种Normalization层辨析
『教程』Batch Normalization 层介绍 知乎:详解深度学习中的Normalization,BN/LN/WN 一.两个概念 独立同分布(independent and identical ...
- 『TensorFlow』SSD源码学习_其四:数据介绍及TFR文件生成
Fork版本项目地址:SSD 一.数据格式介绍 数据文件夹命名为VOC2012,内部有5个子文件夹,如下, 我们的检测任务中使用JPEGImages文件夹和Annotations文件夹. JPEGIm ...
- JS代码判断IE6,IE7,IE8,IE9
做网页有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码! 有一种代码: <script type="text/javasc ...
- java判断时间为上午,中午,下午,晚上,凌晨
public static void main(String[] args) { Date date = new Date(); SimpleDateFormat df = new SimpleDat ...
- Linux在shell中输入历史命令
在Linux的shell中,经常输入的命令有很多雷同,甚至是一样的, 如果是长命令,再次敲一遍效率真的是很低, 不过可以通过Ctl+r, 查找history中以前输入的命令,很是好用. 按Ctrl+ ...
- git忽略未被跟踪和已被跟踪的文件
git的文件操作本质上来讲是基于文件索引来做追踪的. 至于忽略未跟踪(untrack)文件文件,git提供了三种方式 1 .gitignore 2 git config --global core ...
- 使用IntelliJ IDEA 配置Maven(转)
原文地址:使用IntelliJ IDEA 配置Maven 1. 下载Maven 官方地址:http://maven.apache.org/download.cgi 解压并新建一个本地仓库文件夹 2.配 ...
- Spring注解之BeanPostProcessor与InitializingBean
/*** BeanPostProcessor 为每个bean实例化时提供个性化的修改,做些包装等*/ package org.springframework.beans.factory.config; ...
- python的数据类型--list和tuple
list是Python的一种数据类型,是一个有序的集合,可以随时添加和删除.写法为list名称+[] list[]内的元素不仅仅为str,可以是数字,布尔值. 访问方法为变量名或者变量[索引],和C的 ...