华为OD 嵌入式开发工程师面经(二面)

自我介绍,我这次除了介绍简历上的内容,并且还说了一下我的优劣势。劣势我不太会讲,说了我这人比较慢热(不清楚是不是减分项),然后面试问的问题就比较深入了,问了Tcp的拥塞机制,还有重传,以及窗口大小是如何制定的等等,我答的的比较模糊,因为我之前用的LwIP协议栈将这些以及实现的有一套自己的超时和重传机制,至于滑动窗口问题我回答了传输时是如何确定的,面试官又问我那这个窗口是如何创建的,我这里确实不知道,说了是握手是定义的,然后补充确实不是很清楚,这个问题就算结束了,之后又问了ARM的中断管理,有几种中断状态,我不知道。就答非所问了一下操作系统概述上的中断管理机制那一套,这个问题也很快结束了,最后面试官让我 设计一个OTA升级程序,可以不重启就升级,我当时非常疑惑,stm32如何做到不重启,也就是不影响用户使用就升级系统,我之前项目是是一个BootLoader区,一个app区,怎么样都要跳转的。(后来想了一下那需要实现一个文件系统吧,像linux那样,万物皆文件),最后我回答了一个AB区交替升级的方案,但还是没有绕过重启的问题(最起码还是思考了的),最后只能说stm32上没见过有这种方案,之后还是手撕代码环节,题目是五子棋判赢,输入期盘2维数组,输出白赢黑赢还是都没赢,这个难度明显高了一个台阶,依然是30分钟,这次我没有全写出来,主要是判断4个方向上是否存在5子相同的子函数实现没想到,最后面试官让我解释了一下,我把没有实现的部分讲一下解题的思路,我叙述了一番,基本达到要求了,面试官又问我有没有想到什么算法,我就说了下遍历邻接节点,但是如何固定一个方向没想到合适的方法,所以选用了暴力的方法一个一个点来试了,对方给我说,其实可以用一个广度优先遍历就行了(???我面试完想了很久也没弄明白怎么实现的),我这次面试结束后,发觉ARM还有网路基础这块还是差的很多。

全部评论

相关推荐

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常用的传输层协议,用于在计算机网络中传输数据。它们有一些重要的区别,如下所示:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=02b1742be4564f04b7e1bdf3b39333d7连接导向 vs. 无连接:TCP是一种连接导向的协议,它在通信之前建立了一个可靠的连接。连接建立后,数据按顺序传输,而且在传输过程中会进行差错检测和重传,以确保可靠性。UDP是一种无连接的协议,每个数据包都是独立传输的,不需要先建立连接,也不提供可靠性保证。可靠性 vs. 速度:由于TCP提供可靠的连接,它能够确保数据的准确性、完整性和按顺序的传输。它使用确认、重传和流量控制等机制来处理丢失的数据包和网络拥塞。UDP则更加注重速度和效率,不保证数据的可靠性,因此在速度要求较高、数据丢失不会对应用造成严重影响的情况下使用较多。消耗的资源:由于TCP提供可靠性保证,它需要维护连接状态、重传丢失的数据等,因此在网络通信中消耗更多的计算资源和带宽。UDP则更简单,仅提供了基本的数据包传输功能,因此消耗的资源较少。应用场景:TCP适用于需要可靠数据传输和顺序传输的应用,如文件传输、电子邮件和网页浏览等。UDP适用于实时应用、流媒体和音频/视频通话等,这些应用对实时性和快速传输更为重要。
点赞 评论 收藏
分享
点赞 9 评论
分享
牛客网
牛客企业服务