首站华为

前几天投了华为优招,笔试后通知过去面试,共两面,笔试是三道编程题,华为真是简单粗暴,前面两个题目是水题直接用api就过了,最后一个题目折腾了好久只通过了70%。

一面:

提前一点点到了面试的酒店,华为的工作效率确实高,我是第一个面试的,不怎么紧张,知道一面应该能过,面试官问了三个问题:

  1. 先让我介绍我最近做的一个项目;
  2. Java是怎么进行内存回收的?
      我把引用计数法和可达性分析算法说了一下,说了引用计数法很难解决对象之间相互循环引用的问题,HotSpot是使用的可达性分析算法,这个算法的基本思想是通过一系列“GC Root”的对象作为起始点,从这些节点开始往下搜索,搜索走过的路径称为引用链,当一个对象到GC Root没有任何引用链相连时,则证明这个对象是可以被回收的。再Java语言中,可作为GC Root的对象包括下面几种:
  • 虚拟机栈中引用的对象。
  • 方法区中静态属性引用的对象。
  • 方法区中常量引用的对象。
  • 本地方法栈中JNI引用的对象。
    本来以为面试官会继续问GC算法,他没继续追问,而是接着问我怎么处理数据。
  1. 我跟面试官确认是不是怎么使用容器,得到面试官的确认后,我开始回答:
      Java容器主要分为List、Set、Map,List分为ArrayList和LinkedList,ArrayList底层用数组实现,物理上连续,能够根据元素位置直接得到元素的地址,LinkedList底层用链表实现,逻辑上连续,必须从前往后访问指定位置的元素,所以对于频繁插入和删除的数组,应该考虑用LinkedList保存,而对于需要根据元素位置频繁查找和修改的数据应该考虑使用ArrayList,此外栈队列都可以基于这两种容器实现。Set保持元素的唯一性,TreeSet在Set的基础上保持元素的有序性。HashMap用Key-Value对保存元素,理论上根据Key值在O(1)的复杂度内进行Value的增删查改,以空间换时间的做法,TreeMap用红黑树保存数据,根据Key值对元素排序,log(n)的复杂度内完成数据的增删查改。如果数据需要同步,应该考虑java.lang.concurrent下面对应的容器类。
      本以为面试官会继续问HashMap的实现原理,想不到他直接跟我说他的面试结束了,让我等待二面。

二面:

我理想中的二面应该是更深入的Java基础问题,算法问题。
  二面面试官开头先是让我自我介绍,把我准备好的台词开始背诵,还没说完就被打断了,然后和一面面试官一样让我介绍项目,我先简单介绍了一下,看来他没啥兴趣,没有深入问我问题,然后,他不问我技术问题了,问我为啥想留长沙,问我从长沙到我家有多少公里,然后让我回去等通知!!!悲剧了,就这样被pass了,我起身,准备离开,他又问我了,问我从中南到湖大有多远,靠,然道他想给我机会。我索性坐下,校招第一次面试,想不到就这样无功而返,关键是还没问我问题就把我放弃了,简直不能忍。好吧,既然他问我了,我也开始问他,我直接跟他表激情,我是跨专业没错,但我激情无限,学习能力强,他问我大学有没有接触过编程啥的。我问他如果我想进华为这样的大企业,在那一块最欠缺,他说我缺少实习经历,我直接跟他说,我看别的桌面试时间都比我长,应该都有问一下技术问题,我觉得像华为这样的大公司应该更看重学生的学习能力和基础。他说他们必须择优录取,还在我的本科专业上画圈圈,好吧,我还是不服,继续说我的优势,他也开始夸我了,说我学习能力强,一面面试官也说我基础扎实,通信掌握好,表达能力强,非常open的一个人。最后说他并没有表示不收我,只是让我回家等通知。二面很心衰的结束。。。
   之前面实习的时候,自己面过腾讯、中兴、深信服,除了中兴自己没去继续面试,腾讯和深信服都有通过,确实增长了自己的自信。华为的面试让我重新审视自己,我没有大公司的实习经历,甚至连web项目的经验都没有,本科还是非科班,真的开始担心我的校招。

你可能感兴趣的:(首站华为)