面经真题 | 华为

面试一共四面,面试岗位为嵌入式工程师。华为的面试官本次体验还是蛮好的,技术强,也比较温柔。下面开始进入正题吧~~~

【一面】资格面

主要是问了有以下几点:

  • 简历

好奇我的专业,然后问我学过哪些学科。

  • 项目

当时抓我的项目,一个无线传感器网络的项目。没有问技术,主要问了:

+ 做了多久
+ 在项目中处于什么角色,负责哪部分的工作。
+ 遇到了什么困难?

  • 规划

问了职业规划

  • 家庭

家庭成员,哪里人,打算在哪里定居。

  • 你在网上看到过华为od的负面消息吗,你什么想法?

不怎么了解,平时不怎么八卦,规避了这个问题。

其实这里更好的时候发表一些客观正向的评价,不表现的我谄媚,但是我也不直言。

关于面试中很主观的问题,后面我会写两篇专门讲简历项目和HR面加入本专栏。再找几个案列,梳理成模版,让你一次性搞定。这里先行跳过。

【二面】技术面

# 自我介绍
# 介绍项目
# 全都是自己从零开始构建的吗, 软件硬件
# 软件算法, 视觉有用到分割吗, 介绍一下
# 项目中遇到什么困难, 队友他们怎么分工
# 遇到了新的东西时怎么去学习
# 学的什么专业课, 有学过操作系统,数据结构与算法,计组原理这种么
# 系统里用到了什么数据结构

这些都是有好用的模版的,等我统一给你整一个~~~

裸机中断会同时发生怎么办

知识

裸机中断是指在没有操作系统支持的情况下,直接由硬件产生的中断。当两个或更多的中断同时发生时,裸机系统需要有一种机制来处理这种情况,以确保系统的稳定性和数据的一致性

处理裸机中断同时发生的情况,通常涉及中断优先级的管理和中断服务程序的编写。以下是一些常见的处理方法:

  • 中断优先级管理:裸机系统通常会为每个中断分配一个优先级。当中断同时发生时,系统会首先响应优先级最高的中断。这通常通过硬件中断控制器实现,该控制器能够检测并排序多个同时发生的中断。
  • 中断嵌套:在某些情况下,一个中断服务程序可能在处理过程中被另一个更高优先级的中断打断。这称为中断嵌套。系统需要能够保存当前中断的上下文,以便在处理完高优先级中断后能够恢复并继续处理低优先级中断。
  • 中断屏蔽:为了避免中断之间的冲突,系统可以使用中断屏蔽技术来暂时禁用某些中断。这通常是在处理一个关键任务时使用的,以确保该任务不会被其他中断打断。
  • 中断服务程序的设计:编写中断服务程序时,需要特别注意其执行时间和对系统资源的使用。长时间运行或消耗大量资源的中断服务程序可能会导致系统响应变慢或出现其他问题。
  • 软件同步机制:在某些情况下,可能需要使用软件同步机制(如信号量、互斥锁等)来确保在中断处理过程中数据的一致性和完整性。

需要注意的是,裸机中断处理通常与具体的硬件平台和处理器架构密切相关。因此,在设计裸机中断处理机制时,需要深入了解目标硬件的中断特性和处理器架构。

最后,对于复杂的裸机系统,可能需要考虑使用更高级的中断管理策略,如中断向量表、中断服务例程表等,以更好地管理和处理多个同时发生的中断。

回答

当面试官问到裸机中断可能同时发生时,你可以按照以下步骤来回答:

  • 首先,你可以简要解释一下裸机中断的基本概念。裸机中断是指在没有操作系统支持的情况下,硬件直接对CPU发出中断请求,CPU在接收到中断请求后会暂停当前正在执行的程序,转而处理中断服务程序。
  • 接下来,针对中断可能同时发生的情况,你可以强调中断优先级的概念。在系统中,不同的中断源通常会被赋予不同的优先级,以便在多个中断同时发生时,CPU能够按照优先级顺序来处理它们。你可以解释,通过设置中断优先级,可以确保关键的中断请求得到优先处理,避免系统崩溃或数据丢失等问题。
  • 然后,你可以提及中断嵌套的概念。在某些情况下,即使设置了中断优先级,也可能出现高优先级中断在处理过程中被更低优先级中断打断的情况,这就是中断嵌套。你可以解释,中断嵌套机制允许CPU在处理一个中断的同时,响应另一个更高优先级的中断请求,提高了系统的响应速度和灵活性。
  • 此外,你还可以提到中断屏蔽的概念。在某些情况下,为了避免中断的干扰,可以使用中断屏蔽技术来暂时屏蔽某些中断源。这可以在关键代码段执行时确保不受中断的干扰,提高系统的稳定性和可靠性。
  • 最后,你可以强调在实际应用中,需要根据系统的具体需求和硬件特性来合理设计和配置中断处理机制。这包括选择适当的中断优先级、使用中断嵌套和中断屏蔽等技术来确保系统的正常运行和高效响应。
  • 总之,在回答面试官关于裸机中断可能同时发生的问题时,你可以从中断优先级、中断嵌套、中断屏蔽等方面来阐述你的理解和解决方案。同时,结合实际应用中的需求和硬件特性进行具体分析,展示你的专业素养和实践能力。

