Java面试题:面向对象,类加载器,JDBC, Spring 基础概念
来源:SegmentFault
时间:2023-02-16 15:40:55 399浏览 收藏
积累知识,胜过积蓄金银!毕竟在##column_title##开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Java面试题:面向对象,类加载器,JDBC, Spring 基础概念》,就带大家讲解一下MySQL、Redis、Java、nginx、spring知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
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. 什么是多态?
多态简单地说“一个接口,多种实现”。多态的出现使得在不同的场合同一个接口能够提供不同功能,具体地说可以让变量、函数或者对象能够提供多种功能。下面是多态的两种类型:
编译时多态
运行时多态
编译时多态主要是对方法进行重载(overload),而运行时多态主要通过使用继承或者实现接口。
什么是运行时多态,也称动态方法分配?
在 Java 中,运行时多态或动态方法分配是一种在运行过程中的方法重载。在这个过程中,通过调用父类的变量引用被重载的方法。下面是一个例子:
Java面试题:面向对象,类加载器,JDBC, Spring 基础概念
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 内建功能无法使用。可以像下面这样指定参数:
Java面试题:面向对象,类加载器,JDBC, Spring 基础概念
它们的关系如下:
启动类加载器,C++实现,没有父类。
扩展类加载器(ExtClassLoader),Java 实现,父类加载器为 null。
应用程序类加载器(AppClassLoader),Java 实现,父类加载器为 ExtClassLoader 。
自定义类加载器,父类加载器为AppClassLoader。
Java学习交流圈:834962734 ,进群可免费获取一份Java架构进阶技术精品视频。(高并发+Spring源码+JVM原理解析+分布式架构+微服务架构+多线程并发原理+BATJ面试宝典)
6. 什么是JDBC驱动?
JDBC Driver 是一种实现 Java 应用与数据库交互的软件。JDBC 驱动有下面4种:
JDBC-ODBC bridge 驱动
Native-API 驱动(部分是 Java 驱动)
网络协议驱动(全部是 Java 驱动)
Thin driver(全部是 Java 驱动)
7. 使用 Java 连接数据库有哪几步?
注册驱动类
新建数据库连接
新建语句(statement)
查询
关闭连接
8. 列举Spring配置中常用的重要注解。
下面是一些重要的注解:
@Required
@Autowired
@Qualifier
@Resource
@PostConstruct
@PreDestroy
9. 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。
今天带大家了解了MySQL、Redis、Java、nginx、spring的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~
-
499 收藏
-
286 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
208 收藏
-
174 收藏
-
317 收藏
-
371 收藏
-
244 收藏
-
288 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习