很多小伙伴后台私信我,让我出一些面试中的手撕代码题。
一般面试的时候每一轮技术面都会出一到两个手撕代码题,这些题的特点就是,非常短小,易于理解。不可能会再出阅读理解一样的机试题的。但是这些题目也非常注意基本功,注意细节的处理,一般都是easy+medium题目。但是大家一定要注意,因为大部分面试官上面一开始就会让你做题,直接看你所有的做题过程(防止有人水平一般,机试就网上找的答案的蒙混过关),手撕代码题会给你后面的面试定一个基调。
如果你机试成绩很高,而面试上来一个easy题写的都磕磕绊绊的,估计基本上你的面试也结束了,可能后面面试官随便出几个简单的八股就是不很想问了,毕竟招你进去也不是背八股文的。
不过面试这东西因人而异,也有小伙伴就反馈面试官很随和,做不出来的题目还会给你提示,给你讲逻辑让你实现。
总之,希望大家面试顺利咯。(目录中的出现频率是统计于:牛客网、脉脉、CSDN、华为OD面试QQ群等各种网络途径)
序号 | 题目 | 出现频率 |
1 | 求1-n的最小公倍数 | 🌟🌟 |
2 | 判断是ipv4还是ipv6地址 | 🌟🌟 |
3 | 旋转矩阵 | 🌟🌟 |
4 | 字符串的排列 | 🌟🌟🌟 |
5 | 最长不重复子串 | 🌟🌟🌟🌟 |
6 | 字符串压缩 | 🌟🌟🌟🌟🌟 |
7 | 换零钱 | 🌟🌟🌟 |
8 | 数组元素TOP1 | 🌟🌟🌟🌟 |
9 | 反转每对括号间的字符串 | 🌟🌟 |
10 | 字符串的数字和 | 🌟🌟🌟 |
11 | 长度最小的子数组 | 🌟🌟🌟 |
12 | 加油站 | 🌟🌟 |
13 | 判断一个数字能否分解为几个连续自然数之和 | 🌟🌟 |
14 | 分发糖果 | 🌟🌟🌟 |
15 | 字母异位词分组 | 🌟🌟 |
16 | 合法的括号 | 🌟🌟🌟🌟 |
17 | 最大连续1的个数 | 🌟🌟 |
18 | 判断链表是否有环 | 🌟🌟🌟🌟 |
19 | 岛屿的周长 | 🌟🌟🌟 |
20 | 括号内字符串翻转 | 🌟🌟🌟🌟 |
21 | 单词拆分 | 🌟🌟 |
22 | 求素数个数 | 🌟🌟🌟🌟 |
23 | 救生艇 | 🌟🌟 |
24 | LRU实现 | 🌟 |
25 | 实现备忘录系统 | 🌟🌟 |
26 | 判断回文串 | 🌟🌟 |
27 | 求岛屿个数 | 🌟🌟🌟 |
28 | 切割回文串最小切割次数 | 🌟 |
29 | 给定一个字符串,判断是否能够分为三个回文子串 | 🌟 |
30 | O(n)时间内求和为target两个数 | 🌟🌟🌟 |
31 | 八进制求和 | 🌟🌟 |
32 | 单链表相交 | 🌟🌟🌟 |
33 | 移除K位数字,求最小数 | 🌟🌟 |
34 | 最长公共前缀 | 🌟🌟🌟🌟 |
35 | 行星碰撞 | 🌟🌟 |
36 | 十八进制数比较大小 | 🌟🌟 |
37 | 非减序列查找目标值 | 🌟🌟🌟 |
38 | 实现一个简易版计算器 | 🌟🌟 |
39 | 找最大连续子串 | 🌟🌟 |
40 | 最长的连续绿色衣服的士兵 | 🌟🌟 |
41 | Linux 路径处理 | 🌟 |
42 | 判断最长回文子串 | 🌟🌟🌟 |
43 | 三数之和 | 🌟🌟 |
44 | 二叉树最大路径和 | 🌟🌟🌟 |
45 | 乘电梯最小花费时间 | 🌟🌟🌟 |
46 | 简单表达式化简 | 🌟🌟 |
47 | 钱币兑换问题 | 🌟🌟 |
48 | 最大子数组和 | 🌟🌟🌟🌟 |
49 | 实现超级长的数字减1 | 🌟🌟 |
50 | 完美答案 | 🌟🌟 |
51 | 更新中。。。 |
编辑
网上采集的比较有用的两个面经,希望对你有所帮助
1、第一个是hr电话面试, 其实也就是od的hr致电, 简单了解一下个人情况, 问我要一些个人信息, 这块没啥问题;
2、第二个就是机考了, 根据我提供的信息, od的hr给我发了一个机考的链接, 并告诉我7天内有效, 之后差不多5天吧, 在牛客和力扣上刷了差不多20道题左右, 合计着时间差不多了, 就去机考, 整个考试的过程中需要打开摄像头, 然后也会锁手机, 考试时间150分钟, 一共是三道题. 说实在的我抽到的题目不难, 差不多力扣的简单*2 + 中等*1, 前两个是数组和字符串相关的排序类题目, 第三题是一个摇骰子, 就是定好起始状态, 经过一系列操作后骰子个面的数字这样. 没有碰到动态背包这类的问题(这类题目讲道理我目前这个水平看答案都费劲...), 最后380分过了.
3、第三个是性格测试, 机考后的第二天, od的hr就给我申请了机考链接, 然后我当天就去做了性格测试. 听说很多大哥都挂在了这个性格测试上, 作为过来人吐槽一下, 这个性格测试真的难选, 很多答案都自己不太符合的但是硬要选一个最符合和最不符合. 这里建议大家还是按自己的心来, 不要前后矛盾, 这样过的几率大一些. 然后这个测试做完, 当天就能知道结果.
4、第四个是技术一面, 性格测试过了, 马不停蹄的安排了技术面试, 然后因为面试官时间有点紧, 就把技术一面和二面安排在了一起, 给我了3天时间准备. 然后到了技术一面, 先是和我聊之前工作的项目问题, 然后考了一些Java基础, 当时有点紧张, 回答了70%差不多吧, 然后就是手撕代码, 给了我30分钟, 当时有点紧张, 我题目看了5分钟愣是没看明白... 后来面试官也和我分析了这道题, 是一个判断+删除的题目, 类似“aaabcbcbc”-->“”, 然后当时的时间我只做出来一半, 后面和面试官讲了一下思路, 就结束了...
5、然后马不停蹄的开始第五个, 技术二面, 说实话一面的时候题目没写出来搞的我有点紧张, 技术二面上来就是做题, 好家伙, 是一个和二维数组有关的类型判断, 判断二维数组中是否存在某个值, 加上对这个值的一些操作等等, 然而我最后还是没做出来, 做了差不多90%, 然后面试官说时间差不多了, 让我给说一下思路, 然后我就把思路给他说了, 然后这时候面试官说了一句看我机考分数挺高的啊, 让我给他讲一下机考的解题思路把, 好家伙, 我感觉面试官怀疑我是不是自己写的. 然后我就把机考的一些解题过程和思路和他说了. 在之后就问了我一些Java相关的问题, 就结束了....
面到这里, 其实我感觉自己已经挂了, 因为2个手撕代码我都没做出来, 然后Java基础我回答的也不是很好, 比如锁的原理、类加载过程、spring的自动装配等, 当时面完心态爆炸, 关了电脑去打游戏了, 准备第二天试试别的公司.
没想到第二天, od的hr找我, 说我面试过了, wtf? 我当时人有点懵, 这都可以啊! 然后hr和我说让我准备一下资料, 后面安排hr面试和技术主管面试, 和我说这俩基本就是走个流程, 几乎可以预定offer了!
6、然后到了第六个hr面, 就是简单的聊聊工作经历, 聊聊为什么会来华为, 聊聊大学等等. 差不多30分钟结束, 就在我以为hr面轻松过去之后, 没十分钟, od的hr通知我hr面挂了... wtf?
之后去询问原因, 被告知原来是因为之前的工作经历, 因为跳槽频繁, 被认定为不稳定所以拒了(之前在一家公司工作最长的也只有一年).
知道了原因后心情复杂, 只能说意料之外情理之中吧... 我可能是我打听了这么多人中, 第一个倒在hr面的, 朋友们都说没想到... od的hr也很尴尬, 她也以为稳过, 结果... 之后的主管面理所当然取消了.
之后过了一天, od的hr和我说, 换了一个部门, 让我再试试. 后续时间等她通知. 不过我自己感觉可能会因为我的工作经历再次挂掉.
第零轮面试 —— 性格测评
这轮原本我是不想算是一轮的,因为我个人觉得最没有难度的一轮;但据一轮面试我的小哥说,还真有不少人在这一轮被刷掉了;所以建议大家不要掉以轻心;其实大家都能理解,程序员人群中,其实还真的是存在蛮多一些不爱讲话,不爱跟别人分享,更谈不上能切合上华为的那种“狼性思维”; 若您的性格确实比较内敛,或者觉得自己的思维上跟华为无法匹配的(在清楚自己是怎样的人的情况下),多去网上了解华为的做事方式,做题时,捂住自己的良心,选择那些你不想选的答案吧,如果你想进入下一轮面试的话。
第一轮面试 —— 基础面试
大概都是Java基础、数据库、Spring底层原理、分布式、多线程;(Java基础相关就没什么参考值了,纯粹看个人准备程度和面试官)。然后就是一些 项目中遇到的难题 和解决方案; 这一点据面试小哥透露,必问,大家可以提前准备;跟实际工作结合,准备好一些有质量一点的问题和解决方案(背背背~熟);
在这里呢,必须要说明一下,我以前公司也跟华为有过合作;从那时候接触华为的人,都是一群非常有耐心且非常nice的人;包括一面遇到的这位小哥,面试完我之后给了我很多面试经验,教我如何好好准备下面几轮面试,多刷算法等等;还非常有耐心地跟我解释华为OD在华为内部跟正式员工没有差别对待等等…非常感谢他!
第二、三轮 —— 技术面试+主管面试
两轮的技术面试,我比较惨,为了节省时间,两轮一起上,一共面了接近3个小时;基础问题、技术探讨、笔试算法题狂轰滥炸…希望大家能坚持住。由于是疫情原因,是通过zoom进行视频面试(算法题时需要共享电脑屏幕);好在两位主管也是超级nice的人,年纪大概40左右,面试过程非常随和,也会引导我说出具体的想法。抛开结果而言,能有机会跟两位年薪上百万的技术大牛花接近3小时的时间跟我“探讨”技术问题,受益也非浅啊。
技术主管面试后,技术主管会进行技术定级,将顶级结果交给人事;人事一轮就不多说了,因为她比较直接地根据上面的定级、咨询个人情况后给出定薪,基本称不上面试。