中断处理不完怎么办

当面试官询问关于中断处理不完的情况时,他们可能想了解你对系统稳定性、性能优化以及异常处理的理解。以下是一个建议的回答框架:

当面临中断处理不完的情况时,我会首先分析原因,并尝试从以下几个方面进行解决:

  • 优化中断处理流程:我会仔细审查中断处理代码,查找是否存在可以优化的地方,比如减少不必要的操作、使用更高效的数据结构或算法。通过优化代码,可以提高中断处理的效率,减少处理时间。
  • 提高系统性能:如果中断处理不完是因为系统性能不足,我会考虑提升硬件性能,比如使用更高主频的CPU、增加内存等。同时,我也会检查系统配置,确保系统资源得到合理分配,避免资源浪费。
  • 优先级管理:对于不同优先级的中断,我会实施优先级管理策略。高优先级的中断应该得到优先处理,以确保关键任务能够及时响应。对于低优先级的中断,可以考虑采用延迟处理或合并处理的方式,以减轻系统负担。
  • 中断合并与去抖:在某些情况下,可以通过中断合并和去抖技术来减少中断的数量。合并多个相似的中断可以减少处理次数,而去抖技术则可以消除由于噪声或误触导致的频繁中断。
  • 使用中断线程化:如果硬件和操作系统支持,我可以考虑使用中断线程化技术。通过为中断分配专门的线程来处理,可以充分利用多核处理器的优势,提高中断处理的并行度。
  • 监控与日志分析:我会建立有效的监控机制,实时观察中断处理情况。同时,通过日志分析,可以定位到中断处理中的瓶颈和问题,从而进行有针对性的优化。

有时候可能答案是错误的,但是面试官在乎的是你结构性的思考力。逻辑、思路与知识作伴。

讲讲MMU了解吗?

当面试官问你是否了解MMU(Memory Management Unit,内存管理单元)时,你可以按照以下结构来回答:

简要介绍MMU:

MMU是计算机系统中的硬件单元,负责处理内存访问请求包括虚拟地址到物理地址的转换、内存保护(防止一个进程访问另一个进程的内存)、内存分页或分段等功能。

MMU的作用:

解释MMU如何帮助操作系统实现虚拟内存管理,使每个进程拥有独立的地址空间。

讲述MMU如何通过地址转换机制,使得有限的物理内存能够被多个进程有效利用。

提到MMU对于提高系统安全性和稳定性的重要性,如防止非法内存访问。 MMU与操作系统、CPU的关系:

解释MMU是如何与操作系统和CPU协同工作的。操作系统负责内存管理的策略和调度,而MMU则负责执行这些策略,将虚拟地址转换为物理地址。 提到MMU是现代CPU架构中的一部分,对于实现高级内存管理功能至关重要。

你对MMU的深入了解:

如果你对MMU有深入的了解,可以谈论一些具体的实现细节,如页表结构、TLB(Translation Lookaside Buffer,转换后备缓冲器)的作用、内存保护机制等。

如果你在项目或学习中涉及到过MMU的使用或配置,可以分享相关经验和见解。

你对MMU的学习态度:

如果面试官的问题超出了你的现有知识范围,你可以表达你对学习新知识的积极态度,并承诺在需要时会深入研究相关内容。

记住,如果不知道,可以稍作思考,大胆承认自己暂时不了解,表示自己下去一定好好补习一下。记住不要让空气突然的安静~~~

下面是一个示例回答:

"我对MMU有一定的了解。MMU是计算机系统中的关键硬件组件,它负责处理内存访问请求,特别是虚拟地址到物理地址的转换。通过MMU,操作系统能够实现虚拟内存管理,为每个进程提供独立的地址空间,从而提高内存的利用率和系统的安全性。

MMU与操作系统和CPU紧密协作,操作系统负责内存管理的策略和调度,而MMU则负责执行这些策略。在现代CPU架构中,MMU扮演着至关重要的角色,它使得高级内存管理功能得以实现。

回答至此,如果你很了解MMU,继续讲一个细节点。

如果不熟,那么下面可以作为你的结尾:

我对MMU的具体实现细节还需要进一步学习,但我非常愿意投入时间和精力去深入了解它。我相信通过不断学习和实践,我能够掌握MMU的相关知识,并将其应用到实际工作中。"

