一面: 面试官先看试卷上做的题目,然后开始问
一面主要问的还是数据结构,算法到是没有问太多具体如下:
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的时候会释放已经持有的锁资源
又问为什么不用读写锁呢?
答:读写锁一般用于单个对象的***
为什么不能用于数组呢?
答:如果用于数组,那么将会允许多个消费者并发的从队列中取元素,那么有可能会出现多个消费者消费同一个产品的现象
4.你的代码量不少吧
我写过不少代码
5.如何培养自己的代码风格?
答的一般,我回答说一般都是看iteye上和csdn上一些大牛的代码风格,然后就是java api中的demo
6.你看过开元框架或者jvm的源代码么
我当时心里一沉,玩了,阿里的二面我就是挂在这个问题上了,但是我还是如实回答了
我使用较多,但是底层源码看的少
7.你还有什么问题要问我吗?
于是我很诚恳的问了一个问题?
老师,站在您的角度,您认为我有哪些方面的知识需要加强,或者说需要特别的学习
面试官说,平时最好能多看看jar中的源码,google有很多优秀的开源框架,这样可以养成很好的代码风格和编程习惯
然后让我出去等通知,大概等了20分钟吧,hr过来了给我一份公司的FAQ,让我看几分钟,然后我问了几个问题
然后他说问我的期望薪酬,我大概说了一下,然后他说其实我们已经给你定薪了,然后问我的意愿,好吧,我假装深沉的说了一句,我妹妹在北京工作,我先回去征求一下父母的意见,明天早上过来。。hr说没关系,他们这几天都在这里,就这样拿到offer了