广告
返回顶部
首页 > 资讯 > 服务器 >【嵌入式笔试】嵌入式笔试题
  • 635
分享到

【嵌入式笔试】嵌入式笔试题

面试c语言嵌入式硬件 2023-10-12 19:10:27 635人浏览 独家记忆
摘要

📜作者:不想脱发的基兄 📺专栏:《嵌入式面试》 📣格言:这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活。 前言 2022年秋招我面试嵌入

📜作者:不想脱发的基兄

📺专栏:《嵌入式面试

📣格言:这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活。

前言

2022年秋招我面试嵌入式MCU开发方向,经过了多场的笔试与面试,在准备的过程中看了非常多的资料,我的汇总的笔记一直写在有道云笔记中,没有分享出来。现在已经到了23年春招了,特此整理后分享出来。资料看过了觉得不错就保存下来了,如果有不对的地方,欢迎批评指正,侵权联删!

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

#define YEAR_SEC 365*24*3600UL 

2. 写一个“标准"宏MAX,这个宏输入两个参故并返回较大的一个

#define MAX(a,b) ((a)>(b))?(a):(b)

3. 已知一个数组 table,用一个宏建义,求出数据的元素个数

#define LEN(a) sizeof(a)/sizeof(a[0])

4. 如何在两个c文件中访间对方的静态变量和全局变量?

答:静态变量被修饰之后,能跨文件访问,普通的全局变量可以利用extern关键字做外部声明。静态变量可以通过使用定义函数的结构,跨文件获取静态变量的值。
例:

// utils.hextern int getStaticVar();// utils.c#include "utils.h"static int staticVar = 10;int getStaticVar() {    return staticVar;}// main.c#include #include "utils.h"int main() {    int var = getStaticVar();    printf("Static var is %d", var);    return 0;}

在这个例子中,utils.h 头文件声明了 getStaticVar() 函数。utils.c 实现了这个函数,并定义了一个静态变量 staticVar。这个静态变量不能通过在头文件中声明而直接访问,因此需要提供一个函数 getStaticVar() 来获取这个变量的值。在 main.c 文件中,我们包含了头文件并使用 getStaticVar() 函数来获取静态变量的值。

5. 关键字volatile有什么含意,并给出三个不同的例子?

答:
(1)含义:volatile是让处理器在访问修饰的变量时不能进行优化处理,需要小心访问该变量;
(2)使用方式

  • 某函数与中断函数共享全局变量时,需要使用volatile修饰;
  • 多线程操作时,多个线性共享一个全局变量,使用volatile修饰;
  • 裸机编程,变量指向某一地址,需要使用volatile修饰。

6. 用变量a给出下面的定义

(1)一个整型数
(2) 一个指向整型数的指针
(3)一个指向指针的指针,它指向的指针是指向一个整型数
(4) 一个有10个整型数的数组
(5)一个有10个指针的数组,该指针是指向一个整型数的
(6)一个指向有I0个整型数数组的指计
(7)一个指向函数的指针,该函数有一个整型参数并返回一个整型数
(8)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
参考答案

    int a;//整型数    int *b = &a;//指向整型数的指针    int **c = &b;//指向指针的指针    int d[10];//一个有10个整型数的数组    int *e[10];//一个有10个指针的数组    int (*f)[10];//一个指向有I0个整型数数组的指计    int *g(int);//一个指向函数的指针    int (*h[10])(int);//一个有10个指针的数组

7. 函数fiunc输入参数为0x12345678时的返回值为多少?写出你对函数fune的理解。

题目代码

unsigned long func(unsigned long dat){    unsigned long t = 0;    while(dat)    {        dat&=dat - 1;        t++;    }    refurn t;}

答:

(1)返回值:返回dat转换为2进制有多少个1的个数。
(2)功能:dat经过多少次与自己本身减1进行位与之后变为0,返回值是dat转换为二进制里面有多少个1的个数。

8、用C语言设计一个函数,对指定的数组排序(从小到大,用2种方法)

例1:冒泡排序

void maopao(int a[],int len){    int i,j,t;    for(i=0; i<len;i++)        {        for(j=i+1; j<len;j++)        {            if(a[i]>a[j])            {                t = a[i];                a[i] = a[j];                a[j] = t;            }        }    }}

例2:快速排序

int partition(int numbers[], int len)    //递归实现{    int tmp = numbers[0];    int low = 0;    int high= len-1;    while(low < high)    {        while(low<high && tmp<=numbers[high]) high--;        numbers[low] = numbers[high];        while(low<high && numbers[low]<=tmp) low++;        numbers[high] = numbers[low];    }    numbers[low] = tmp;    return low;}void quick_sort(int numbers[], int len){    if(len <= 1)        return;    int pivot = partition(numbers, len);    quick_sort(numbers, pivot);    quick_sort(numbers+pivot+1, len-pivot-1);}