这样的回答既展示了你对MMU的基本了解,又表达了你愿意学习和成长的积极态度。

有没有做过linux驱动开发?

这个问题我觉得只有两种回答:

  • 一:如果你确实有Linux驱动开发的经验

你可以这样说:"是的,我有过Linux驱动开发的经验。在之前的项目中,我负责开发了XXX设备的驱动程序,并成功将其集成到了Linux内核中。我熟悉Linux内核的架构和工作原理,能够熟练使用内核提供的API进行驱动开发。同时,我也具备调试和优化驱动性能的能力,确保驱动的稳定性和高效性。"

  • 二:如果你没有Linux驱动开发的经验,但有相关的技能或兴趣

你可以这样回答:"虽然我没有直接做过Linux驱动开发,但我对Linux系统有一定的了解,熟悉C语言和操作系统原理。我对驱动开发非常感兴趣,并且愿意投入时间和精力去学习相关知识。我相信,凭借我的学习能力和对技术的热情,我能够迅速掌握Linux驱动开发的技能。"

  • 如果你是第一个,那你就正常表达回忆之前的经历就好。(建议做嵌入式可以找个小项目练练手)
  • 如果你是第二个,就表达自己虽然没有做过,但是会什么相关的知识,表达你做驱动开发也有先天的优势。同时也把面试官引向了你擅长的空间,岂不美哉。

手撕算法两道

两数之和

解题思路: 题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

