华为wx干了三年半,离职三个月后,双非开发哥用算法+优化案例成功上岸OD!
1.个人背景
双非一本非目标院校,软件工程专业,两年测试经验+三年半Java开发经验,三年多的java开发经验是在华为外包项目(wx),部门无od内转名额所以离职。报班之前算法很薄弱,基本上没报班的话,自己去考机考应该是过不了的。
2.时间线
3月底提出离职,但是最后交接工作直到6月上旬才离职,提了离职之后依旧认真工作且加班卷工时,最后写了上万字的交接文档,希望od背调的时候给个好评价。
4月中上旬联系od的hr,被告知最近一份工作是华为外包的话,需要离职三个月以上才能入职od。
6月-8月回家处理事情
8月下旬发现有od算法培训班,找许老师报名。
8月25-10月13号刷题学习算法。
10.14机考
10.15综测以及背调
10.16资面
10.23技术一面
10.25技术二面
10.31技术三面
11.1主管面
11.4谈薪
11.6收到offer(对接的HR每天催部门审批offer,所以速度非常快,靠谱HR的重要性)
3.机考
考试之前有将oj题库中的E卷的所有题目都刷了一遍,当天做题的时候先从200分的题开始写,半小时之后写完,但是只过了25%的用例,于是先提交了200分题型的代码。查看前两道100分的题目,发现其中一题很简单,简单的那题耗时约15分钟,测试用例完全通过。最后开始写第一题,用了半小时,但是发现只通过了31.8%的用例。此时还有离考试还有 一个小时15分钟,考虑到200分的题目用例分会比较高,于是我又耗费了半小时检查最后一题的代码,最终发现了错误,修改代码后提交是通过了80%的用例。剩下40分钟都在修改第一题的代码,但是无论我怎么改,用例最高的就是通过31.8%。离考试结束还剩5分钟的时候,我决定不再修改代码,而是检查代码是否提交的是最高的通过比例的那个版本,因为机考是以最后一次提交为准的。
4.综测以及背调
对接的HR有提供一个PPT,里面有综测的正确答案,背调的话当天有和关系好的前同事打招呼,所以背调当天下午就搞定了,据hr说华为的前领导给的评价特别好,背调也十分顺利。
5.资面(约15分钟)
资面主要是问了下之前工作的情况,以及为什么从测试转到了开发,如果有空窗期的话,会问空窗期在干什么,这个理由得提前想好。我在资面的时候主要是突出了自己的稳定性,工作认真负责,和同事相处友好,有上进心,愿意主动学习这几个特质,这些从前领导的背调评价中都可以证实。
6.技术一面(约50分钟)
技术一面约的是早上9点10-10点10,当天9点我打开谷歌浏览器登录网易邮箱,发现我网易邮箱登录不上去了。到了面试时间,我先用手机接入了视频会议,然后疯狂给面试官道歉,最后是在手机上查看会议id和密码,在电脑上打开WeMeeting手敲会议id和密码才登录上去的,这个时候已经9点17分了。大家一定要提前进会议,提前准备好。首先是先做了个自我介绍,建议大家自我介绍可以突出下自己的亮点,尽量引导面试官往自己擅长的地方问。
1.项目为什么要用postgresql数据库,不用GaussDB?
2.有用过ES吗?
3.说一说jvm的内存模型以及垃圾回收算法
4.你们项目用的是哪个垃圾回收器?
5.说一说你做过的优化
手撕三数之和(耗时约20分钟,写完了之后我加了下注释和面试官讲了下思路)
7.技术二面(约40分钟)
二面的时候上来就让我写题,说明了写题时间30分钟,题目是下一个更大的元素,最后耗时10分钟写完了。然后面试官也没有让做自我介绍,开始问问题了。
1.线程有哪几种创建方式
2.线程池有哪些参数
3.线程的核心线程数、最大线程数、阻塞队列的大小应该怎么配置
因为面试官一直在往深问,问到了我答不上来的地方了,刚好这个时候面试官说等他一分钟,暂时有点事要处理。我就在思考怎么引导面试官往我擅长的地方问。一分钟之后面试官回来了,我告诉面试官,目前这个知识点我可能了解的不够深,但是我之前的项目数据量比较大,所以对接口优化以及垂直拆表这块有实际的开发经验,并且优化案例都上线了取得了不错的效果,要不我给您讲一讲?面试官表示可以讲一讲,然后我就和面试官讲了半小时的优化,期间面试官也在质疑之前项目的优化方案,我只能不断的解释,去讲为什么要这么优化,取得了什么样的效果,最终结束面试。后续复盘这一次面试的时候感觉可能是遇见了压力面。
8.技术三面(约40分钟)
因为一二面定级不一致,所以进行了加面,上来就是给了一道编程题,题目是两数之和,8分钟写完。题做完了之后这次也是做了自我介绍,三面的面试官给人的感觉还是很温和,所以面试也没二面那么紧张。
1.事务隔离级别有哪些以及解决了哪些问题?
2.Spring有哪几种事务传播行为?默认的是哪一种?
3.Spring声明式事务有用过吗?用的哪个注解?
4.Date类在1.8之后有进行升级,你知道是哪个类吗?
5.stream流有用过吗?
6.RabbitMQ怎么保证消息不丢失?
7.有进行过jvm调优吗?
8.为什么要从测试转开发?
三面只讲了一点点优化案例,个人感觉三个面试官似乎都不会问到重复的问题,考察的知识点似乎是不同的,通过三面的面试我大概能感觉到评级应该是前两次面试中较低的那次。
9.主管面(约50分钟)
对接的HR说主管面大约面15分钟,但是实际情况我面了50分钟,主管面主要是问了我之前项目中做的优化,以及之前项目用的技术栈。也问了下平时是怎么学习的?为什么要从测试转到开发,以及是怎么转到开发的?主管面给我的感觉是比较想确定我的学习能力,因为技术栈有一部分不符合,进去了应该要学习一段时间的新技术。所以主管面面试我都在突出自己的上进心、愿意思考问题、愿意学习这几个特点。
10.谈薪(约15分钟)
谈薪又是另外一个HR,据说是部门的大HR,以总包为由卡了涨幅。我看面经的很多同学都没有这一面,但是我遇见了,最后以我要是在之前部门内转也会卡涨幅为由,限制了涨幅比例,不过也算达到预期了。