9. 在嵌入式系统中串口数据接收时,通常会将接收到的字节数据顺序存入一个数组,有时也会顺序存入一片内存空间。

(1)请用C语言实现串口接收中断服务程序,将接收到的数据依次存入绝对地址0x80000000开始的内存区,如果接收到0xC0,则将接收完成标识整形变量g_flagRxOk置1,以通知主函数做串口数据解析处理,并为下次接收做好准备。(注:串口接收数据寄存器地址为Oxa0000000)
参考代码

typedef unsigned char uint8_t; typedef unsigned long uint32_t; volatile uint32_t i = 0; void USARTX_IRQHandler(void)   //x根据串口号改变为数字,串口1中断服务程序{    //1个字节产生一次中断     uint8_t d;    if(USART_GetITStatus(USARTX, USART_IT_RXNE) != RESET)  //接收数据寄存器非空中断    {        //接收串口数据        d = *(volatile uint8_t*)0xa0000000;          //读取            *(volatile uint8_t*)(0x80000000+i) = d;    //写入         i++;         //全局变量,主函数做串口数据解析处理后值0        if(d == 0xC0)        {        g_flagRxOk = 1;        }     //清空串口接收中断标志位        USART_ClearITPendingBit(USARTX, USART_IT_RXNE);        }              } 

(2)在大端系统中,假设在0x80000000~0x80000003地址空间存储的数据分别为0x12,0x34,0x56和0x78,请问如果直接32位数据读取操作的读取结果值是多少?
00010010 00110100 01011000

答:大端:读取到0x12345678

参考链接

[1]超详细十大经典排序算法总结(java代码)c或者cpp的也可以明白
[2]嵌入式系统数据存储的大端模式小端模式应用举例0x12345678存储到8000H

本栏前文

[1]【嵌入式面试】2022年嵌入式经典面试题汇总(C语言)
[2]【嵌入式面试】2022年嵌入式经典面试题汇总(数据结构)
[3]【嵌入式面试】2022年嵌入式经典面试题汇总(Linux | 文件IO)
[4]【嵌入式面试】2022年嵌入式经典面试题汇总(系统编程)
[5]【嵌入式面试】2022年嵌入式经典面试题汇总(网络编程)

来源地址:https://blog.csdn.net/qq_44330858/article/details/129234004

--结束END--

本文标题: 【嵌入式笔试】嵌入式笔试题

