21
2011
06

华为面试小结

没打算换工作,也没刷过简历,很奇怪突然接到华为的电话。向对方标明了对现在单位很满意,近期不考虑换工作,但仍执意让我去聊聊,想想还是去吧,很久没有面试了,不知道自己是否还在状态,正好见识一下华为。

简单说一下我的情况,现在大学刚毕业不到一年。从高一开始从事独立游戏开发,主要做电子词典平台,大学期间开始做手机平台。热爱移动平台的游戏开发,热爱java以及OOA、OOD。

技术面试了很久,问了我很多问题,还做了一些笔试,总结一下大体分为如下内容:

      1.常用的设计模式

      2.JAVA多线程问题

      3.JAVA虚拟机如何工作

      4.一些操作系统知识(进程、线程之类)

      5.JAVA基础知识(异常机制、集合类、对象比较、反射)

简单的问题就不说了,挑几个我认为还蛮值得深入的讲一讲,个人能力有限,资深开发者请绕道。

设计模式方面,基本上掌握常见的几个模式就能应付一般面试了,比如单例、工厂模式、装饰者模式、模版模式等。华为让我写了一个单例模式的例子,没什么难度。

多线程方面,主要问了同步的两种方法,synchronized以及wait、notify以及为什么同步。有一题是“在一个线程中开启另一个线程,主线程挂掉了,那子线程是不是也跟着挂了?”,线程之间是相互独立的,如果不是守护线程不会相互影响。考官还说“程序都退出了线程是不是也退出了”之类的话来混淆,这里主要注意线程与进程的区别。

虚拟机方面,问了java与C垃圾回收的区别,JVM如何进行垃圾回收。除了流、数据库、网络连接等需要手动释放,一般对象只要被JVM检查到没有引用就会被回收掉,所以不用的对象要及时置null,流要及时close以便JVM进行垃圾回收。

      JAVA基础知识方面,都是些面试常见的问题,平时多接触接触就没什么难度了。

            1)运行时异常与普通异常什么区别?例举几个运行时异常。

                 普通异常必须捕获,运行时异常反之。

                 IllegalArgumentException、NullPointerException、IndexOutOfBoundsException

            2)ArrayList、Vector、LinkList之间的区别?

                 ArrayList、Vector以数组方式存储,索引数据快而插入数据慢;

                 LinkList以双链表存储,索引数据慢而插入数据快;

                 ArrayList不同步,Vector是同步的。

            3)HashTable与HashMap的区别?

                  HashMap是HashTable的轻量级实现,允许空键值对,非同步。

            4)对象排序要实现什么接口,调用什么方法?

                  实现Comparator接口,重写compare方法;Collections.sort() 。

            5)

                 int fun(int a,int b)

                 {

                       try{

                              if(a/b>0)  return 1;

                       }

                       catch(Exception e){

                             return 2;

                       }

                       finnally{

                             return 3;

                       }

                 }

                 a、b传不同值时返回值是多少?

                 不管传什么都返回3。

              6)编写一段代码,实现判断控制台输入的字符是不是回文,如121、112211、abcba。

       算法没什么难度,主要注意各种细节,比如输入空、只输入一个字符如何处理。这题其实主要考察开发人员编码规范程度,变量名是否规范?逻辑是否清晰?方法拆分是否合理?

技术面试就这些,其实也都是做java常见的基础问题。但我觉得验证一个开发人员的实力还是要看其OOA、OOD的能力,华为似乎只是想招一个编码机器。

      人力面试,这就比较复杂了,华为的人力都能说会道,言辞犀利,他们会抓住每一个细节来考察你的人品。还有一个群体面试,就是几个应聘者在一起自我介绍,合作答题什么的,注重考察团队意识、观察能力甚至抗压能力。我是觉得这些很无聊,心里很清楚公司想要什么样的人,只要尽量表现得积极合作、自信、谦让就能博得考官的认可。

      基本上过了这三面,就没问题了,然后就是见老大。到这里我回绝了,呵呵,因为该见识该了解的都完成了,没必要再浪费双方的时间精力。而且对方让我去平台中间件项目组工作,不是很对口,薪水倒是很心动,但还是打算坚持游戏开发的理想,希望以后自己不要后悔吧。

« 上一篇下一篇 »

评论列表:

1.路个的  2012-5-2 16:20:38 回复该留言
你一直做c他干嘛考的全是java
.LeeStorm  2012-5-3 9:56:05 回复该留言
哈哈,我现在只做JAVA啦!C早忘光了。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。