Java面试题,定时更新,方便自己同时也分享给别人,欢迎交流,本人的理解不一定对

1.Java的好处

首先想到两点:指针和JVM

java使用引用包装了指针,操作方便

JVM跨平台,动态管理对象

在开发中,代码量越大就越好维护,可扩展性强

易读易懂,对比其他语言

2.Java和C++区别

指针,JVM,类继承

java使用引用包装了指针,c++使用指针

java由JVM动态分配内存,管理对象,c++需要程序员手动去创建和回收对象,释放内存

java生成的是和操作平台无关的字节码文件,这些字节码文件只面向虚拟机,由虚拟机作为转换器一样,不同操作平台有不同的虚拟机,然后去执行,一处编译,处处运行

c++编译直接生成操作系统识别的机器码

java类只能单继承,c++类能多继承

3.JDK和JRE的区别

JDK是java开发工具包,包含了JRE和一些编译和运行的命令,javac,java,jar命令等

JRE是java运行时环境,包含了JVM和核心类库

一般来说,JRE是给客户准备的,安装JRE会自动配置环境变量

JDK是给开发人员准备的,安装JDK会自带一个JRE,通常会同时安装JRE和JDK

就等于安装了两个JRE,运行的时候,走的不是JDK自带的JRE,而是单独安装JRE下面的java命令

4.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以包含多个类,但只能有一个主类,也就是public修饰的类,并且要和.java文件的命名一致

编译器根据.java文件名去执行,不然是无法通过编译的。

其他非public修饰的类,可以在源文件中书写,但他们之间都是独立的

public a,class b,class c(三个都是.java文件,编译生成三个class文件)

5.Java有没有goto?

没有,但是goto作为关键字保留

6.重写和重载的区别?

重写和重载没什么联系

重写发生在子父类当中,子类继承并重写父类的方法,方法名字相同,参数列表相同,返回值类型相同,方法体的核心代码不同。常见的就是接口和其实现类,在实现类中书写和更改核心业务代码。

重载主要发生在同一个类中,方法名字相同,参数列表不同,如果子类继承了父类的方法,对父类方法进行重载也是可以的

重写和重载的一些注意事项

1.重写的方法不能抛出比父类更大的异常,可以解决父类的问题,但是不能产生比父类还多的问题

2.重写的方法访问权限控制符可以比父类的权限大

3.父类方法如果为private修饰,则此方法不会被重写,即使方法名字相同,也等价于在子类定义了一个新方法。(private的权限是同一个类)

4.重载不能仅靠返回值来区分

7.synchronized和Lock区别?

Lock是JDK1.5提供的一个接口,synchronized是一个关键字,synchronized是在JVM层面上实现的

synchronized不需要手动加锁和释放锁,Lock需要,通常在finally中使用unlock()释放锁,避免忘记释放锁造成死锁

synchronized是悲观锁,Lock是乐观锁,在并发量高的时候,悲观锁的性能不如乐观锁

(二者都是可重入锁)

8.线程的生命周期和状态?

线程有6大状态,使用JDK的Thread.State枚举类表示

有NEW,RUNNABLE,BLOCKED,WAITING,TIMED WAITING,TERMINATED 6种状态

new状态是指还没有被启动的线程,new Thread,还没有调用start方法开启线程(新建)
runnable状态是指调用了start方法(就绪)


blocked状态是指当前线程在获取同步代码块内容没有拿到锁,线程处于等待的状态,直到锁被释放,才会进入runnable状态(阻塞)


waiting状态是指当线程调用wait方法或者join方法时,线程会进入此状态,当调用notfiy或者notifyAll方法,或者join线程结束后,才会进入runnable状态


timed waiting状态是指当线程调用sleep(time)或者wait(time)时,线程会进入此状态,当休眠或者等待时间结束后,才会进入runnable状态


terminated状态就是指线程执行完毕,会进入此状态(死亡)

简单概括为:新建,就绪,运行,阻塞,死亡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值