笔试基本情况以及注意事项

时间、分数、难度

  1. 拿到笔试链接之后,在一周内任何时候做题都可以。。HR可能会以各种理由催促你,因为让你考试是他们的KPI。不要受HR的影响,按照自己的节奏来,一定要准备充分了之后再考试,咱不差这一两天。
  2. 如果拿到笔试链接但是处于种种原因不想在一周内作答,只要没点开链接,就不算作答了,是可以再约机考的
  3. 如果笔试没有通过,半年后可以再参加(所谓的冷冻期半年)。
  4. 笔试时间为150分钟,满分400分,一共三题,分值为100分、100分、200分。你的最终得分为三题得分的总和。
  5. 基本线为150分。一般而言目标院校考到150分就可以了,非目标院校根据不同部门招聘需求,需要考到200-350分不等,建议和HR确定清楚。
  6. 题目难度为LeetCode上的简单、中等题目。LeetCode上刷过50题左右,考到150分问题不大;刷到100题左右,考到250分问题不大;刷到150题左右,考到300+问题不大。
  7. 一般来说,这三题的难度是递增的。但也不排除,第三题是最简单的题目,而第一、二题较难的情况出现。
  8. 我们给大家定下的目标是尽量考到350分,因为更高的分数将会对你的定级产生更大的帮助。当然考不到也不到气馁,因为笔试分数不是拿到offer或者定级的决定性因素。

提交、得分、报错

  1. 在提交答案时,可以通过点击“保存并调试”来查看结果,而且可以无限次提交,系统只会以你最后一次提交的结果为准
  2. 在结束考试之前,千万不要点击“提交本题型”,这样会直接交卷。
  3. 2023下半年的笔试,进行了提交机制的改版,必须先提交两道100分的题目,才能够看到200分的题目。但两道100分的题,是可以先做第二道再做第一道的。
    1. 先做200分的题再做100分的题的操作现在已经不允许了。
    2. 当开始对200分的题目进行作答时,前两道100分的题的分数已经固定了。
    3. 基于上述改版,我们给大家提出的建议是:
    • 用1-1.5h完成前两道100分的题目,争取拿到150分以上的分数
    • 剩余的1-1.5h完成200分的题目,争取拿到100分以上的分数
  4. 如果代码存在编译或语法问题,机考系统会提供具体的编译错误信息
  5. 如果某题有测试用例未通过,系统会告诉你有多少测试用例通过了,即你本题可以拿到多少分,但不会指出未通过的测试用例。所以为了提高分数,要尽量多通过示例。
  6. 某题的得分是按照通过用例的比例来给分的,比如分值为100的题一共有20个用例,你通过了16个用例,那么本题你的得分就是80分。

ACM模式输入输出

  1. 笔试使用的是牛客的系统,属于ACM模式,即需要自己写输入输出的语句
  2. 笔试可以使用本地 IDE 编写代码,然后将其复制到笔试页面提交。所以,一定要用IDE开启代码自动联想功能,编写代码效率更高。
  3. 如何应对这种ACM模式,请详见ACM模式输入输出总结

防作弊机制

  1. 华为非常重视考生是否作弊,所以流程会稍微有点繁琐。
  2. 在参加笔试之前,考生需要通过电子邮件中的考试通知进入考试系统,并完成签名、调试摄像头、开启屏幕录制等步骤。
  3. 考前还需要扫描一个二维码,保持手机不能关机、移动、锁屏、切换界面。最好就是扫完二维码直接放在一边,等到考试结束后再动手机。最好保持手机在充电状态。
  4. 笔试中途不要断开摄像头,不可以大面积遮挡面部。但可以喝水,喝酒,抽烟,别太离谱就行。
  5. 笔试过程中允许使用草稿纸,可以在正式作答前,将空白的草稿纸和笔举在胸前向摄像头展示,展示后将草稿纸和笔放在面前桌子上。
  6. 为防止误判作弊,建议在不要在考试前搜索和考试相关的内容。即使搜索了,也要在点击“确认是否参加考试”前关闭不必要的网页
  7. 华为OD笔试有较大概率抽到原题。如果碰到原题,尽量用自己的思路写,不要尝试去搜索网上的代码。如果和网上的某些代码重复率大于 80%,会被判定作弊。注意仅改变量名是没有用的

