一面:
1.自我介绍一下,然后问你最擅长哪一方面(我说虚拟机、集合)
2.他说HashMap我现在都不敢问了,出过很多笑话,很多人都是背的,自己没办法判断是看的还是背的
3.简单说下HashMap的get方法实现
4.HashMap数组的第一个元素存的是什么(我不知道然后他说HashMap可以存'呐亩'吗,我听成能不能存enum,我说可以可以能存Integer,String,enum,然后他说是null,不是enum...)
5.HashMap和Hashtable的区别(线程安全不安全,能否存null,数组初始化容量,扩容不一样,elements方法hashcode方法)
6.里面的hashcode有什么区别(HashMap多了和hashcode>>>16的一次异或,这个看过和他扯了好久好久,扯到为什么2的整次幂反正扯了一大堆)
7.Hashtable在null的处理是怎样的
8.线程的几种状态(运行阻塞就绪,他说还有其他的吗,我说挂起?,他说线程生命周期什么的)
9.这些状态之间怎么转换的,哪些方法转换
10.一个线程连着调用start两次会出现什么情况(这个讨论了好久好久,他说给你设计这个start你怎么处理这种情况,直接懵逼...提示结合那个线程状态机制想下)
11.多线程这块对哪些熟悉(我吓得瑟瑟发抖,毕竟简历上写的熟悉,但自己几斤几两还是知道的,就是知道synchronized和volatile,ConcurrentHashMap,CopyOnWriteArrayList这些等等...还连忙补了一句,这些并发容器只是了解一点,没看过源码,之前打算看ConcurrentHashMap的源码但是6000行可能会看的一知半解就还没看)
12.synchronized和lock的区别
13.由于我说了一般unlock放在finally里面,他就问try后面一定要跟catch吗,我说可以不跟finally但是一定要跟catch,他说try后面不能跟catch是你在书上看的还是怎么的,我说我从没见过try后面不跟catch的,再说try就是为了捕获潜在的异常,没有catch怎么抓到抛出的异常,他说我不能try...finally吗。我说我没见过,他说那这个问你也不合适...
14.lock看过多少
15.Java里面用过哪些包(我说lang util juc math...他说util除了用过集合还用过哪些,我说Arrays、Collections,他说有哪些方法,我说排序二分查找这些,他说Collections有用过吗,里面的排序接口用过吗,答了之后又问如果是要升序里面是写a-b还是写b-a)
16.String是可变的吗,答final数组不可变,问是final的什么数组,答char
17.String s="abc"和String s=new String("abc")区别,然后撤常量池还扯String那个intern()方法
18.StringBuffer和StringBuilder区别
19.run方法里面有个StringBuilder线程安全吗(这也扯了好久好久,我没转过弯来,他就提示哪些会出现线程不安全的问题,我说竞态条件,什么i++读取-修改-写入,或者单例懒汉的先判断后执行,然后又回到这个run方法里面的StringBuilder,我又没想出来,他又提示方法区里面的变量存在哪,我说栈啊,递归还容易出现堆栈溢出,他又问存在栈里面的是共享的吗,我说是线程私有的,忽然恍然大悟...可能我一开始就没明白这个题什么意思,面试官真是一步一步提示你,真好...)
20.Java的引用类型你知道吗(我说数组,new XXX都是引用,他说你看过深入理解JVM那本书吗,我说看过其中的内存管理、垃圾回收、类加载这些,类文件结构这些没怎么看,他说那就这个就不问了)
21.那强引用弱引用这些知道吧(说了下强软弱虚四种引用,然后问我后三种引用的应用场景,这个之前撇过一眼,真的不记得了...回去看了下软引用可以实现缓存,弱引用可以用来在回调函数中防止内存泄露,虚引用能在这个对象被收集器回收时收到一个系统通知。)
22.然后问内存管理,内存管理记得清楚吧,我说之前看过,现在知道大概(打个预防针,防止自己尴尬...),他说现在忘没忘,那我是能问还是不能问?然后我就笑了下...然后他就问说下JVM内存的分代吧,终于到我装逼了...,扯了好久好久,就把深入理解JVM那本书里面相关的都说了下
23.大对象是哪些(我说大数组和大字符串,他说多大叫非常大,我说好像有个参数能设置大概4MB?不是很清楚,然后就是年龄增长那个机制之类的)
24.Minor GC和Full GC,又扯了好久,反正基本把第二章第三章里面的内容给问了个遍还问的特别细...
25.JVM里面的参数知道哪些,默认
大小是多少,我说只知道Xmx Xms Xss这几个,他说你猜这个中间的m是什么意思,我说是max,min?可又感觉不是...他说其实他也不知道,就是看看我的想象能力,他说他猜得是memory,还有这种操作...然后问Xmn是什么,答不知道...,问你在猜猜...
26.G1停顿吗,CMS回收步骤
27.CMS为什么会停顿,停顿时间(我说如果不停顿那个GC Roots没办法进行下去,必须停一下等着GC Roots遍历完成,就和你妈给你打扫卫生时,你肯定不能还扔垃圾,肯定要停下来一样)
28.类加载了解吗(扯了一堆顺便说了双亲委派机制,他问为什么要每次从上往下加载?好处是什么?我说比较安全...防止重复类加载...也不知道扯得对不对)
29.数据结构掌握程度怎么样?(再次瑟瑟发抖,面试官说链表我能问吗?问怎么判断两个单链表是否相交...就这题他提示我好久,最后还是没想出来,就是这么的渣...他说直接判断最后一个节点是否相交就好,我说是不是类似一个竹子从中间砍了一点,然后前面分叉,后面相交这样,他说对对对,是这样的)
30.数据库熟悉吗(我把我知道的全说出来了,然后说除了这些都不会了,他说那我就不问了)
31.项目这些框架用到什么程度,看过源码吗
32.说说项目(因为是自学,我就直接说这个项目是跟网上的教程一步一步敲得,自学弄哪些高并发分布式的项目也不大现实。说说你写在简历上的项目亮点,我说处理了横向越权、纵向越权的情况,具体说了之后,他说,如果现在界面有个按钮给你,你怎么保证权限控制,答了之后,他说如果有100个1000个这样的呢,我说能不能用AOP把它分离开来这样弄,他没说行还是不行,然后问我聊聊Spring MVC吧,答了之后又问你知道有个过滤器吧,答了之后,他说其实是用过滤器来处理刚才提的那个问题的,我说对对对,就是类似过滤器处理全局编码那样...反正又是一顿马后炮...)
33.研究生期间周围同学,专业啊,反正开始聊人生了,有没有论文(本渣属于无论文、无比赛、无奖学金的三无人员),你的优势?举个栗子。你是从研究生期间才开始写代码的吗?写了大概多少行。平时除了学习,课余时间干什么(差点就脱口而出玩游戏,还好忍住了...)。每天学多久...项目过程中有没有什么头痛的东西...你有没有遇到一个Bug找了好多天都没找出来的经历...你有什么问题要问我?对我技术方面有什么建议?dubbo,zookeeper这些框架需要看吗?这一面是一面还是二面?他说只是一面,之前的那个只是简历评估面...
全程97分钟,面试官说没太注意时间,正常40分钟就要解决的。面完之后我说的都口干舌燥了,感觉身体被掏空...
最后说一句,就喜欢这种问你最擅长什么,这个东西我是能问还是不能问的面试官,虽然答得一般但还是五星好评...