华为od C/C++开发岗通过经验

概述

个人情况:浙江某电子类双非院校通信工程本科。大三上决定转码,雅思5.5,无挂科,在校期间参与过一些比赛,其中一场“软件定义无线电”大赛中和队友拿到了第四名二等奖和2000元奖金,PAT甲级22分,力扣等平台累计刷题累计近300道。一战复旦计算机326分落榜,二战成电计算机暂未出分。
Offer情况:华为od C/C++开发岗税前月薪15k12薪,年总包20w,base杭州。

我是22年二战考研结束时开始找工作的。找工作的目的如下:

  1. 时间充裕:目标院校复试时间为3月底,而考研初试的时间是在12月26日,期间有三个月的准备时间。而且复试内容是408四件套+C语言,408是我一战考的专业课,C++也是我的主力编程语言,因此我有较为充足的时间投入到其他的事情上面。无论今年是否考研上岸,整个22年上半年都是空闲的。
  2. 接触工作:本科四年忙于各种事情,却没有参加过实习,想体验和感受下真实的工作是怎么样的,为日后的路径选择提供指导和经验。加之我考研的目标院校不允许实习,因此这可能是我三年内唯一能接触到工作的机会了。
  3. 说服父母:父母从农业院校毕业,从事农业类行业,不清楚互联网IT业的情况,一直鼓励我考公,而我却不想考公。我找工作的目的之一就是证明互联网码农的高收入。
  4. 落榜备选:如果这次考研失败,工作可作为备选项进行。

因为不是春招或者秋招的时间,所以可以选择的岗位相对较少。虽然华为od不是正式岗位,但是符合我的主要需求,因此我最终选择了华为od。

面试流程

面试分为六个阶段:机试→心理测试→技术一面→技术二面→资格面试→主管面试
从12月28号左右在boss直聘上联系到hr开始,到1月26号拿到offer整个流程共耗时约30天。

Part 1.机试

机试的形式类似于leetcode上的算法题,不过是在华为自己的网站上进行的。期间可以使用本地IDE进行调试。
一共有三道算法题,分别对应leetcode的easy,middle和hard难度。前两道比较简单,最后一道是一道动态规划题。前两道各100分,最后一道题200分,一共400分,150分算通过。我全ac了前两道题,最后一道dp题看了半天做不出来,最后提交得了200分,通过。

Part 2. 心理测试

华为这个心里测试是真的多,好几十道题,前后还不能矛盾。都是些选择题,问你遇到各种情况你的态度和做法。总之本着一个原则:我爱加班,我不偏激,我即使加班也不抱怨。那基本上心理测试就没有什么问题的。

Part 3. 技术一面

由华为的工程师进行远程面试。对方可以同时看到我方摄像头和我的电脑屏幕。面试的主要几个方面和问题:

  1. 手撕代码
    要求我写一个栈,这个栈可以完成基本的进栈、出栈、find_max、是否空/非空等基本操作。
    因为这是我第一次面试手撕代码,我有点慌,就先试着把C++里的STL库封装到自定义的函数中,然后试探性地问了下面试官可不可以。面试官提醒我不能用STL库,用了就没意思了,要自己写一个。
    于是我创建了一个新的类,其中每个函数都用C写了一遍,用一个数组和一个指针模拟出一个栈。面试官看到之后说这样就可以了。
  2. 问毕业设计
    因为我简历上写了毕业设计,毕业设计是设计了一个服务于大型公司的网络,这个网络完成了公司内部信息的安全传输,然后使用了SSL和VLAN等基本的技术以及协议。最终结果是用Cisco的Packet Tracker仿真出来的。
    面试官说毕设的原文件应该在你的电脑里吧,可以打开演示吗。我说可以的,就找到了毕设的仿真文件,把基本的拓扑图给面试官介绍了下。在整个过程中,如果遇到我不清楚的问题时我就说自己不会,然后试探性得讲了一些我了解的相关知识。
  3. 查看我的力扣账号
    因为我的简历上写了自己刷了近300道力扣题,所以面试官要求我打开我的力扣账号和本地代码。我打开我的力扣账号,然后展示了下自己本地存储的自己写的代码。最后面试官随便问了些别的问题:你一般用在什么环境下编程呀,Linux用得怎么样呢……

Part 4. 技术二面

  1. 手撕代码
    给定一个char型的二维矩阵和一个字符串,返回0或1,该二维矩阵若存在从某个位置出发,仅允许上下左右成蛇形移动,问构成的蛇形字符串是否可以等于给定的字符串。若可以则返回1,反之返回0.
    力扣中等难度题,典型的深度优先算法。需要编写的函数有:
    find():依次检查该矩阵每个位置作为入口是否能构成给定字符串。
    Next():先检查已存储的蛇形长度是否达到给定字符串的长度,若达到则跳出函数,返回1.再依次上下左右检查周围的位置是否符合下一个元素的值。注意此处要考虑边界的情况。
    ……

面试官只给了我半个小时,但是我大概得花一个半小时才能全部调试完成,因此我就只写了个大体的框架思路。最后面试官说我没有考虑二维矩阵某个元素重复使用的情况。我说这个题目有歧义,如果不允许某个元素重复使用的话可以建立一个同样大小的二维bool型矩阵,把每个已检查的位置从0改为1。每次进行检查下一个位置时多检查下这个二维bool型矩阵是否为0.
2. 其他内容
面试官还问了我一些其他的东西,但是因为这个手撕代码令我印象深刻,所以他问我的其他东西我都忘了。

Part 5. 资格面试

据说过了技术面之后剩下的面试就比较容易了。面试官噼里啪啦问了我一些几乎每个面试官都会问的东西,照着我的简历挑他感兴趣的地方问。最后很顺利地通过了。

Part 6. 主管面试

跟资格面试差不多,面试官说我们快点进行最好半小时就完成,结果最后大概15分钟就面完了。

后续

Hr跟我打电话商量了下待遇,我确认了一下就是通过了。

写于2022年1月27日星期四

你可能感兴趣的:(面经,华为,c语言,c++)