本文链接: https://www.lsjlt.com/news/429816.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【嵌入式笔试】嵌入式笔试题
    📜作者:不想脱发的基兄 📺专栏:《嵌入式面试》 📣格言:这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活。 前言 2022年秋招我面试嵌入...
    99+
    2023-10-12
    面试 c语言 嵌入式硬件
  • 嵌入式Linux学习笔记—fastboot烧写Android
    本系列为本人在自学过程中的学习笔记,如有错误欢迎大家指正。 学习资料为讯为ITOP4412开发板。 fastboot烧写Android 1、主要...
    99+
    2022-06-06
    嵌入式linux Linux 嵌入 Android
  • 嵌入式工程师常见面试题(持续更新版本)
    前言:鄙人于学堂求学十余载,终是要踏足江湖求一寸安身处!以前都忙着学习新东西以及做项目,现如今也需要面对找工作的压力。此篇博客是作者准备的嵌入式工程师常见的面试题目汇总,其答案包含网络搜索和作者自己感悟总结的,可能存在问题,如有大的纰漏希望...
    99+
    2023-10-10
    嵌入式 面试题 C/C++
  • CSS嵌入式样式表怎么写
    这篇文章主要介绍“CSS嵌入式样式表怎么写”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS嵌入式样式表怎么写”文章能帮助大家解决问题。 内嵌式是将CSS代码...
    99+
    2022-10-19
  • 嵌入式八股文汇总
    1、C/C++ 1.1 关键字 (参考”嵌入式及Linux那些事“以及众多帖子汇总而成) volatile ​ 当声明指向设备寄存器的指针时一定要用volatile,它会告诉编译器不要对存储在这个地 ...
    99+
    2023-10-12
    c++ c语言 单片机 stm32
  • 嵌入式会使用git吗
    嵌入式会使用git吗随着嵌入式系统应用越来越广泛,使得嵌入式系统的开发变得愈加复杂,因此需要采用先进的开发工具来进行系统的开发和管理。在这一过程中,GIT作为一个目前比较流行的版本控制工具,它的优越性和使用方便性也逐渐被越来越多的人认识和接...
    99+
    2023-10-22
  • 一文详解嵌入式SQL
    目录嵌入式SQL概述使用嵌入式SQL的注意事项区分SQL语句与主语言语句数据库工作单元和程序工作单元之间的通信协调两种不同的处理方式嵌入式SQL程序的组成程序首都程序体在嵌入式SQL中使用游标检索多个元组游标定义语句游标...
    99+
    2023-01-17
    嵌入式SQL
  • Dreamever怎么嵌入css样式
    本篇内容介绍了“Dreamever怎么嵌入css样式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!步骤我们打开DW后,新建一个站点,路径保存...
    99+
    2023-06-08
  • 嵌入式软件是什么
    嵌入式软件是是一种特殊类型的软件,它被嵌入到电子设备中,用于控制设备的各种操作和功能。嵌入式软件通常是专门为特定应用领域或特定设备设计和构建的,比如手机、智能电视、汽车、洗衣机等。这些设备需要软件来执行特定任务,嵌入式软件就扮演了这样的角色...
    99+
    2023-08-09
  • 嵌入式linux设备网口带宽的测试方法是什么
    嵌入式linux设备网口带宽的测试方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。iperf是一个基于Client/Server的网络性能测试工具,可以测试TCP、UD...
    99+
    2023-06-05
  • 嵌入式Redis服务器在Spring Boot测试中的使用教程
    1、概述 Spring Data Redis提供了一种与Redis实例集成的简单方法。 但是,在某些情况下,使用嵌入式服务器比使用真实服务器创建开发和测试环境更方便。 因此,我们将学...
    99+
    2022-11-12
  • 嵌入式QT移植的实现
    目录一、软件包、环境说明1.1 软件包1.2 环境说明二、环境搭建2.1 ubuntu下安装通用的交叉编译器2.2 ubuntu下编译Qt源码2.3 ubuntu下编译tslib库2...
    99+
    2022-11-13
  • 什么是嵌入式PC技术
    嵌入式PC技术是指将个人电脑(PC)技术应用于嵌入式系统中的一种技术。嵌入式系统是指被嵌入到其他设备中的计算机系统,如家电、汽车、医...
    99+
    2023-08-18
    PC技术
  • 嵌入式软件开发面试准备 —— 凡事预则立,不预则废
    在求职中,我主要投报了软件研发和嵌入式软件研发两个职位,与各位分享一下我的面试准备。 面试需要准备一下几个方面: 首先,是自我介绍 准备一段1分钟之内的自我介绍,包含基本的个人消息,项目信息,获奖信息等。不要太长,简...
    99+
    2022-06-03
    Linux 准备 嵌入式 技术书籍 求职 面试 项目经验
  • 嵌入式可以用go语言吗
    是的,嵌入式系统可以使用Go语言进行开发。Go语言是一种现代化的编程语言,具有简洁的语法、高效的并发支持和良好的内存管理。由于其轻量...
    99+
    2023-10-12
    Go语言
  • java嵌入式数据库有哪些
    在Java中,有多种嵌入式数据库可供选择。以下是一些常见的嵌入式数据库:1. Apache Derby:这是一个完全用Java编写的...
    99+
    2023-10-09
    java 数据库
  • 嵌入式数据库了解-记录
    最近需要使用嵌入式数据库进行存储应用本地信息,本文章主要进行记录当前比较流行的嵌入式数据库相关的链接,嵌入式数据库往往是以lib的形式存在,常用于持久化存储软件的信息,嵌入式数据库往往和应用软件紧密集成: 特点: database sys...
    99+
    2018-10-15
    嵌入式数据库了解-记录
  • MongoDB 关系-1对多的嵌入式
    1.查看数据库 show dbs2.使用数据库 use test3.查看数据库中的集合 show collections4.添加集合中添加数据(使用嵌入式方法,可以将用户地址嵌入到用户的文档中) db.si...
    99+
    2022-10-18
  • C++嵌入式内存管理详情
    目录一、Linux内核系统结构二、查看Linux内存1.cache2.buffer三、内存补齐前言: 上一篇介绍了软件层面上的内存,并没有涉及很多底层的原理;但在实际工程中,部署一个...
    99+
    2022-11-12
  • 怎么应用Fedora7嵌入式系统
    本篇内容主要讲解“怎么应用Fedora7嵌入式系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么应用Fedora7嵌入式系统”吧!编译安装miniGUI 1.6.2首先要做好准备工作,下载一...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作