华为面经
收到面试邀约后该怎么做?我参考了尚硅谷雷老师的博客,他的B站ID是“黎曼的猜想”。通过他的经验的指导,并结合我的面试实际情况,为面试准备了许多说辞。
面试前准备
当收到面试通知后,通过如下准备可以大大提升面试成功率。
知己知彼,百战不殆。即使侥幸面试成,亦可防止压工资。
其实公司肯花时间让你去面试,前提条件一定是通过了你的简历,一定发现你和公司的匹配点,也就是说,一定是有录用意向的。
在技术面试的时间段里(最长1个小时,并且可能有多伦技面),尽可能地展现优势。
至于通过技术面试后,业务主管、项目经理或人事的面试一般是过滤特别差的,比如考察团队协作能力和沟通表达能力等,这对大家来说应该都不是问题。
敲重点!
至少定出2天的准备时间
一定要再次阅读公司的职位要求
- 就类似于考试,一定是先审题嘛,然后再做相应的准备。
比如,我报的西安华为21届秋季校招,第一意向部门传送与接入产品线,第二意向部门云核心网产品线,领域都是通用软件开发工程师。
岗位职责
在这里,你将从事IT应用层软件、分布式云化软件、互联网软件等的设计开发,可以采用敏捷、Devops、开源等先进的软件设计开发模式,接触最前沿的产品和软件技术,成为大容量高并发技术的专家;你将参与华为产品的软件研发工作,包括但不限于:
(1)完成从客户需求到软件产品定义、架构设计、开发实现、再到上线运营维护等产品生命周期中的各个环节;
(2)创造性解决产品在实现过程中的技术难题,应用前沿技术提升产品的核心竞争力,如分布式系统、性能调优、可靠性、数据库等;
(3)有机会参与业界前沿技术研究和规划,参与开源社区运作,与全球专家一起工作、交流,构建华为在业界影响力。
岗位要求
1、计算机、软件、通信等相关专业本科及以上学历;
2、热爱编程,基础扎实,熟悉掌握但不限于JAVA/C++/C/Python/JS/HTML/GO等编程语言中的一种或数种,有良好的编程习惯;
3、具备独立工作能力和解决问题的能力、善于沟通,乐于合作,热衷新技术,善于总结分享,喜欢动手实践;
4、对数据结构、算法有一定了解;
5、优选条件:
(1)熟悉TCP/IP协议及互联网常见应用和协议的原理;
(2)有IT应用软件、互联网软件、IOS/安卓等相关产品开发经验,不满足于课堂所学,在校期间积极参加校内外软件编程大赛或积极参于编程开源社区组织;
(3)熟悉JS/AS/AJAX/HTML5/CSS等前端开发技术。
能从中挖掘出如下的技能需求点:
专业性要求:
- 基础扎实
- 熟悉TCP/IP协议及互联网常见应用和协议的原理
- 编程大赛
其实在投简历前,就可以根据不同公司的不同要求对简历进行微调,这样获得该岗位的面试机会更大。
准备项目描述的说辞
面试环节中的项目介绍必要环节
这里介绍些项目描述的要点:
- 业务需求一笔带过,项目背景,工期人数等寥寥几句,面试官不关心的。就可以这样介绍:
大二在软通动力实训的过程中接触了SpringBoot,由于我家有个亲戚开了个私人宾馆,就萌生了开发一个宾馆的Web应用的想法。然后我一个人在大二暑假花了3个月的时间用SpringBoot做一个宾馆信息管理系统,面向的用户就是宾馆的前台,可以简化管理宾馆的业务过程。
- 结合项目实际需求,介绍项目用到的技术,比如上面“岗位要求”描述中,要求有“开发经验,熟悉一些前端知识等”,可以这样介绍:
在这个项目里,开发用户界面要到模板引擎,比如JSP和Thymeleaf,就必须了解前端知识嘛,所以我还学习并用到了许多前端框架,比如EasyUI、Bootstrap、Ajax和axios等,甚至还接触过Vue。
注意:这里仅仅是介绍项目,结合功能点说出技术即可,一定要思路清晰。
- 再结合项目,说些招聘方需要的非技术的要求
在这个项目中,我用到了MVC设计模式,在项目的开发过程中去学习,遇到问题我首先会在网络上寻找解决方案,然后再去和同学商量,或是我在Java学习的微信群里,不乏工作经验丰富的人,我也会去问他们解决方案。过一定时间我也会再回顾代码,优化代码逻辑,减少代码量等。
- 如果有,说下项目中的亮点,比如用到了一些比较好的技术。
官方推荐模板渲染引擎Thymeleaf,语法更灵活
MyBatis框架,SQL语句更灵活,实现更简单
缓存
String对象的优化
这个项目对数据库性能和内存性能要求比较高,所以我用到了Oracle调优技术和JVM内存优化技术,此外,我们还用到了大数据分析工具对计费模式做了优化。
准备好说辞,能给面试官留下思路清晰,技术匹配的印象。
如果运用到项目的技术和要求不匹配,但可以在了解的基础上说出来,整理一下说辞即可。但通过后面的问题,面试官发现你根本不了解,性质就变了。
在准备项目说辞的时候,可以尽量和职位要求靠,但你说的每个技术点,稍后面试官都会问的。如果某个技术点没有掌握,其实问题不大,面试官不会要求十全十美。
一定得准备项目描述里提到的技术
在介绍项目时,吸引面试官把注意力集中到你提到的技术点上。这些技术大多也是岗位要求的技术。
结合项目点明技术。
准备亮点话题
亮点话题多多益善
对于Java高级开发而言,可以准备以下话题:
- 虚拟内存优化
- 数据库性能优化
- 分布式高并发架构
- 一些热门组件,比如redis、nginx等
- 大数据方向的用法?
- Java core(比如集合或多线程)方面的底层实现代码
- Spring系列(比如IOC、AOP、MVC、SpringBoot、SpringCloud)方面的底层实现代码
要准备到什么程度:
- 最好结合项目实际说出真的用过这些技术
- 最好往性能调优方面靠
通过准备,大家可以主导面试官提问,否则面试官开始天马行空地问问题,大家薄弱点被暴露的机会就有可能大大增加。
刷题
手撕代码啊,远程的话,就是用本地IDE,然后共享屏幕,不要紧张对自己代码不自信。
面试中的表现
软实力
面试官只有当确认候选人在责任心和团队协作能力方面没问题,才会把你招进公司。面试官会通过(1)问问题的方式;(2)通过回答问题的方式和说话的语气;来确认。
所以大家面试的过程中:
- 交流时尽量目视面试官,谈吐清晰,语速不急不缓,说话果断,语气不卑不亢,别太僵硬
- 适当微笑,点头互动
- 积极回答问题,如果没听清问题,及时主动询问
- 不急不燥,从容应对“压力测试”
- 放松心态
当觉得自己不行的时候,就走在这个斑马线上,你就是一个行人。
上面这些都是我二面之前做的准备。
二面完后总结
一面
自我介绍嘛,基本信息,实习实践经历比赛,虽然简历上有。
开始看机试的题
我是没有想到的,依次回顾当时的机试题,我当时是8月12号参加的华为西北校招机试,距离面试这天已经1个月了吧,有些没有印象,只说出了一题的大概思路,觉得自己没有表现好。当时的题及我写的代码都以放在我的GitHub上,大家可以参考,并不都是AC。
项目
问我做过的项目给他展示,我是直接共享屏幕展示,他会问我如何实现,他也会指出我项目里出现的问题。和我讨论,大家把握说话方式,不要太拘束即可。还会展示数据库,问数据库中各个表的实现和意义,问我了为什么密码是明文没有加密,这是我第二个感觉表现不好的地方。
然后就手撕代码
当时机试,有两题没写出来,他就从里面挑了一道题让我写,当时没有思路,最后又写出来了,觉得挺幸运,不过写代码过程中出现了写小插曲,这是我第三个感觉表现不好的地方。
结束
大概聊得就这么多,最后问我有什么问题想问他,我也没有问题。
二面
一面结束10分钟后就会出结果,前2面安排挺紧凑的相隔30分钟吧,会换面试官的。轮到我就比较凑巧,刚好到饭点,我一面面完群里就通知大家可以去吃饭了。
吃完饭会来,等了一会儿,1点30分开始。还是自我介绍,基本信息,实习实践经历比赛,虽然简历上有。
项目
然后他提了个功能,问我实现思路,感觉也没有达到他的要求
结合项目,给出场景
问我有没有什么想法?我说出了大概思路,感觉也没有达到他的要求
B树系列问题
B树,B+树为什么比二叉树等效率高?特点是什么?我之前通过MySQL了解的B+树,现在已经没啥印象了,就也没有回答的很顺利。
数据结构,排序
问快速排序、归并排序和堆排序的时间复杂度,有没有了解比这些排序更快的,还有他们的稳定性。
结束
大概聊得就这么多,最后问我有什么问题想问他,我也没有问题。
专业主管面试
职业规划(人生规划):
最重要的就是找对职业方向
1、自我分析阶段
兴趣分析:
我应聘的岗位是通用软件开发,我也向HR了解过情况,我的意向工作就是Java开发。我热爱Java,我从大二接触到这门语言就开始了,Java是我接触到的第二门编程语言,第一门面向对象的编程语言,我喜欢他的规范和严谨。所以我会主动努力地去学习Java及其相关的框架,比如Spring。
性格分析:
大学期间我参与过比较多的项目,做过开发,也做过项目组长,做过项目汇报,我都可以适应这些角色,开发不用说我是喜欢的,项目组长的话,主要负责协调组内成员,规划好项目进度,也会帮助和鼓励组员开发。我觉得我的性格比较活泼比较负责,我每次参与开发完成项目都很有成就感和满足感,会有冲动向同学们汇报展示。
优缺点分析:
优点:做事比较负责,认真,有上进心,肯吃苦
缺点:比较在意他人的看法
2、职业分析规划
毕业之后找到自己心仪的工作,认真完成工作,抽时间学习专业知识技能,向前辈和同事学习经验。因为自己要学的东西还很多,积淀一段时间后,想着在工作中职位向上晋升,不断积累经验。
网上翻到一篇博客
【面试经验】三轮面试拿到华为Offer
问我为什么选择华为,我说我想去大城市闯荡,华为有很大的平台可以供我们年轻人发挥。然后主管问有没有人推荐你选华为,或者你是怎么了解华为的。这些问题我都是心里面有答案的,因为我邻居就有在华为工作的,所以我稍微了解华为,也有人力挺我要去华为发展,这些都是这个问题的答案。
接下来就是压力面试,问我如果你和你同学一起进入华为,发现你的工资比同学低个几千元,你该怎么办,你会不会心理不平衡?我说我会弄明白我为什么会比别人低,然后努力工作,改正一些缺点,争取在业务上超过他们。业务主管说在华为刚进去不要在乎你比别人少几千,以后都是年薪几十万,几百万的,那几千元算什么,刚进去的两个人,几年以后可能待遇截然不同。
接着又问我如果你有一项技术只有你一个人会,是你的独门秘诀,现在又需要,你会不会把他教给其他人。我直接说不会,因为这是吃饭的家伙。业务主管笑了笑说虽然这是我不想得到的答案,但是你诚实,在华为大家都是有技术互相交流的,大家都倾其所有的完成项目,这样项目就能轻松的完成,然后一些奖励大家一起分,这样多开心。接着又问我,如果我是业务主管,给5个不同方向的人打等级,打绩效成绩该怎么打。这个我答的比较好,因为要看团队合作能力,看他在完成工作的同时还为团队带来了哪些利益,因为华为是狼道盛行的团队,特别讲究团队合作。
聊完这些压力面以后,面试官问我有没有问题要问他。我就顺便问了一个我这个方向的进入华为能不能直接上手,对不对口。你进来以后也会跟着师傅学习,慢慢上手项目,开始融入团队完成项目,到后来一个人负责一个项目。三轮面试差不多就结束了,第三轮面试大概35分钟左右,这个还是比较轻松的。
这里要注意的是,三轮面试的时候,如果业务主管问你地点的问题,那你就要小心了,如果说给你深圳你去不去,你说不去的话,可能第三轮你就会倒下。当然了很多同学没有被问到这个问题,关于地点问题倒在三轮的,我们学院大概两个人。(当你面试完华为以后,恭喜你,你的面试经验已经非常成熟了。你再去面试其他公司,你就会发现很轻松,基本都不需要准备,级别绝对不是一个level,因为华为的面试官带你把项目都仔仔细细的过了一遍,华为三轮面试的那两个小时绝对成为你人生中宝贵的财富)
面试完三轮以后等通知,说一个星期后给结果。19号面试的同学,有大部分都撑完了三轮面试,20号面试的同学最后只有2个撑到了第三轮。然后面试完以后,第二天就有三轮面试的结果了,我是录用排序中,有的同学倒下了,显示面试不通过。苦苦等了一个星期,然后HR说可能国庆之后给结果。在家里过了一个国庆后。大概11号的时候,有人收到签约短信了,那波人是第一批被捞上来了,网络能源产品线电源岗只有我同门被捞了,因为他研究方向就是逆变器,十分对口,面试也很顺利,薪资待遇开的20k。我们专业,面试其他部门的第一批被捞的都是开的20k,价格都一样。过了几天,华为第二批开始捞人,我被捞出来了,16号南研所签约,签两方(华为的两方可以毁约,没有违约金),第二批的待遇稍微差一点只有19k,计算方法就是19*(14-16),签完两方,拿到了华为的聘书,我就回学校了。后来听说第三批只有18k了。
最后再说一下我去了哪里吧,最后我选择了江苏电网(某市供电公司)。主要原因是签了承诺书,不允许毁约电网,再加上家里人不同意我去华为,怕我身体吃不消。签完电网刚开始三天我还状态良好,后来慢慢的有些后悔,觉得我这性格的更适合华为,我喜欢奋斗干出一番事业,年轻人不能怕吃苦。然后同学对我进行了一波开导,再加上家里人不同意去华为,最后我还是坚定的选择了国家电网。其实选择哪有什么后悔不后悔,你进去以后踏实干活,干出成绩来,有所成就,你就会觉得当初的选择多么的对。如果你整天浑水摸鱼,一事无成,这样你就会觉得当初为什么选择了它,而没选择另一者。所以为了以后不留遗憾,今后也会努力工作,带着华为那种拼搏的精神进入电网,踏实干活。最后我们学院大概4个签约了华为公司,都选择了上海。最后衷心的祝愿在华为拼搏的这些同学,你们带着东大电气人的梦想,勇敢新世界,拖着世界往前走,虽然在华为拼搏的路上没有我,但梦想与你们跟随。
三面
依然是自我介绍,充分准备一下。
专业:软件工程
对软件工程的理解,工程化开发软件项目…自我感觉还行
软件工程中最重要的是什么?为什么?
需求分析,软件开发的开端
最有成就感的事
最遗憾的事
未来规划
了解华为的企业文化吗
总体觉得面试华为收获不少,拿不拿得到Offer另说。前两面挺虚的,但三面还好,等待通知吧!