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重新生产;试用多线程(多任务)的机制实现上述的生产工序,实现产能的最大化。


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
消息中间件 NoSQL Java
春招开始,面试也多起来了
春招开始,面试也多起来了
44 0
春招开始,面试也多起来了
|
4月前
|
缓存 网络协议 算法
【前端实习生备战秋招】—计算机网络面试题汇总,建议收藏系列
【前端实习生备战秋招】—计算机网络面试题汇总,建议收藏系列
技术面试常见智力题
了解技术面试常见智力题。
198 0
|
设计模式 NoSQL 算法
“2023金三银四”又来了,关于面试,你需要知道的这些事
没有跳不了的槽,只有没用心的人,2023最新后端岗位面试真题+简历包装。
“2023金三银四”又来了,关于面试,你需要知道的这些事
|
缓存 前端开发 JavaScript
金三银四百度前端实习面经
金三银四百度前端实习面经
|
设计模式 架构师 Dubbo
非计算机专业校招直入阿里0到48W年薪,绝密学习路线+面试题分享
近期,收到学生反馈,说是收到了阿里的offer,还给到了48.8W的年薪,仔细跟学生聊了一下,才知道这位学生大学并非是计算机专业,知道自己与计算机专业学生的区别; 于是通过自己的努力,把计算机底层编程必备基础知识:计算机网络+计算机组成原理+操作系统的知识都给掌握了,不断地补充自己的短板,经过内推直接进入阿里!
|
异构计算
【数字设计】经纬恒润_2023届_笔试面试题目分享
【数字设计】经纬恒润_2023届_笔试面试题目分享
【数字设计】经纬恒润_2023届_笔试面试题目分享
|
机器学习/深度学习 数据采集 SQL
【算法岗面试】某小厂V面试题
知识蒸馏(Knowledge Distillation,KD)是常用的知识迁移方法,通常由教师(Teacher)模型和学生(student)模型构成。知识蒸馏就像老师教学生的过程,将知识从教师模型传递给学生模型,使得学生模型尽量与教师模型接近。
245 0
【算法岗面试】某小厂V面试题
|
存储 算法
面试前的准备,笔试练手感
 现在出去面试,很多时候都会让你先做一份笔试题,而题目一般是中等偏下的水平,不会很难。   在面试前需要练练手感,以免在解题时没有思路。   练手感可以自己准备一些笔试题目,可根据自己的情况选择合适的题目,而解法可以写一种或多种。   还搜集了一些笔试算法总结,例如《一句话算法》、《LeetCode》相关的内容。
面试前的准备,笔试练手感