华为C++研发岗一轮被刷,我的小心脏啊。。。
华为校招,报了C++方向的研发工程师,上机第一次做的不好,同学之间光传答案了,根本没心思做,600分抄了200多分(100分算是通过)。后来人家说抄的人太多了,代码重复率过高的要重考一次,这次真心是自己做的,题目比上次简单,600分考了500多分,于是顺利拿到面试通知。。。
第一轮技术面,上来看了一下成绩单和简历,问学的什么语言,我说C++,就让我谈谈对C++的理解,我说C++是一个大熔炉,既可以面向过程,和C语言一样对指针和数组进行复杂操作,也可以完全面向对象,和java一样进行封装,支持多态,进行模式设计,所以C++很繁杂,不好学。。。等等就是这些话吧;然后还学了什么,我说数据结构和算法,就问问都学了什么数据结构,什么算法,我把线性表、队列、栈、树和图都大概说了一些,又把常用的算法分治递归、动态规划、回溯法大概说了一下。。。又开始问我会不会操作系统,我说简单的进程、线程、死锁知道,没深入了解过,然后又问会不会linux,我说装过虚拟机,用的ubuntu,基本的cd、ls等指令会,gcc编译器也用过但不精通,平时用的VS;然后又问会不会嵌入式,我说做过8086的毕设,做的微机保护系统,用到了ADC0809、8255扩展、还有74ls138等芯片,C语言写的程序,用到了定时器中断等等。。。又问我做过的项目,我说我们的项目不是很大.net框架下WinForm做的,五六个项目文件,但三层架构是全的,用的Oracle数据库。。。剩下的具体记不清了,还有一个是主要精力都学什么了,我说C++基本语法,调试能力,主动说应该怎么调试:先在中间打断点,基本是二分查找的思想,然后细微处单步执行,要找一个小的输入实例,知道正确的中间变量值该是多少,看是不是正确,还要特别留心边界情况,数组下标的越界都是在两端,循环出错也多发生在第一次或最后一次循环,输入实例如果是0到1000那0和1000出错的可能性很大。。。后来的问题感觉就是面试官故意刁难了,问我有没有接触过大程序,几百万行的,上千万行的,我无语。。。几个应届生接触过几百万行的程序啊?还问给我一个几百万行的程序我怎么调试,我说如果设计的好,模块独立性好,可分别调试,可以输出错误日志等等。。。他好像还没过瘾,问那如果要我设计我怎么设计的模块独立性好,我说用UML图分析,注意开闭原则,适当预测以后的扩展要求,留出接口。。。到这里面试就结束了,然后结构就被刷了。
我是在不死心,我感觉我回答的虽然不是非常好但也算差不多了吧,而且说是技术面,一个具体的技术问题也没问,C++语法细节一句不提,那些算法是怎么回事儿也不问,也不让现场编程。。。你要是问我技术问题我没答上来我也无话可说,哪怕让我写KMP算法我没写上来把我拒了也说的过去,这算怎么回事儿啊?就因为没接触过几百万行的代码被刷了?我真是无语啊。。。
牢骚发完了,说点儿正事儿,各位大神们,有没有什么好的意见给小弟说说啊,这次直接给我整蒙了,不知道怎么弄了