8.15笔试题(中玉科技)嵌入式c

2023-10-04 04:30

本文主要是介绍8.15笔试题(中玉科技)嵌入式c,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简答题

1.extern全局变量,static全局变量,static局部变量的生存期是多少

extern全局变量

生命周期:从程序开始到程序结束

作用域:全局作用域:只需在一个头文件中定义,就可以作用与全部的源文件

内存分布:静态储存区

如果两个文件都定义了相同的全局变量,则连接错误

static全局变量

生命周期:从程序开始到程序结束

作用域:文件作用域(static还有一个作用就是隐藏)

内存分布区:静态储存区

static 局部变量

生命周期:程序运行期一直存在

作用域:局部

内存分布:静态储存区


2.宏和内联函数的区别

内联函数的执行过程与带参宏函数的执行很相似,但是宏只是单纯的文本的替换,

内联函数首先是函数,这就意味着函数的很多性质都适用于内联函数,即内联函数先把参数表达式进行运算求值,然后把表达式的值传递给形式参数。

宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行时的时间.

作为内联函数,函数体必须十分简单,不能含有循环、条件、选择等复杂的结构,否则就不能做为内联函数了

因此,函数调用要有一

定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把

代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个

函数更有效率。

3.New dalete 和malloc free的区别

1.malloc是c库中的标准函数,new delete是c++的关键字,使用new可以根据类型信息自行开辟出所需要的内存,而malloc则要手动定义内存大小。

2.malloc内存分配成功使,分配的是void*指针,需要转换成所需要的类型,new内存分配成功使,返回的是对象类型的指针,无需进行类型转换

new会先调用operator new函数,申请足够的内存(通常底层使用malloc实现)。然后调用类型的构造函数,初始化成员变量,最后返回自定义类型指针。delete先调用析构函数,然后调用operator delete函数释放内存(通常底层使用free实现)。

4.使用bind等函数写出tcp建立流程

服务器

bind(int socket_fd,const struct sockaddr*addr,socket_addren);

listen(socket_fd,backlog)

堵塞

accept(int socket_fd,const struct sockaddr*addr,socket_addren);

客户端

connec(int socket_fd,const struct sockaddr*addr,socket_addren);

5.n个人报圈问题


#include<stdio.h>#define max 15int main(){int i,k,n,m,num[max],*p;printf("输入开始报数时总人数:");scanf("%d",&n);//开始报数前的人数。p=num;//指针指向数组第一位num[0]for(i=0;i<n;i++)//把n个人进行编号为1—n。*(p+i)=i+1;printf("依次出圈的人的编号:");i=0;k=0;m=0;while(m<n-1)//m为圈外人数。当m=n-1时,不再执行while循环,此时圈内还有一个人。{if(*(p+i)!=0)//报数。k++;if(k==3){printf("%d ",*(p+i));//按顺序依次输出出圈的人的编号。*(p+i)=0;//对于出圈人数,其值置为0。m++;//圈外人数加1。k=0;//重新开始报数。}i++;//指针指向下一位。if(i==n)//指针移到最后一位时,重新赋值i=0;//printf("\n");}for(i=0;i<n;i++)//输出最后一位出圈的人的编号if(*(p+i)!=0)printf("\n最后一位出圈的人的编号:%d\n",*(p+i));return 0;}

6.嵌入式题目

1.看门狗作用

是一个定时器电路,一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,使MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

2.简述spi总线和iic总线的通信原理

iic 

SCL :时钟线 /SDA :数据线 / 这两条线都是漏极开路或者集电极开路结构,使用时需要外加上拉电阻,
可以挂载多个设备。每个设备都有自己的地址,主机通过不同地址来选中不同的设备。
总结,Sdata发出起始信号(将高电平拉低),在脉冲信号的作用下,scl每发过来一个脉冲,sda就会发送一个位,连续发8个位,之后在第九个时钟周期,会发出一个应答信号,如此循环,通信结束时发出停止信号释放总线。总之,iic适合主从关系特别明显的设备进行通信,例如6818和htu21。
spi
        
 全双工 三线 同步串行 外围接口,采用主从模式架构;支持多从机模式应
