Java面试题总结

来源:互联网 发布:d3.js 可视化介绍 编辑:程序博客网 时间:2024/06/06 11:49

1.接口和抽象类的区别

①抽象类里可以有构造方法,而接口内不能有构造方法。

②抽象类中可以有普通成员变量,而接口中不能有普通成员变量。

③抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。

④抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只有public和默认类型。

⑤ 抽象类中可以包含静态方法,接口内不能包含静态方法。

⑥抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public  static类型,并且默认为public static类型。

⑦一个类可以实现多个接口,但只能继承一个抽象类。

⑧接口更多的是在系统框架设计方法发挥作用,主要定义模块之间的通信,而抽象类在代码实现方面发挥作用,可以实现代码的重用。

2.Java虚拟机的运行时数据区有几块?线程私有和线程共享区域有哪些?

①程序计数器:线程私有,当前县城执行的字节码的行号指示器。

②虚拟机栈:线程私有,存放基本数据类型、对象引用和returnAddress类型。

③本地方法栈:为虚拟机使用到的Native方法服务。

④Java堆:线程共享,存放对象的实例,也是GC回收器管理的主要区域。

⑤方法区:线程共享,存放已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。

⑥运行时常量池:方法区的一部分,存放编译期生成的各种字面量和符号引用。

⑦直接内存:不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域,容易引起OOM异常,NIO会调用,不受Java堆大小的限制。

3、面向对象和面向过程的区别:

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。  

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

4、Java内存模型

①Java内存模型分为主内存和工作内存两个部分,其中主内存存放变量,工作内存由每个线程创建和管理,保存被该线程使用到的变量的主内存的副本拷贝。变量从主内存复制到工作内存,顺序执行read和load操作,变量从工作内存同步到主内存的时候,顺序执行store和write操作。

对于volatile变量在各个线程的一致性:在各个线程的工作内存中,volatile存在不一致的情况,但在每次使用前都会刷新,执行引擎看不到不一致的情况,因此可以认为不存在一致性问题。

②原子性、可见性和有序性

③先行发生原则

5、Java垃圾回收机制

Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。

System.gc();

Runtime.getRuntime().gc(); 

上面的方法调用时用于显式通知JVM可以进行一次垃圾回收,但真正垃圾回收机制具体在什么时间点开始发生动作这同样是不可预料的,这和抢占式的线程在发生作用时的原理一样。

6、类加载器,类加载时机

类初始化的时机,有且仅有四个:

A、遇到new、getstatic、putstatic、invokestatic这四条字节码指令的时候。

B、使用java.lang.reflect进行反射调用的时候。

C、当初始化一个类的时候,发现其父类还没有初始化,那么先去初始化它的父类。

D、当虚拟机启动的时候,需要初始化main函数所在的类。

7、Java基本数据类型

boolean(1)、byte(8)、char(16)、short(16)、int(32)、float(32)、long(64)、double(64)

8、Java内存模型

①特点:原子性、可见性、有序性。

A、原子性:read、load、use、store、write,synchronized关键字保证原子性

B、可见性:synchronized、volatile、final保证可见性

C、有序性:synchronized保证有序性

9、Java反射

    反射机制指的是程序在运行时能够获取自身的信息。

   为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念,

   静态编译:在编译时确定类型,绑定对象,即通过。

    动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。

    一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中

它的灵活性就表现的十分明显。

作用:①首先得根据传入的类的全名来创建Class对象。 ②获得类方法的方法。③  获得类中属性的方法。

缺点:①性能第一:反射包括了一些动态类型,所以JVM无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被 执行的代码或对性能要求很高的程序中使用反射。②安全限制:使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有安全限制的环境中运行,如Applet。③内部暴露:由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用--代码有功能上的错误,降低可移植性。反射代码破坏了抽象性,因此当平台发生改变的时候,代码的行为就有可能也随着变化。

10、Java引用

①假设我们在函数中写了如下这个简单的语句:

StringBuffer str= new StringBuffer("Hello world"); 

别看这个语句简单,其实包含了如下三个步骤:

首先,new StringBuffer("Hello world")在堆里申请了一坨内存,把创建好的StringBuffer对象放进去。其次,StringBuffer str声明了一个指针。这个指针本身是存储在栈上的(因为语句写在函数中),可以用来指向某个StringBuffer类型的对象。或者换一种说法,这个指针可以用来保存某个StringBuffer对象的地址。最后,当中这个等于号(赋值符号)把两者关联起来,也就是把刚申请的那一坨内存的地址保存成str的值,完成引用。

②final常量的问题

针对引用类型变量的final修饰符也是很多人搞混淆的地方。实际上final只是修饰指针的值(也就是限定指针保存的地址不能变)。至于该指针指向的对象,内容是否能变,那就管不着了。所以,对于如下语句:

final StringBuffer strConst = new StringBuffer();

你可以修改它指向的对象的内容,比如:

strConst.append(" ");

但是不能修改它的值,比如:

strConst = null;

③传参的问题:

例如:System.out.println(str);这个语句又是什么意思捏?这时候就两说了。

第一种理解:可以认为传进函数的是str这个指针,指针说白了就是一个地址的值,说得再白一点,就是个整数。按照这种理解,就是传值的方式。也就是说,参数传递的是指针本身,所以是传值的。

第二种理解:可以认为传进去的是StringBuffer对象,按照这种理解,就是传引用方式了。因为我们确实是把对象的地址(也就是引用)给传了进去。

11、try/catch/finally/return 作用顺序

不管有木有出现异常,finally块中代码都会执行;
当try和catch中有return时,finally仍然会执行;
finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

原文:http://blog.csdn.net/andong154564667/article/details/52243378







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 猫抓了破了点皮怎么办 小孩子喜欢玩别人家的玩具怎么办 孩子把别人家的玩具玩坏了怎么办 小新和爸妈一起睡觉那他们怎么办 ps画纸画的时候一直在移动怎么办 宝宝磕碰到家具上鼻梁碰破该怎么办 月经推迟11天了怎么办孕测棒单杠 小孩子不小心把蜡笔吃一点怎么办 线切割切割的工件表面有条纹怎么办 苹果手机不能用流量更新吃鸡怎么办 吃鸡更新成雨林如果内存不够怎么办 绝地求生刺激战场背包满了怎么办 绝地求生刺激战场模拟器满了怎么办 绝地求生刺激战场电脑版满了怎么办 绝地求生手游模拟器注册上限怎么办 绝地求生电脑模拟器已达上限怎么办 三星s5锁屏密码忘了怎么办 字画装框的时候起褶皱怎么办 指甲油抹在手上不在指甲上怎么办 我把油画的布割破了怎么办 胜战本领怎么看、走上战场怎么办 胜战本领怎么看 走上战场怎么办 数码相机拍出的相片亮度太亮怎么办 国考照片错了怎么办招生办能改吗 国考英语准考证名字错了怎么办 玻尿酸打鼻子双眼间距好怪怎么办 喝咖啡后胃不舒服想吐怎么办 分期付款买的车不想还款了怎么办 考试时打小抄被同学发现怎么办 生完二胎计生办强制要求上环怎么办 没办二代身份证户口被注销怎么办 川航特价儿童票名字写错怎么办 川航机票名字错一个字怎么办 买飞机票名字打错了一个字怎么办 坐飞机耳朵聋了下飞机还痛怎么办 小孩咳嗽两个月了还不好怎么办 生完小孩肚子瘦不下来怎么办 胆子小一个人在家里都害怕怎么办 怀了双胞胎两个宝宝很挤怎么办 飞机无人陪护如果接机延误该怎么办 过年要坐火车回家 狗狗怎么办