说说面试题吧(软件开发工程师),这次的面试题少了很多了,大部分都是选择题,加上几道比较简单的问答题。
选择题考了一些比较新的技术。比如我记得的一道题是考了可变参数。
有一题是考构造函数的,题目大概是这样的
class A2 {
public A2(String agr) {
System.out.print(“A”);
}
}
class B3 extends A2 {
public B3(String agr) {
//super(agr);
System.out.print(“B”);
}
}
public class StructrueTest {
public static void main(String agrs[]) {
new B3(“D”);
}
}
问输出结果是什么。
A:AB
B:BA
C:ABD
D:DAB
E:CompileError
答案是CompileError。
我一开始选择的是A,因为父类的构造方法会被先调用。
然后我仔细的想了一下,感觉不对。父类没有默认的构造方法,子类如何知道构造父类呢?
因为子类的构造方法里面默认是调用父类的默认构造方法的,如果父类没有默认的构造方法那么就必须显示的调用父类的其他构造方法。
如:
1:将飘红部分的注释去掉即可通过编译。
2:为父类编写一个默认的构造方法。(因为写了有参的构造方法,所以默认的构造方法被覆盖掉了,所以需要显示的声明。)
最后一道题是SQL去重,我不会。题目大概意思是,有一个Student表,里面有name,age,year三个字段,没有主键,有些记录是重复的(name,age,year都相同),要求用SQL去掉重复数据,只留下唯一一条记录。
这道题,我应该去问一下该怎么做。
关于面试:
1:
这次的面试也比较简单,对与SSH方法也只是让我谈一下自己的看法。
不过我答得很不好。有一个是,他问我,Struts2的特点,好处。我竟然只说了几个,像拦截器,表现层可以多样,都忘记了。
黎活明在视屏里重点强调过面试的时候一定要能够说的出来,可是我还是。。。唉。。。
2:
算法方面问的很多,看来算法才是最重要的啊,语言神马都是浮云。可是为什么我们都是热衷于学习新的技术,框架,而忘了算法呢。
我觉得除了算法很难之外,应该还有其他原因吧。。Java方面要学的东西太多,以至于忘记了算法才是最重要的。
哦,还有一个比较重要的是,我现在知道我答错了的,那就是冒泡排序和快速排序的效率问题(前提是:在100个数中,有80个数是已经排好序的)。
我答的是快速排序的效率高。原因是冒泡要排n(n-1)次。
答完之后,看HR的反应,我感觉我答错了,于是说看来我是答错了。HR不置可否,说了一句,这个你可以自己去验证,我们面试时是不会告诉你答案的。(想想,感觉也是,面试题就那么几道,你还能想出多少来。HR应该是PM,平时工作应该就比较忙,哪有那么多时间想题。告诉你答案了,说不定你叫告诉你之后要去面试的朋友同学了,也就不具有考核的价值了)
其实我确实错了,冒泡并不是一定要排 n(n-1)次的,虽然排这么多次可以确保排序正确,但是可以在每一遍排序的过程中设置一个标记,用于判断该趟排序是否已经满足条件。所以,在好的情况下,一趟排序就可以了。
所以,在数据优良的情况下,冒泡是比快排要快的。 可以参见 http://www.doc88.com/p-67249795394.html
HR对我的算法功底不是很满意,用他的话来说就是还行,也还算可以,勉强。
接下来,我觉得我就应该要加强算法方面了。
1:熟悉各个经典的算法问题。如今天问到的背包问题,等、
2:熟悉各种算法思路。如今天考的回溯。
3:排序是重头戏,在我去过的两家公司都有问到排序。(还是李绍华老师说得对啊,出去找工作,精通一两种排序方法是必须的。)
4:做ACM的题。
关于薪酬:(转正后,实习期间工资一定,没得谈)
这个我也不知道我自己到底值几两,我也不敢说太高,就说3000左右,HR主动给我提到了3000~3500 ,我想,如果我把算法搞上去了
是否我的薪酬可提到4000呢,^-^,真心羡慕传智播客里的学员,能够找到那么高薪的工作。
感觉太平洋那里还蛮好的,就是太远了,要我每日往返,即使给我4000+我也不干,我身体吃不消。不知住宿问题是否可以解决。
据说实习生可以住宿,但是转正之后就必须搬出去了,要自己用工资租房子了。感觉在广州这个地方,随便租个房间就要400+,真的承受不起啊。
他说5个工作日给我回复。不知道会是怎样的呢?不过不管怎样,我都不担心,即使他不要我。因为我感觉我已经找到了努力的方向,基本上知道了自己的技术价值。以后再去面试底气就会比较足了。