2018年摩拜校招嵌入式工程师笔试卷

简介: 2018年摩拜校招嵌入式工程师笔试卷

拓展:


嵌入式工程师题库(适用于各大名厂笔试、软考、计算机等级考试)


第1题:下面代码片段中有哪些隐患或者错误?


image.png


回答:


1、调用get2(m)函数的时候,没有return,也不是全局变量,无法将new申请的内存地址传出,无法修改m的实际值;


2、调用m=get1()函数的时候,函数内定义的数组是局部变量,对应的内存在这个函数结束的时候就会被释放,因此return buf返回的地址是无效的,调用这样的地址造成严重错误;


3、调用memcpy(m,"aaa",3)函数,m为int类型指针,并不是指针数组,往一个没有权限的无效内存空间拷贝数据是非法的。


第2题:用变量a给出以下定义:


一个指向指针的指针,它指向的指针是指向一个整型数;

一个有10个指针的数组,该指针是指向一个整型数的;

一个指向有10个整型数数组的指针。

回答:


int **a;
int *a[10];
int (*a)[10];

第3题:简述SPI、IIC、UART接口的区别和各自收发数据的方法。


回答:


SPI:串行同步外设接口,全双工通信,SPI 是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟来对串行比特流的接收进行同步化。可能会有许多芯片连到主机的同一个SPI接口上,这时主机通过触发从设备的片选输入引脚来选择接收数据的从设备,没有被选中的外设将不会参与SPI传输。


SPI主要使用4个信号:主机输出/从机输入(MOSI)、主机输入/从机输出(MISO)、串行SCLK或SCK和外设芯片(CS )。有些处理器有SPI接口专用的芯片选择,称为从机选择(SS)。


主机和外设都包含一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器是通过MOSI信号线将字节传送给外设,外设也将自己移位寄存器中的内容通过MISO信号线返回给主机,如下图所示。这样,两个移位寄存器中的内容就被交换了。外设的写操作和读操作是同步完成的,因此SPI成为一个很有效的协议。


image.png


IIC: 内部集成电路总线,半双工通信,只需要两条线:一串行数据SDA线和串行时钟SCL线,IIC总路线用两线来连接多支路总线中的多个设备。这种总线是双向、低速的,并与公共时钟同步。可以直接将一个设备接到IIC总线上或是从该总线上取下,而不会影响其他设备。


利用IIC接口在设备之间进行连接所使用的两根线是SDA (串行数据)和SCL (串行时钟),它们都是开漏(open-drain), 通过一个上拉电阻接到正电源,因此在不使用的时候任保持高电平,IIC总线在传送数据过程中共有3种类型信号,它们分别是开始信号、结束信号和应答信号,解析如下所示:


开始信号: SCL为高电平时,SDA 由高电平向低电平跳变,开始传送数据;


结束信号: SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据;


应答信号:接收数据的IC在接收到8位数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。


发送方发出的每个字节都必须经过接收方确认,每个字节的第8个数据位一旦传送结束,发送方就释放数据线SDA。然后主机在SCL上产生一个额外的时钟脉冲,这会触发接收方通过将SDA置为低电平来表示对接收到的字节进行;如果接收方没能将SDA置为低电平,发送方就会中断传输,并且采取适当的错误处理措施。


UART: 通用异步收发传输器,全双工通信,异步式传输把每一个字符当作独立的信息来传送,并按照一固定且预定的时序传送,但在字符之间却取决于字符与字符的任意时序。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx 和Tx)就可以完成通信过程,因此也称为异步串行通信。


拓展学习:详解RS232、RS485、RS422、串口和握手


第4题:从以下几种无线通信方式中选取一种了解的尽可能详细的描述一下:BLE,Wi-Fi ,NFC,NB-IoT,eMTC。


回答:


互联网上有很多解析,列举两例。


BLE:低功耗蓝牙,2.4GHz ISM频段,IEEE 802.15.1标准,它利用许多智能手段最大限度地降低功耗。蓝牙低能耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。另外,因为BLE技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路。BLE技术的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等其它外设传送数据。这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如每秒几次到每分钟一次,甚至更少)。


拓展:NB-IoT技术发展史漫谈、NB-IoT综合项目实战开发背景及平台


第5题:试描述MQTT、CoAP、HTTP三种协议的区别。


回答:


参见:物联网协议对比(HTTP、websocket、XMPP、COAP、MQTT和DDS协议)


第6题:试描述TCP建立和断开连接时的三次握手和四次挥手。


回答:


三次握手(Three-Way Handshake)即建立TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立,如下图所示:


第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,seq=x;

第二次:服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。ACK=1,ack=x+1,SYN=1,seq=y;

第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常.seq=x+1,ACK=1,ack=y+1。

image.png


四次挥手(Four-Way Wavehand)即终止TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开,如下图所示:


第一次:客户端请求断开FIN,seq=u

第二次:服务器确认客户端的断开请求ACK,ack=u+1,seq=v

第三次:服务器请求断开FIN,seq=w,ACK,ack=u+1

第四次:客户端确认服务器的断开ACK,ack=w+1,seq=u+1

image.png


第7题:一个无序的长度为n的数组,找到最小的值,请用C语言编码实现以下函数


int get_min(int* array, int n) {
}

回答(C语言编写):


int get_min(int* array, int n)
{
    int i ;
    int min = array[0];
    for(i=1; i<n; i++)
    {
        if(array[i] < min)
            min = array[i];
    }
    return min;
}

第8题:工厂生产摩拜单车包含两道工序,工序A每5min生产一辆摩拜单车,生产完成后送到工序B检测,每1min检测一辆,检测失败的需要返回工序A重新生产;试用多线程(多任务)的机制实现上述的生产工序,实现产能的最大化。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9月前
|
缓存 NoSQL 测试技术
测开面经(2)~
测开面经(2)~
|
9月前
|
存储 网络协议 测试技术
测开面经(1)~
测开面经(1)~
|
9月前
|
消息中间件 NoSQL Java
春招开始,面试也多起来了
春招开始,面试也多起来了
91 0
春招开始,面试也多起来了
|
设计模式 NoSQL 算法
“2023金三银四”又来了,关于面试,你需要知道的这些事
没有跳不了的槽,只有没用心的人,2023最新后端岗位面试真题+简历包装。
128 0
“2023金三银四”又来了,关于面试,你需要知道的这些事
|
异构计算
【数字设计】经纬恒润_2023届_笔试面试题目分享
【数字设计】经纬恒润_2023届_笔试面试题目分享
【数字设计】经纬恒润_2023届_笔试面试题目分享
|
开发框架 算法 前端开发
应届生该如何准备面试,我有话想说。
面试的前提准备包含5~6个方面:简历编写、项目经验、技术能力、简历投递(牛客网、脉脉、智联招聘、BOSS直聘)、面试准备、算法准备等等内容。 面试过程包含内容:一般分为2~3轮技术面试+1轮HR面试,1轮技术面试又包含了基础知识和业务逻辑面试和算法面试(中大厂必备)。 基础知识面试:对专业知识是否掌握,掌握的熟练度又是几成。比如学校学习的操作系统、计算机组成原理、计算机网络、数据结构、数据库甚是前端相关知识都可以考察。 业务逻辑面试:对简历上的项目考察,面试官根据项目的内容进行考察,比如项目某个功能为什么要这么做?优缺点分析,假如重新让你再做一次,你会怎么做。。。然后会针对你所做的东西进行深度
229 2
应届生该如何准备面试,我有话想说。
|
存储 算法
面试前的准备,笔试练手感
 现在出去面试,很多时候都会让你先做一份笔试题,而题目一般是中等偏下的水平,不会很难。   在面试前需要练练手感,以免在解题时没有思路。   练手感可以自己准备一些笔试题目,可根据自己的情况选择合适的题目,而解法可以写一种或多种。   还搜集了一些笔试算法总结,例如《一句话算法》、《LeetCode》相关的内容。
面试前的准备,笔试练手感
|
消息中间件 NoSQL 算法
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
206 0
双非硕士的辛酸求职回忆录:第 1 篇 一份让面试官满意的简历究竟要做到什么
|
存储 缓存 算法
秋招结束面试和面经的总结(个人向)
主要是自己秋招的个人总结(太菜了呀我)
|
机器学习/深度学习 算法 小程序
双非硕士的辛酸求职回忆录: 第 3 篇 也谈谈校招项目面试究竟该注意什么及我是如何准备开发项目的
双非硕士的辛酸求职回忆录: 第 3 篇 也谈谈校招项目面试究竟该注意什么及我是如何准备开发项目的
285 0