概况
网易没有统一的招聘系统,都是部门分别招各自的实习生。
我投的部门是做彩票相关的,Java后台。
一面二面一起,是同一个人面的我。首先做一套卷子,卷子有选择、编程题、算法题、问答题。
考的东西基本都是Java相关的,没有计算机网络、操作系统的东西。问答题包括现实性的问题、linux命令使用问题和Mysql的sql语句书写。
二面是根据简历了解一些东西,和延伸出来相关的技术;然后围绕着一面 的卷子进一步提问。
一些关键问题及解答:
1.Sychronized 修饰静态方法(类方法),则锁定的其实是该Class。
2.下面程序运行结果是什么?
class Integer{
public int i = 10;
}
public class Test {
public void out(){
Integer integer = new Integer();
integer.i = 20;
change(integer);
System.out.println(integer.i);
}
public void change(Integer integer){
int i=50;
integer.i = 30;
integer = new Integer();
integer.i = 40;
System.out.println(integer.i+" "+i);
}
public static void main(String[] args){
Test test = new Test();
test.out();
}
}
考察的是引用在当做参数传入之后,引用内的东西和引用本身如果被改变各有什么结果。
答案:
40 50
30
- 当引用的integer进入change()中,首先改了其中的i为30;
- 然后引用本身发生了变化,变成了另外一个对象的引用,然后更改了这个对象的i值;
- 在change()之外的integer的引用是没有发生变化的,依然是老对象的引用,而在chang中更改i成了30,所以,在out中的打印语句即为30。
3.下面程序结果是什么?
class Dog {
public static void love(){
}
public static void barf(){
System.out.println("wangwang");
}
}
class LittleDog extends Dog{
public static void barf(){
System.out.println("wawa");
}
}
public class Test {
public static void main(String[] args){
Dog d1 = new Dog();
Dog d2 = new LittleDog();
d1.barf();
d2.barf();
}
}
考察了细心程度,拜托这个不是多态好吧。。。没看到方法上是static么??
4.下面程序返回的是什么?
public static boolean test(){
boolean b =true;
try{
return b;
}finally{
b = false;
}
}
关于try、catch、finally,参见Java中的try-catch-finally。
5.异常都有哪些类型?举例说明。
详情参见Java中的异常
6.如果一个数据库表条目特别多,增加速度非常快,应该如何考虑查找方面的优化?
- 首先检查业务逻辑是否合理,快速增加的速度来自于逻辑的设计还是客观条件本身不可避免?
- 堆积的数据是否有时效性?对过期的数据进行定期清理。
- 使用类似Hibernate的缓存机制,在查找过程中先查找内存,若没有再查找数据库。
7.现实问题:如果有10个pad,要在10天内通过抽奖,每天能抽中一个pad,如何制定策略?(假设能够保证每天参与抽奖的人数)
- 每天都有一个pad要被抽中,那么每天都会随机生成某个时刻,在这个时刻之后的第一个抽奖的参加者得到pad。这样既保证了随机性(根据时间的随机性),又保证了这个pad一定能被抽中。
8.Java类库中使用了哪些设计模式?请举例,并写出这些类。
- 观察者模式:Java提供了该类的实现Observable和Observer两个类。
- 单例模式:Thrift中使用到了单例模式,还有Spring中也可用到。
- 装饰模式:FileReader、InputStreamReader,参见Java IO设计模式剖析.
9.java中如果定义一个Integer类,会不会覆盖已有Integer类?
解答:不会覆盖。看看第二题就知道了,我新定义了一个类Integer,使用起来没有任何影响。
10.实现锁机制都有哪些方法?
可以用字段sychronized和lock,也可以直接用线程的concurrent包中的容器(比如concurrentLinkedList等等)。
11.jvm中的GC原理
请参考jvm——垃圾回收(GC)