面试(七)

目录

一. 程序中的内存分配方法

二. malloc和new的区别

三. 为什么局部变量未赋值时,每次初始化的结果是不确定的?

四. 编译有几个阶段 每个阶段做什么事情

五. 在FreeRTOS中,二值信号量和互斥量的区别?

六. 在FreeRTOS中,任务通知的运行机制是怎么样的?

七. 什么情况下会栈溢出?

八. 深复制和浅复制的区别?

九. 简述一下快速排序的步骤

十. linux的锁机制?

十一. STM32 中断是怎么进入到中断服务程序的

十二. 操作系统条件变量的惊群效应是什么


一. 程序中的内存分配方法

1. 连续分配方式

2. 基本分页存储管理方式

3. 基本分段存储管理方式

4. 段页式存储管理方式

二. malloc和new的区别

1、申请的内存所在位置不同。new操作符从自由存储区上为对象动态分配内存空间,malloc函数从堆上动态分配内存。

 2. 返回类型安全性不同。new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成我们需要的类型。

 3. 内存分配失败时的返回值不同。new内存分配失败时,会抛出bac_alloc异常,它不会返回NULL。malloc分配内存失败时返回NULL。

 4. 是否需要指定内存大小不同。使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。malloc则需要显式地指出所需内存的尺寸。

三. 为什么局部变量未赋值时,每次初始化的结果是不确定的?

局部变量存在栈区,栈内存是反复使用的,而栈分配空间又是随机的,如果上次用完没有清零,局部变量没有显示初始化,它就会延续上次没清零的值。

四. 编译有几个阶段 每个阶段做什么事情

词法分析、语法分析、语义分析、代码优化、代码生成

五. 在FreeRTOS中,二值信号量和互斥量的区别?

互斥量必须是同一任务申请,同一任务释放,其他任务释放无效。二值信号量,一个任务申请成功,可以由另外一个任务释放

六. 在FreeRTOS中,任务通知的运行机制是怎么样的?

任务通知的数据结构包含在任务控制块中,只要任务存在,任务通知数据结构就已经创建完毕,可以直接使用。任务通知可以在任务中向指定任务发送通知,也可以在中断中向指定任务发送通知,FreeRTOS 的每个任务都有一个 32 位的通知值,任务控制块中的成员变量 ulNotifiedValue就是这个通知值。只有在任务中可以等待通知,而不允许在中断中等待通知。如果任务在等待的通知暂时无效,任务会根据用户指定的阻塞超时时间进入阻塞状态,我们可以将等待通知的任务看作是消费者;其它任务和中断可以向等待通知的任务发送通知,发送通知的任务和中断服务函数可以看作是生产者,当其他任务或者中断向这个任务发送任务通知,任务获得通知以后,该任务就会从阻塞态中解除。

七. 什么情况下会栈溢出?

1. 局部数组过大        2. 递归调用层次太多

3. 指针或数组越界

八. 深复制和浅复制的区别?

浅拷贝:只是对指针拷贝,拷贝后两个指针指向同一个内存空间

深拷贝:不但对指针进行拷贝,对指针指向的内容进行拷贝,两个指针不同的内存空间

区分:指针A拷贝指针B,B变化后,看A是否变化,变化的是浅拷贝,不变的是深拷贝

九. 简述一下快速排序的步骤

1. 从数列中挑出一个元素,称为 "基准";

2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置; 

3. 递归地把小于基准值元素的子数列和大于基准值元素的子数列排序;

十. linux的锁机制?

互斥锁:在任何时刻只能有一个线程访问该资源

读写锁:读状态时可以多个线程同时读。写状态只能一个线程获得

自旋锁:任何时刻只能有一个线程获得该资源,获取锁失败时,不会进入睡眠,会原地自旋,直到锁被释放

条件锁:条件变量,不满足条件阻塞,满足条件唤醒进程,常与互斥锁配合使用

信号量:相当于计数器,为零时堵塞,不为零时唤醒进程

十一. STM32 中断是怎么进入到中断服务程序的

在STM32中,为了区分不同的中断,每个设备有自己的中断号。系统有0-255一共256个中断。系统有一张中断向量表,用于存放256个中断的中断服务程序入口地址。每个入口地址对应一段代码,即中断服务程序。

十二. 操作系统条件变量的惊群效应是什么

当某一资源可用,多个进程/线程会惊醒,竞争资源。这就是操作系统中的惊群。

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

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

相关文章

Study--Oracle-07-ASM相关参数(四)

一、ASM主要进程 1、ASM主要后台进程 ASM实例除了传统的DBWn、LGWR、CKPT、SMON和PMON等进程还包含如下几个新后台进程: 2、牛人笔记 邦德图文解读ASM架构,超详细 - 墨天轮 二、数据库实例于ASM实例之间的交互关系 数据库实例与ASM实例之间的交互关系涉及多个步骤和过程,…

PHP家政系统自营+多商户独立端口系统源码小程序

家政行业的新篇章 引言:家政行业的数字化转型 近年来,随着科技的飞速发展和人们生活节奏的加快,家政服务行业也迎来了数字化转型的浪潮。为了提升服务效率、优化用户体验,越来越多的家政公司开始探索“家政系统自营多商户小程序…

用yoloV5做一个口罩检测的全流程实现

制作数据集 收集相关图片: 可以使用爬虫在百度爬取。爬虫代码如下: # -*- coding: UTF-8 -*-""" import requests import tqdmdef configs(search, page, number):""":param search::param page::param number::return:…

