搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > ImportNew > 每周 10 道 Java 面试题 : 面向对象, 类加载器, JDBC, Spring 基础概念

每周 10 道 Java 面试题 : 面向对象, 类加载器, JDBC, Spring 基础概念

ImportNew 2018-12-30
举报


来源:lmportNew - 唐尤华


每周10道 Java 面试题由 ImportNew 整理编译自网络。


面试题答案讨论请移步:


https://github.com/jobbole/java-interview/issues/1


Java面试题投递交流请移步:


https://github.com/jobbole/java-interview/issues/2


1. 为什么说Java是一门平台无关语言?


平台无关实际的含义是“一次编写到处运行”。Java 能够做到是因为它的字节码(byte code)可以运行在任何操作系统上,与底层系统无关。


2. 为什么 Java 不是100%面向对象?


Java 不是100%面向对象,因为它包含8个原始数据类型,例如 boolean、byte、char、int、float、double、long、short。它们不是对象。


3. 什么是 singleton class,如何创建一个 singleton class?


Singleton class 在任何时间同一个 JVM 中只有一个实例。可以把构造函数加 private 修饰符创建 singleton。


4. 什么是多态?


多态简单地说“一个接口,多种实现”。多态的出现使得在不同的场合同一个接口能够提供不同功能,具体地说可以让变量、函数或者对象能够提供多种功能。下面是多态的两种类型:


  1. 编译时多态

  2. 运行时多态


编译时多态主要是对方法进行重载(overload),而运行时多态主要通过使用继承或者实现接口。


什么是运行时多态,也称动态方法分配?


在 Java 中,运行时多态或动态方法分配是一种在运行过程中的方法重载。在这个过程中,通过调用父类的变量引用被重载的方法。下面是一个例子:


class Car {

    void run()

    {

        System.out.println(“car is running”); 

    }

}

class Audi extends Car {

    void run()

    {

        System.out.prinltn(“Audi is running safely with 100km”);

    }

    public static void main(String args[])

    {

        Car b= new Audi();    //向上转型

        b.run();

    }

}


5. Java类加载器包括几种?它们之间的关系是怎么样的?


Java 类加载器有:


  • 引导类加载器(bootstrap class loader):只加载 JVM 自身需要的类,包名为 java、javax、sun 等开头。

  • 扩展类加载器(extensions class loader):加载 JAVA_HOME/lib/ext 目录下或者由系统变量 -Djava.ext.dir 指定位路径中的类库。

  • 应用程序类加载器(application class loader):加载系统类路径 java -classpath 或 -Djava.class.path 下的类库。

  • 自定义类加载器(java.lang.classloder):继承 java.lang.ClassLoader 的自定义类加载器。


注意:-Djava.ext.dirs 会覆盖 Java 本身的 ext 设置,造成 JDK 内建功能无法使用。可以像下面这样指定参数:


-Djava.ext.dirs=./plugin:$JAVA_HOME/jre/lib/ext。


它们的关系如下:


  • 启动类加载器,C++实现,没有父类。

  • 扩展类加载器(ExtClassLoader),Java 实现,父类加载器为 null。

  • 应用程序类加载器(AppClassLoader),Java 实现,父类加载器为 ExtClassLoader 。

  • 自定义类加载器,父类加载器为AppClassLoader。


7. 什么是JDBC驱动?


JDBC Driver 是一种实现 Java 应用与数据库交互的软件。JDBC 驱动有下面4种:


  1. JDBC-ODBC bridge 驱动

  2. Native-API 驱动(部分是 Java 驱动)

  3. 网络协议驱动(全部是 Java 驱动)

  4. Thin driver(全部是 Java 驱动)


8. 使用 Java 连接数据库有哪几步?


  • 注册驱动类

  • 新建数据库连接

  • 新建语句(statement)

  • 查询

  • 关闭连接


9. 列举Spring配置中常用的重要注解


下面是一些重要的注解:


  • @Required

  • @Autowired

  • @Qualifier

  • @Resource

  • @PostConstruct

  • @PreDestroy


10. Spring中的Bean是什么?列举Spring Bean的不同作用域。


Bean 是 Spring 应用的骨架。它们由 Spring IoC 容器管理。换句话说,Bean 是一个由 Spring IoC 容器初始化、装配和管理的对象。


下面是 Spring Bean 的5种作用域:


  • Singleton:每个容器只创建一个实例,也是 Spring Bean 的默认配置。由于非线程安全,因此确保使用时不要在 Bean 中共享实例变量,一面出现数据不一致。

  • Prototype:每次请求时创建一个新实例。

  • Request:与 prototype 相同,区别在于只针对 Web 应用。每次 HTTP 请求时创建一个新实例。

  • Session:每次收到 HTTP 会话请求时由容器创建一个新实例。

  • 全局 Session:为每个门户应用(Portlet App)创建一个全局 Session Bean。


【关于投稿】


如果大家有原创好文投稿,请直接给公号发送留言。


① 留言格式:
【投稿】+《 文章标题》+ 文章链接

② 示例:
【投稿】《不要自称是程序员,我十多年的 IT 职场总结》:http://blog.jobbole.com/94148/

③ 最后请附上您的个人简介哈~



看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《每周 10 道 Java 面试题 : 面向对象, 类加载器, JDBC, Spring 基础概念》的版权归原作者「ImportNew」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

举报