原标题:Java程序员面试试题汇总
前言
各位小伙伴们学习完Java开发后再去找工作的时候,很多人都折在了面试中笔记的这道坎上,有的时候是我就这不太熟,就出这个方面的试题,小伙伴们不要抱怨了,小编在这里再帮各位小伙伴将这些常见的问题汇总一下,方便大家熟练掌握,避免在这个问题上再次翻船。
正文
1.最常见的年试题,面向对象的三大特征(有的老面试题也会有四大特征)
封装,继承,多肽,最对再加一个抽象(有的需要简述,根据你自己的理解简单描述,切记面试突出重点,不要啰里啰嗦)
2.多肽的好处
可替换性:多态对已存在代码具有可替换性
可扩充性:增加新的子类不影响已经存在的类结构
接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的。
灵活性
简化性
3.多肽的实现
(1)实现接口
(2)继承父类重写方法
(3)同一类中进行方法重载
4虚拟机如何实现多肽的
动态绑定技术执行期间判断所引用的实际类型,根据实际类型调用对应的方法
5.接口抽象类的区别
比较
抽象类
接口
默认方法
可以有
java8之前不存在方法的实现
实现方式
子类使用extends关键字来继承抽象类,如果子类不是抽象类,子类需要提供抽象类中所声明方法的实现
子类使用implements来实现接口,需要提供接口中所有声明的实现
构造器
抽象类中可以有构造器
接口中不能
和正常类的区别
抽象类不能实例化
接口则是完全不同的类型
访问修饰符
抽象方法可以有public,protected和default等修饰
接口默认的是public,不能使用其他修饰符
多继承一个子类只能存在一个父类
一个子类可以存在多个接口
添加新的方法
想抽象类中添加新的方法,可以提供默认的实现,因此可以不修改子类现有的代码
如果往接口中添加新方法,则子类中需要实现该方法
6.父类的静态方法能被子类重写
不能,重写只适用于实例方法,不能用于静态方法,而子类当中含有和父类相同签名的静态方法,我们一般称之为隐藏。
7.静态变量和实例变量的区别?
静态变量存储在方法区,属于类所有。实例变量存储在堆当中,其引用存在当前线程栈。8.能否创建一个包含可变对象的不可变对象?
当然可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。最常见的例子就是对象中包含一个日期对象的引用。9.java 创建对象的几种方式
采用new
通过反射
采用clone
通过序列化机制
前2者都需要显式地调用构造方法。造成耦合性最高的恰好是第一种,因此你发现无论什么框架,只要涉及到解耦必先减少new的使用。10switch中能否使用string做参数
在idk 1.7之前,switch只能支持byte, short, char, int或者其对应的封装类以及Enum类型。从idk 1.7之后switch开始支持String。11switch能否作用在byte, long上?
可以用在byte上,但是不能用在long上。12String s1=”ab”, String s2=”a”+”b”, String s3=”a”, String s4=”b”, s5=s3+s4请问s5==s2返回什么?
返回false。在编译过程中,编译器会将s2直接优化为”ab”,会将其放置在常量池当中,s5则是被创建在堆区,相当于s5=new String(“ab”);13你对String对象的intern()熟悉么?
intern()方法会首先从常量池中查找是否存在该常量值,如果常量池中不存在则现在常量池中创建,如果已经存在则直接返回。
比如
String s1=”aa”;
String s2=s1.intern();
System.out.print(s1==s2);//返回true返回搜狐,查看更多
责任编辑: