简历技能面试问答

embedded/2024/9/24 16:32:23/

变成语言和开发工具

C++新特性

自动类型推导 (auto): 自动推导变量的类型,减少显式类型声明的繁琐

范围 for 循环: 用于遍历容器或数组,简化代码。

nullptr: nullptr 取代 NULL,表示空指针,类型更明确。

lambda 表达式: 允许定义匿名函数,常用于 STL 算法或事件处理。

智能指针 (std::shared_ptr 和 std::unique_ptr): 引入了自动管理内存的智能指针,减少手动管理内存泄漏的风险

右值引用 (&&) 和移动语义: 移动语义允许资源的转移,而不是复制,提高了性能,特别是在容器操作中

线程支持 (<thread> 头文件): 引入了标准线程库,简化了多线程编程

数据结构与算法

数组

链表

队列

排序

快速排序

冒泡排序

选择排序

设计模式

设计模式(工厂模式与单例模式)-CSDN博客

STL标准模板库

STL容器-CSDN博客

系统级编程

指针

内存管理

内存分配策略

静态分配:在编译期分配固定大小的内存

动态分配:运行时根据需要分配内存,如使用malloc

IO操作

I/O多路复用的基本思想,是使用于一个或多个系统调用来监视多个文件描述符,当其中一个或多个文件描述符就绪时,通知程序进行相应的操作。这样就可以再单线程中处理多个I/O操作,而无需为没哟个连接创建一个线程或2进程

select:

最早的I/O多路复用机制,可以监视一组文件描述符,当某个文件描述符就绪时,select返回,程序可以进行相应的读写操作。缺点:存在最大文件描述符限制

poll:

poll不再不再限制文件描述符的数量,使用pollfd结构体数组来监视文件描述符。缺点:高并发场景下仍存在性能问题。

epoll:Linux特有

epoll支持边缘触发和水平触发,能够高效地处理大量并发连接。适用于高负载的服务器应用

进程控制

fork和vfork都是创建进程的方式

fork创建的子进程是对父进程的数据段和代码段进行拷贝·,而vfork是共享数据段、堆栈段

fork通过写时赋值来给子进程开辟独立的地址空间父子进程执行的顺序不确定,而vfork子进程执行结束之后父进程才能执行,vfork()保证子进程先运行,在调用exec之后父进程才可能被调度运行。

进程通信

传统通信:

管道(无名管道、有名管道):

信号(异步):

ipc通信:

消息队列(管道的集合):

共享内存(地址映射的方式):

信号量(信号灯的集合):

网络编程

TCP

TCP流量控制:让发送端根据接收端的的实际接收能力控制发送的数据量

TCP通过滑动窗口来控制流量

TCP滑动窗口:分为发送窗口和接收窗口,实际是操作系统开辟的缓存空间,窗口大小值表示无需等待确认应答,而可以发送数据的最大值。

TCP头部有个字段叫win,也即那个16位的窗口大小,他告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,从而达到流量控制

TCP拥塞控制:避免发送发的数据填满整个网络。常用算法:慢启动、拥塞避免、拥塞发生、快速恢复。

UDP

Socket

并发和并行编程

线程同步机制

线程同步机制用于解决多个线程同时访问共享资源是可能出现的竞态条件,确保多个线程协作执行任务时的一致性和正确性。在多线程编程中,常见的线程同步机制包括互斥锁、信号量、条件标量、读写锁。

互斥锁:用于保护共享资源,使得同一时间只有一个线程访问该资源

信号量:信号量是一个计数器·,用于控制对共享资源的发变废为宝,允许多个线程同时访问特定数量的资源

条件变量:用于线程之间的等待和通知,当某个条件未满足时,线程可以等待,直到另一个线程发出通知

读写锁:允许多个线程同时读取资源,但是有写操作时,其它读写操作都会被阻塞

递归锁:自旋锁无法获取时,线程会不断的忙等待,即循环检测锁是否可用,而不是阻塞,会消耗CPU资源

线程读写分离

线程读写分离可以提高并发性能的常用编程计数,在需要频繁读取数据但写入操作相对较少的场景中使用

线程池

线程池通过vector管理线程,使用队列存储待执行的任务,线程池通过submit方法提交任务,任务被封装并加入队列中,当任务到来时,通过条件变量唤醒等待的线程,线程执行任务。线程池关闭时会确保任务执行完毕并释放资源

什么是线程池,优缺点,线程池的大小

线程池是通过提前创建一组线程来处理任务,可以提高性能、减少线程创建和销毁的开销

优点:提高系统的资源利用率,减少频繁的线程创建和销毁

缺点:增加了系统的复杂性,增加了管理难度

