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

栏目: Java · 发布时间: 7年前

内容简介:每周10道 Java 面试题由 ImportNew 整理编译自网络,欢迎投稿您面试中遇到过的疑难问题。平台无关实际的含义是“一次编写到处运行”。Java 能够做到是因为它的字节码(byte code)可以运行在任何操作系统上,与底层系统无关。

每周10道 Java 面试题由 ImportNew 整理编译自网络,欢迎投稿您面试中遇到过的疑难问题。

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的不同作用域。

They are managed by the Spring IoC container. In other words, a bean is an object that is instantiated, assembled, and managed by a Spring IoC container.

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。

关于作者:唐尤华

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

我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个 程序员 的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员。(新浪微博: @唐尤华

查看唐尤华的更多文章 >>


以上所述就是小编给大家介绍的《每周10道Java面试题:面向对象, 类加载器, JDBC, Spring 基础概念》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Nature of Code

The Nature of Code

Daniel Shiffman / The Nature of Code / 2012-12-13 / GBP 19.95

How can we capture the unpredictable evolutionary and emergent properties of nature in software? How can understanding the mathematical principles behind our physical world help us to create digital w......一起来看看 《The Nature of Code》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具