嵌入式开发面试问题总结(持续更新)

news/2024/7/25 21:12:43/文章来源:https://blog.csdn.net/simonchousc/article/details/139184211

面试问题总结

c/c++

封装、继承和多态
  • 封装:将属性和方法封装起来,并加以权限区分。
  • 继承:子类继承父类的特征和行为,复用了从基类复制而来的数据成员成员函数(基类私有成员无法被访问),其中构造函数、析构函数、友元函数、静态数据成员、静态成员函数都不能被继承,提高了代码的复用率。(虚继承解决菱形继承问题)。
  • 多态:同一种类型的对象在不同的情况下表现出不同的行为。简单来说,就是同一个方法在不同的对象上可以有不同的实现。

1G内存这个可以malloc 1.2G空间?为什么?

malloc能够申请的空间大小与物理内存的大小没有直接关系,仅与程序的虚拟地址空间相关。程序运行时,堆空间只是程序向操作系统申请划出来的一大块虚拟地址空间。应用程序通过malloc申请空间,得到的是在虚拟地址空间中的地址,之后程序运行所提供的物理内存是由操作系统完成的。

单例模式

单例模式 (Singleton): 保证一个类只有一个实例(懒汉式,饿汉式)。

类模板和函数模板

c++17之前类模板支持自动类型推导,函数模板不支持自动类型推导。

自动类型转换和自动类型推导

  • 自动类型转换:在某些情况下,编译器会自动将一个类型转换为另一个类型。这种转换也称为隐式类型转换。
    • 数值类型之间的隐式类型转换。
    • 派生类指针和基类指针之间的隐式类型转换。
    • 用户自定义类型(类单个参数的构造函数)。
  • 自动类型推导:自动类型推导是指编译器根据表达式的上下文来推断变量的类型。

虚析构和纯虚析构

关键字virtual,纯虚析构函数必须要提供函数体,纯虚析构会使基类是抽象类,不能实例化对象。

缺省参数

缺省参数是指在定义函数时给某个参数设置一个默认值,当函数被调用时,如果没有传递该参数,就会使用默认值。调用时只能从最后一个参数开始进行省略,换句话说,如果你要省略一个参数,你必须省略它后面所有的参数。

sizeofstrlen 的区别

  • sizeof 是一个操作符,strlen 是库函数。
  • sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\0‘的字符串作参数。
    • 如果 strlen 函数调用的字符串没有以 '\0' 结尾,那么该函数的行为是未定义的。
  • 编译器在编译时就计算出了sizeof的结果。而 strlen 函数必须在运行时才能计算出来。并且 sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。
  • 数组做sizeof的参数不退化,传递给 strlen 就退化为指针了。
    • 对于一个空的类,里面没有任何成员和变量和函数,对该类的实例求sizeof得到的结果是1,本来应该是0,但是必须在内存中占有一定空间,至于占多少内存由编译器决定,大部分都是1
    • 如果在类中添加构造函数和析构函数仍然是1
    • 如果把析构函数标记为虚函数,就会在实例中添加一个指向虚函数表的指针,所以大小是4或者8

gcc编译过程

  • 预处理:头文件包含、宏替换、条件编译、删除注释。
  • 编译:词法、语法、语义分析,检查无误后编译成汇编文件。
  • 汇编:将汇编文件转换成二进制目标文件。
  • 链接:将各个二进制文件+库文件+启动代码链接成可执行文件。

逻辑短路

执行逻辑运算时,如果能够确定整个表达式的结果,就不再继续计算表达式的其余部分。

  • 逻辑与 (&&) 的短路:当使用 && 运算符时,如果第一个操作数为假(false),则整个表达式的结果已经确定为假,因此不会计算第二个操作数。
  • 逻辑或 (||) 的短路:当使用 || 运算符时,如果第一个操作数为真(true),则整个表达式的结果已经确定为真,因此不会计算第二个操作数。

好处:

  • 避免不必要的计算:如果表达式的结果已经确定,就不需要执行后续的计算,这可以提高程序的效率
  • 防止潜在的错误:例如,在数组索引检查中,如果第一个条件已经满足,就不需要执行可能引发越界的第二个条件检查。
  • 简化代码逻辑:有时候可以利用逻辑短路来简化复杂的条件判断。