界面控件Telerik UI for WPF 2024 Q2亮点 - 全新的AIPrompt组件

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio…

C++:类和对象2

1.类的默认成员函数 默认成员函数就是用户没有显示实现编译器会自动生成的成员函数称为默认成员函数。一个类,我们在不写的情况下编译器会默认生成6个默认成员函数,分别是构造函数,析构函数,拷贝构造函数,拷贝赋值运算…

Perl数据库交互精要:使用DBI模块连接和操作数据库

引言 Perl作为一种功能强大的脚本语言,提供了与数据库交互的能力,这主要得益于DBI(Database Interface)模块。DBI是一个标准化的数据库访问接口,允许Perl脚本连接到各种类型的数据库并执行SQL语句。本文将详细介绍如何…

kitti数据集转为bag

下载原始的数据集后,通过终端来运行: unzip 2011_10_03_calib.zip和 unzip 2011_10_03_drive_0047_sync.zip这样这个文件夹才算准备好: 然后去下载kitti2bag工具: pip install kitti2bag然后去2011_10_03文件夹下执行&#xf…

大疆创新2025校招内推

大疆2025校招-内推 一、我们是谁? 大疆研发软件团队,致力于把大疆的硬件设备和大疆用户紧密连接在一起,我们的使命是“让机器有温度,让数据会说话”。 在消费和手持团队,我们的温度来自于激发用户灵感并助力用户创作…

泰山派RK3566开发板800x1280MIPI屏设备树补丁

泰山派RK3566开发板800x1280MIPI屏设备树补丁 泰山派下800 X 1280分辨率MIPI屏调试,设备树补丁如下: https://download.csdn.net/download/qq_45143522/89584066 用kernel.patch文件,在泰山派内核源码下打补丁即可完成更新,或者…

嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化:智能物流管理系统设计思路流程(附代码示例)

目录 项目概述 系统设计 硬件设计 软件设计 系统架构图 代码实现 1. STM32微控制器与传感器代码 代码讲解 2. MQTT Broker设置 3. 数据接收与处理 代码讲解 4. 数据存储与分析 5. 数据分析与可视化 代码讲解 6. 数据可视化 项目总结 项目概述 随着电子商务的快…

深度学习目标检测入门实战

深度学习目标检测入门实战 一、什么是目标检测二、目标检测常用的数据集(开源)(一)VOC数据集(1)背景知识(2)数据集的下载(3)VOC2007 数据集的标注&#xff08…

chrome 接口请求等待时间(installed 已停止)过长问题定位

参考: 解决实际项目中stalled时间过久的问题 背景: 测试反馈系统开 6 个标签页后, 反应变的很慢 定位: 看接口请求瀑布流, 已停止时间很长, 后端返回速度很快, 确定是前端的问题 推测是并发请求窗口数量的问题, 屏蔽部分一直 pending 的接口, 发现速度正常了, 搜到上面的参…

C++从入门到起飞之——初始化列表类型转换static成员 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、初始化列表 2、 类型转换 3. static成员 4、完结散花 1、初始化列表 • 之前我们实现构造函数…

ios 语言基础初探Xcode 工具

iOS语言基础&初探Xcode工具 导言: 随着智能手机的普及,iOS操作系统成为了一个非常受欢迎的移动开发平台。而iOS应用的开发需要掌握相关的编程语言和开发工具。本文将介绍iOS开发的基础知识,包括iOS开发的编程语言和开发工具,…

[Unity] ShaderGraph实现DeBuff污染 溶解叠加效果

本篇是在之前的基础上,继续做的功能衍生。 [Unity] ShaderGraph实现Sprite消散及受击变色 完整连连看如下所示:

python实现建立一个智能小车路径规划

在Python中实现一个智能小车的路径规划系统,你可以采用多种方法和库。这里,将给出一个基于图搜索算法(如A*算法)的简单示例,并结合一些Python库如networkx来处理图的操作,以及matplotlib来可视化路径。 步…

如何在Html界面内实现类似ChatGpt的打字效果

为了在你的代码中添加打字机效果,你可以创建一个函数来逐字展示内容。这个函数会将内容分解成单个字符,然后逐渐显示在页面上。下面是如何实现这个效果的步骤: 1. 定义打字机效果的函数 首先,你需要一个函数来逐步显示文本内容。…

简洁高效的设备稼动率采集系统(一)

前言: 在自动化生产行业,每个公司都需要一款高效的生产设备,那我们怎么体现出设备的高效呢? 可以采集设备的状态,经过成熟的算法,得到设备的稼动率。设备稼动率是衡量生产设备在一定时间内真正处于生产状态…

Django学习(二)

get请求 练习: views.py def test_method(request):if request.method GET:print(request.GET)# 如果链接中没有参数a会报错print(request.GET[a])# 使用这个方法,当查询不到参数时,不会报错而是返回你设置的值print(request.GET.get(c,n…

Vite 常用插件配置:自动导入+自动注册组件+动态创建图标+设置组件名

创建 Vue3Vite 项目 创建 Vue3 项目 $ pnpm create vuelatest通过脚手架选择开启以下功能 ✔ Project name: … <your-project-name> ✔ Add TypeScript? … No / Yes ✔ Add JSX Support? … No / Yes ✔ Add Vue Router for Single Page Application development?…