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


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 前端开发 JavaScript
十二款·富文本编辑器:数字创作的瑞士军刀
在数字化时代,内容创作已经成为我们日常生活中不可或缺的一部分。无论是撰写一封电子邮件、准备一份报告、还是在社交媒体上分享心情,文字都是我们表达和沟通的基石。而在这个过程中,富文本编辑器就如同一把瑞士军刀,为我们提供了多种功能以增强和美化我们的文字内容。
1250 1
|
Python
Django 框架的路由系统
Django 框架的路由系统
345 63
|
搜索推荐 数据挖掘 API
制造业CRM解决方案:管理升级之道
制造业面临订单价值大、交货周期长、客户开发难等挑战。CRM 系统通过全面管理客户信息、精准营销、改善服务质量和订单管理,有效解决了这些问题。成功案例显示,CRM 系统能显著提高销售转化率和客户满意度。推荐的 CRM 系统包括销售易、SalesForce、神州云动 Cloud CC、用友 CRM、金蝶 CRM 和 Zoho CRM。选择合适的 CRM 系统对制造业的数字化转型和可持续发展至关重要。
|
人工智能 弹性计算 运维
触手可及:阿里云函数计算助力AI大模型的评测
阿里云推出的面向AI服务器的功能计算(Functional Computing, FC),专为AI应用提供弹性计算资源。该服务支持无服务器部署、自动资源管理和多语言支持,极大简化了AI应用的开发和维护。本文全面评测了FC for AI Server的功能特性、使用体验和成本效益,展示了其在高效部署、成本控制和安全性方面的优势,并通过具体应用案例和改进建议,展望了其未来发展方向。
551 4
|
搜索推荐 数据可视化 BI
ECharts 蓝色系-荧光图标折线图01案例
ECharts 案例展示了一周内各路线数据的蓝色荧光折线图,揭示流量趋势。预览包括静态图片和动态GIF。使用ECharts 5.2.0配置图表,包含背景、网格、图例及数据。代码示例初始化图表、定义X轴类别和Y轴值,以及系列颜色。完整案例可在链接中下载。案例结合动态效果与个性化设计,增强数据可视化的吸引力。
416 0
ECharts 蓝色系-荧光图标折线图01案例
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在DataWorks中,使用JSON解析函数将MySQL表中的字段解析成多个字段将这些字段写入到ODPS(MaxCompute)中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
482 3
|
SQL Java Android开发
Mat使用详解
Mat使用详解
|
开发者 Python
手把手教你申请软件著作权(已下证 带模板)
手把手教你申请软件著作权(已下证 带模板)
|
Linux
报错 Package ‘oniguruma‘, required by ‘virtual:world‘, not found
报错 Package ‘oniguruma‘, required by ‘virtual:world‘, not found
850 0

热门文章

最新文章