单片机

UARTIICSPI通信协议

串口协议:串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方 式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简 单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成 本,特别适用于远距离通信,但传送速度较慢。

  • 是设备间接线通信的一种方式。
  • 数据一位一位地顺序传送。
  • 双向通信,全双工(两条线,一条发送数据(TX),一条接收数据(RX))。
  • 传送速度相对较慢。

IIC协议:集成电路总线;是由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双工同步通信方式(只有一根双向的数据线SDA)。

  • 简单性和有效性:由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。

  • 多主控(multimastering):任何能够进行发送和接收的设备都可以成为主总线。

  • IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控 器件产生。

SPI协议:串行外设接口;是一种高速的,全双工,同步的通信总线。

  • MISOMaster Input Slave Output,主设备数据输入,从设备数据输出。
  • MOSIMaster Output Slave Input,主设备数据输出,从设备数据输入。
  • SCKSerial Clock,时钟信号,由主 设备产生。
  • CSChip Select,片选信号,由主设备控制。

网络编程

arp欺骗

发送真实的目的ip和目的mac但源ip和源mac是假的arp应答包。

字节序

字节序是多字节数据在内存中的存放顺序,大端(高字节放在低地址);小端(低字节放在低地址)。

系统编程

上下文

上下文信息是CPU执行程序时所需的状态信息集合,包括寄存器状态、程序计数器、堆栈信息等,它允许操作系统管理进程切换、中断处理和系统调用。

上下文切换是操作系统在不同进程或任务之间保存和加载这些状态信息的过程,尽管它对系统性能有影响,但对于多任务处理和响应中断是必不可少的。

数据库

数据结构与算法

其他

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】centos7编写C语言程序,补充:使用yum安装软件包组

确保已安装gcc编译器 C语言程序,一般使用gcc进行编译,需确保已安装gcc。 若没有,可以使用yum安装gcc(版本4.8.5),也可以使用SCL源安装gcc(例如:版本9.3)。 安装gcc&am…

markdown语法保存

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

K8s 小白入门|从电影配乐谈起,聊聊容器编排和 K8s

来听听音乐 电影,是我们生活中的重要调味剂。 配乐,是电影中不可或缺的一部分。 有的时候,配乐可以跟剧情共振,让你按捺不住自己的情绪,或眼含热泪、或慷慨激昂、或人仰马翻、或怅然若失; 有的时候&…

基础8 探索JAVA图形编程桌面:邮件操作组件详解

在一个静谧的午后,卧龙和凤雏相邀来到一家古朴典雅的茶馆。茶馆内环境清幽,袅袅的茶香与悠扬的古筝声交织在一起,营造出一种宁静而祥和的氛围。 卧龙和凤雏坐在茶馆的一角,面前的桌子上摆放着一套精致的茶具。茶香四溢&#xff0c…

开源DMS文档管理系统 Nuxeo Vs Alfresco对比及 API 使用概述

1. 文档管理系统是什么 文档管理系统(DMS:Document Management System)是一种软件系统,用于组织、存储、检索和管理电子文档和文件。这些文件可以是各种格式的电子文档,如文本文档、电子表格、图像、音频或视频文件等…

成都爱尔眼科医院《中、欧国际近视手术大数据白皮书2.0》解读会圆满举行

2024年5月12日,爱尔眼科联合中国健康促进基金会健康传播与促进专项基金、新华社新媒体中心与中南大学爱尔眼科研究院、爱尔数字眼科研究所重磅发布《中、欧国际近视手术大数据白皮书2.0》。这是继2021、2022年在国内相继发布《国人近视手术白皮书》、《2022中、欧近…

GVM: Golang多版本管理利器

本文介绍了 Go Version Manager 的功能和使用方法,介绍了如何通过 GVM 在系统上安装和管理多个 Go 语言版本。原文: GVM: Go Version Manager, for Golang manage multiple versions Go 版本管理器(GVM,Go Version Manager)是一款…

微服务村庄的守护神:Eureka Server的奇幻之旅

在数字化的浪潮中,微服务架构成为了构建高效系统的新宠。《微服务村庄的守护神:Eureka Server的奇幻之旅》带您走进一个由Eureka Server守护的微服务世界! 文章目录 Spring Cloud Eureka 详解1. 引言微服务架构概述服务发现的重要性Spring Cl…

