虹软科技嵌入式驱动开发工程师笔试

8月7号投递虹软提前批,8月20号笔试,对笔试做一下总结

题型:三道编程题,ACM模式,不是很难,但是ACM需要自己处理输入输出,以前练习都是核心代码模式,所以不是很适应,平时应该多练ACM模式

第一题:输入一串字符串,不超过9个字符,每个字符范围是0到9,要求把这个字符串能够组合成的最大整数输出

例子:

输入:“0952”

输出:9520

解答:这题还是比较容易的,只需要把每个字符转换成整数,然后把这些数按照从大到小排序,每个数分别乘以相应的权重相加即可以得到需要输出的整数。需要注意的点如下:

(1)首先考虑可以使用一个整数数组来存储转换得到的整数;

(2)注意把数字字符转换成整数的时候,int num = (int)c - '0';把字符强制类型转换成整数得到对应的ASCII码然后减去0的ASCII码就得到字符对应的整数;

(3) 我是用C语言写的程序,C语言应该有数组排序的库和函数,但是我不知道,所以自己手写了一个冒泡排序;

(4)注意考虑边界条件

第二题:判断mac地址。mac地址通常由6组16进制数组成,每组数之间使用":"或者“-”隔开,输入一串字符,要你判断这串字符是不是mac地址,是则输出true,否则输出false

输入:5a:6p:68:21:8f-9a

输出:true

输入:-a6:42:dsfsdfd

输出:false

解答:我是通过遍历输入的所有字符是否能够根据":"或者"-"分割成6组,并且判断":"和"-"的字符数量是否满足5个来进行判断。同时首先要对边界条件进行判断,即分割字符不能出现在字符串的首尾。但是我最终只通过20/22样例,最后两个样例没通过,可能是边界条件没处理好。

第三题:这一题使用嵌入式开发的场景,要你编写一个温度报警程序。给定三个寄存器reg1,reg2,reg3的值(32位无符号整数)以及报警阈值alarm(332位有符号整数),都是无符号整数,其中reg1的第八位是状态位,为1时表示报警器处于失效状态,直接输出true。reg2的低四位[3:0]是温度采样值的高位数据,reg3的[24:31]是采集数据的低位数据,精度为0.1,即采样值乘以0.1就是实际温度值,但是要注意考虑正负,正负其实就是由12位ADC采样值的最高位决定。温度测量范围位[-201,201]。当温度大于阈值alarm时报警,输出true,否则输出false。

输入是4个十六进制数,分别对应reg1,reg2,reg3,alarm

输入:88 12345678 8a520012 120

输出:ture

解读:这题考察的其实就是寄存器的使用。首先要对状态位进行判断确定是否直接输出ture。在警报器正常的前提下再去读取ADC采样值然后转换成实际温度。在转换过程中需要注意对最高位进行判断以确定实际温度是正值还是负值。最高位等于1那是负数,最高位等于0表示整数。剩下的其他位数就表示它的绝对值。因此在转换成实际温度值时,只需要转换低11位为正数,然后再根据最高位加正负号。在读取ADC的数值,因此ADC的结果分别放在两个寄存器中,因此需要对寄存器中的值进行一些位操作才能得到正确的值。在这题中,unsigned int temp_adc = ((reg2 & (0xF) ) << 8) | ((reg3 & (0xFF000000)) >> 24)。首先就是通过按位与保留需要读取的位的数据,其他位清零,然后再通过移位操作把相应的数据放到对应的位置,最后再通按位或 | 把数据拼接在一起得到最后的数据。

但是这题我应该是细节没处理好,样例只通过了4/6。还是得好好打磨自己的代码细节。

还有最后的总结就是:数据结构与算法,顾名思义,数据结构、算法不分家。对于一道算法题,首先要想用什么样的数据结构存储输入,数组还是链表?大部分是数组。可能会有人说还有队列、树什么的,但是这些归根结底都是数组或者链表。选定了存储结构,才能去思考用什么样的算法。数据结构就是地基,算法就是在地基上建起的大楼。通过对于数组的话,我们也要考虑建立动态数组(用malloc创建)还是建立一个普通数组(比如char s[100])。一般情况下建立普通数组就行,对于输入长度或者数组长度不确定的话,我们建一个大一点的数组,比如给它100?1000?然后在实际使用的使用的时候再用一个计数值去记录实际使用(存储)的个数就行。

#虹软科技##嵌入式驱动开发工程师#
全部评论
看看我帖子
点赞
送花
回复 分享
发布于 2023-08-21 02:02 北京
mac地址可以:和-混合吗
点赞
送花
回复 分享
发布于 2023-08-21 11:38 浙江
国泰君安
校招火热招聘中
官网直投
厉害啊佬,这个思路
点赞
送花
回复 分享
发布于 2023-08-21 13:54 江苏
同岗位,请问收到面试了吗?一直显示待面试
点赞
送花
回复 分享
发布于 2023-08-31 00:53 德国

相关推荐

2 19 评论
分享
牛客网
牛客企业服务