1.抽象类和接口类的异同?
抽象类和接口的区别为:表示内容不同、性质不同、成员变量不同。
1、抽象类:抽象类表示该类中可能已经有一些方法的具体定义。
2、接口:接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。
2.重载和重写的区别有以下几点:
一、定义上的区别:
1、重载是指zhi不同的dao函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。
2、覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。
二、规则上的不同:
1、重载的规则:
①必须具有不同的参数列表。
②可以有不同的访问修饰符。
③可以抛出不同的异常。
2、重写方法的规则:
①参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
②返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
③访问修饰符的限制一定要大于被重写方法的访问修饰符。
④重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
三、类的关系上的区别:
重写是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。
3.Java中private、protected、public和default的区别
区别:
public:可以被所有其他类所访问
private:只能被自己访问和修改
protected:自身、子类及同一个包中类可以访问
default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly。
4.java 中 “==” 和 equals 的区别
1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
2)对于equals方法,equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
5.Java语言中 static方法与非static方法的区别是什么?
static方法是静态方法,没有static的是非静态方法。
非静态方法访问静态或者非静态成员的方式是一样的,可以直接访问。
非静态方法必须创建对象才能访问非静态成员。静态方法可以不创建对象,直接访问静态成员,也可以通过创建对象来访问。
6.简述JDK, JRE, JVM是什么,区别是什么?
JDK是Java开发工具包,JDK是整个JAVA的核心,包括了Java运行环境JRE
JRE是Java运行环境,是运行基于Java语言编写的程序所不可缺少的运行环境。
JVM是Java虚拟机,整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
7.简述Java语言中final修饰符的用法与意义
1. 被final修饰的类不能被继承
2. 被final修饰的方法不能被重写
8.Java语言中,多态性是指什么?
多态性:拥有“多种形态”的含义,是指属性或方法在子类中表现为多种形态。
在JAVA中有两种多态是指:运行时多态和编译时多态。多态性是面向对象的核心特征之一,类的多态性提供类中成员设计的灵活性和方法执行的多样性。
9.Java中接口(interface)与抽象类(abstract)的区别
(1) 接口中只能有方法的声明,不可以有方法的实现。而抽象类中可以有方法的声明和实现(但抽象函数不能有具体的实现)。
(2) Java没有多重继承机制,但是类可以实现多个接口,接口弥补了Java没有多重继承的缺点。而类只能继承于一个抽象类
10.java execute,executeQuery和executeUpdate之间的区别
executeQuery()—直接从数据库中获取数据,只能执行select语句
executeUpdate()—对数据库进行insert,delete或者update
execute()—所有对数据库的操作都可以使用此方法
11.简述服务器端程序中cookies的作用
实现网页之间数据传递,是一个存储在服务器端的对象集合。
12.列举Maven工具的功能作用
Maven 是专门用于构建和管理Java相关项目的工具。
Maven管理的Java 项目都有着相同的项目结构
便于统一维护jar包。
13.简述以下3个关键字的用法或作用 - final,finally,finalize
final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。
finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System的gc()方法的时候,由垃圾回收器调用finalize(),回收垃圾。
14.简述JDBC驱动器(JDBC Driver)是什么,作用是什么
JDBC(Java DataBase Connectivity,java数据库连接)bai是一种用于执行SQL语句的Java API,可以为多种关du系数据库提供统一访zhi问,它由一组用Java语言编写的类dao和接口组成。
15.JDBC中的ResultSet接口的作用是什么?
ResultSet对象表示表的一行。 它可用于更改光标指针并从数据库中获取信息。
16.简述Java语言中的封装是指什么,如何实现?
封装是一种将抽象性接口的实现细节都包装和隐藏起来的方法,它具有减少耦合,类内部结构可以修改,成员变量精准控制的优点
java封装类通过三个步骤实现:
(1)修改属性的可见性,限制访问。
(2)设置属性的读取方法。
(3)在读取属性的方法中,添加对属性读取的限制。
18.@Controller和@RestController的区别?
1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
19.String、StringBuffer与StringBuilder之间区别?
String:String的值是不可变的,对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间
StringBuffer:StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量
StringBuilder:可变类,速度更快
20.Java中的8种基本数据类型
1.四种整数类型(byte、short、int、long)
2.两种浮点数类型(float、double)
3.一种字符类型(char)
4.一种布尔类型(boolean)
21.视图,存储过程,函数,触发器
视图:视图是由查询结果形成的一张虚拟表,是表通过某种运算得到的一个投影
存储过程:把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现(经过第一次编译后再次调用不需要再次编译,比一个个执行sql语句效率高)
函数:MySQL中提供了许多内置函数,还可以自定义函数(实现程序员需要sql逻辑处理)Max . Min avg平均数 RAND 随机数 CONCAT值
触发器:触发器是一个特殊的存储过程,它是MySQL在insert、update、delete的时候自动执行的代码块。
22.对pring的理解?
1. spring框架是一个开源而轻量级的框架,是一个IOC和AOP容器
2. spring的核心就是控制反转(IOC)和面向切面编程(AOP)
3. 控制反转(IOC):是面向对象编程中的一种设计原则,用来降低程序代码之间的耦合度,
SpringIOC ,其实就是依赖注入、控制反转。相当于把每个bean与bean之间的关系交给第三方容器管理;而这个容器就是spring。
- SpringAOP 面向切面的编程,或AOP,是一种编程技术,允许程序模块化横向切割关注点,或者横切典型的责任划分,主要应用如日志和事务管理。 SpringAop的底层实现机制就是用JDK动态代理:对实现了接口的类生成代理。
23.什么是SpringBoot?
Spring Boot是一种框架,
他是用来简化Spring开发和搭建的
该框架使用了特定的方式来进行配置,
使开发人员不再需要定义样板化的配置。
24.SpringCloud是什么?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简
化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、
熔断器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
25.项目中为什么使用SSH?
1. 使用Struts:因为struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;如能灵活运用,则能大大提高开发效率。
2. 使用Hibernate:因为hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能丰富。
3. 使用Spring:因为spring基于IoC(Inversion of Control,反向控制)和AOP构架多层j2ee系统的框架,
采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现事务管理(Transcation Managment),等等
--------------------------------------------------------------以上是部分面试题总结--------------------------------------------------------------