面试经历(二)

    第二家面试公司,凤凰中心,这家公司对我来说属于“二进宫”了,四年前曾有面试机会,当时问了我好多框架问题;本次面试恰恰相反,四个问题:字符串、一组数字打乱、斐波那契数列、设计模式。不过结果都是一样,给了我一个“三进宫”的机会。下面来看看这几个问题的解答:


一、字符串

问题:String s1 = "abc"+"def"; String s2 = "abcdef"; s1==s2?

解答:true。String 字符串一旦被更改,s1在编译期值就已经被更改为“abcdef”,故s1==s2

问题:String s1 = "abc"; String s2 = s1 + "def";  String s3= "abcdef"; s2==s3?

解答:false。因为s2在堆中重新分配了另一个对象,所以s2与s3的引用不同

二、一组数字打乱

问题:一个字符串数组,要求将其打乱

解答:此问题我说出两种解决方案,但是都大同小异。第一种,新建一个数组,随机原数组长度数值内的数字,放入新数组中,去除当前坐标的值;第二种,在原数组上进行随机,从数组头部依次放入,随机数范围依次减少。

三、斐波那契数列

问题:求底n个位置数值,当前位置数值等于前两位的和。1、1、2、3、5、8、13

解答:两种做法,第一种方法递归,过滤前两项的返回值,第三项起方法递归,此种做法会有多次冗余计算,如果增加一个缓存,将会提高取值效率,同时此方法适合频繁被调用。第二张方法,方法计算,两个临时变量存储前两位值,循环遍历求得第n项。

四、设计模式

准备两三个熟悉的设计模式即可。



    

猜你喜欢

转载自blog.csdn.net/wulei823821905/article/details/79526480