在华为过去的几年招聘中,华为在北京都没有举行笔试环节,但是今年却恢复了笔试,我是7月23日参加交大的笔试,当时5个考场,每个考场大约60+人,主要是面向软件开发,硬件开发,性能算法还有逻辑DSP等岗位。
笔试分为C语言和java两类,90+%的都选择C语言吧。
题型:选择题40道 + 一道简单的编程题(书面,非上机),我记得的题目如下所示:
1. (C语言部分,20道左右)给一段C程序,选输出结果,这样的考了好几题,主要的就是考察宏嵌套,参数传递,指针传参之类,算是C语言中的基础知识;有一题是申请内存空间的,申请失败时,要不要释放指针,就是p = malloc失败后是否需要delete p?
2. (计算机网络部分,5道左右)例如:OSI网络协议是几层?;问IP是什么协议 ;选择错误的选项(选项:1.TCP和UDP在同一节点可以有相同的端口。 2.因为UDP协议传输数据部可靠,所以文件传输都不可以基于UDP协议);还有问什么协议不是3层网络的(选项似乎是ipv4, ipv6,VPN,VLAN)
3. (数据库部分,5道左右) 比如:数据库什么操作最耗时(笛卡尔积,选择,投影,除);数据库之父E.F.Codd在1970年左右发表了很多论文,这些论文主要是围绕数据库中的什么概念而论述的。(答案是关系型数据库);还有一个关于数据库SQL语句的选择,我对数据库没有太深的研究,用的是排除法选对的。因为简单的数据库语句可以从英文翻译中找出错误的选项,这个也算是做选择题的一种幸运吧。
4. (操作系统部分, 5道左右)例如:内存的分页,是计算机中的哪个部分感知的,我选的是C操作系统,还有一个是D 装配程序,答案我也不知道(因为到现在我也没有看到我笔试的成绩,只是在一面的时候面试官说“我的分数很高,就不和我探讨编程方面的问题了”,估计是90+);还有一道是进程和程序的描述,选择描述正确的。
5. (数据结构与算法部分, 5道左右)例如:问有1024个无序的数 ,选择里面最小的前5个数,问什么排序最省时(选项:快速,冒泡,直接选择,堆);选择什么样的二叉树前序和中序遍历的结果一样;
6. 还考察了little-endian和big-endian的定义。
程序运用题:输入一行字符串,判断里面括号的匹配是否正确 形式 如:(3*5)+12))! 输出判断结果!
心得:
华为的笔试都很基础,算法也不太苛求。准备的话讲究的是全面和相对浅显,对于C语言,基本的K&R C + 《C与指针》就能完全应付。都是计算机专业里本科的基本知识就能考出好成绩的题目。整个考场300+人,很多都一个小时就交卷了(设置时间是2小时),我应该是全场最后一个交卷的,我看了一下手表,我考了1:45,因为我看Hiall的监考人员都在我身边转了好几圈。因为我发现21题题目有错误,在考卷上写附注。并且我把所有的题目都重新做了一遍,然后真正确认了,才把它写到答题纸上,这样答题纸上没有一个涂改的地方,起码整洁度方面,也算做到了,这里面其实我当时没有太具目的的去有意识这样做,只不过我做试卷的习惯是在做第一遍的时候追求的是思维快而且细致,尽快求得结果,所以书写自然会不求美观,在试卷上有涂改和划线,甚至有时候很潦草。等做完了,再誊写到答题纸上,但我看时间还有很多,所以我把选择题目重新再考虑了一遍,原来确定的题目再认真确认一下,原来不确定的,尽可能地在大脑里搜索相关知识,得到一个我认为在那种状态下的最佳答案。所以时间花得相对多一些。(可能你会觉得这像装B,但是我只是想如实表达我的想法,就像唐骏所说的“错位竞争”,在芸芸众生中,或许你其他的地方都很一般,但是你也要去创造点优点来让别人吸引你,关注到你,这样你才能赢得机会,所谓细节决定成败,每一步都需要你认真对待,积极面对,这算是我的一点理解吧,因为我不是技术大牛,资本厚实得不得了的那种才子。随便就能签百度谷歌微软,我需要自己刻苦,努力,和用心去争取自己的机会。事实证明我的做法是不错的:这张答题纸伴随着一面二面一直可能会到最后签约,每个面试官都会看到,至少在后续的面试中,我发现别的同学有最后一道题目写得很乱的,也有涂改的,如果你是一个面试官,你会更喜欢哪个呢?我的笔试不仅把程序写出来了,而且把程序的处理流程也叙述了一遍,并且在关键的分支用了注释,比如‘(’和‘)’的ASCII码我就不记得,这个我也说明了,使用的是书面版的‘(’代替,还有就是后来爱立信实习招聘的BOSS面的时候,BOSS就说,在一面技术面的时候,有反应说你现场编码的时候比较不规范,因为我那时当面编,肯定会有涂改,再者我当时的确也有些紧张,呵呵!也怪自己太弱小,所以编码的规范性以及整洁度,在同等情况下也是差距拉开的原因,就像非诚勿扰的女孩估计大部分都不喜欢邋遢而不修边幅的男生吧,在尽可能的情况下,还是给别人一个干净而整洁的印象吧。)