Java面试题2

1.面对对象的特性;
封装,继承,多态,抽象。
封装:封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变他的内部结构。在Java中有三种修饰符:public,private和protected,每种修饰符给其他位于同一个包或者不同包下卖弄对象赋予了不同的访问权限。
封装的好处:通过隐藏对象的属性来保护随想内部的状态。
提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。
禁止对象之间的不良交互提供模块化。

多态:多态是编程语言给不同的底层数据类型做相同接口展示的一种能力,一个多态类型上的操作可以应用到其他类型的值上。

继承:继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用性。

抽象:抽象就是从具体的事例中分离出来的步骤,这种抽象技术的主要目的是把类的行为和实现细节分离开。

2.什么是Java虚拟机。
Java虚拟机是一个可以执行Java字节码的虚拟机进程,Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以在任意平台运行,不需要程序员为每个平台单独重写或者是重新编译。

3.JDK和JRE的区别是什么?
JRE是运行时环境,将要执行Java文件的虚拟机。
JAVA是开发工具包,完整的Java软件开发包,包含了JRE,编译器和其他的工具,可以让开发者开发,编译。执行Java的应用程序。

4.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
static表明一个成员变量或者是成员方法可以在没有所属的类的实例化变量的情况被访问。
Java中的static方法不能被覆盖,因为覆盖方法是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何势力都不相关。

5.什么叫做自动拆装箱、
自动装箱就是Java编译器在基本数据类型和对应的对象包装类之间做的一个装换,比如把int转成Integer等。

6.方法覆盖和方法重载的意思。
Java中的方法重载发生在同一个类里面构造方法参数不一致的情况。与此同时方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回值。

7.什么是值传递和引用传递。
对象被值传递,意味着传递了一个对象的副本,就算改变了副本,也不会影响源的对象的值。
对象被引用传递,意味着传递并不是实际的对象,而是对象的引用。因此外部对引用的对象所做的改变也会映到所有的对象上。

8,进程和线程的区别是什么?
进行是执行的应用程序,而线程是进程内部的一个执行程序。一个进程可以有多个线程,但是一个线程只能属于一个进程。

9.创建线程的不同方式。
继承Thread类。
重写Runnable接口。
应用程序可以使用Executor框架来创建线程池。

10.概括线程的几种可用状态
就绪(Runnable):线程准备运行,不一定立马就开始执行。
运行中(Running):线程正在执行线程的代码。
等待中(Waiting):线程处于阻塞状态,等待外部的处理结束。
睡眠中(Sleeping):线程被强制睡眠。
I/O阻塞(Blocked On I/O):等待I/O操作完成。
同步阻塞(Blocked on Synchrogaztion):等待获取锁。
死亡(Dead):线程完成了执行。

11.在监听器内部,如何做到线程同步,程序应该做那种级别的同步?
监听器和锁在Java虚拟机中一块使用的。监听器监视一块同步代码块,确保依稀只有一个一个想爱你成执行同步代码块,每一个监视器都会和毅哥 对象引用相关联。线程在获取锁之前不允许执行同步代码块。

12.如何确保N个线程可以访问N个资源同时不导致死锁。
使用多线程的时候,非常简单的避免死锁的方法就是指定取锁的顺序,并强制要求线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值