您的位置:首页 > 职场人生

去某某-JAVA开发面试

2016-05-18 22:24 381 查看

去某某-JAVA开发面试

今天到去哪儿面试JAVA开发,两面技术面、最后HR面,拿到Offer。记录一下面试过程和遇到的问题。

预约的上午十点面试,到达前台后,领了一张表格填了下个人基本信息、期望薪资等。

一面

一面的面试官名字听着耳熟,他是三年前从我目前所在公司离职的,而且离职前跟我同部门,简直太巧了。我入职后不久他就离职了,当时我们基本没有交集,所以对他没有太深的印象了。

一面是技术面,主要考察JAVA基础知识、JAVA集合框架、数据库索引、多线程方面的知识.

int 和 Integer 的区别及通过“==”操作符 和equals 方法比较进行相等比较时的区别。

Object 对象中equals( ) 方法和 hash( ) 方法的作用。

Array 和 ArrayList的区别。

HashMap 的实现原理

如何实现固定数量线程的线程池。

sleep和wait的区别。

数据库索引最左原则。

SQL中使用 >=、like、in 等作为过滤条件操作符时,是否会使用索引。

熟悉或知道的开源框架有哪些?

内存回收,哪些是根节点的集合。

类加载器中loadClass 和findClass的区别?

Spring 框架中注解相比于xml配置方式的优点在哪里?

进程和线程的区别。

执行任务过程中如何确定需开启的线程数量?

static关键字的作用。

抽象类和接口的区别。

Spring AOP的实现原理。

对RPC框架是否了解?

二面

二面也是技术面,面试官比较严肃,主要考察的也是JAVA基础、内存回收等。

有三个线程A、B、C,线程A、B相互独立,线程C要用到线程A、B的执行结果,怎样能使得线程A、B并发执行,A、B结束后再开始执行线程C?

Object类中都有哪些方法,它们的作用分别是?

如果把自定义的类放到java.lang 包下,会发生什么情况?

内存回收。

若一个进程长期执行,突然其CPU占用率过高,该怎么办?

如何有效应对高并发的问题?

如果重写一个类的hashCode方法,方法返回一个固定的常量,会发生什么样的情况?

三面-HR面

HR貌似对我目前的单位很熟悉,谈话的气氛很轻松。

做一下自我介绍。

业余时间喜欢看什么书籍?

了解哪些开源的框架,说一个开源框架中你觉得代码写的比较好,值得借鉴的地方

你自己的写的代码中有没有什么你觉得特别有意思,可以分享一下的。

为什么从目前的单位离职?

如果被录用的话,大概多久能过来入职?

整个面试耗时约1个小时,上午11点左右结束面试。下午两点接到HR的电话,告诉拿到Offer了,薪资是按照我填写的下限给的,并且催促我两周之内入职。

总结

现在参加面试已经不会感觉紧张了,整个过程中心态比较平稳。有进步,值得鼓励。

期望薪资写低了,以后要注意。

下午接到HR电话的时候有点小激动,忘了跟她讨价还价了,应该可以争取一下。

不管接受这个Offer与否,我都是要离开毕业后第一家、工作了三年的公司了。

面试问题解答

int 和 Integer 的区别及通过“==”操作符 和equals 方法比较进行相等比较时的区别。

int 是JAVA基本类型之一, Integer 是int的包装类是对象。

public void IntegerCompare(){
Integer a = new Integer(50);
Integer b = new Integer(50);
Integer c = 50;
Integer d = 50;
Integer e = 500;
Integer f = 500;
int g=50;

System.out.println("a==b :" + (a==b));
System.out.println("a.equals(b) :" + (a.equals(b)));
System.out.println("a==g :" +(a==g));
System.out.println("a==c :"+(a==c));
System.out.println("c==d :"+(c==d));
System.out.println("e==f :"+(e==f));
}


函数执行后输出结果为:

a==b :false
a.equals(b) :true
a==g :true
a==c :false
c==d :true
e==f :false


使用“==”进行比较时,比较的是栈里的值,变量a、b保存的是堆中两个不同对象的地址,因此 a==b 结果为false;

a.equals(b) 比较的是a、b两个对象中的值,因此结果为true;

变量g是基本类型,a==g 进行比较时,会调用intValue()对a进行自动拆,得到int类型的值然后与g进行比较;

通过Integer c=50; 这种方式定义的变量比较特殊。c==d 的结果为true,但 e==f的结果为false。

执行 Integer c =50; 语句时会调用以下函数返回一个Integer类型的对象,其中IntegerCache.low = -128、IntegerCache.high=127。

public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}


当参数i的值-128<=i<=127时,返回缓存的对象,否则创建一个新的对象并返回。

c==d进行比较时,c和d指向的是同一个Integer对象,因此结果为true;

e==f进行比较时,e和f指向的是两个不同的对象,因此结果为false;

Object 对象中equals( ) 方法和 hashCode( ) 方法的作用。

hashCode( )函数会返回一个整形的hash值。

以下是hashCode的官方协定:

在java程序一次运行过程中,多次调用一个对象的hashCode( )时,必须返回相同的值,前提是对象的equals()方法没有被修改;

若两个对象通过equals方法比较的结果为相等,则它们的hashCode( )返回值必须相同.

重写equals( )方法时通常有必要重写hashCode( )方法,以维护hashCode协定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试