Linux C/C++后台开发面试重点知识

news2024/11/18 9:37:17

Linux C/C++后台开发面试重点知识

文章转载自个人博客: Linux C/C++后台开发面试重点知识

image.png

查看目录

一、C++ 面试重点

本篇主要是关于 C++ 语言本身,如果是整个后台技术栈的学习路线,可以看这篇文章: Linux C++ 后台开发学习路线

对于 C++ 后台开发面试来说,基本上语言层面考察候选人以下几个方面(其它算法、计算机基础暂时不在这里列出来):

  • 对于指针、内存的理解

  • 对于运行时 Runtime 的理解

  • 一些语法特性和关键字的掌握

  • C++11 及现代 C++ 的一些特性,比如智能指针

  • STL 部分容器的算法和内存分配原理

下面👇细化一下这些具体的知识:

三、基础语言特性(必备)

首先是语言的基础知识,一些关键字和实现原理等:

  • 指针、引用、数组、内存

  • 引用与指针区别

  • C 和 C++ 的一些区别,比如 new、delete 和 malloc、free 的区别

  • 虚机制:虚函数、虚函数表、纯虚函数

  • 继承、虚继承、菱形继承等

  • 多态: 动态绑定,静态多态

  • 重写、重载

  • 智能指针原理:引用计数、RAII(资源获取即初始化)思想

  • 智能指针使用:shared_ptr、weak_ptr、unique_ptr等

  • 一些关键字的作用:static、const、volatile、extern

  • 四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast

  • STL 部分容器的实现原理,如 vector、deque、map、hashmap

四、进阶语言特性(推荐)

  • 模板特化、偏特化,萃取 traits 技巧

  • 编译链接机制、内存布局(memory layout)、对象模型

  • C++11 部分新特性,比如右值引用、完美转发等

这里列出来的只是一些比较重要的部分,实际上可能只算 C++ 的冰山一角, 大家且学且珍惜吧,这不 C11 还没整透彻,C 20 又出来了,生命不息,学习不止。

五、怎么准备?

更新中,可以先看原文: Linux C/C++后台开发面试重点知识

C++ 面试指北介绍

对于 C++ 语法重点内容进行讲解,包括内存、指针、智能指针、虚函数、C++11、面向对象等等,共计 10w+ 字。

面试重点及复习指南看这里: C/C++后台开发面试重点知识

  • C++ 基础篇 👇

    • sizeof 关键字
    • sizeof 和 strlen
    • 数组做参数退化为指针
    • const 关键字
    • static 关键字
    • volatile 的作用
    • C/C++ 字节对齐
    • C/C++ 字节序
    • C++ 中 class 和 struct 区别
    • 宏定义(define)和内联函数(inline)的区别
    • 宏定义 (define) 和 typedef 的区别
    • explicit 关键字
    • C/C++ 中 extern 作用
    • extern C 的作用
    • mutable 的作用
    • C++ 几种类型转换
  • C++面向对象篇 👇

    • 面向对象三大特性
    • C++ 类成员访问权限
    • 重载、重写、隐藏的区别
    • C++ 类对象的初始化和析构顺序
    • C++ 析构函数可以抛出异常吗?
    • C++ 中对象深拷贝和浅拷贝
    • C++多态的实现方式
    • C++ this 指针
    • C++ 虚函数表
    • C++ 纯虚函数是什么?
    • 为什么 C++ 构造函数不能是虚函数?
    • 为什么 C++ 基类析构函数需要是虚函数?
    • 为什么C++的成员模板函数不能是 virtual
    • sizeof 一个空类大小是多大
  • C++内存管理篇 👇

    • C/C++ 内存是什么?
    • 深入理解 C/C++ 指针
    • 快速搞懂 C/C++ 指针声明
    • C/C++内存分区
    • C++指针和引用的区别
    • 指针传递、值传递、引用传递
    • C++ RAII 思想
    • C++ 智能指针解析
    • 深入理解 C++ shared_ptr
    • 深入理解 C++ weak_ptr
    • C/C++ malloc-free底层原理
    • C++ malloc、new,free、delete 区别
    • C/C++ 内存泄露如何检测和避免
    • C/C++ 野指针和空悬指针
    • 常见的 C/C++ 内存错误
  • C++11 👇

    • nullptr 和 NULL的区别
    • C++ 类型萃取

持续更新中…

作者: 编程指北
链接: https://csguide.cn/cpp/#%E4%B8%80%E3%80%81%E7%9B%AE%E5%BD%95
来源: https://csguide.cn
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/503056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

27岁转行学云计算值得吗?能就业不?

27岁转行学云计算值得吗?能就业不? 首先,云计算当然值得转行了,如此肯定的观点,应该没有人会反对吧,尤其是对IT行业的现状以及就业市场有所了解的人。如果你对这一点有所怀疑也很正常,只要通过各…

Spring Boot集成ShardingSphere分片利器 AutoTable (一)—— 简单体验 | Spring Cloud 45

一、背景 Sharding是 Apache ShardingSphere 的核心特性,也是 ShardingSphere 最被人们熟知的一项能力。在过去,用户若需要进行分库分表,一种典型的实施流程(不含数据迁移)如下: 用户需要准确的理解每一张…

详解快速排序的类型和优化

详解快速排序的优化 前言快排的多种写法霍尔法实现快排代码部分 挖坑法思路讲解代码部分 双指针法思路讲解代码部分 针对排序数类型的优化针对接近或已经有序数列和逆序数列三数取中代码实现 随机数 针对数字中重复度较高的数三路划分思路讲解代码部分 根据递归的特点进行优化插…

JSP招投标管理系统myeclipse开发mysql数据库WEB结构java编程

