2024年秋招后端面经_浦发后端开发 面经

	- [22.2 进程通信](#222__885)
	- [22.3查看磁盘使用情况](#223_900)
+ [23 Integer 和 int](#23_Integer__int_916)
+ [24 .排序(虾皮)](#24__920)
+ - [24.1 堆排序的时间复杂度](#241__922)
	- [24.2.TopK(往一个结点不断发送字符串,返回字符串字典序大(小)的十个)](#242TopK_962)
+ [25.开发模式](#25_970)
+ [26.数据结构](#26_976)

1.自我介绍

2.项目介绍

3.接口和抽象类的区别

1.抽象类:如果一个类中包含了抽象方法,那么这个类就是抽象类.在Java中可以通过把某些方法声明abstract(abstract只能用来修饰类或者方法不能用来修饰属性)来表示一个类是抽象类。

2.接口就是一个方法的集合,接口中所有的方法都是没有方法体的,通过关键字interface来实现

相同点:

1)都不能被实例化

2)接口的实现类或者抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化

不同点:

1.在Java8之前接口只有定义,其方法不能在接口中实现(Java8 之后接口方法可以有默认实现),只有实现接口的类才能实现接口中定义的方法。抽象类可以定义和实现,即其方法可以在抽象类中实现 。抽象类可以有非抽象方法

2.一个类可以实现(implements)多个接口,但是最多只能实现(extends)一个抽象类。因此接口可以间接的达到多重继承的目的

3.接口强调的是特定功能的实现,设计理念是一种"has - a"的关系,而抽象类强调的所属关系,其设计理念是"is - a"的关系(ps: has -a 这种事物(羊毛)属于那种事物的一部分(绵羊)! is - a 这种事物(绵羊)属于那种事物(羊)的一个种类)

4.接口中的成员(实例)变量默认为public static final 只能够有静态的不能被修改的数据成员,而且必须给其赋初值,接口中的方法只能用public 和 abstract修饰.但是抽象类不一定

接口是一种特殊形式的抽象类,使用接口完全有可能实现与抽象类相同的操做.通常接口用于比实现比较常用的功能,便于日后维护或者添加删除方法;而抽象类更倾向于充当公共类的角色,不适用于日后重新对里面的代码进行修改.此外接口可以继承接口,抽象类可以实现接口,抽象类也可以继承具体的类,抽象类中可以有静态的main方法

4.多态

多态表示当同一个操作作用在不同对象时,会有不同的语义,从而产生不同的结果。3+4和“3”+“4”

Java的多态性可以概括成"一个接口,两种方法"分为两种编译时的多态和运行时的多态。编译时的多态主要是指方法的重载(overload),运行时的多态主要是指方法的覆盖(override),接口也是运行时的多态

运行时的多态的三种情况:

1、父类有方法,子类有覆盖方法:编译通过,执行子类方法。

2、父类有方法,子类没覆盖方法:编译通过,执行父类方法(子类继承)。

3、父类没方法,子类有方法:编译失败,无法执行。

方法带final、static、private时是编译时多态,因为可以直接确定调用哪个方法。

5.重载和覆盖

重载:发生在一个类中,方法名必须相同,参数类型不同,个数不同,顺序不同,方法返回值和访问修饰符可以不同,发生在编译时

重写:发生在父子类中,方法名,参数列表必须相同,返回值必须小于等于父类,抛出异常的范围必须小于等于父类,访问修饰符范围必须大于等于父类,父类为private则不能重写

函数时不能以返回值来区分的,返回值时函数运行之后的一个状态。保持调用这与被调用这之间的通信

6.spring

1.动态代理

代理类在程序运行时创建的代理方式被称为动态代理。代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。方法实现前后加入对应的公共功能

基于接口

jdk的动态代理时基于Java 的反射机制来实现的,是Java 原生的一种代理方式。他的实现原理就是让代理类和被代理类实现同一接口,代理类持有目标对象来达到方法拦截的作用。通过接口的方式有两个弊端一个就是必须保证被代理类有接口,另一个就是如果相对被代理类的方法进行代理拦截,那么就要保证这些方法都要在接口中声明。接口继承的是java.lang.reflect.InvocationHandler;

基于继承

cglib动态代理使用的ASM这个非常强大的Java字节码生成框架来生成class ,比jdk动态代理ide效率高。基于继承的实现动态代理,可以直接通过super关键字来调用被代理类的方法.子类可以调用父类的方法

2.AOP

面向切面编程。(Aspect-Oriented Programming) 。AOP可以说是对OOP的补充和完善。OOP引入封装、 继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。实现AOP的技术,主要分为两大类: 一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入 的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码,属于静态代理。

1.面向切面编程提供声明式事务管理
2.spring支持用户自定义的切面

面向切面编程(aop)是对面向对象编程(oop)的补充, 面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。 AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象, 是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。

aop框架具有的两个特征:
1.各个步骤之间的良好隔离性
2.源代码无关性

2.1AOP

springAOP 的具体加载步骤:

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值