网易挂经,希望大家探讨一下面试题。
杭研Java岗
8月25号面试,为了这场面试准备了好久,本以为至少能有个二面吧,没想到一面就挂了。
总结一下挂的原因:
1、迟到。签到完后,有点紧张,一直再想这道怎么回答,那道题怎么回答。没注意微信的推送(微信端电脑退了,但是手机端仍然显示电脑在线,提示没有声音),然后六七分钟后前台叫我,我才去的。可能因为这样,面试官对我有点意见,然后感觉面试官一问我问题,我就知道我要GG……并不是难,而是简单,简单到和我看的面试题难度差了太多。
2、没有拿得出手的项目。或者说不懂得说出这个项目有什么难点吧……,我直接说,这个项目当时可能有难点,但是现在感觉没难点……
3、回答问题的时候可能没有get到面试官的点。等下会说说具体哪些。
4、接触面不够广。面试官问我除了Java之外还有什么其他的东西。我说之前学过python,写过爬虫。他又说有没有云计算或者大数据、人工只能方面的。我说没有。感觉这也是比较重要的原因吧?
5、最重要的一点,就是自己还是太low。
面试题:大部分都比较简单,我说几题我认为没有回答好的,以及有点深度的问题。
1、单例和多例的线程安全。这题我感觉我没有get到面试官的点,回来之后和同学探讨才感觉可能回答得不好。
2、synchronized和Lock的区别。
3、ConcurrentHashMap相对与HashMap在并发安全上面有什么优化。
4、ConcurrentHashMap和HashTable区别。
回来之后突然对3、4两题有了疑惑,就是有种回答不好的感觉。希望大家能给我详细得说一下。因为我并没有在博客上看到比较满意的回答。
5、full GC的时机(严重怀疑这个问题,是作为我的道别题,这是他唯一一题与JVM相关的……)。这题我也没有在网上找到比较满意的回答。我自己总结了一下:
一、当老年代的对象大小到一定程度时。
二、由minor GC引发的。两种情况,一是不允许担保,当新生代对象总大小大于老年代连续可用内存空间时。二是允许担保,当历代新生代晋升至老年代的平均大小,大于老年代连续可用内存空间时,直接full GC;当历代新生代晋升至老年代的平均大小,小于老年代连续可用内存空间,并且minor GC失败时。
这题希望大家可以探讨一下。
第一个面经,借此给大家提供错误参考,也希望大家能给我解惑。如果能把五题都说得细致一点,自然是最好啦。