java面试基础知识

1.java四大基础特性及其理解

     封装:隐蔽软件的实现细节,留接口来访问其功能。

     继承:子类继承父类对象来实现功能扩展。

     抽象:无法实现具体细节,留一个概念,比如抽象类。

     多态:同一个方法被不同类继承后进行不同的重写,变成不同的形态。因此,实现多态需要,父类引用指向子类对象,这样指向不同的子类就有不同种重写的方法。

2.java反射及其理解和使用

     反射:在运行状态中,访问一个对象及其内部所有成员变量和方法,即动态创建删除操作对象。动态访问体现java的灵活性。

     实现:每个类被加载到jvm中时,要生成对应的Class对象,通过获取该Class对象即可访问到目标对象及其内部细节。

             1.Class的获取:Class.forName(".class文件的相对路径");//主要建议用这种方法

             2.将获取的.class内容加载到方法区中

             3.通过Class的一个声明cls(Class cls = Class.forName(".class文件的相对路径");)来访问方法区中的对象和细节。

     这便是动态访问对象。

     应用:反射是框架的灵魂,框架通过动态的加载访问类中变量,将其值赋值给sql语句中的对应的位置。例如,update tablename set password = 111 where id = #{id}.事先不知道需要修改的id,通过读取配置文件进行赋值。其他很多地方都用到反射。

3.堆和栈

    堆:存放new生成的对象和数组

    栈:存放基本变量。

    二者本质一样都是存放数据,先进后出。

    Student stu = new Student(100);//其中stu变量存放在栈中,new Student(100);即在堆中声明一段区域准备存放Student类型数据,stu变量指向堆中该区域的首地址,则stu变为Student的引用变量。

你可能感兴趣的:(java面试基础知识)