基础面试题整理2

1.抽象类与接口区别

语法:

  • 抽象类用abstract定义;接口用interface定义
  • 抽象类被子类继承extends(不可用final修饰);接口被类实现implements
  • 抽象类的属性访问无限制,方法不可用private修饰;接口中的方法只能用public修饰,变量用public static final

语义:

是什么用抽象类(名词),能做什么用接口(动词)

 2.hashcode与equals使用

hashcode用于获取对象的唯一的散列码(整数int)

equals用于比较对象的地址

hashmap是一对一对由key-value组成的数据,hashmap底层是哈希表结构(数组+链表/红黑树),若单一链表的长度大于8个,数组长度大于64个则自动将链表转换为红黑树存储;反之会将红黑树转换为链表存储;

Entry[]数组,Entry对象由hashcode、key、value、下一节点指针组成

put(key,value)原理

  1. key,value封装为node节点
  2. 根据key值生成hashcode
  3. 根据哈希算法算出hashcode在数组中的存放位置(下标),若下标没有数据,则直接将该node节点放在该位置;若下标有链表,则对key与链表的key节点进行比较,若与链表的key都不同,则将该节点放在链表末尾;否则数据value覆盖

get(key)原理 

  1. 根据key值生成hashcode
  2. 根据哈希算法计算出数组的下标,定位到数组位置,若下标没有数据,则返回null;若下标有链表,则拿着key与链表的key节点一一比较,若与链表的key都不同,则返回null;若与链表的某一节点的key值相同,则返回其value值

 哈希表结构如图所示:

3.Java代理方式

 动态代理分为 jdk代理和cglib代理,详情可见 jdk代理 及 cglib代理

jdk代理

代理对象通过实现目标类接口利用反射机制来获取其对应的所有方法,并通过invocationHandler的invoke方法进行调用原生方法及方法增强

cglib代理

代理对象通过继承目标类重写其方法,并通过methodInterceptor的intercept方法进行调用原生方法及方法增强

4.==与equals区别

equals是方法,==是运算符,都是判断是否相等

==:比较的对象若是基本数据类型,则判断数值;若是引用数据类型,则判断对象的地址

equals():判断两个对象的内容是否相等,不可用于基本数据类型变量的比较

5.异常处理机制

异常有抛出异常 throw(方法内部,抛出异常对象)、throws(方法声明);捕获异常try-catch-finally

常见异常

编译异常:ClassNotFoundException、SQLException、IOException

运行异常:NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException

系统错误:OutOfMerroyError

6. 重载与重写

重载与重写都体现了多态性,重载体现了编译多态性,重写是运行时多态性

重载发生在一个类中,只是参数不同

重写发生在父类与子类,只是内容不同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299001.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】STM32学习笔记-DMA数据转运+AD多通道(24)

00. 目录 文章目录 00. 目录01. DMA简介02. DMA相关API2.1 DMA_Init2.2 DMA_InitTypeDef2.3 DMA_Cmd2.4 DMA_SetCurrDataCounter2.5 DMA_GetFlagStatus2.6 DMA_ClearFlag 03. DMA数据单通道接线图04. DMA数据单通道示例05. DMA数据多通道接线图06. DMA数据多通道示例一07. DMA数…

计算机网络(2)

计算机网络(2) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网(2)分组交换网中的时延、丢包和吞吐量时延丢包吞吐量总结 协议层次及其服务模型模型类型OSI模型分析TCP/IP模型分析 追溯历史 小程一言 我…

数据结构——堆排序

