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 概述 商业信息和数据对于任何一个企业而言都是至关重要的.现在很多公司都投入了大量的人力.资金和 ...
随机推荐
- 6.5 开始进入设计 … Transition to Design
开始进入设计 … Transition to Design 从需求分析到设计 逻辑架构与子系统 Logical Architecture and sub-system 5.1 向设计过程切换 ...
- python基础之 026 包以及包的引入
内容梗概: 1. from xxx import xxx知识点补充 2. 包 1. 知识点补充. 我们现在知道可以使⽤用import和from xxx import xxx来导入一个模块中的内容.那有 ...
- GPLT L2-014 列车调度
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805063166312448 分析:明显从右到左列车的序号需要依 ...
- 浅谈mysql
关于数据库其实我们可以简单的理解为存储货物的一个厂库,里面分别是按照一定的分类存放的物品,然后人们有时会从厂库中拿走或存储一些物品,有时也会更改或增加一些分类 这些物品都分门别类的存放在厂库中,方便人 ...
- SQL Server 创建触发器(trigger)
update 触发器: if(OBJECT_ID('trigger_compost_up') is not null) drop trigger trigger_compost_up go creat ...
- windows 系统使用 git 和码云管理代码(本地已有项目)
1. 为本地项目创建本地仓 找到项目所在的根目录(目录下有解决方案那个),右击目录,点击右键菜单中的“Git Bash Here”(前提是你的电脑已经装了Git,我用的是TortoiseGit) 然后 ...
- sublime ctags跳转函数使用
sublime 点击某函数 按F12可以查到相关函数文件 正题: 1.下载ctags客户端文件 http://prdownloads.sourceforge.net/ctags/ctags58.zip ...
- 【转】给DataTable和DataRow扩展方法,直接转换为对象集合或对象
/// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为对象集合或对象 /// 补充说明:此扩展类可以极大的简化操作,但是性能低下,大数据以 ...
- weblogic控制台用户名密码修改
1.记得用户名密码但想修改密码修改方法 保存后立即生效,即你退出后即能以新密码登录:但由于启动的用户名密码和登录的用户名密码是同一个,所以我们需要去修改DOMAIN_HOME/servers/serv ...
- !important 的绝对控制样式
<head> <style type="text/css"> div{background-color: blue !important;} </st ...