首页 > 编程语言 > 详细

java 面试题

时间:2019-06-26 15:45:50      阅读:119      评论:0      收藏:0      [点我收藏+]

1.谈谈你对java的理解?

1.1平台无关性
编译时,运行时
Java源码首先被编译成字节码xx.class文件,再由不同平台的jvm进行解析,不需要再重新编译,java虚拟机会把字节码转换成具体平台上的机器指令.
jvm如何加载.class文件 ?
Class Loader: 加载class文件到内存
Execution Engine: 对命令进行解析
Native Interface: 不通开发语言原生库
Runtime Data Area: jvm内存空间结构模型
谈谈java反射?
java程序运行时,可以动态获取类或者对象的任意方法属性,允许改变程序结构或变量类型,这种动态获取和调用的功能,称为java反射机制

java反射示例

package s.simple.reflect;

/**
 * @Title: Robot
 */
public class Robot {
    private String name;

    private void sayHelloPrivate(String tag) {
        System.out.println("hello " + tag);
    }

    public void hello() {
        System.out.println(name + " hello");
    }
}
package s.simple;
import s.simple.reflect.Robot;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
 * Hello world!
 */
public class App {
    public static void main(String[] args) {
        try {
            // 加载类
            Class cls = Class.forName("s.simple.reflect.Robot");
            // 实例化
            Robot robot = (Robot) cls.newInstance();
            // 获取方法(获取当前类的所有方法和属性,不能获取父类方法和接口方法)
            Method sayHelloPrivate = cls.getDeclaredMethod("sayHelloPrivate", String.class);
            // 获取private方法开启
            sayHelloPrivate.setAccessible(true);
            sayHelloPrivate.invoke(robot, "666");
            // 获取方法
            Field name = cls.getDeclaredField("name");
            // 设置private属性可读取
            name.setAccessible(true);
            // 给属性赋值,属性没有get set方法
            name.set(robot, "999");
            // 获取public方法可以获取父类方法
            Method hello = cls.getMethod("hello");
            // 执行,没有参数不传
            hello.invoke(robot);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }
}

1.2.GC
1.3.语言特性
1.4.面向对象
1.5.类库
1.6.异常处理

java 面试题

原文:https://www.cnblogs.com/412013cl/p/11089750.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!