一面: 面试官先看试卷上做的题目,然后开始问 一面主要问的还是数据结构,算法到是没有问太多具体如下: 1.HashMap和TreeMap的区别以及底层实现 主要考散列表和红黑树的知识(HashMao用的散列表,解决冲突的方式是拉链法,TreeMap底层用的红黑树,红黑树与2-3树是一一对应的,然后简单介绍了一下这些数据结构) 2.有一个Person类里面有三个属性,name,sex,age。现在有一个Person数组,要求按照Person的age属性排序 让Person实现comparable接口,在compareTo方法中使用age作为比较条件,然后使用快排即可(Arrays.sort()方法) 紧接着问,两个对象的equals方法相等,他们的hashCode可不可以不相等? 可以,但是不能将元素插入到HashSet中,因为相同的元素会被散列到不同的地方 3.SQL语句,问题我不记得了,主要考group by,count聚集函数,和having 4.servlet是不是单例的,为什么?怎么设计程序证明它是单例还是多例? 这个问题我没有回答好,我回答是servlet是多例的,为了让请求可以并发 5.如果一个类继承servlet,这个类需要实现那些方法 get和post,其他的我不记得了 6.linux你了解多少 linux一直是我的软肋,我目前只能死记硬背一下简单命令(建议如实回答) 7.static的使用方式,final和finally的区别 static可以用来修饰类,成员或者方法,然后分别描述一下各自的作用即可 final同样可以用来修饰类,成员或者方法,然后分别描述一下各自的作用 finally主要用于try-catch中,用于资源的清理工作或者执行某些必须执行的代码 8.用过哪些开源的jar,简述一下作用 回答实际情况即可 9.Java的堆栈有哪些区别? 我简单的说了一下,然后把java的内存模型简单的说了 一下,面试官还算比较满意 10.编码实现一个最大元素为100的阻塞队列 这个java的api上有demo的,大家可以翻一下,写出来后面试官很满意 中间穿插了其他的一下基本问题吧,象征性的问了一下项目问题不算太难 大概面了50分钟吧,估计一面分数很高,因为我二面不是很好 接着大概等了一刻钟吧,二面开始 二面就没有一面这么顺利了 1.你认为你做的最好的那个项目是哪个? 只要如实回答,并给出理由即可 你做的事导师的项目吗,你对跟着导师做项目怎么看? 我回答说,不如出去实习。。然后给出理由 2.你认为你Java哪一方面学的比较好? 我回答是Java集合类,结果悲剧了 面试官问Set接口继承了Collection,为什么要有Set接口?Set接口中比Collection中多了哪些方法? 好吧,这个问题我回答的不好,大家可以各抒己见 3.你还有哪些方面比较好呢? 我本来想说多线程的,后来想想还是算了,我问面试官数据结构算不算,他说算 然后问了红黑树的问题,问我自己实现过哪些数据结构,我回答链表,栈,队列,然后问了一句,我刚刚写的那个阻塞队列算不算? 面试官说算,然后就开始看代码,接着问了一个问题?生产者在await的时候会发生死锁吗? 我回答说不会,因为await的时候会释放已经持有的锁资源 又问为什么不用读写锁呢? 答:读写锁一般用于单个对象的cache 为什么不能用于数组呢? 答:如果用于数组,那么将会允许多个消费者并发的从队列中取元素,那么有可能会出现多个消费者消费同一个产品的现象 4.你的代码量不少吧 我写过不少代码 5.如何培养自己的代码风格? 答的一般,我回答说一般都是看iteye上和csdn上一些大牛的代码风格,然后就是java api中的demo 6.你看过开元框架或者jvm的源代码么 我当时心里一沉,玩了,阿里的二面我就是挂在这个问题上了,但是我还是如实回答了 我使用较多,但是底层源码看的少 7.你还有什么问题要问我吗? 于是我很诚恳的问了一个问题? 老师,站在您的角度,您认为我有哪些方面的知识需要加强,或者说需要特别的学习 面试官说,平时最好能多看看jar中的源码,google有很多优秀的开源框架,这样可以养成很好的代码风格和编程习惯 然后让我出去等通知,大概等了20分钟吧,hr过来了给我一份公司的FAQ,让我看几分钟,然后我问了几个问题 然后他说问我的期望薪酬,我大概说了一下,然后他说其实我们已经给你定薪了,然后问我的意愿,好吧,我假装深沉的说了一句,我妹妹在北京工作,我先回去征求一下父母的意见,明天早上过来。。hr说没关系,他们这几天都在这里,就这样拿到offer了