机试共三道算法题,分成两部分。其中第一部分是12小题,第二部分是第3题。不能同时做两部分,必须先提交一边,才能开始另一边。所以要安排好时间。
算法题提前准备,刷leetcode常见题型,熟悉你所使用的语言的常用字符串操作。还有推荐看CSDN上的华为题库(有可能会考到原题),感谢hr栗栗提供的笔试资料,非常有用。
1、模拟队列
题目比较长。提供n个执行者和m个任务,一个队列,给出每个任务的入队时刻和所需执行时间。如果队列满了,抛弃掉队列里最老的任务。执行者一旦空闲就会去队列里去最老的任务。当队列满的时候,如果同一时刻既有任务完成又有任务入队。则先从队列取出最老的任务,再将新任务入队。
输出最后结束的时刻和被抛弃的任务数量。对所有输入的时刻t,都有1<=t<=1000
个人思路是 遍历1-1000时刻模拟过程,代码比较复杂。最后通过90%
2、射箭比赛,每个选手有编号,每个选手射箭若干次,将每个选手的成绩取出最好的3个累加即为该选手的最终成绩,如果选手射箭成绩小于3次不统计该选手成绩。将选手最终成绩降序排列,输出选手编号。若成绩相同,编号大的排在前面。
输入三行,第一行一个整数,代表所有射箭次数; 第两行,依次给出每次射箭的选手编号;第三行,依次给出每次射箭的成绩。
简单题,统计并排序就行了。最后通过100%
3、leetcode原题 402. 移掉 K 位数字 题目描述基本相同
华为od题库原题 https://renjie.blog.csdn.net/article/details/130792891
给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。
例如 num="2615371",k=4, 最后输出 131。
思路: 自己在草稿纸上从简单的情况模拟,来找到规律。
规律如下:每次删除第一个满足str[i] > str[i+1]的下标i,重复N次。
如 2615371 -> 215371 -> 15371 -> 1371 -> 131
如果某次遍历如果没找到 i,那就是删除最后一个。
最后输出的时候注意删除前缀0。
可以用stack堆栈优化,只用一次遍历。
最后通过100%(没用stack堆栈优化也全通过了)
先是自我介绍+项目经历,项目这部分提前准备好怎么讲,想好可能会被问的问题。会根据你的项目提问,所以可以一定程度上诱导面试官问向你擅长的方向。
项目问完后是几道常规前端基础知识
了解原型链吗?怎么创建一个没有原型的对象
通过new创建一个对象的过程
css问题,高度坍塌原因和解决方式
sessionStorage和localStorage的区别,存储大小限制多少?
什么是闭包?闭包的用途?
……
最后是算法题(要在本地ide上写并运行,提前准备好环境):************************************************* 每日温度
同样自我介绍+项目经历,项目环节特意提了让我讲遇到的难点。然后是八股文问前端面试常规问题,如
前端安全问题XSS和CSRF
防抖节流,定义以及使用场景
列举几个排序算法(追问了从一堆数中多次取出最大值的方法(最大堆),可能是因为我说到了堆排序)
……
最后也有一道算法题,非常简单,青蛙跳台阶***************************************************************
由于一二面面评不一致我还需要加面,还是一样讲项目问项目,然后是八股文问前端面试常规问题
前端性能优化,几个指标,performance
前端跨域请求问题,项目中遇到的如何解决
js事件循环,宏任务微任务
因为我是科班,有问我js中对象/map的存储原理之类的
git操作,问了开发期间其他人有提交过代码,自己合入要怎么操作,我自己答了git rebase解决冲突后合入。然后还问了git rebase的其他用法。(这题按自己正常开发使用git方式答即可)
……
最后算法题是比较简单的动态规划题,******************************************* 不同路径
技术面试总结:大部分时间是在 1、讲项目和根据你所讲的项目提问相关前端问题,也就是抓着项目问问题 2、做算法题。 而这两块都是能提前多做准备的,尽可能地充分准备好。3、栗栗在综测后会给你发技术面试攻略,可以参考下
自我介绍
上一份工作的经历/做的项目内容、自己的职责
工作地选择的原因
为什么选择来华为
加班情况
离职原因
期望薪资等
电话面,普通聊聊,比较随和
当前情况
换工作原因
上家公司工作内容,团队人数,承担角色
我作为前端的工作研发流程(或者说一次需求流程)、自动化手段、交付节奏、代码重构
为什么从事前端
团队协作代码code review怎么做的
聊了些对angularjs、vue、react等一些想法
平时怎么学习、算法怎么准备的
反问
最后就是全部面试通过后等审批环节和发offer后准备材料了。要十分感谢hr栗栗的帮助,从头到尾持续帮我去催进度,最后也也如愿以偿的快速收到offer。所以如果对华为 od 感兴趣的欢迎来找她!他会根据你的技术栈,个人兴趣等给你推荐,让部门和你电话沟通再决定是否开始面试,不会盲推。很好的HR,也很好说话,很温柔,回复不及时还会和你说抱歉的那种。