一、源码特点 JSP 招投标管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 JSP招投标管理系统myeclipse开发mysql数据库W 二、功能介绍 主要功能: …

BPMN2.0 任务-接收任务手动任务

接收任务 接收任务是一个简单的任务,它等待特定消息的到来。 当流程执行到接收任务时,流程状态将提交给持久性存储。流程将保持这种等待状态,直到流程引擎接收到特定的消息,这将触发接收任务之外流程的继续进行。 接收任务用左上角有一个消息图标的标准BPMN 2.0任务(圆角…

C++新特性总结

(智能指针,一些关键字,自动类型推导auto,右值引用移动语义完美转发,列表初始化,std::function & std::bind & lambda表达式使回调更方便,c11关于并发引入了好多好东西,有&am…

vivado工程转换到quartus下联合modelsim仿真

vivado用习惯了,现在快速换到quartus下仿真测试。写一个操作文档,以fpga实现pcm编码为例。 目录 一、建立工程 1、准备源码和仿真文件 2、新建工程 3、加载源文件 4、选择器件 5、仿真器配置 6、工程信息 二、配置工程 7、设置顶层文件 8、配置…

【多线程】初识线程,基础了解

目录 认识线程 概念 什么是线程? 为啥要有线程 进程和线程的区别 Java 的线程 和 操作系统线程 的关系 创建线程 1.继承 Thread 类 2.实现 Runnable 接口 3.通过匿名内部类方式创建Thread与实现Runnable 4.Lmabda表达式 Thread 类及常见方法 Thread 的常见构造方法…

点评项目最后一篇:基于HyperLogLog实现UV统计

文章目录 1 HyperLogLog2 测试百万数据的统计 1 HyperLogLog 首先我们搞懂两个概念: UV:全称Unique Visitor,也叫独立访客量,是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站,只记录1次。…

无线键盘有几种连接方式?(USB接收器连接(无线2.4g)、蓝牙连接、wi-fi连接、红外线连接)

文章目录 无线键盘有哪几种连接方式?各连接方式优缺点 无线键盘有哪几种连接方式? 无线键盘有以下几种连接方式: 通过USB接收器连接(无线2.4g):无线键盘通过USB接收器与电脑连接,一般需要插入电…

3W字吃透:微服务 sentinel 限流 底层原理和实操

40岁老架构师尼恩的掏心窝: 现在拿到offer超级难,甚至连面试电话,一个都搞不到。 尼恩的技术社群中(50),很多小伙伴凭借 “左手云原生 右手大数据 SpringCloud Alibaba 微服务“三大绝活,拿…

MySQL 数据库 增删查改、克隆、外键 等操作

数据库中有数据表,数据表中有一条一条的记录。 可以用Navicat 等远程连接工具链接数据库,不过数据库需要开启授权。 SQL 字段数据类型 int:整型,默认长度是11 float:单精度浮点,4字节32位 double&#x…

Kyligence Zen产品体验-让大数据分析更轻松

很高兴有机会为大家分享我对 Kyligence Zen 产品的真实体验。在过去的几周中,我花费了大量时间使用这个企业级指标平台,并发现它在帮助企业处理和分析海量数据方面拥有强大的能力。 作为数据分析师,我们经常需要处理和分析大量的数据。这可能…

K8S管理系统项目实战[前端开发]-1

前端 Vue 入门与进阶 Vue ElementPlus 组件库 K8s管理系统项目实战[前端开发]-1 项目概述、框架搭建 Vue前端开发:整体布局 Vue前端开发:工作流 Vue前端开发:登录登出、部署、总结 一、项目慨述 本节是k8s管理系统项目实战的前端开发…

Endnote引用中文、英文参考文献方法(不用手敲中文文献信息)

目录 引用英文参考文献 插入中文参考文献格式 导入出错的解决方案 引用英文参考文献 打开知网的官网,选择想要导出成endnote格式的文献(在文献前面打√,即为选中状态),在导出与分析-导出文献-endnote,即…

配置Visual Studio Code连接远程服务器

目录 一、Windows用户需要先配置好本地的Remote SSH相关服务 二、打开VS Code,在扩展中搜索"Remote - SSH"并安装​编辑 三、详细操作 四、在出现的config配置文件中写入以下信息 五、点击VSCode界面最左侧的远程资源管理器 六、输入密码&#xff0…

记录一个特殊场景下,修改代码,idea 需要 mvn clean install的问题

修改java代码,mvn clean install 才能生效的场景,在网上看到一些方法,但是都没有生效。eg: 删除.idea, 删除后重新导入。每次修改代码测试的时候都要手动 clean install才可以,比较麻烦。 跑代码的时候,自…

HALCON多线程框架

1.整体架构 HALCON多线程处理框架基本思想是单独一个线程获取待处理图像,若干个图像处理线程并行执行 2.架构图 3.HALCON多线程并行相关算子 broadcast_condition clear_barrier clear_condition clear_event clear_message clear_message_queue clear_mutex cre…

Mac 安装 Python3.10 和 配置环境

Mac 安装 Python3.10 并且配置环境 一、Python的安装 访问官网:https://www.python.org/选择系统(Mac): [https://www.python.org/downloads/macos/] 3.选择一个版本下载。我这里选择了3.10.X 下载页面:https://www.python.or…

Qt Creator 快捷键

一、快捷键 下面是Qt常用快捷键用法,如下: 1、构建 快捷键功能ctrl/注释ctrlr运行ctrlb编译 2、查找 快捷键功能ctrlf单文件查找ctrlshiftf多文件查找ctrlshiftu查找所有使用该符号的地方(先选中某个符号,执行快捷键&#xff0…