不管有没有工作经验,基础是否扎实都是面试重点考察的点。正所谓基础不牢,地动山摇,基础知识不仅能反映语言功底,很多知识用法的易踩坑点更是经验教训的总结。
鸭哥也多次参与过面试,如果应聘者既掌握了所问的基础知识,又能说一些知识相关的易踩坑点,在鸭哥这里是很加分的。下面就分享一个面试时令鸭哥印象深刻的回答,这样答完后,平时比较严肃的鸭哥,也不经意间露出了赞赏的笑容~
不管有没有工作经验,基础是否扎实都是面试重点考察的点。正所谓基础不牢,地动山摇,基础知识不仅能反映语言功底,很多知识用法的易踩坑点更是经验教训的总结。
鸭哥也多次参与过面试,如果应聘者既掌握了所问的基础知识,又能说一些知识相关的易踩坑点,在鸭哥这里是很加分的。下面就分享一个面试时令鸭哥印象深刻的回答,这样答完后,平时比较严肃的鸭哥,也不经意间露出了赞赏的笑容~
public class compareString { public static void main(String[] args) { String s1 = "test"; String s2 = "test"; String s3 = s1; // 相同引用 String s4 = new String("test"); String s5 = new String("test"); if(s1 == s2 && s2 == s3){ System.out.println("s1,s2和s3使用比较运算符返回true,因为它们引用的是同一公共池中的同一对象"); } if(!(s4 == s5)){ System.out.println("s4和s5使用比较运算符返回false,因为它们引用的是不同的对象"); } if(s4 != null && s4.equals(s5)){ System.out.println("s4与s5引用的不同字符串对象的值相同"); } } }
在上面的代码中,遇到字符串常量时,编译器会使用该值创建一个 String 对象,s1, s2, s3 引用的是同一个字符串常量,所以它们的引用地址及引用对象的值都完全相同。
String Pool s1 -----------------> "test" <-----------------s2 || s3
对于 s4 和 s5,new 时分别创建了两个字符串对象,虽然字符串的内容相同,但是它们的引用地址是不同的。
Heap "test" <-------------------- s4 "test" <-------------------- s5
所以就有了下面的运行结果:
能答出上面这些内容,就反映出应聘者的基础是很扎实的。除此之外,实战方面,.equals() 还有一些注意事项如下。
当字符串对象为 null 时,调用 .equals() 方法会抛空指针异常。
String testStr1 = null; String testStr2 = new String("test"); boolean result = testStr1.equals(testStr2); //因为testStr1为null,所以这里将抛出NullPointerException //正确的写法是,先检查testStr1不为空,再调用.equals() 方法 if(testStr1 != null) boolean result = testStr1.equals(testStr2);
当我们想要在忽略大小写的情况下比较两个字符串是否相等时,可以用.equalsIgnoreCase()方法。
String testStr3 = new String("abc"); String testStr4 = new String("ABC"); if(testStr3 != null) System.out.println(testStr3.equalsIgnoreCase(testStr4));
这些非必答的内容,答出来是有一定的加分效果的,因为这些内容一定程度上反映了实战经验。但所占篇幅不宜过长,应该把握住面试官提问的主要内容,不然效果可能适得其反。
每天一个入职小技巧,你有哪些面试技巧想要分享呢?欢迎在留言区讨论哦。