线程大小:根据CPU的核心数和任务性质来确定

条件变量的作用是什么?

用于线程同步,当某个条件不满足时,线程可以挂起并等待条件变量的通知,以避免忙等待,

用锁来保证数据安全,确保同一时间只有一个线程可以访问这些数据

什么是死锁,如何避免?

死锁是因为两个或多个线程因争夺资源而导致的相互等待状态。

避免方法:按顺序请求资源,使用超时机制

内存池

预先分配大内存块的技术,然后再此内存块内分配小块内存,小内存块使用嵌入式指针相连,这样可以减少频繁的分配和释放,提高性能.

操作系统

Linux常用命令

ls--list directory contents    列出当前文件夹内容

man ls     打开工具手册

mkdir--make directories    创建文件/文件夹

d   目录

rm       删除文件/文件夹

rm -r   删除文件/文件夹

touch   创建文件

cp    复制

cd    改变工作目录  cd/usr/ 切换文件夹

-help  --help   帮助

pwd    打印当前文件夹所在的名字

mv     重命名/移动文件

vi   readme.md     在readme.md内写内容

数据库

SQL语句

创建数据库:create database

创建表:create table

修改表:alter table

删除表:Drop table

插入数据:insert into

更新数据:update

删除数据:delete

授予权限:grant

回收权限:revoke

内连接:inner join

四大特性

原子性:事物是一个完整的操作,要么都成功,要么都不执行

一致性:事务执行的结果符合预期

隔离性:事物与事物之间互不影响

持久性:事物操作成功后修改应该是永久的


http://www.ppmy.cn/embedded/116170.html

相关文章

【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码

目录 1. RabbitMQ 核心概念 1.1生产者和消费者 1.2 Connection和Channel 1.3 Virtual host 1.4 Queue 1.5 Exchange 1.6 RabbitMO工作流程 2. AMQP 3.RabbitMO快速入门 3.1.引入依赖 3.2.编写生产者代码 ​3.3.编写消费者代码 4.源码 1. RabbitMQ 核心概念 在安装…

蛋白质SCOP数据库介绍

SCOP(Structural Classification of Proteins)数据库和CATH数据库是两种常用的蛋白质结构分类系统,它们通过不同的方法对已知的蛋白质三维结构进行分类,帮助研究人员理解蛋白质的进化关系和功能。 SCOP数据库简介 SCOP| Structural Classification of Proteins SCOP(Str…

Fyne ( go跨平台GUI )中文文档-小部件 (五)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章&#xff1a; Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

SpringBootWeb响应

2. 响应 前面我们学习过HTTL协议的交互方式&#xff1a;请求响应模式&#xff08;有请求就有响应&#xff09; 那么Controller程序呢&#xff0c;除了接收请求外&#xff0c;还可以进行响应。 2.1 ResponseBody 在我们前面所编写的controller方法中&#xff0c;都已经设置了…

Linux文件IO(九)-原子操作与竞争冒险

Linux 是一个多任务、多进程操作系统&#xff0c;系统中往往运行着多个不同的进程、任务&#xff0c;多个不同的进程就有可能对同一个文件进行 IO 操作&#xff0c;此时该文件便是它们的共享资源&#xff0c;它们共同操作着同一份文件&#xff1b;操作系统级编程不同于大家以前…

武汉正向科技 格雷母线定位系统生产厂家

为了适应机车无人化项目对地址高精度的要求&#xff0c;我们推出了高精度格雷母线&#xff0c;根据地址的检测原理&#xff0c;地址精度取决于格雷母线最小交叉环的精度&#xff0c;传统的格雷母线内胆采用柔性泡沫内胆&#xff08;图片1&#xff09;&#xff0c;格雷母线最小交…

【技术解析】wx.request 封装:优化小程序网络请求的最佳实践

在当今的小程序开发领域&#xff0c;网络请求是构建动态应用的核心。微信小程序提供的 wx.request API 虽然强大&#xff0c;但在面对复杂业务逻辑时&#xff0c;其直接使用方式可能会带来一系列问题。本文将深入探讨封装 wx.request 的必要性&#xff0c;并提供一套实用的封装…

python 人工智能,在机器学习回归任务中,模型的评估通常mse ,rmse 等等

在机器学习回归任务中&#xff0c;模型的评估通常涉及以下几个关键指标&#xff1a; 1. **均方误差 (MSE)**: 衡量预测值与真实值之间差的平方的平均数。MSE 越小&#xff0c;表示模型的预测准确度越高。计算公式为&#xff1a; \[ \text{MSE} \frac{1}{n} \sum_{i1}^{n} (y_…