华为od面经(已OC)
我报的是Python开发岗
机试(7月上旬)
考试环境:需要摄像头,手机需要按照要求扫一个小程序并保持不锁屏(插着充电线,自己开启不锁屏)
考试平台:牛客网的ACM模式
具体内容:三道编程题,分别是100分、100分和200分,得分根据通过的测试用例来计算
建议先刷一下牛客网华为od的中等难度题,熟悉一下题目难度和做题平台。接口人是说可以用本地IDE调试的,但是我的三道题目都比较简单,就直接在上面运行了,最后是全部通过拿下满分400。祝大家也能遇到都会做的题,下面是凭借印象给出的题目:
第一题(100分)
将n个数组拼接成一个新的数组,并以逗号为分隔符输出新数组。拼接规则:按照某固定长度m,依次遍历所有数组,并取m个长度(不足m则取所有)元素加入到新数组。比如2个数组[1,3,5,7,9]和[1,3,5]按照固定长度3生成新数组。首先从第一个数组取出1,3,5,从第二个数组取出1,3,5。然后第二次遍历再从第一个数组取出7,9,此时第二个数组没有元素,因此新数组为[1,3,5,1,3,5,7,9],输出为1,3,5,1,3,5,7,9
输入描述: 输入的第1行为固定长度m,第2行为数组数量n,接下来的n行为n个数组
输出描述: 新数组(以英文逗号为分隔符)
第二题(100分)
有一种字符串压缩算法,将字符串(只允许小写字母)中超过2个相同字符的部分变为数字+字母的形式,如"dddfcc"压缩为"3dfcc"。现在输入一个压缩后的字符串,请你判断它是否符合压缩算法,不符合则输出"!error",符合则输出解压后的字符串
输入描述: 一行,一个字符串
输出描述: 符合压缩算法则输出解压后的字符串,不符合则输出"!error"
注意检查:
- 有没有出现数字和小写字母之外的字符
- 有没有出现数字<=2+字母的情况
- 有没有出现类似3aa或a3a这样的压缩不完全的情况
第三题(200分)
小华和小为相约一起去吃饭,他们需要选取餐厅,要求双方都能到达,请你计算他们可能会去的餐厅。在一个m*n的地图上,数字0代表道路,数字1代表障碍物,数字2代表小华或小为的起始位置(非障碍物),有且仅有2个点。数字3代表餐厅(非障碍物)。
输入描述: 第一行输入m和n(空格分隔),代表地图的行和列。接下来m行、每行n个数字(0-3)表示对应位置的类型(以空格分隔)
输出描述: 小华和小为都能到达的餐厅数量
注意:Python使用DFS算法可能会出现递归栈溢出的情况,可以调整最大递归数或通过保存中间状态循环多次进入递归计算
综合测试(2天后)
没什么好说的,尽量不要前后矛盾,一般选择合作、可以不喜欢重复工作但不排斥枯燥工作这些,但是具体的还是根据自己来,主要就是不要前后矛盾
技术一面(1天后)
上来先自我介绍,然后面试官问了我大学做过印象最深刻的事情是什么,之后就直接手撕算法,然后面试就结束了,也没有反问环节。算法比较简单,题目如下:
给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,子串要求:- 只包含1个字母(a~z, A~Z),其余必须是数字;
- 字母可以在子串中的任意位置;
如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。
示例1:
输入:abC124ACb
输出:4
技术二面(一周后)
也是先自我介绍,然后针对项目问了项目分工等团队工作模式的问题,然后让我讲一下自己对装饰器、迭代器和生成器的理解(其他的忘记了,Python相关比较基础的)。最后也是常规地写代码,面试官人挺好的,问我数据结构里面对树熟不熟悉,我说懂一点,然后他就让我写树的中序遍历,非递归可加分。本身难度还是不高的,差不多是没思考就写完了非递归和递归的,最后面试官说基础挺好的。二面的面试体验挺不错的,项目经历、“八股”和算法都问了,比较全面,然后也不会太难
综合面试(1天后)
我看到牛客网上面很多人的综合面试都是轻松聊聊天,问规划、问打算什么的,就连接口人也跟我说做好准备,大概率会更多地问你的个人优势、未来规划这些,然而,我的这次面试全程都是在问项目问技术,并且难度和前面两次面试完全不一样,问的面比较广,所以我整理了一下问题,希望对大家有所帮助:
- 参与过服务器部署吗?一个高可用的分布式方案是怎么样的
- cookie和session的区别是什么,哪些数据可以存储到cookie上,哪些数据应该存储到session中
- 什么是CSRF,防范方法有哪些
- 进程和线程的区别是什么?如何在Python中实现多线程通信?GIL锁是什么?
- TCP和UDP的区别?为什么UDP不可靠?
- 对MySQL和Redis单点、主备和集群部署有了解吗,单点部署会有什么性能瓶颈,分析一下如何解决
- Flask和Django的优劣势是什么,应该如何选择
- 数据库第三范式解决了什么问题
- 一个项目从需求分析到上线需要经过哪些步骤
- 你觉得详细设计最主要是做哪些部分
资面(8月中旬)
资面等了很久,对接人说是最近卡HC。
面试上来先问了一下学校,然后让我自我介绍一下,之后问我的专业主要学什么、如何评价自己的编程能力等等,然后问我有没有复读过。接下来就是确认意向城市和期望薪资了,然后简单跟我说了一下od主要面向社招,所以应届生工资都会比较低的。
OC(8月下旬)
到此整个面试流程结束,流程感觉很久,有一个多月了,技术面全部结束后等了接近两周才约上资面,资面到offer批下来又等了十来天,听说是22届的HC比较少,od又要求是拿到毕业照才能笔试面试什么的,所以一下子6月底到7月份招很多人,到后面HC就很少很少了关于体检,od的入职体检对眼睛的体检要求相对高一点,矫正视力要求4.9合格、不能色盲(色弱一般没问题),眼睛近视的小伙伴如果眼镜比较旧了达不到要求记得验光换眼镜
如果我的分享对你有帮助的话,不妨动动小手给我点个赞