华为校招通用软件开发实习凉经——好像没凉?——录取了!得劲!
背景回顾
之前一直想着跨专业考研,于是慢悠悠的学了差不多一个月的用C语言实现数据结构里边的算法。
四月初的时候,国家宣布今年考研扩招,才认真想了下还要不要跨考,还是本科毕业就出来工作。
决定了之后,便开始学,不过实习也在这时候开始招人,时间比较急迫。
最近几天的学习时间线
-
4/2-4/3 定好学习方向,网上搜索相关资料
-
4/4-4/5 赶一下电信专业课的进度和作业
-
4/6-4/8 初识HTML,CSS,感觉有点像Word文档,就是要代码实现了
-
4/8-4/10 python入门(两天吧,也是看了两次资料,菜鸟教程和慕课网的教程)‘
-
4/11-4/13 进牛客网熟悉语言,python3的字符串和列表等函数,开始写写题目,
-
4/14-4/15 微众微保和华为的两场机试,比想象中的简单很多,不过也碰到了之前没碰到的问题
-
4/16-4/17 赶一下电信专业课的进度和作业(状态不好,应该一天写完的)
-
4/18-4/20 看了点资料后,开始看《计算机网络:自定向下方法》,一天一章,边记笔记边看,进度有点慢
-
4/21 把TCP那一章再看了一遍,对着面试常见问题总结了一下。 用python3写了几个排序算法(写的很慢) 看了链表常见面试题(都很简单)
-
4/22 技术面前把用C写链表的写法看了下,万一考这个呢? 约11:30开始技术面
技术面准备 更细节的在https://blog.nowcoder.net/n/f4d108b721084a0dbc1bd4a63a567c28
- 看了十大排序,写了四五个(暂时还没解决除快排,希尔排序和三个基础排序之外的其它排序)
- 计算机网络前三章,运输层TCP这一章看了两遍,并且又看了遍常见面试题和解析
- 看了数列,链表,栈的面试常见问题和答案思路(都挺简单的),临时看了一遍用C怎么写链表
- 图的几个算法的方法,搜索方法回顾(他问的二叉搜索树的搜索方法不会就有问二分搜索的意思吧= =!,我那时候都没反应过来啊啊啊!)
- 掉了100根头发
机试回顾
腾讯微保的机试 4/14 20:00-21:00
选择题 80分 25题
之前给的链接里可没有选择题,还是比较意外的。
看了两天的CSS和HTML在这里面起了作用,大概一半的题会写,1/4的题不确定,1/4的题靠感觉蒙。结果应该还是不错的。
编程题(3选1,取最高值)60分
编程题的牛客网考试也没没有调试选项,只有提交选项。也不允许本地IDE调试。
题目比我想的简单,就真的是入门水平,但是不能调试是真的挺难受的..就调试一下的事情得肉眼debug好久才看的出来。感觉其实发挥的是正常水平?
但是也遇到了之前没写过的问题:
-
错误输入格式的检查,叠加上不能调试的Debuff,调了半天啥也没调出来
-
超时,怎么改进算法
第一题写完思路拿了50之后就没再长了。
第二题5行python3搞定,之后发现超时了,60分。
要是这难度放现在来说妥妥的100分到手,只能怪时不等人吧~
华为的机试 4/15 19:00-21:00
62.5+75=137.5/300
题目比腾讯微保的稍难,不过可以使用本地IDE调试,牛客网的页面也带有调试。
第一道是计算出现次数+排序+输出的时候短的,字符小的排在前面(sort排序完美符合)
然后一下子写完,提交并运行,好家伙,只过了32.5%的数据。是输入有异常时的情况,没管,写第二题去了。大概写了不到半小时的样子。
第二题就是纯粹的字符串分割了,从字符串里读取数据,然后排除输入格式错误的情况下把正确的给找出来。一开始照着思路写了下(python的函数真的好用...各种函数切割),一下子75%的通过率。
这就过100分了,挺不错的~~
最后的一小时出头就用来判定输入是否合法了,加了30分,最后一题没写。
不过考完之后在牛客网论坛里发现:
——原来可以直接输出一些答案骗分!学到了学到了
技术面回顾
4/22 周三上午,也就是今天上午,在zoom上边进行了技术面。
在一个没有项目||也没有实习||成绩还不好||这几年除了正事之外啥都干||还是个转行生||的自我介绍之后,技术面正式开始了
手撕代码
随着面试官大人说,“那出个题让看下你的计算机学的怎样,用C语言写个斐波那契数列吧”,手撕代码的环节开始了
说实话还以为为考点难的,没想到这么简单,就哼哧哼哧的开始码代码了(就是好久没写C语言有点手生)
写的过程:
写的过程比较追求速度,变量命名和格式啥的就没管了 =.=,下次一定改好看
非递归的之前好像没写过,还想了下怎么用除了函数之外的方式实现递归的功能。
写到一半发现可以直接从前往后推呀,直接怼了三个变量用来记。
(实际应该用动态规划的方法用数组来记的,不用每次挪这三个变量浪费时间...当时咋就这么冲动呢?)
修改:
写完之后面试官让我改冗余的代码,不过有个地方他提的建议我当时还是不大赞同,
就是if(n==1 || n==2),他的意见是改成 n <= 2 再用unsigned int即可确保
现在想来可能是少一次判断也能节省时间吧,我那时候想的方向是表达不够直接具体。
被怼:
代码啥啥都不行,得多练练,推荐了一本书(可能是代码规范书)让我去看,读起来有点像《LeetCode》?
递归实现
int FoNa(int n) { if (n==1){ return 1; } if(n==2){ return 1; } return FoNa(n-1) + FoNa(n-2); }
非递归实现
unsigned int Fei(unsigned int n) { int result = 0, result1 = 1, result2 =1; int temp = 0, now_n = 0; if(n <= 2) //出来后应该都是加1 { if(n==0) { return 0; } result = 1; } else { now_n = 3; result = 2; while(now_n < n) //斐波那契三个数的移动 { temp = result; result += result1; result2 = result1; result1 = temp; now_n ++; } } return result; }
问问题:
“基础课有balabala...你学了哪几门?”
“我就只学了一部分的计算机网络和数据结构”
1.问了二叉搜索树的搜索方法
那时候脑子里突然不知道二叉搜索树是什么了(查了一下发现自己看过)
然后就说搜索方法就是前,中,后序遍历(层次遍历也没说),还有什么其它的遍历方法?不是都说通过改树来实现的吗?
然后就说要使搜索效果最好的话,要对树进行平衡,左右一致最好,为了达到这个目标,所以才有了平衡树,B树,B+树,插入数据时通过旋转达到目标
但是要兼顾查找时间和插入删除时的改树时间的话,就有了红黑树,即不咋改,但是比较平衡。
(事后看来还算说对了点,但是关键在于我没说二叉搜索树的性质啥的_(:з」∠)_)
好像还问了哈希表的原理?有点不记得了。
回答的是根据某种算法直接将值对应到相应的地址上吧。
2.问了TCP的慢启动,滑动窗口
- 慢启动是TCP刚开始连接的时候,从一个很慢的速度开始传报,但是传报会以指数性的增长,直到一个比较高的速度
(感觉面试的时候没说明白这个..,没提到是刚开始/断开连接之后,也没说最后会怎样)
- 滑动窗口说的算是比较好的了,从GBK协议和SR协议开始讲,是在一个定时器的前提下为了接近SR协议而加上的补丁,这样才能有文件流。
发送端和接收端的窗口不一样,得看有没有接收到ACK和接收到文件才滑动(好像说的也不是很清楚?)
还说了滑动窗口的作用:为了防止丢包不知道丢的那个序号的包,这样就能一起传文件流
滑动窗口的大小:由丢包率,ACK的返回速度,序号数...等等决定,有个算法
昨天刚把这一章总结完,也算是在漫长自闭的面试中给了我一点喜悦吧o(╥﹏╥)o
3. 你对未来的规划?
我就按实回答了,如果按照我自己的想法的话,就是前端+后端->全栈的路线走,前端好入门,好好努力,过几个月做项目。
然后我问他“您对我有什么建议吗?”,他说建议我多学学C语言和数据结构,这是基础,我表示十分感谢。
————————————————————————————————————————————————————————
最后相视无言了几秒钟,面试官说那“这次面试就这样吧,待会会有人通知你结果的”。
“好的谢谢,麻烦你了”
“您已被弹出会议室”
华为主管面(综合面试)4/24 11:24-11:40
时间比较短,问的问题比我意料中的少很多,还以为会有压力测试或者是问问家庭情况啥的。
被问的问题
自我介绍
- 问了我们学校的情况,计算机相关专业,自动化,电信,计算机,学校位置
我在哪方面的软件应用能力强 ?
- 暂时还没有,因为刚开始学,想数据结构和计算机网络,都在学,到时候实习的话之前应该能学一些前端
电信的开课没开计算机相关的?(大概意思)
- C语言,写了一个学生管理系统,很简单,没啥东西
你觉得你会碰到什么挑战和(困难)?
- 因为是转专业过来的,基础比较薄弱,项目经验比较少,在大学的这几年确实比别人少学了很多,这也算是一个很大的挑战了。但工作的时间是很长的,接下来的日子好好干,好好学习不拉下,应该也能慢慢赶上。挑战的话就是有很多新知识要学习,有技术难题要攻关,好好干就完事了。
华为吸引你的地方是什么?
- 华为吸引我的地方有balabala...(以后有空补)
这个部门在东莞,所以实习地点是东莞,能接受吗?能实习多久呢?(会影响转正,还有实习内容可能时间短就会比较水)
- 能,我就想去东莞。
- 实习时间看学校安排,(9,10,11,12掰着手指算了一下,好像可以四个月?)根据去年学长的经验,至少能去两个月。
我问的问题
在8分钟后,面试官说“大概的我都了解完了,你有什么问题想问我的吗?”
实习的时候住房有补贴,或者公司有啥安排吗?
- 公司到时候会安排,现在不好说
您们在东莞买的房子是给员工住的吗,怎样才能买呢?
- 现在第一批是给老员工准备的,以后的政策不清楚
最后问了一个我一直想问的问题,不是工作,也不是公司的情况:
- ¢**度**ߚᔈ㐉࠵p†i尧F槽个_T}璅?
想着听听面试官的回答是怎样的,毕竟这种问题没有固定答案,很难回答。
出乎意料的是,他说了很多,说实话从他的角度看,问题变得不一样了,我觉得受益匪浅。
閵変紮濞囨蹇ュ缓閾氬稄娴嗙拋鎺炵妤傚骏鑸伴摎鍨??鈽呮〃
閿濐剟鐝嬬粙娈嬫崘鐭囬敐纾嬩孩閵変紮閮婇妷璇差攨妤??
*
*(如果你信的话(滑稽))
他回答这个问题回答了六分钟,整个面试也就十六分钟,说实话,就算在这里凉了,能得到这个问题的回答,我也算是此行无愧了。
在面试官意犹未尽,我也意犹未尽。
————————————————————————————————————————————
最后,他和我说“我们可以以后继续交流”,感觉心中踏实了许多,可能我在这次面试的过程中的某个时刻就变成了华为人吧。
面试完后不久,打开华为的招聘网站,流程上的主管面试写着,“已通过”。
听说面试过了之后,会泡上半个月的池子再开奖,希望别泡着泡着就凉了吧🤐