
超级无敌干货,事情是这样的,在华为实习了较长一段时间,做的东西跟数据结构、写代码没啥关系,突然被告知去年的机考成绩今年不能用,今年还得再机考,从数据结构毛都不会到通过只花了10天,把心路历程分享出来希望可以帮助到大家。
华子的机考现在越来越难,已经跟其他互联网大厂的机考难度不相上下,区别就是像腾讯字节这样的大厂机考只是小儿科,后面多轮面试的手撕算法才是真的见功夫,别说10天半年都不一定搞的定。但是华子由于奇怪的岗位划分导致有些岗位实际上不怎么需要数据结构可能也会考到华为的那3道算法题,正经面试的时候很多情况下面试官就算看出来你的代码瞎写的也不会怪你,主要看是看你学校和做的项目是否和岗位匹配,加上很多实习生面试本身不怎么写数据结构也得考机考,所以华子的机考,真的就只是100分万岁的机考,近期不考的兄弟也可以从中体会我对非科班转码的认知的180度大转变,绝对可以少走弯路。这篇文章就比较适合如下几类人:
1、 打算投华为或其他大厂实习,机测需要考算法题的(部分硬件岗位靠选择题)
2、研一研二或者本科非科班对转码有兴趣的
3、科研做的是控制算法、规划算法、slam等不太懂数据结构但是找工作逃不过机测算法题的
4、想知道怎样快速刷题应试的
5、担心华为机考过不了想知道考试范围的
总之就是大佬赶紧划走,像我这种菜鸡赶紧点进来就完事了,我前前后后准备了大概10天,从二叉树是什么都不知道到最后动态规划、回溯、递归等难点的题也能写出来,收获了很多,也重塑了我对非科班转码的认知,有时间会持续更新coding细节,欢迎大家点赞关注。
首先说下机考内容和形式,机考一共600分3道题分别为100、200、300分,主要考察范围是字符串、数组、哈希表、递归、栈、深度搜索、广度搜索、动态规划、回溯。基本都是应用题,得先做阅读理解弄懂输入输出代表啥,然后剥离一下题意自己想好用什么算法比较契合这道题,得分规则是通过测试用例的比例乘以题目分数,取3道题分数之和,比如题目中说到,无法通行的情况返回-1,你就一行代码print(-1),假设测试用例中有百分之10的例子都是无法通行,那你就得到了该题分数百分之十的分,当然面试环节会对机测进行复盘,靠投机取巧过的机测,就看面试官在不在乎你的代码能力了,不过实习的招聘一般是不在乎的,面试官主要还是看别的方面,所以能骗点分过也是你的本事。然后考试采用牛客网的输入输出模式,区别于力扣只要写核心逻辑,牛客的输入输出会比较麻烦,所以大家务必掌握好那些文本处理函数,后面我会一一介绍的。这样的输入输出模式会导致像二叉树、链表这种纯纯数据结构的题,你都不好输入进去,加上华子主考应用题,所以机测的侧重点并不在数据结构,不过作为系统的学习还是可以稍微看看,学习二叉树对递归和深度搜索的理解有好处,当然,我看了这么久二叉树纯粹是走了弯路。我主要用到了代码随想录和csdn上的华为机测真题,我会一一介绍怎么使用,2022求职这么难的一年,华子还是一如既往的容易、稳定和高薪。不要觉得华子有多难,说句夸张点的话,20天从啥都不会到入职华为实习纯软岗到转正甚至能一气呵成(前提最好是学校不错),这也完全颠覆了我刚读研时对非科班转码的看法,本篇文章先讲如何准备,再讲怎样一些对于非科班转码的个人见解
一、如何准备华为机测
首先是语言选择,如果大家没有自己的惯用语言,单纯为了通过机测,那我还是推荐用python,这篇也主要围绕python的一些讲解,虽然想正经学号代码最好还是c++或者java,但是机测的话python内置的许多函数可以让你更好的处理输入输出,同时像sort排序、in or not in 等也可以减少代码行数,最关键的还是python学起来非常的快,假设你真的完全0基础,加上学pyhton的时间15天也能过华子机测,当然,工作我也写了不少python,能python我就python,我又不是码农······,完全没有python基础的可以看看知乎python-jack的从零开始学python,从零开始学Python,看到20课就差不多了,一天搞定。
然后就是我推荐的另一个资源,叫做代码随想录,(时间不够或者有点基础的不用看这个)。相信很多朋友应该关注过这个公众号,这个公众号说实话时间足够我推荐大家系统看一遍,但是我们是快速备考机测,我会从非常功利的角度出发。我带大家来过一遍对于一个初学者来说要怎么通过这个资源学习一些代码知识有助于大家的学习,首先学习代码随想录可以培养一些基础的数据结构和算法知识,可能面试中会用到,对于机测说实话有挺多地方还是用不到的,我会细讲,让我们开始。
代码随想录内容分析:
公众号的前言部分有个算法性能分析,不懂时间复杂度空间复杂度的可以去看看,是编程比较核心的概念,虽然实际上机测的时间基本不会超时,但是这是基础知识,然后就是编程风格,华为的面试是有机测复盘的,一般是第一轮,面试官看到你写得非常整齐甚至有点工业化的代码,再配上心机boy的几句简单注释,印象分一下就上来啦!所以代码不仅仅是只给电脑看的兄弟们,是给面试官看的。
第一章数组全看,但是这一章的内容,机测不常考,这种算法风格很浓厚的题,机测不考的。考的基本上是应用题,所以你就看题目,看答案,抄一遍就好了
第二章链表 对于机测没用,可以不看,链表面试应该也不会考
第三章哈希表 哈希表非常常用,字典一般会用来保存处理过后的输入输出信息,集合也可以用来去重,这部分是重点,但是还是那句话,这种题目是不会或者说很少考原题的,主要还是学习知识,所以题目看一下答案理解一下知识就过了,不要纠结会不会出原题。
第四章 字符串常用,一般用在处理输入输出这块,常用的python处理输入输出的spline、strip、replace、join函数一定要会
第五章 双指针法,部分题目可以用上,不是很重要,会的话更好
第六章 栈与队列,单调栈是比较常考的内容,用栈和队列的思维可以解决部分应用题,这一章好好看看
第七章 二叉树 基本不考,纯数据结构类的题考的不多,但是如果是软件相关的岗位面试可能会问到,树这种数据结构还是得会,稍微看一下二叉树的遍历有助于更好的理解递归,不过没时间的这章可以跳过
第八章回溯算法,回溯算法非常重要,可以用来解决很多排列组合的题,虽然回溯有点容易超时但是机测给的时间很多基本不会超时,很多题都可以用回溯暴力做出来,是解决应用题的好帮手
第九第十章 贪心和动态规划 内容有点多,想拿高分的话还是得看看,尤其动态规划还是会考察的,只想100分过的话,动态规划的思路也还是得稍微了解了解一下,面试环节别被问住,动态规划卡尔讲的很多也有点难,时间不够看个大概就好
十一章单调栈 华为还是会考单调栈的,相对容易看一看
其他内容 深度搜索算法、广度搜索算法、图论 这三个考的也多,但是卡尔没怎么讲,大家去看看力扣里的这部分知识就好了,时间多的话做做力扣热题100也会有收获的
重点来了:代码随想录不是必看,但是我觉得可以提高下自己的基础功底,但是重要的事说三遍,很难考到这个里面的原题的,里面的题篇数据结构和算法基础,华为机测多为应用题,整体的风格那是完全不一样,具体大家看到后面就知道了,华子机测的题一般题目都特别特别长,描述的云里雾里,不是这种一两句话就能概括清楚的题,总之这个公众号大家不要一直抱着能遇到原题的态度一直啃一直啃,看个大概,每章掌握基本原理就可以了,后续需要打好底子,这个公众号值得再好好看几遍,但是目前的话求个快就参考我的快速过一下,千万别耽误太多时间在数据结构上,以后考可信了回来再看看吧
二 华子机测真题
csdn上有的,具体是哪个博主我就不说了,整理了很多华子机测的真题,也比较新鲜,不过是收费的,60多好像是,可以跟朋友一起买个,把机测的真题刷一遍,基本就没问题了,做真题是在牛客网上,一定要熟悉牛科网的输入输出,包括输入一个矩阵,输入一些奇怪的字符串完了让你分割保存有用信息等,熟悉了这个以后很多都是应用题,处理好输入输出稍微用一些回溯,深搜等算法就出来啦。这个的重要性很靠前,时间比较紧的就只做这个
最后给自己打个小广告,各专业的哈工大考研学弟可找风哥,以前只有机械和控制两个专业,现在各类专业包括文科专业都开设了,五年带了400多个学弟学妹圆梦工大,希望可以帮到你喔
