技术面试须知

  1. 单轮面试时长通常为45min-60min
  2. 面试内容一般包括三个部分:简历项目提问、八股提问、手撕代码
  3. 面试官是整个华为随机抽调的,很大概率不是面试部门的领导,级别在15-18级均有可能。因此,面试官并不一定熟悉面试部门的相关技术栈,而更加倾向于考察基础内容。
  4. 技术一面和技术二面的考察方式以及内容差别不大,不必分开准备。
  5. 手撕代码环节通常决定面试的下限,即决定你能否拿到offer;简历项目提问、八股提问环节通常决定面试的上限,即决定最终的定级以及薪资。
  6. 如果两轮面试的定级一致,那么定级基本确定,后续进入HR面和综合主管面;如果两轮面试定级不一致,则还会出现技术三面,其内容和形式与技术一二面类似,根据三轮面试的平均结果决定定级。
  7. 整个技术面试环节需要开启摄像头,面试官不一定开启(看面试官风格)
  8. 面试时紧张是非常正常的,但千万不要过度紧张。把技术面试看作是一次你向大佬交流技术的机会,试着把大佬看作是你的朋友或者前辈,用轻松愉快的态度去面对提问,并且在回答的过程中要保持谦逊好学,切忌不懂装懂。

简历项目提问、八股提问环节

  1. 本环节时长通常在20min-30min
  2. 在你开口说话之前,简历是面试官了解你的唯一窗口,只能通过简历来判断你的水平和能力,因此简历中的项目经历将尤为重要。
  3. 面试伊始一般需要做一个简短的自我介绍,尽量提前准备以下,尽量包含以下内容:
    1. 礼貌地问好。
    2. 介绍自己的情况。名字是什么?毕业于什么学校什么专业?目前状况是什么?(ps:对于非科班转码的同学,还可以介绍一下自己如何学习计算机知识,以及为何要选择互联网行业
    3. 介绍项目的情况。实习/工作/项目经历最重要的项目是哪些(不要超过两个)?实现了什么功能,?有什么亮点?(可以重新组织语言将简历上的重点内容,用语言复述一遍)
  4. 简要讲完项目经历后,面试官基本上就会顺着你的描述来提问项目相关内容了,这样就可以将面试的主动权掌握在自己手里。
  5. 简历项目提问和八股提问其实并没有严格的界限,通常会穿插着进行。比如,你提及了某个Python数据分析的项目,那么面试官可能会问你用了什么库,是NumPy、Pandas还是TensorFlow,用到了库中的什么模块,是否熟悉相关模块等等。
    • 八股相关的内容可以查看常见八股汇总
  6. 要注意,简历中涉及的每一个词汇(尤其是专业名词),都要做好被提问以及拓展的准备。
  7. 因此,对于简历中涉及到的自己做过的项目,一定要在面试之前review一遍,即使无法回忆起每一个细节,也要对以下问题心中有数:
    1. 用到什么技术栈?为什么要用这些技术栈?(主要是一些专业名词,以及它们的含义)
    2. 实现了什么功能?有什么亮点?(解决了什么问题?提升了多少效率?前人没做过?)

手撕代码环节

  1. 本环节时长通常在20min-30min
  2. 本环节需要你自己打开IDE并且共享屏幕,让面试官看着你写代码。
  3. 题目数量一般是1道。如果你做完一道后面试官又给了你一道题,那么恭喜你!这说明两个问题:
    1. 你做得很快,大概只花了10min就完成了第一题
    2. 面试官很看好你,觉得你可以再做一道题来展示水平,好让他给你更高的定级。
  4. 题目难度和范围接近OD笔试,但不像OD笔试那样有那么长的题干,主要以LeetCode中的简单题和中等题为主,而且考察种子题的概率更大。
    • 手撕算法的押题内容可查看华为OD技术面试手撕算法押题
  5. 无需像笔试中写一个input()来输入用例,直接用变量创建用例即可。
  6. 如果对题目理解有疑问,可以向面试官提问,保证充分理解题意之后再作答。
  7. 尽量注意代码规范,比如变量名规范,空格规范,换行规范等等,有时间的话甚至可以写点简单的注释。华子特别注重这个,代码规范做得好的话,可以在面试官心目中加印象分。
  8. 写完之后需要向面试官解答你的代码思路,可以按照总—分—总的方式来讲解。
    1. 总:用了什么算法?时间复杂度和空间复杂度是多少?
    2. 分:按行解释代码。关键的变量在哪个位置发生了变化?在这个过程中也可以适当写下注释,让你的思路更加清楚。
    3. 总(这一点不是必须的):除了代码所示的算法,还有哪些可能的算法?其优缺点是什么?
  9. 如果知道多种解法,可以主动告知面试官并且写出来,会非常加分。
  10. 如果题目写不出来,或者完全没有思路,可以向面试官求助,问问他的思路是什么?有什么建议?