开箱一个华为面试

在这里插入图片描述
今天刚结束了华为的面试。华为作为一个大厂,流程 还是很规范的,趁着尚未入眠,记忆还清晰,把今天的面试做个总结吧。
我事先在牛客网上做过华为的机试才收到的面试邀请,其实蛮水的,一共三道题我a了两,但事实上只要a对一题就有资格进入面试,难度不算高,大学期间有扎实学过的问题都不大。
第一面:技术面
首先是自我介绍了,其实这个看面试官,有些面试官压根不给你自我介绍的机会,一开始上来就要求你手撕代码,但是我遇到的这个面试官人还不错,给了我自我介绍的时间。
自我介绍的时候其实不怎么需要提到技术方面,最好的还是提一些你这个人在技术之外的闪亮点。(当然你要是ACM World Final这类级别的经历那肯定得说)。我在这里是对自己的爱好,兴趣还有业余生活做了简单的介绍(我感觉生动活泼一点比较能博得面试官的欢心,面试官被我逗笑数次)
接下来就开始手撕代码了,面试官用c/c++比较多,问我能不能用c++写,我说我用python写的多(这点很重要,面试官于是少问了我很多c的坑),他也准许我用python写了。
第一题是给定两个字符串,要求在第一个字符串中删除第二个字符串中出现的字符,这题其实很简单,做法挺多的。我首先用的方法是将字母转化为ASCII然后用数组存储然后遍历第一个字符串,若存在就删除(list的remove方法)。
ok,他说这种方法可行,但如果需要处理大量数据比方说一亿个字母,这种方法因为每次都迁移大量元素,效率会很低。
我提出可用链表解决。
他说这种方法的确能用,但是不值得,因为一个字符才占一字节,而一个指针占四字节,存储空间划不来。
我暂时没想到更好的办法(学艺不精)。
他于是给我上起了课:
采用在原字符串基础上重新构造删除后的字符串的思路。定义两个指针,一个slow用来构造新的字符串,一个fast用来遍历原字符串。初始两个指针均指向原字符串的第一个位置。如果fast指向的字符不是要删除的字符,就赋值给slow,然后两个指针一起后移;如果是要删除的,就跳过该字符,fast继续遍历下一个字符,slow不变。这样,删除在O(n)时间内就可以搞定。
然后是被要求手写图的深度遍历和广度遍历,快排什么的。
我用递归实现之后他要求我用栈在实现一遍。
接下来问了下网络的知识,解释了下tcp和udp的基本原理,三次握手和四次分离什么的。
又问了下数据库的知识,手写了几行sql语句,又问了下1NF,2NF,3NF什么的。
操作系统我直接说不熟不会他于是放过了我。
以上是基础知识的部分,接下来他要求我讲一下我之前参加的华为杯的项目。
项目就随便说了,代码我一共重构过三次,很熟,所以说起来很是顺利。
数据库怎么建,主要表有哪些,后台的架构是怎样一个形式,我遵守了哪些设计原则(装饰器模式,工厂模式,单例模式),我对代码和环境变量进行了分离方便部署什么的,顺便再吹一下代码的鲁棒性,又说了下测试必须在开发前,这个环节我觉得面试官对我是相对满意的。
最后他问了下我有什么问题要问么?
我问了他“您认为应聘人员最重要的特质或者说最能打动您的点是什么”
他讲了啥我已经记不大清了,但是他最后一句话我记得特别牢:“没事,这些个东西等你到了咱们公司你就会学到了”。心中一喜,看来技术面试肯定过了。
第二面:综合面
综合面没啥好说的,舔华为和说自己踏实能干就完事了,我觉得能把面试官逗笑效果会是挺好的。这轮我面的不是很理想,最后出现了几秒钟我和面试官大眼瞪小眼的情况,是我自己准备不够完善,大家应当引以为戒。

后记:其实华为相比其他大厂,面试难度不算特别高但是很泛,需要你对基础知识有一个广泛的了解。本人的性格测试第一次挂了,第二次不知道如何,希望各位引以为戒,开始做之前最好先百度一下。
希望本人能收到华为的offer。
end.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值