华为一般是三轮面试,前两轮为技术面试,第三轮为业务主管面试;三轮面试会在一天内全部完成!
说在前面:项目很重要,项目很重要,项目很重要!每轮面试都会询问项目相关问题,不只是技术问题,问的很全面!如果不是自己亲手做过的项目建议不要拿出来糊弄!
下面我将按照第一轮面试到第三轮面试的顺序,依次谈一下每轮面试的细节以及需要注意的地方;(提示:每轮面试是平级的,并不是越往后问的东西越难!)
第一轮:技术面
基本大概可以分为四部分:自我介绍,讲讲做过的项目,一道算法题(现场手写),技术问答;
首先上来就是自我介绍,自我介绍因人而异,每个人根据自己的情况而定,我的建议是内容饱满、有态度;需要包含以下内容:
名字、所在大学、所学专业、做过的最重要最拿手的一个项目、自己的优点和缺点;
下面给大家看一下我的自我介绍,可以根据我的整体框架改改内容:
面试馆您好,我叫XXX,来自南京理工大学,是20年即将毕业的应届生,我本科修了会计学和计算机科学与技术两个专业,属于双学位,我本人对计算机这个行业非常感兴趣,觉得用代码去实现实用的功能是一件很酷的事情,于是自主开发了一款校园助手类微信小程序——MTR南理,能够帮助南理工本科生更方便的查询课表成绩等信息,目前已经拥有1.5万+的用户,覆盖了南理工80%的本科生,算是比较普及了;
我自认为最大的优点是发现问题,找到问题的根源所在并解决问题的能力,我计算机方面的知识大部分是通过阅读相关书籍和博客自学的;但也正因为这点,我的知识体系可能没有其他人通过正式上课学来的扎实,这是我的一大痛点;我对计算机是非常热爱的,如果能够进入华为把自己的热爱当作事业我觉得是非常幸福的,以上就是我的自我介绍,谢谢!
在讲项目前,他先问了我一些家庭情况,家在哪里啊,是不是独生子女啊之类的;
接下来紧接着面试官就可能问你刚才自我介绍里讲的项目,也不一定是很专业的技术问题,会询问项目的发展情况,怎么开始的项目,项目中遇到的一些问题等等,这个不用怕,只要是自己做过的拿手的项目,都没问题的,如果问到项目中没接触过的东西,直接说项目中没用到还不太了解就行了;
之后可能就要你写算法了,面试官会出一道算法题,让你当场写出来;算法题每个人每次面试基本都不太一样,不能一概而论,我当时面试的时候出的算法题并不难,很简单,下面我会给出来题目和答案思路,算法题需要注意的就是虽然题不难,基本不需要什么算法思想,就是一些简单的处理问题的模拟(当然也不排除会出一些难的),但是面试官是希望你能够用更好的方法解决问题,也就是用时间复杂度更低的方法去写;如果你实在想不到更优的办法,就写你能想到的,不用怕,只要你写出来了,虽然可能不是最优解,但是面试官一般也不会为难你,这个算法题要是写出来了,这轮面试基本就是通过了!
算法题:给一串字符串,包括大小写英文字母和数字,要求统计出里面每种字符出现的次数。(是不是很简单?)
这个题我一上来就是用map做的,每找到一种字符,存到map里面;
但是面试官让我不要用map,因为map比较占内存,问有没有其他办法,我回答用hash解决,思路正确了!这个题面试官就是想让你用hash去解决;
最后会问一些技术知识问题,看你具体面试的岗位而定,我面试的是Java开发,所以就会问一些Java的问题,文章后面我会整理出面试期间问到的问题以及非常重要必须掌握的Java面试题!
第一轮问到的问题:
Java多线程实现方式;(答上来了)
Java各种集合类的介绍;(答上来了)
Map的内部数据结构;(我答的键值对,但是不是这个,是更深层次的数据结构)
Java垃圾回收机制;(没有答上来)
JVM内存模型等;(没有答上来)
手写几个Sql语句,关于多表查询方面的;(答上来了)
最后还会问你有没有什么问题想问他的,这个时候就比较放松了,你想了解点什么就问问,我当时问的公共开发部具体是做什么的;
第一轮面试顺利结束,马上就会告诉你通过还是没通过,通过的话稍后就会马上开始第二轮面试!
第二轮:技术面
第二轮和第一轮流程基本上一样,并不是说第二轮一定会比第一轮难;下面我就主要说一下和第一轮不一样的地方;
自我介绍和讲项目部分基本相同,而且第二轮面试的面试官对我的项目很感兴趣,问了很多关于项目的问题,聊项目就比较轻松了,不再赘述;
算法题:给定一个整形数组,让把数组里面的 0 都移动数组尾部,其他数字保持原有的先后顺序不变,限制是不能开新的数组,只能在原有数组上操作,操作次数尽可能少;
这个题也是简单的问题模拟,只需要一个一个的扫描遇到0就移到后面就行了;不是很难;他会给15-20分钟让你写,时间很充足!
技术问答环节:又问了Java各种集合类的介绍,所以这个需要重点掌握,很有可能问到;其他问题倒没怎么问,主要还是项目相关问题;
最后还是问你有没有问题要问他的,这一轮我问的是假如我能进华为,我能得到哪些提升。
第三轮:业务主管面
这一轮对技术要求不是很高,可能只会问一点点;
首先还是自我介绍,讲项目,和前面两轮差不多,不再赘述;
之后会问个人问题等;
当时问了我:
除了投递华为,你还投了哪些公司?
大学四年最让我难过的事情是什么?
你一直坚持在做的一件事情?
之后还是问了一个Java的知识:讲一讲Java抽象类和接口;
最后他会着重介绍一下华为公司,当时他还把我之前面的某某公司diss了一下,说他们的平台远没有华为的大,在华为的职业发展平台是面向全球的等等。基本就是这些啦!
之后就是让你等通知,10个工作日内给结果!
最后奉上Java面试必须掌握的技术问题,很重要!!!华为三轮面试,每轮都有这里面的一个或多个问题!!!
链接:Java开发面试题总结