-
解释一下多态的概念?
一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
Java中有两种方式实现多态。分别是继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法) -
解释一下什么是override?什么是overload?
重载(override):让类以统一的方式处理不同的数据类型数据的手段,实质表现是多个具有不同参数个数或参数类型的同名函数(不能以返回值类型作为区分重载函数的区分标准)同时存在于一个类中,是一个类多态性的一种表现,在调用时通过传递不同的参数类型和参数个数决定使用哪个方法。
重写(overload):指的是父类与子类之间的多态性,实质是对父类函数进行重新定义,如果在子类中定义与父类中相同名称,相同参数个数和参数类型、相同返回类型的函数,则称该方法被重写,不过子类函数的访问权限不能小于父类的,如果子类重写父类的方法,那么将覆盖父类的原方法,如需使用父类的原有方法则需适用super关键字。
JAVA重写和重载的区别 -
interface和abstract class的区别?
abstract class是类,
interface比abstract class更加抽象,使用interface修饰,接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
相同点:abstract class与interface都不能被实例化
不同点:- abstract class可以有构造方法,interface不能
- 抽象类中可以有普通成员变量,接口中没有普通成员变量
- 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
- 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
- 抽象类中可以包含静态方法,接口中不能包含静态方法
- 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
- 一个类可以实现多个接口,但只能继承一个抽象类。
-
java中是否可以多继承,abstract class是否可以实例化
Java中一个类只能继承一个类,但可以实现多个接口,abstract class不能被实例化 -
static关键字,初始化的时间点是什么?没有加static的变量初始化的时间点是什么?
static修饰变量称之为静态变量,静态变量与非静态变量的区别是:静态变量当且仅当在类被初次加载的时候加载,在内存中只有一个副本。非静态变量属于对象,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static修饰的方法被称之为静态方法,不依赖任何对象就可以访问,所以对于静态方法来说,是没有this的,因为他不依赖于任何对象,自然谈不上有this了,正是因为这个特性,所以在静态方法中不能访问类的非静态成员变量和非静态成员方法。因为非静态成员变量和非静态成员方法都必须要依赖具体的对象才能被调用。
但是非静态成员方法中可以访问静态成员变量和静态成员方法。
static修饰代码块称之为静态代码块,可以优化程序性能,static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。
static修饰类只能修饰内部类,称之为静态内部类 ,静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1. 它的创建是不需要依赖外围类的创建。2. 它不能使用任何外围类的非static成员变量和方法。
Java中的static关键字解析 -
java中处处是指针,怎么理解这句话?
-
int i=3;和Integer b = new Integer(); 基础数据类型和引用数据类型都存放在JVM的哪里
-
集合 set与list的区别
list允许重复的元素
list允许多个null值出现
list是一个有序的容器,输入的顺序就是插入的顺序
常见的实现类有ArrayList,LinkedList,VectorSet不允许重复元素
无序容器(Set中可有有序的子类 LinkedHashSet(有序)通过链表的形式保证有序;)
只允许一个null元素
常见的实现类有HashSet,LinkedHashSet以及TreeSet,TreeSet还实现了SortedSet接口,是一个根据compare()与compareTo()的定义进行排序的容器 -
怎么理解线程安全?
有很多进程同时进入一个方法,如果最后运行的结果和依次进入该方法运行出来的结果相同,则称该方法线程安全,反之不安全。
【面试】如果你这样回答“什么是线程安全”,面试官都会对你刮目相看(建议珍藏) -
Http协议了解多少?属于哪一层(应用层),是否有状态?基于TCP协议还是UDP协议?
HTTP协议输入应用层,基于TCP/IP通信协议,承载与TCP之上,HTTP默认端口是80,HTTPS默认端口443
HTTP协议其实就是这么简单
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
HTTPS云云
-
HTTP协议是无状态的,怎么保持状态?
cookie&session -
OAuth2.0协议?
-
Git使用策略? fork clone 概念、branch分支的使用策略、git与SVN的区别?check out 是什么概念?
-
JUnit中before与beforeClass的区别?beforeClass只会在类被调用的时候被实现一次,before会调用多次
-
敏捷式开发是否了解过?
-
什么是反向代理?与正向代理的区别?
正向代理代理的对象是客户端,反向代理代理的对象是服务端
正向代理:隐藏了真实请求的客户端,服务器端不知道真正的客户端是谁,客户端发出的请求都是通过代理服务器来代替请求,
反向代理:隐藏了真实的服务器,反向代理服务器会帮我们把请求转发到真正的服务器上,Nginx就是非常优秀的反向代理服务器,用来做负载均衡。 -
解释一下SpringBoot,和Spring的区别?
-
为什么SpringBoot打出来的是个jar,而之前的Web项目打出来的是war
SpringBoot内置Tomcat,在启动SpringBoot的时候,内置的Tomcat服务器会启动,来加载web应用 -
Docker了解过吗?
-
Jenkins怎么使用的?
-
如果遇到bug,是怎样思考去解决这些问题的?
-
请求反向代理到另一台服务器上,怎么保持session一致性?
session一致性的解决方案
网友评论