昨天参加了网易2017年校招面试,但是,一轮就被刷下来。仔细想想,确实自己实力不够,今后需要更加努力!以下我是本次面试的经历,主要讲述面试题。
短信预约的是下午三点的面试,可是等到大概三点半才开始面试。我面试的Java开发,面试之前的几天也抽时间看了点网上的资料和书,但是,面试的时候才发现,实力不够,临时抱佛脚还是不行的。好啦,言归正传,看下面试的时候问的问题。
(1) 自我介绍
坐下来将简历递给面试官,面试官先让我做了个自我介绍。这个不多说,每个人都有自己的介绍方式,我一般说一些基本信息,加上我比较擅长的专业领域和一些平时对技术的专研,然后就是介绍下自己平时的兴趣爱好。
(2) 项目介绍
面试官问我在学校里做过什么比较大的项目。我简要的介绍了一下我们做的实训项目,和我在这个项目中所负责的模块,以及这个模块的主要实现逻辑。
(3) 实习工作介绍
我现在在公司实习快两个月了,可是并没有开始干什么拿得出手的事情。开始就是搭搭环境,改改bug,近期才分了点小任务。所以,这里我觉得,在面试的时候,我没有回答好这个问题。首先是真的没有做很多事情,其实是没有将做过的事情表达清楚。
(4) 描述从Java源码到获得执行结果的的整个过程
面试官问我这个问题,主要是因为我在简历里写了我了解JVM,唉,给自己挖了个坑。从源码到得到执行结果的过程我确实看过,可是应该是好几个月前看的了,平时没事又不是去用这些东西,所以忘得差不多了,我只能说出些大概。这个题确实没回答好。这个问题要说清楚我感觉不太容易,我找了一下,觉得这篇文章(http://my.oschina.net/xiejunbo/blog/614437)说到了一些,但是并不是解释的很好。
(5) JVM内存分布
这张图片就是这个问题的一个大概的回答了,但是还需要知道这五个区所存放的具体信息,这篇博客(http://www.cnblogs.com/Cratical/archive/2012/08/21/2649985.html)写的比较详细,我就不再重复了。
(6) JVM中的垃圾回收机制
一般问了内存分布,那就会结合问垃圾回收,因为这是一脉相承的问题。内存是有限的,在内存不足的时候就需要对内存进行清理。在JVM中垃圾回收首先需要判断对象是否还有用,一般有引用计数法和可达性分析法。这两种方法都需要了解,同时知道引用计数法的相互循环引用问题。判断完对相关是否有用之后,那接下来就对没用的对象进行回收。那这里就涉及到垃圾收集算法,主要有标记-清除算法、复制算法、标记-整理算法以及分代收集算法。同时,还最好了解有哪些垃圾收集器。关于垃圾收集算法和垃圾收集器,这篇博客(http://jbutton.iteye.com/blog/1569746)写的很清楚。
(7) hashmap的数据结构
Map和Collection是面试中经常问及的问题。首先面试官问了我实现hashmap的数据结构,hashmap在底层是通过数组+链表的方式来实现的,这一点可以从源码里清楚地看出。然后问题hashmap是否线程安全,这个当然是线程不安全的了。那如何去让它变得线程安全呢?对于这个问题,这篇博客(http://flyfoxs.iteye.com/blog/2100120)写得非常好。
(8) NIO框架
在面试前确实没有用过也没有看过关于NIO框架的知识,所以,只能承认,我不会!所以,平时不能仅局限于够用,局限于学习工作中用到的,而应该多了解周边的知识。
(9) Trie树
这个也确实没有深入了解过,但是面试官写这个的时候好像也写错了,他自己也不确实是不是这么写。然后就给我说了一个场景,就是在输入框输入单词前几各字母,提示以这些字母开头的所有单词。我当时的想法是构建一棵树,根节点下是26个字母,然后每个字母下接26个字母,如此往复。但仔细一想,这好像有点可笑。
(10) 堆排序过程
最后面试官问了一下堆排序的过程,让我在纸上举一个例子,画一下排序过程。这个还是比较了解,先把原数组建构一个小顶堆,从最后的数字开始于自己的父节点进行比较和置换(如果满足置换条件),置换完成即可找到最小的数,将最小的数与最后一个数交换位置,再重复以上过程,就可以将数组进行排序。
总结下来,就是整个面试中的问题都回答得不够好,或者根本没回答出来,所以结果也就只能这样了。只有在接下来的日子多努力了!希望我的分享能给你一些帮助,那便足矣。