二叉树介绍及堆

文章目录 树 概念及结构 二叉树 概念及结构 特殊的二叉树 完全二叉树 满二叉树 性质 储存 顺序存储 链式储存 堆 概念及结构 小堆 大堆 建堆 向上调整建堆 向下调整建堆 TOPK问题 法一: 法二: 树 概念及结构 树是一种非线性的数据…

idea configuration 配置 方便本地启动环境切换

idea 再项目启动的时候避免切换环境导致上线的时候出现环境配置问题 可以再idea 的 configuration 中配置项目的 vm options 虚拟机的内容占用 -Xmx256m -Xms256m -Xmn100m -Xss256k program arguments properties 文件中需要修改的配置参数 active profiles 指定启动的本…

SOLIDWORKS正版价格多少钱

SOLIDWORKS作为目前应用较为广泛的3D CAD软件之一,具有强大的功能和实用性,它为各类工程设计提供综合解决方案。但是,正版SOLIDWORKS价格是个不可忽视的问题。那SOLIDWORKS的正版价格究竟如何呢?又是受什么因素影响? 先…

如何降本增效获得目标客户?AI企业使用联盟营销这个方法就对了!

AI工具市场正在迅速发展,现仍有不少企业陆续涌出,那么如何让你的工具受到目标群体的关注呢?这相比是AI工具营销人员一直在思考的问题。 为什么AI企业难以获客呢? 即使这个市场正蓬勃发展,也无法保证营销就能轻易成功…

宁盾身份域管与天翼云电脑完成兼容互认证

近日,宁盾身份域管与天翼云电脑完成兼容互认证!这是继中兴、深信服、升腾威讯云桌面/云电脑后,宁盾对接的第4个国产云桌面品牌。企业在引入国产云桌面时,同时会考虑微软AD目录的替代方案。宁盾国产化身份域管对接天翼云电脑从终端…

【运筹学】前言:基础知识

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

SAP PP学习笔记 - 错误 CX_SLD_API_EXCEPTION - Job dump is not fully saved (too big)

我这个错误是跑完MRP,然后在MD04查看在库/所有量一览, 点计划手配(Planned order 计划订单)生成 制造指图(Production order 生产订单), 到目前这几步都OK,然后在制造指图界面点保…

解读 | 上海房地产政策松绑,售楼电话被“打爆”

图片来源千图网 自5月27日晚间上海发布房地产政策松绑消息以来,城市楼市气氛仿佛被一股暖流席卷,售楼电话几乎在一夜之间被“打爆”。这一次调整的政策涉及到多个方面,包括首套房首付比例的下调、二套房首付比例的调整、房贷利率的优惠等&am…

看看最新的B端登录界面,你是不是被潮流抛弃了?

毛玻璃风格(Frosted Glass Style)是新拟态设计风格中的一种分支,它灵感来源于现实世界中的毛玻璃材质。毛玻璃是一种通过在玻璃表面加工处理的方式,使其具有模糊、云翳和透明效果的特殊玻璃。 在设计中,毛玻璃风格通常…

教学基本功包括什么技能有哪些

教师的工作不仅仅是传授知识,更多是引导学生探索,激发他们的创造力。要做到这一点,需要具备一些基本技能。 扎实的专业知识。这是教师的根基,如果教师自己对所教的科目都不熟悉,那么教学就会失去方向。不断学习更新自己…

汇智知了堂实力展示:四川农业大学Python爬虫实训圆满结束

近日,汇智知了堂在四川农业大学举办的为期五天的校内综合项目实训活动已圆满结束。本次实训聚焦Python爬虫技术,旨在提升学生的编程能力和数据分析能力,为学生未来的职业发展打下坚实的基础。 作为一家在IT教育行业享有盛誉的机构&#xff…

三、Servlet基础

注:因为我并不完全是为了从0开始Java开发,因此,我这里先暂时跳过第二章服务器环境相关的内容,直接开始第三章的内容。 3.1、Servlet 的基本结构: ​ 下面的代码给出了一个基本的 Servlet ,它处理 GET 请求…