int* twoSum(int* nums, int numsSize, int target) {
    int i,j;
    int *result=NULL;
    for(i=0;i<numsSize-1;i++)
    {
        for(j=i+1;j<numsSize;j++)
        {
            if(nums[i]+nums[j]==target)
            {
              

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

ARM/Linux嵌入式真题 文章被收录于专栏

让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!

全部评论

相关推荐

一面:全程&nbsp;55min,实习项目八股&nbsp;20min,算法&nbsp;30min,反问&nbsp;5min1.&nbsp;自我介绍2.&nbsp;你的接口对接开发主要是干了什么?3.&nbsp;对方接口变更,你们这边受影响的范围怎么样?4.&nbsp;慢&nbsp;SQL&nbsp;治理怎么发现的?怎么治理的?5.&nbsp;用过什么中间件?mq、redis、mysql、配置中心、rpc6.&nbsp;rpc&nbsp;用的什么框架?选的什么序列化器?7.&nbsp;mq&nbsp;怎么保证消息有序性?mq&nbsp;组件?8.&nbsp;mq&nbsp;延迟队列的原理是什么?9.&nbsp;redis&nbsp;哪个数据结构能实现延迟队列?10.&nbsp;mysql&nbsp;建过表吗?11.&nbsp;mysql&nbsp;索引?为什么?12.&nbsp;java&nbsp;线程池了解吗?说下参数?13.&nbsp;jvm&nbsp;参数会设置吗?让你设置你怎么做?14.&nbsp;redis&nbsp;内存满了会怎么样?15.&nbsp;内存淘汰策略?lru&nbsp;和&nbsp;lfu&nbsp;底层数据结构是什么?16.&nbsp;算法:实现&nbsp;LRU,要求:单例模式、写出单元测试17.&nbsp;反问:业务?18.&nbsp;反问:主要编程语言?总结:面试官让本地写代码,但是我编程主力是&nbsp;mac,面试电脑是&nbsp;win,导致&nbsp;idea&nbsp;写一半显示过期了,折腾半天都没搞定。后面尝试下载社区版,但是速度太慢。最后用&nbsp;cursor&nbsp;写的,根本跑不起来,但是代码都写完了,面试官说思路没有问题。======================================================================二面:全程&nbsp;50min,实习八股&nbsp;30min,算法&nbsp;10min,反问&nbsp;10min1.&nbsp;自我介绍?2.&nbsp;家在哪里?学校在哪里?对京东很了解吗?3.&nbsp;说下实习干了什么?4.&nbsp;实习难点在哪里?5.&nbsp;linux&nbsp;指令考察?写一个&nbsp;shell&nbsp;统计一个文件夹下所有&nbsp;jpg&nbsp;格式的文件的大小,文件夹存在递归。6.&nbsp;数据库用了吗?写的需求是什么?7.&nbsp;实习哪些表分表了?分表怎么做的?8.&nbsp;其他记不清了9.&nbsp;算法:合并&nbsp;k&nbsp;个有序&nbsp;list。hot100&nbsp;合并&nbsp;k&nbsp;个升序链表的魔改版10.&nbsp;反问:几轮面试?总结:许愿oc吧
查看22道真题和解析
点赞 评论 收藏
分享
06-20 16:49
已编辑
字节跳动_llm开发(实习员工)
大家很多人私信我大模型应用开发具体是做啥,正好我讲讲在字节实习3个月+的体验。现在以字节为例我看很多岗位,其实大模型应用岗位已经被纳入后端开发(大多还是属于开发序列,至少我看不在算法序列)当中了,所以总的来说二者并没有特别明显的区别,起码在公司的角度来看。以我自己为例,我也是面的后端岗位然后进来做Agent的开发,Agent开发暂时不涉及模型的训练,最多包含一些模型的微调(而且公司有平台)。总的来说,Agent开发主要是搭建workflow,主要涉及Rag、微调、Mcp、Prompt这些方面,包含一些技术栈py:langgraph、langchain、langSmith,java:&nbsp;SpringAI、langchain4j?,所以我觉得后端的同学直接投问题不大,但是需要python&nbsp;or&nbsp;java&nbsp;or&nbsp;大模型基本知识的landing。我之前也没接触过类似的知识,还在字节里面有LLM学习季的好东西,包含了大模型的基本知识Transformer、Prompt工程、Rag实战等等各种基本知识的解释和实操,让我非常循序并循序渐进的了解了这方面的知识,并且燃起了对大模型学习的兴趣,不得不说这一点还是很值得学习的。其次,就是在实习过程中,大家讨论的都是如何提高大模型产生的效果、以及有没有更加方便的Agent工具能够参与&nbsp;or&nbsp;使用提效,整体氛围很不错,而且都是去聊一些比较新的东西,例如之前刚出的Agent2Agent协议。在我看来,Agent主要是以Multi-Agent写作文的形式完成一系列任务,例如Deep-Research利用搜索、爬虫等工具,获取想要查询的网页并爬取文章内容,并且生成一篇分析报告,包括了一些意图识别、任务规划、记忆、工具调用等。在这个过程可以加很多环节去提高分析报告的效果(在Prompt的层面),例如反思、自问自答、知识库、human-in-loop等等,我觉得设计这些环节还是需要很多经验的,目前很多需要参考了类似的设计有比如cursor等。至于学历的要求,不知道现在岗位需不需要硕士的学历,但是我看来其实本科也能做,包括我在的组很多Agent内容在Cursor、Trae等工具的辅助下,前端也参与了不少(没错,前端也写Agent)。所以现在在各种Agent工具不断出现的今天,大厂更加需要“能够熟练使用AI工具的人”。举例,本组有个本科校招生,ld说后续会让他参与LLM的开发内容。当然,以上是我3个月浅薄的理解,我其实也看了不少内容的一些技术文章,整体来说大概是个这么情况,感觉技术壁垒不深,但是基于目前资料跟Java(黑马)比有所欠缺的情况下,还是筛掉了相当一部分人,感觉可冲(感觉比较缺人,至少我们组人很缺);但是基于我之前很多段实习都是Java开发,我觉得大模型应用更在乎大模型的效果而不是性能,可能还是关注点会跟Java开发有一些区别,优先级不一样,很少用到一些中间件来做啥,目前我在整个过程中只用过Redis来缓存stream流。实习体验:1.需求:字节跟我实习过的其他大厂有很明显的区别,他是直接安排活让你去做,至于你做不做得了,这个就另说了(即使有mentor的帮助)。有个群友举的例子很好“就是把一个不会游泳的初学者丢进水池里,如果活下来了,就学会了哈哈”。所以在我很久没写py、langchain等内容的基础上、没在字节做过任何需求的时候,让我开发了一个我认为很大的一个需求,大概6-7000行(两周),我为了不延期,主动加班到10-11点,才在排期前做完。。2.福利:经历了字节下午茶的LastDay目前已经没啥福利了,零食、水果还是不错;其次,允许实习生出差,刚来没几天就团建&nbsp;+&nbsp;出差去北京(出差了一周),那段时间还是很滋润的,在北京也小小旅游了一下(带着女朋友一起去了,当然她的不报销,只是住在一起)3.博客:当初在快手实习的时候,基本上看遍了Kstack的文章,但是在字节我目前还没看完,而且受益匪浅,感觉文章整体含金量要高不少(可能快手现在也变好了,不尬黑)。4.带教:mentor和ld对我很好,也让我进入了一个新的领域,目前正好考虑通过这次机会往大模型应用甚至大模型算法转型.正好有学长跟我说过,“阿里很值得去实习体验一次,哪怕不留下来”,我觉得“字节也很值得去体验一次,哪怕不留下来”,之前在前几家公司反而没这么深刻的感悟。如果对各位有帮助的话,求求🥺给朵小红花,有问题可以在评论区交流~
枫糖441:你是我见过最帅的牛客男孩
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
14
53
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务