华为eda

有大佬知道华为eda机试主要考什么内容吗 #华为校招# #华为机试#
全部评论

相关推荐

一、初识零声​本人对linux/C/C++的技术栈比较感兴趣,在视频平台,社交软件上刷到相关话题时,都会顺带点击观看一段。直到某一天晚上在bilibili上刷到了有两个人坐在一个虚拟背景前面,视频界面上醒目的内容简约介绍,还是关于C/C++方向的内容,我自然会顺手点开观看。观看几个视频后,我认为这种高信息浓度的视频非常符合我的口味,视频中没有什么多余的元素,背景板简约大气,视频大部分内容都是king老师在给出自身的看法,虽然是一家之言,但是对于我这个对行业没什么了解的在读大学生来说,已经是一种很方便的信息获取方式了,而且视频内容的干货和一些中肯建议也不在少数,在短短几分钟到十几分钟的时间内,可以了解到某个行业的某些方向目前的情况,了解到走出学校进入职场的转变,以及最为重要的计算机学习建议,(同时两位老师坐在摄像头前回答问题这种朴素的视频界面设计,也感觉更有亲和力,还可以从老师的一些肢体动作,微表情等方面推测出一些额外信息),这些因素都建立了我个人对零声的初步好印象。二、进入零声​大二下学期开学时,由于大三要为实习做准备,加上大二上学期做过的一些小尝试,java后端,unity游戏开发等小demo都做过,所以我一开始是打算自学,并不打算报培训班。虽然万物皆可自学,但是对我来说计算机自学难度还是太大。在bilibili上看完了JUC并发编程,Maven入门,JVM等视频,并跟着视频敲了一遍代码后,准备开始学习springboot框架,做一个项目试试水。然而bilibili上的免费教学视频固然很多,但是很多都不成体系,我不知道我学了这些东西究竟能用在哪,项目示例也基本烂大街,跟着敲一遍很容易,但是做完脑子还是空空的,感觉仅限于敲了一遍,把代码混了个眼熟。发现似乎几个月的时间好像没有什么产出,想上Github上找一个开源项目做一做,发现连环境都要配好几天,大量的代码也无法在短期内梳理完毕,学完了很多课程,发现面对实战的时候依然手足无措,我相信这也是很多自学人士的痛苦。​从那时候不得不思考这种学习方式是否正确,是否适合我。但是时间不等人,我意外从我同学处了解到他报名了一个培训班,说效果还不错,课程内容有点难,但是很有收获,技术栈也是跟C/C++相关,这很符合我当时的期望,一是时间紧迫,二是喜欢使用C/C++语言,我便向他询问了课程,发现就是零声教育,没有某硅谷,某黑马等培训班那种铺天盖地的广告和夺目的海报,零声的大纲和宣传里全是朴素的字,有一种去惯了高档餐厅最后进了一家路边小馆的感觉,加之之前在b站上的印象,我认为是一个可以信任的机构。在此机缘下我加入了零声教育。三、零声学习感受零声服务的模式是视频课程+项目实践+阶段模拟面试视频课程感受​视频为录播方式,对于我个人来说,录播其实远比直播划算,跟着直播手敲代码,思路肯定没有老师清晰,重点在于学,这会导致一旦节奏对不上,代码就敲不完,这时候是补代码呢?还是接着听呢?无论哪种方式,都需要直播课后继续看录播花时间学习理顺思路,那还不如直接看录播,按照自己的节奏看。​对于视频内容,时常基本在2h左右,目前主要学习了一些mysql连接,DNS协议与请求,HTTP请求,TCP服务器,并发调试等,主要集中在高性能网络部分。课程内容基本是实操,由老师手把手教学,从配置环境到调试完bug,这是一个很好的学习通路,至少不至于在学到一半突然自己卡壳,削减学习热情。课程里使用的某些技术也会被使用到后续的项目里,可以说是设计的恰到好处了。项目实践​目前已实现了一个自研KV存储系统(键值对存储系统,仿Redis),项目实践阶段,也会由老师带入门,先打造好基础框架,保证最基本的功能可以运行。真正的挑战在于后续的迭代,项目迭代过程中,老师会在阶段交付的时候提出需求,给出交付时间,再验收,再迭代......而每次的需求都可能包含以前课程学过的东西,也可能是比较陌生的需求,这也是一个极好的锻炼,而且在有限的时间内,面对新的技术点,必须改变学生学习的思维,即先把资料看完,然后再动手做一个小demo,然后再运用于项目中这种完美主义式的学生思维。学以致用,乃至用以致用。在做项目期间,我认为重点有两个,一是学到了什么新东西,二是有没有产出。king老师在b站上,每当被问到关于学习方法的问题,总会一再强调一个产品化的概念,把一个想法做成一个产品,逐步迭代,逐渐学习。而这个KV存储系统让我能深刻感受到这句话的含金量。从项目第一次验收,king老师评价我的成果不像一个产品,像一个demo,到现在已经逐渐可以作为一个微型系统直接使用,性能也相对平稳。​期间面临的挑战也极多,比如网络连接,是一请求一线程的方式,还是用IO多路复用让性能腾飞?即使使用了io_uring或者epoll,也会出现性能瓶颈,怎么知道性能瓶颈在哪?是凭直觉还是用火焰图?知道了瓶颈,怎么优化,如果批量提交IO请求,那面对单个IO网络可能阻塞怎么办,对于每个连接的上下文,接收发送缓冲区如何管理?是用libc的malloc/free还是tc_malloc/je_malloc等成熟的内存池,是对每个缓冲区都重复分配再释放,还是要引入一个连接池管理内存,实现复用?而且我们知道,redis是一个高性能的中间件,那么如此高性能的操作与响应,数据传输用UDP还是TCP还是用用户态协议栈,大文件传输怎么提高效率?RDMA优势是什么?RDMA的异步操作是一大特点,如何调整逻辑保证在异步调用的场景下数据收发正常?为什么单次POST请求有极高的风险跑出错误的预期,为什么流水线RECV/POST的方式却可以正确传输?对于底层存储引擎,选用哪种数据结构比较合适?比如hash表如何解决hash冲突?hash表扩容策略如何选择,是选择直接一次性搬运所有数据,造成延迟尖峰,还是选用rehash,平稳过渡?对于数据的持久化,分布式系统如何保证数据安全性和一致性,如何高效加载内存数据?主从同步直接传文件还是传指令?主节点有源源不断的用户流量,同步操作如何不阻塞用户流量进行?主从同步过程中,异步传输如何保证数据的完备性?ebpf是什么技术?为什么ebpf转发性能比使用传统UDP/TCP性能好?resp协议的优点是什么?如何解析resp协议?如何支持多指令操作?如何支持pipeline模式?解析的数据如何传递给指令执行函数?测试案例怎么写?这些内容课程中不可能讲的明明白白面面俱到,但是老师的服务就在于给出方向(这些技术点方向以前可能都闻所未闻),剩下的可以看课程,网络冲浪搜集资料,借助ai等方式,加深自己对技术点的理解,学习新的技术点。​可以说,大到一个模块功能的并入系统,可能运行不了,甚至会影响其他功能的正常使用,小到绞尽脑汁算计如何榨取性能,哪怕优化几处strcmp,优化几个strcpy为memcpy,删去几个strlen的使用,都是一次性能的进步。模拟面试以项目实践的模拟面试为例,一般是演示成果。老师站在客户的角度,有可能要求的演示方式与我们开发时的测试方式不同,便会暴露出系统的不完善,从中也可以了解到项目问题的优先级,哪些是直接影响使用,优化刻不容缓?哪些是可以等并入新功能再逐步调整?有时也会询问某个功能实现的大致思路,为什么这么实现?可以说这个模拟面试,就是在为将来的正式面试脱敏,熟悉面试的场景,调整技术表达.........总结​对于付费学习的问题自然是仁者见仁智者见智,在零声学习的这几个月中,收获颇丰,在项目实践中,可以很明显地感觉到,真正把一个想法产品化,期间的技术点,策略,乃至架构设计,自身都会得到很大的提升,而且也会发现实践和书本知识完全不是一回事,书本会告诉你epoll,io_uring性能好,但不会告诉你如何调整逻辑以适配自己的应用场景,解决性能瓶颈,书本会告诉你hash表的查找时间复杂度是O(1), 但不会告诉你即使是O(1),也被某些昂贵的系统调用拖慢速度,如何舍弃掉这些昂贵的系统调用。这是大学生走出课堂要上的第一节课,逐步与工业界接轨。付费课程,买的就是人工的服务,买的就是成体系的课程设计,至少在零声的学习中,我不必焦虑接下来学什么,学完究竟有没有用,如何产出,有引路人规划学习路线,这是一份极大的安心,安心专注于学习技术,增加产出,专业的事情应该交给专业的人做。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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