用,一般仅支持单主机。时钟由主机控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后;
SPI 接口有两根单向数据线,为全双工通信,目前应用中的数据速率可达几 Mbps 的水平。 SPI 总线被广泛
的使用在 FLASH ADC LCD 等设备与 MCU 间,要求通讯速率较高的场合。
cpol为时钟极性 cpoh 为时钟相位  1决定空闲时刻的sck时钟 cpoh决定采样时刻0/1  奇数边 偶数边
CPOL CPHA 的不同状态, SPI 分为四种模式,主机和从机需要工作在相同的模式下才可以正常通讯,
因此通常主机要按照从机支持的模式去设置。
iic优点:支持多从机多主机,只有两条线 有应答机制 缺点:速率慢
spi优点:速率快,全双工通信 缺点:单个主机,每个从机都需要一个片选线。
3./etc/inittab /etc/fstab /etc/rcS的作用
1.配置init进程 init进程是所有进程的父进程 简单点来说就是系统启动的初始化的配置文件
2.存放文件系统的静态信息的文件
1.当系统启动的时候,系统会自动地从这个文件读取信息,(记录了一些文件和目录的挂载信息)
1.把想开机运行的命令行放到/etc/init.d/rcS中就可以了 (是完成各文件系统的 mount,各个文件系统挂载成功后才能启动)

/etc/profile

此文件则是在系统进入控制台后第一个调用的文件,这个文件中的内容主要是来设置环境变量的

4.fork和vfork的区别

fork函数创建的子进程的虚拟地址空间是复制父进程的,在进行写操作之前,父子的物理页面是共享的,而当要进行写操作时,内核才会给要进行写操作的进程重新分配一个物理页面;而vfork函数的父子进程时共享虚拟地址,从而也共享了物理地址。换句话说,也就是fork函数复制父进程的数据段,代码段;而vfork函数父子进程共享数据段。fork函数父子进程执行的次序不确定,它是由调度器来=来决定的;而vfork函数会保证子进程先运行,再被调用exit或exec后父进程才可能会运行。vfork 保证子进程先运行,在她调用exec 或exit 之后父进程才可能被调度运行。如果在  调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。

内存空间分配   

执行次序   

5.exit _exit  Exit的作用

fopen fwrite fread文件时,会多读出若干条记录,这样下次读文件时就可以直接从内存的缓冲区中读取,每次写文件的时候,也仅仅是写入内存中的缓冲区,等满足了一定的条件(达到一定数量,或遇到特定字符,如换行符和文件结束符EOF), 再将缓冲区中的 内容一次性写入文件,这样就大大增加了文件读写的速度,但也为我们编程带来了一点点麻烦。如果有一些数据,我们认为已经写入了文件,实际上因为没有满足特 定的条件,它们还只是保存在缓冲区内,这时我们用_exit()函数直接将进程关闭,缓冲区中的数据就会丢失,反之,如果想保证数据的完整性,就一定要使用exit()函数。

所以exit是将缓冲区的数据写入文件内?保证数据的完整性

这篇关于8.15笔试题(中玉科技)嵌入式c的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1282

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

深入探索嵌入式 Linux

摘要:本文深入探究嵌入式 Linux。首先回顾其发展历程,从早期尝试到克服诸多困难逐渐成熟。接着阐述其体系结构,涵盖硬件、内核、文件系统和应用层。开发环境方面包括交叉编译工具链、调试工具和集成开发环境。在应用领域,广泛应用于消费电子、工业控制、汽车电子和智能家居等领域。关键技术有内核裁剪与优化、设备驱动程序开发、实时性增强和电源管理等。最后展望其未来发展趋势,如与物联网融合、人工智能应用、安全性与

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

两道笔试题

“char a='\72'”是什么意思? 这么理解:\为转义字符,\072转义为一个八进制数072,也就是十进制数的58买一送一,将转义字符对照表也一并贴给你吧:转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT