京东 1、调用反射的有几种方法? 1 2 3 4 TargetObject.class; Class.forName("cn.javaguide.TargetObject"); instance.getClass() ClassLoader.loadClass("cn.javaguide.TargetObject"); 2、线程池的参数、线程池的执行流程、拒绝策略等 1 2 3 4 5 6 7 8 //通过ThreadPoolExecutor构造函数自定义参数创建 ThreadPoolExecutor executor = new ThreadPoolExecutor( CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS, new ArrayBlockingQueue<>(QUEUE_CAPACITY), new ThreadPoolExecutor.CallerRunsPolicy()); 拒绝策略 ThreadPoolExecutor.AbortPolicy: 抛出 RejectedExecutionException来拒绝新任务的处理。 ThreadPoolExecutor.CallerRunsPolicy: 调用执行自己的线程运行任务,也就是直接在调用execute方法的线程中运行(run)被拒绝的任务,如果执行程序已关闭,则会丢弃该任务。因此这种策略会降低对于新任务提交速度,影响程序的整体性能。如果您的应用程序可以承受此延迟并且你要求任何一个任务请求都要被执行的话,你可以选择这个策略。 ThreadPoolExecutor.DiscardPolicy: 不处理新任务,直接丢弃掉。 ThreadPoolExecutor.DiscardOldestPolicy: 此策略将丢弃最早的未处理的任务请求。 3、抽象类与接口的区别? 共同点 :
都不能被实例化。 都可以包含抽象方法。 都可以有默认实现的方法(Java 8 可以用 default 关键在接口中定义默认方法)。 参数 抽象类 接口 成员变量 默认 default。可以变量,也可以常量 只可以常量 成员方法 可以抽象,也可以非抽象。抽象类中可以没有抽象方法,但有抽象方法的一定是抽象类 只可以抽象 方法实现 可以有默认的方法实现 接口完全是抽象的(Java 8 可以用 default) 构造器 抽象类可以有构造器 接口不能有构造器 与正常Java类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型 访问修饰符 抽象方法可以有public、protected和default这些修饰符 接口方法默认修饰符是public。default。 main方法 抽象方法可以有main方法并且我们可以运行它 接口没有main方法,因此我们不能运行它。 多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口 添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 如果你往接口中添加方法,那么你必须改变实现该接口的类。 设计理念 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。 4、重载与重写的区别 重载Overload...