重生之我在地球Online当程序员18

拓展
1.什么叫多态.

-父类的引用指向子类的对象

-接口的引用指向实现类的对象

-多态时,方法名列表看父类,执行过程看子类.

-常规类->抽象类->接口 : 三者从大范畴上都属于类,三者的演变是一个逐步变得残缺的过程.

2.重载与重写.

-同一个类里,两个方法,同名不同参,叫作重载.

-注意同名又同参,但返回不同,不能构成重载.

-两个类里,子类重写父类方法,实现类重写接口方法.

3.谈谈堆,栈,常量池,以及无限递归为什么发生栈溢出?常量池的去重特性是什么?如何证明?

-基础型数据存栈

-对象型数据,引用部分存栈,对象内容部分存堆.

-字符串可以存常量池,可以存堆.

-堆空间受垃圾回收机制管理,不易溢出.

-栈空间不受垃圾回收机制管理,会随方法作用域即时回收,无限递归会造成出不了方法作用域,栈堆积,溢出.

4.List与Set的区别,Arraylist与LinkedList的区别,HashSet与TreeSet的区别.

-List有序,也就是遵循放入顺序

-Set无序,也就是不遵循放入顺序.但不代表随机乱序,而是有内在的固定顺序.

(HashSet内在顺序不可自定义,TreeSet内在顺序可以自定义,通过传入比较器.)

-少数非主流list或set不符合以上规则.

-ArrayList底层是数组,读取快,增删慢.LinkedList底层是链表,读取慢,增删快.

5.try-catch-finally中,catch提前return,finally还会不会执行?finally常用来干什么,static代码块常用来干什么?

-无论是try还是catch内提前return,finally都一定会执行.

-finally一般用来最终清理资源.

-静态代码块一般用来初始化资源.

6.==/equals()/hashcode()区别?String的equals()与hashcode()为什么针对内容?

-默认对象中,三者均针对地址.

-==不可重写,后二者可重写,重写后可以针对地址,也可以针对内容.

-String中的equals()/hashcode()都是重写过的,所以针对内容.

-对于一个自定义类,我们一旦重写了equals(),就要同步重写hashcode(),这个规范是用来满足hashset类集合判重的.

7.Set<高级类型>内部是如何判重的?为什么hashcode()判断相同后还要用equals()二次判断?

-Set类集合内部判重,都是hashcode()/equals()联合判断,具体流程先判hashcode()

,hashcode()不同,则直接判定两成员不同

,hashcode()相同,则用equals()做最终判断.

-hashcode()性能好,所以用hashcode()做快筛,但是它不准确,只能判假,不能判真

,而equals()性能不好,但是准确,真假都能判.

Aa BB 两的hash值都是2112

8.调用函数时,形参的改变能否影响实参?用实验证明你的观点.

-对于基础型数据,形参改变不能影响实参.

-对于对象型数据,形参改变要看哪一种改变

,引用关系的改变无法影响实参

,内容的改变可以影响实参.

9.final的作用,尤其是修饰高级类型对象时,什么可变什么不可变?

-final修饰类,代表类不可被继承.

-final修饰方法,代表方法不可被重写.

-final修饰变量,代表变量的引用关系不可改变,内容可变.

10.排序为什么要使用比较器?比较器中重写的那个方法会被触发1次还是多次?该片段对整个排序有何作用?

-比较器内部封装了一些基础排序算法.

-基础排序算法都会有两两比对的过程,比较器开放了这一过程给开发者重写,填充业务逻辑.

-所以重写的那个方法会被触发多次.

-比较器节省了我们写基础排序算法的精力,可以使我们更加专注于业务上的多字段排序需求.

(比如员工列表,先按入职日期排序,相邻同时入职的人再按年龄排序,…)

11.stream+lambda操作中并行流的特点?什么是工作窃取机制.

image-20240530155607766

工作窃取机制,是并行流中的特点,当某一个流水线没有任务时,会从其他的流水线上偷任务过来执行!

如果任务有一定的顺序要求,选择:串行流

如果任务和任务没有多大的数据影响,可以:并行流

  1. 并行流的适用场景:并行流适用于处理大量数据、复杂的计算或需要并行执行的操作。如果数据量较小或操作较简单,则顺序流可能更适合。

  2. 并行流的顺序性:并行流的处理可能是无序的,操作可能以不确定的顺序执行。因此,如果需要保持元素的顺序或依赖操作的顺序,请谨慎使用并行流

5.String/StringBuilder/StringBuffer区别,为什么日常使用StringBuilder而不担心线程安全问题?

-Stri

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值