拿分技巧

  1. 实力才是硬道理,如果实力过硬其实也不用太过在乎技巧。对于能力较强的同学来说,两个半小时是非常充足的时间。
  2. 由于现在只能先做两道100分的题目,因此拿到题目之后可以先快速地扫一眼前两题的题面和难度优先完成其中较有把握的题目(比如题意容易理解的题目、较为熟练的题型、做过的完全一样的原题等等)。争取在20min以内完成一道100分的题目(其实并不难实现)。
  3. 如果分数线是150分或者200分,可以适当多花时间在前两题上面,因为前两题全过就是200分通过了。当
    1. 一道题满分100分而另一道题0分时,还是要尽量把没做出来的题目拿到50分以上。
    2. 前两题拿了150分左右时,如果剩余时间不足1h,那么可以直接跳过去看200分的题目,因为这个时候200分的题目只需要拿30%左右的分数就可以通过。
    3. 前两题拿了不足100分时,如果剩余时间不足1h,但其中某道题比较有思路,感觉只是某些细节没有处理好,可以优先把这道题做出来拿满分,直接达到150分左右的分数。不要跳过前两题,去赌200分的题目自己能完全做出来。
  4. 如果分数线是300分或以上,那么前两题要尽量全对。当
    1. 前两题拿了150分左右时,如果剩余时间不足1h,那么应该跳过去看200分的题目,争取200分的题目能够拿到75%的分数。
    2. 前两题拿了100分时,如果剩余时间不足1.5h,这个时候要自己评估一下要不要继续完成死磕完成前两题。尤其是有没有信心200分的题目拿满分。
    3. 前两题拿了不足100分时,那无论如何也一定要完成到100分以上,否则200分的题全对也没用。
  5. 无论是上述的哪种情况,200分的题最好都不要一眼都没看、一行代码都没写。
    1. 最后30min一定是要在完成200分的题目,因为无论如何都是能拿一点分的。200分的题目的用例通过的分值更高,相对来说更划算。
  6. 不用刻意追求每一道题都满分,我们的目标是通过考试而不是满分。假设某道题你用暴力解法可以拿到70-80%的分数,在时间不足、其他题目尚未完成的情况下就不要再去死磕追求其满分,应该在其他题目上多拿分。
  7. 如果某道题通过比例为
    1. 0%-30%,那么可能的问题是
    • 题意理解错误
    • 输出形式没有按照题目要求进行(比如题目要求输出True/False,但你输出了1/0)
      1. 30%-80%,那么可能的问题是
    • 使用了暴力解而非最优解
    • 代码框架整体正确但某些代码细节出错(比如DFS四个方向某个方向写错)
    • 普遍存在的边界条件没有考虑(比如滑窗可能需要在循环外再做一次答案更新)
      1. 80%-100%,那么可能的问题是
    • 某些特殊的边界条件没有考虑(比如数组长度为1的情况)
    • 虽然使用了时间复杂度较好的解法但没有排除某些重复性的计算过程(比如回溯没有剪枝等等)
      1. 因此我们可以根据分值来判断自己可能存在的问题。

其他

  1. 如果是应届毕业生,一定要检查笔试时间要在毕业双证上写的时间之后,否则算违规,因为华为OD考试属于社招,是不允许在毕业前参加笔试的。
  2. 心态是很重要的。大家都已经训练了一个月甚至更长时间,要相信自己的算法能力!即使遇到没有见过的新题,也千万不要慌张,仔细分析题意和示例,关联类似问题,一定能够顺利通过考试!