java的特点和优点?为什么选择java?
Java与C++的区别,Java的优点
- java相对于c++更好的实现了面向对象编程,java取消了c++的多继承以及指针的概念。
- java的安全性很高
- java可移植性很强。.java文件在编译成.class文件之后,进入到jvm中翻译成可执行的机器码文件。我们只要在不同的操作系统上安装不同的jvm就可以了。
说一下抽象类和接口的区别?
接口与抽象类的方法,接口与抽象类的常量与变量,单继承多实现
1、接口只能有抽象方法,抽象类既可以有普通方法、也可以有抽象方法。
2、接口不能有成员变量,只能有静态变量;抽象类可以有成员变量也可以有静态变量。
3、接口实现了多继承,一个接口可以继承多个接口也可以被多个类实现。抽象类就像普通类,只能单继承。
4、接口和抽象类是两种不同概念,接口提供一个规范、标准。抽象类更像是一个特殊的普通类,它可以作为功能实现的半成品。
说一下java的基本数据类型和引用数据类型?
分别答出即可
java一共有八种基本数据类型,boobean\byte\short\char\int\long\float\double这八种基本数据类型又有他们对应的引用数据类型;引用数据类型包括String、数组,类、接口、对象实例、null。基本数据类型在声明的时候就会立刻在栈上分配空间,存储值;而引用数据类型声明的时候,不会被分配空间,只是存储了一个内存地址在栈中。
请你说说多线程?
得分点 线程和进程的关系、为什么使用多线程
线程是操作系统调度的最小单元,他可以使一个进程并发的处理多个任务,一个进程可以包含多个进程,每个进程用有自己的计数器、堆栈、局部变量,并且能够共享进程内的资源。因为现代CPU拥有多核心、多线程,使用多线程可以显著的提升程序执行的效率、响应时间。
String、StringBuffer、Stringbuilder有什么区别?
字符串是否可变,StringBuffer、StringBuilder线程安全问题
String是不可变字符串,StringBuffer、StringBuider是可变字符串。StringBuider是线程不安全的,StringBuffer是线程安全的。我们一般使用StringBuider,因为它效率比较高;而在多并发在使用StringBuffer
说说怎么保证线程安全?
得分点 原子类、volatile、锁
线程安全问题就是我们在多线程操作共享资源的时候出现异常。解决的办法有三种。1、原子性。(乐观锁)底层为CAS算法。2、valotil关键字。3、锁(悲观锁)。synchronized+juc包下的lock锁。用于锁住方法或者一段代码块。
说说static修饰符的用法
static可以修饰什么,static的重要规则
static可以用来修饰变量、方法、代码块、内部类,但是不能修饰构造方法,修饰的成员称为类成员,也叫静态成员。类成员会随着类加载而加载。static修饰的方法或者内部类不能使用this,或者其他实例对象,因为类先于对象而存在。所以静态只能访问静态的。
请说说你对反射的了解
反射概念,通过反射机制可以实现什么
每一个类在运行之前都会先编译成.class,这个文件保存了类的所有信息。反射就是在运行阶段可以获取一个类的.class文件的对象,通过这个对象.class对象可以访问这个类的所有信息,或者创建这个类实例对象并进行相关操作。反射大大提高了代码的可扩展性,实现了很多不可能实现的功能。比如,JDBC的创建连接的前,通过反射加载驱动程序;很多框架的注解或者xml文件,也使用了放射;面向切面编程(AOP)的实现就是在在程序运行时创建该对象的代理类。
请你说说==与equals()的区别
==和equals()比较基本变量用法,==和equals()对比引用变量的用法
如果没有重写equals方法,它和==的用法一样,在比较基本数据类型的时候,比较的值;在比较引用数据类型的时候,比较的地址(值得注意的是,==不能比较两个类型上不是来自同一父类的引用)。我们在比较引用数据的时候,一般会对equlas方法进行重写,这个时候,一般也要重写hashCode方法。重写equals方法一般都是根据实际情况,比如String重写equals,使它比较String的时候比较的是值。