什么是堆排序 堆排序就是利用堆(假设利用大堆)进行排序的算法。他的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将他移走(其实就是将其与堆数组的末尾元素交换,…

简单 Web Server 程序的设计与实现 (2024)

1.题目描述 Web 服务是 Internet 最方便与受用户欢迎的服务类型,它的影响力也远远超出了专业技术范畴, 已广泛应用于电子商务、远程教育、远程医疗与信息服务等领域,并且有继续扩大的趋势。目前很多 的 Internet 应用都是基于 Web 技术的&…

Java快速排序希尔排序归并排序

快速排序算法 快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。 一次循环:从后往前比较&…

VMware中删除虚拟机

虚拟机使用完成后,需要删除虚拟机如何操作呢? 1.首先进入VMware 2.选择需要删除的虚拟机,点击右键 3.直接选择“移除”? 当然不是,这只是从这么目录显示中去掉了,并非 “真正” 删除该虚拟机 注意&#x…

使用sentinel作为熔断器

什么是sentinel Sentinel,中文翻译为哨兵,是为微服务提供流量控制、熔断降级的功能,它和Hystrix提供的功能一样,可以有效的解决微服务调用产生的“雪崩”效应,为微服务系统提供了稳定性的解决方案。随着Hytrxi进入了维…

labelme的json转mask,实测有效

1、创建一个conda的虚拟环境 conda creat -n labelme python3.82、转到你的标注文件夹(包括json和图片) cd C:/Users/Administrator/Desktop/json3、你需要在标注文件夹下用txt写下以下代码,并保存bat文件。 放在最后一个就可以了 echo of…

Python的核心知识点整理大全66(已完结撒花)

目录 D.3 忽略文件 .gitignore 注意 D.4 初始化仓库 D.5 检查状态 D.6 将文件加入到仓库中 D.7 执行提交 D.8 查看提交历史 D.9 第二次提交 hello_world.py D.10 撤销修改 hello_world.py 注意 D.11 检出以前的提交 往期快速传送门👆(在文…

微服务实战系列之Filter

前言 Filter,又名过滤器,当然不是我们日常中见到的,诸如此类构件: 而应该是微服务中常使用的,诸如此类(图片来自官网,点击可查看原图): 一般用于字符编码转换&#xf…

MySQL--基础篇

这里写目录标题 总览MySQl各个阶段基础篇总览 MySQL概述数据库相关概念查看本机MySQL版本号启停mysql打开windows服务管理windows命令行启停 连接mysql客户端mysql运行逻辑数据模型关系型数据库 总结 SQL总览SQL通用语法SQL语句分类DDL数据库操作表操作查询表创建表结构数据类型…

【Web开发】会话管理与无 Cookie 环境下的实现策略

🍎个人博客:个人主页 🏆个人专栏: Web开发 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 问题: 思路: 方法: 结语 我的其他博客 前言 在当今Web应用程序中,会话…

C语言-第十八周做题总结-数组3

id:454 A.字符串逆序 题目描述 输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。 输入 输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。 输出 在一行中输出逆序后的字符串。 输入样例 输出样例 题解 先用一个while…

gRCP - 面向未来的第二代 RPC 技术,解析 HTTP2.0 和 Protobuf

目录 一、gRCP - 面向未来的第二代 RPC 技术 1.1、gRPC 简介 1.1.1、gRPC 是个啥? 1.1.2、gRPC 核心设计思路 1.1.3、gRPC 和 ThriftRPC 区别 1.1.4、为什么使用 gRPC?(好处) 1.2、HTTP2.0 协议 1.2.1、回顾 HTTP1.0 和 H…

C# Entity Framework 中不同的数据的加载方式

延迟加载 延迟加载是指在访问导航属性时,Entity Framework 会自动查询数据库并加载相关数据。这种方式在我们需要访问导航属性时比较方便,因为我们无需手动加载相关数据,而且只会在需要时才会进行查询,从而减少了不必要的开销。但…

基于商品列表的拖拽排序后端实现

目录 一:实现思路 二:实现步骤 二:实现代码 三:注意点 一:实现思路 后台实现拖拽排序通常需要与前端进行配合,对商品的列表拖拽排序,前端需要告诉后端拖拽的元素和拖动的位置。 这里我们假…

【远程计算机,这可能是由于 Credssp 加客数据库修正】解决方案

1、winR打开运行窗口 输入gpedit.msc命令,若找不到,可以进行如下文件编辑格式为cmd echo offpushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Win…

Linux stm32串口下载程序

一、工具 使用stm32flash进行串口下载 二、stm32flash安装 sudo apt-get install stm32flash 三、查看串口设备名称 先拔掉串口运行下面指令,获得所有设备名称,插上串口再运行一次,新增的就是串口设备名称,记住串口设备名称,以…

Linux目录结构及路径描述方式

1.Linux目录结构 Linux与Windows不同,Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面 2.Linux路径的描述方式 在Linux系统中,路径之间的层级关系,使用:/ 来表示 在Windows系统中,路径之间的层级关系…

echarts图表会残留上一条数据的折线 setOption参数的第二个坑

记一下小坑 因为我的echarts图表的 series 是循环渲染上去的 所以他可能会有一条 或多条 我展示完多条的图表后 关闭 打开单条数据的图表 发现 他会残留上一个图表的数据 显示多条 之前我还以为是后端返回错了 但是log打印和查看请求数据 确实发现是我这边的问题 原因&#…