Guidewire第二次电面

原帖地址:米群网

不知道这一周是怎么了,竟然把好几个面试都忘了加到calendar里面,电面来了直接跟突然袭击一样。搞得面试官也很不开心。估计是挂定了。

看姓应该是华人,但是念不出我的名字,而且口音有点听不懂。所以应该是台湾同胞。; r; W) G! f# }$ I, o5 n

跟其他几位发二面面经的童鞋不一样,没有HashTable和Chess Game题。他开始告诉我分为两部分,一是对Java基本知识的考察,二是写算法。

发过来文档链接之后开始第一部分:
1.
List a = new ArrayList() 和
ArrayList b = new ArrayList()
这两个有什么区别;

2.
List a = new ArrayList() 和
List b = new ArrayList()
有什么区别;
这个地方我就说“一个可以放任意的类型,第二种就只能放Integer吧。
他还不满意,给我举例子提示我:
比如:
Integer c = (Integer)a.get(0)和
Integer d = b.get(0),
这两个是不是有区别?难道第一个比第二个就需要多打9个字符?我说第一个如果放比如字符串或者其他的object,强制转换成Integer可能会出编译错误吧。
可能答出来他想要的类似答案。下一题:
if (e instanceOf Integer){
a.add(e);
}
这种写法有什么优势?
当时答得稀里糊涂,之后去查了一下Stack Overflow(http://stackoverflow.com/questions/7526817/use-of-instance-of-in-java)上有人写的答案是这样:Basically, you check if an object is an instance of a specific class. You normally use it, when you have a reference or parameter to an object that is of a super class or interface type and need to know whether the actual object has some other type (normally more concrete)
类似这样的小细节比如什么feature比较有各自优势之类的,真的需要多看一看;

4.
让我简述一下equals()和hashcode()的关系。然后写了一个类:
public class Account{
private String accountNumber;
}
“Write down some code to demonstrate what happen if you don’t overwrite equals and hashcode.

面经写到这里我才发现这真的是特简单的一个问题。但是当时我就不知道怎么脑子抽风不知道怎么写,然后一遍一遍跟他解释类似“如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,因为自定义的类是继承于object,而object中的equals就是用==来实现的”这些东西。

之后他说,你就跟我说一下用HashSet和HashMap的时候这两个的情况;
我就不知道怎么写了(其实是面试中还真没被问到过这种实现一个情景的题,一下子脑子呆住了,其实很简单的东西)跟他说“这个东西用嘴说比较方便吧,我不知道你想让我写什么代码。”最后问题环节证明这是他记住我的一个污点,“缺少hans on experience”的证明。唉,真是够了…..

下面是算法环节:
让我实现一个函数,函数要实现这样的功能:
输入是两个已排序int数组,要把这两个数组合并成已排序的数组。要求是如果出现duplicate数字则移除他们。
例子如下:
然后题目是这样:
即在已经建立好的list里面进行操作。

本来很简单的题,花了不少时间在edge case处理和语法错误上。

然后本来有更多时间处理更多的情况的。没有时间了就只能到这了。
比如:

问题环节,问他我有那些缺点,他说我“缺少hands on experience”,要多写点project,多向有经验的工程师学习。然后,我问他我有什么优点。这哥们一下子激动了:“这是什么weired question?我从来没有被问过这种问题。”可见我的表现多差,连敷衍都懒得敷衍一下了。

所有的过程验证了一句话:“不作死就不会死”。大家吸取我的教训……