春暖花开

华为校招面试总结

前天晚上参加了华为的校招笔试,结果昨天早上刚睡醒就收到短信通知今天面试…

今天去参加了面试,现在把面试中的一些问题总结一下。虽然我对这次面试并不满意,估计也不太可能拿到 offer

拿到华为 offer 了,如果考研失败就滚去搬砖(18年11月6号)。

399 分,所以研究生应该稳了(19年2月22日)。

面试貌似是三轮,两轮业务面试,一轮综合面试,但是不知道为什么,我面了一轮业务面试之后,就直接通知综合面试了。

接下来,说一说面试的情况吧。

业务面试

不知道是面试官的原因,还是华为的面试就是这样,感觉整个业务面试没有问太多很有深度的问题,也没有考算法,只问了一些操作系统,C++,数据结构方面的基础知识。

问题

首先问的是几个操作系统方面的问题。

“操作系统有哪几个主要模块?”
“进程管理,虚存管理,文件管理/文件系统,输入输出系统“

操作系统课上学的大概就这几个模块吧,同步与通信不知道算不算一个单独的模块。

“内核是什么?”
“内核是操作系统最重要的组成部分,是计算机软件与硬件的接口……”

回答记不太清了,这个问题当时我还真不知道怎么回答,内核是什么是知道的,却没有想好怎么描述比较好,但是我觉得回答的不太好总比什么都不说好。百度百科关于内核的定义是这样的:操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。后来想想,当时的回答最大的缺点是少了一句:管理计算机资源的系统软件

“虚地址通过什么转换成物理地址,如何转换?”
“MMU,转换时,先从虚地址中取出段号,从段表中到对应的段,然后取出页号,从页表中找出对应的页表项,从而得到物理页号,加上偏移得到物理地址”

我回答的实际上是“段页式”管理的转换方法。MMU 的转换分“硬件控制的 TLB” 和”软件控制的 TLB“ 两种。

硬件控制的 TLB:

软件控制的 TLB:

“写程序时,你看到的是虚地址还是物理地址?”
“虚地址”

下面问了几个 C++ 的问题。

“虚函数是什么?”
“带有 virtual 关键字的成员函数,基类中定义的虚函数可以在派生类中重新实现。”

“有一个虚函数在基类和派生类中均有实现,现在用一个基类指针指向一个派生类对象,当调用该虚函数时,会调用基类的虚函数还是派生类的虚函数?”
“派生类,因为虚函数支持动态绑定。”

“它是如何调用的?”
“通过查虚函数表。”
“通过什么指针调用?”
“不知道。”

说实话,这两个问题我是有点懵的,这似乎是要问 C++ 底层的东西了,虽然我也大概知道一些关于虚函数表,虚函数调用的东西,但是并不是很清楚,于是没有回答上来。然后,面试官在纸上写了一个,通过 this 指针调用。原来这个问题他想要的答案只是通过 this 指针调用,是我自己把问题想复杂了。

“纯虚函数是什么?”
“纯虚函数就是只定义不实现的虚函数。”

“含有虚函数的类可以实例化吗?”
“不可以”

含有纯虚函数的类是抽象类,不可以实例化。只有实现了该纯虚函数的派生类才可以实例化。

最后问了几个数据结构方面的问题。

“栈和队列的区别是什么?“
“栈是先进后出,队列是先进先出。”

“什么是平衡二叉树。”
“平衡二叉树首先是一棵二叉树,然后满足左右子树的高度差不超过 1,并且这是一个递归定义,即子树的左右子树高度差也不能超过 1。”

“二叉树有几种遍历方式?”
“三种,前序遍历,中序遍历,后序遍历。”

其实,当时想起来了还有层次遍历,但是当时不知道脑子中了什么邪,就是没有接着说层次遍历。然后,面试官在纸上画了一棵三层的满二叉树。让我写出三种遍历方式对应的遍历序列。写完后,他看了看,对我说是不是有点不太对,我又看了一遍,没问题啊,然后他说可能是我记不太清了…

大概就问了这些问题,之后他问我有没有什么想问的问题,我问了下关于新员工的入职培训,近期项目,以及新员工的薪资:13k~16k X 15。看来网上流传的白菜价大概八九不离十吧。

业务面试就结束了,让我等待后续的面试通知。

综合面试

综合面试没有问什么技术问题。大概问了这么些问题:

最近有做过些什么项目?项目是干什么的?你在项目中做了什么工作?收获了什么?

这个问题问的算是最具体的一个,我觉得自己回答的并不好。

大学里学了些什么课程?入职之后遇到困难你会怎么办?刚入职时可能会要接触很多新的东西,之前不会的东西,你怎么看?如果有一个任务,在规定期限你完成不了你会怎么办?未来五年的人生你想达到什么目标?十年呢?你对华为了解多吗,以你的了解,华为是一家什么样的公司?对加班有什么看法?你希望华为带给你什么?你认为你能够给华为带来什么?假如有别的公司和华为同时给了你 offer,你会如何选,选择的时候你会看重公司的什么方面?比如一个 BAT 公司和华为同时给了你 offer?

大概还记得的就这么多问题,都是一些开放性的问题,说不上有什么标准答案。后面面试官又问我有没有在准备考研,如果考上研了和工作会选择什么?这个问题我没有回答。首先,问我有没有在准备考研我没有想撒谎,就实话说了,然后问我选什么没有回答上,于是就结束了,告诉我等待后续通知。

总结

最后,总结一下自己的经验吧:

  1. 自己的专业知识要掌握扎实,这是前提条件,否则笔试都过不了,更别提面试了。
  2. 项目经历很重要, HR 不仅要考察你的专业能力,还要看你过去做过些什么东西,如果你有参与过一些比较大的项目,并且能够把项目描述清楚,以及你在项目中所做的贡献和从中的收获,那么会是很大的加分项。
  3. 良好的表达能力和沟通能力,要能够清晰明确的回答出问题,尤其是一些观点性问题,由于答案不是唯一的,此时,表达能力尤为重要。
  4. 放平心态,千万不要因为紧张导致原本知道的东西都回答不上来。但是也不要一听完问题就急于回答,可以稍微思考一下,组织一下语言。
  5. 公司除了看你的能力,还要看你对工作的态度,对公司的看法等各方面的情况,因此这些方面的问题不容忽视,尤其要能够清楚地让对方知道你能够为公司带来什么。
0%