Java---面试题积累

1.Java基础

java跨平台原理

1.借助与一个叫jvm虚拟机的东西
2.针对不同平台开发不同的jvm 将编译后的 .class文件放到不同平台的jvm中执行
一次编译 到处运行

面向对象与面向过程的区别

1.面向过程的性能比面向对象高,主要原因:类调用时需要实例化,开销比较大,比较消耗资源.面向过程开发,性能是最重要的因素.
同时面向过程的缺点是没有面向对象易维护,易复用,易扩展.
2.二者之间的差距就是面向对象是易维护,易复用,易扩展的,在加上面向对象有封装,继承,多条的特性,可以设计出低耦合的系统,使系统更加灵活,更加易于维护.性能方面,面向对象比面向过程低.

异常处理中finally的作用

不管程序是否发生异常,finally语句块都会被执行,当没有catch声明但是抛出了一个异常时,finally语句块也会执行.
finally语句块通常用于释放资源,如I/O缓冲区,数据库连接等.

java IO

JavaIO 相关的类,在java.io包下,具体操作分成面向字节(byte)和面向字符(Character)两种方式

Java-基本数据类型

byte short int long
浮点型-float double
布尔型-boolean
char

面向对象及面向对象的特性

封装:将对象封装成一个高度自治和相对封闭的个体,对象属性由这个对象自己的方法来读取和改变.
多态:一个引用变量会指向哪个类的实例对象,该引用变量发出的方法调用是哪个类中实现的方法,必须在由程序运行期间才能决定.
继承:在已经存在的类的基础之上进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容,或修改原来的方法使之更适合特殊的需要.
抽象:把现实生活中的对象,抽象为类.
包装类型:Java是一个面向对象的语言,而基本数据类型不具备对象的特性,而包装类型就有面向对象的特性.
装箱:把基本数据类型转换为对应的包装类型
拆箱:把包装类型转换为基本数据类型.
基本数据类型 名称 = 对应的包装类型.

== 与equals的区别

== 如果是基本数据类型比较其存储的值是否相等
如果是对象和引用数据类型,比较的是所指向的对象的地址.
equals 不能比较基本数据类型的变量
如果没有对equals方法进行重写,则底层还是使用的是==原理,比较的时引用类型的变量所指向的对象的地址.
如果对equals方法进行了重写,比较的是所指向的对象的内容.

String StringBuilder StringBuffer的区别

这三个类都是表示和操作字符串
String由于底层是final修饰的char数组,所以说string是内容不可变的字符串.
内容可变的字符串:
StringBuilder 是线程不安全的,效率高
StringBuffer 是线程安全的,效率较低

线程?什么是线程?创建方式?区别是什么?

线程:线程是进程的一个顺序执行流,CPU调度的最小单位,必须依赖进程而存在.
创建线程的方式:继承thread类,因为java是单继承的,所以thread子类无法再从其他类继承实现Runable接口,需要重写或实现run()方法,可疑从其他类中继承一些有用的属性和方法

wait与sleep的区别

Sleep:让当前线程休眠指定时间,单线程,不需要在同步方法与同步块调用.
区别:
wait只能在同步上下文中调用wait方法,sleep不需要再同步方法或同步块中调用
wait定义在Object类中,作用于对象本身,sleep作用于当前线程
wait会释放锁资源,sleep不会释放锁资源
wait是实例对象,sleep是静态方法

线程安全?如何解决线程安全?

线程安全,由于多个线程同时访问时,会出现线程安全问题.
解决线程安全:
1.使用同步限制变量的访问
2.使用线程安全的类
3.内置锁也叫互斥锁,可以保证线程的原子性,当线程进入方法时,会自动获得一个锁,一旦锁被获得,其他线程必须等待获得锁的线程执行完代码释放锁,但是会降低程序的执行效率
4.ThreadLocal:通过每个线程单独一份存储空间,牺牲空间来解决冲突,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问到想要的值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值