发布时间:2026/8/26 6:15:20
Java基础面试知识点01 1. 什么是面向对象谈谈你对面向对象的理解对比面向过程面向过程更注重每个步骤面向对象更注重事情的参与者。举例洗衣服面向过程将任务拆解成一系列步骤函数打开洗衣机-放衣服-放洗衣粉-清洗-烘干面向对象拆出人和洗衣机两个对象人打开洗衣机放衣服放洗衣粉洗衣机清洗、烘干面向过程直接高效而面向对象更易于复用、扩展和维护。三大特性封装明确标识出允许外部使用的所有成员函数和数据项。内部细节对外部调用透明外部调用无需在意内部实现。继承继承基类的方法并做出自己的改变和扩展。子类共性的方法或者属性直接使用父类的而不需要自己再定义只需扩展自己个性化的内容。多态基于对象所属类的不同外部对同一个方法的调用实际执行的逻辑不同。实现前提继承、方法重写、父类引用指向子类对象。2. JDK、JRE、JVM三者区别和联系JDKJava Development KitJava开发工具包JREJava Runtime EnvironmentJava运行时环境JVMJava Virtual MachineJava虚拟机3. 和 equals 比较对比的是栈中的值基本数据类型比较变量值引用数据类型比较堆中对象的内存地址。equalsObject类中默认实现也是使用比较地址但常用类一般会重写该方法。String类重写后的equals()方法用于比较两个字符串存储的内容是否一致。4. 简述final作用为什么局部内部类和匿名内部类只能访问局部final变量final修饰作用修饰类表示该类不可被继承修饰方法表示方法不能被重写Override但可以被子类继承调用修饰变量变量仅能赋值一次基本类型值不可修改引用类型引用地址不可修改内部类访问局部变量限制原因核心原因生命周期不同。局部变量随方法出栈销毁内部类对象存于堆中生命周期可能远长于方法。编译器会给内部类拷贝一份该变量的副本。若不限制final外部可修改原局部变量副本与原值数据不一致会产生bugfinal限定变量不可修改保证两处读取数据统一避免脏数据问题。局部变量存储在栈中方法执行结束变量立即销毁内部类对象存储在堆中可被外部引用赋值生命周期远超当前方法编译器备份机制Java编译器会把局部变量拷贝一份作为内部类隐藏成员变量。如果变量不加final外部修改原始变量内部类使用副本两份数据不一致引发异常。因此Java强制要求被访问的局部变量必须用final修饰保证数据一致性。5. String、StringBuffer、StringBuilder区别及使用场景String被final修饰字符串不可变每次修改拼接都会生成新String对象。StringBuffer和StringBuilder在原有对象缓冲区上直接操作不会频繁创建新对象。StringBuffer方法添加synchronized修饰线程安全StringBuilder无同步锁线程不安全。性能排序StringBuilder StringBuffer String使用场景频繁修改字符串内容优先选用后两者单线程场景优先StringBuilder多线程共享操作字符串时使用StringBuffer。6. 重载和重写的区别重载Overload发生在同一个类中方法名必须相同参数类型、个数、顺序不同返回值与访问修饰符无强制限制编译期确定。作用同一方法名适配多种入参方便调用publicvoidshow(){}publicvoidshow(inta){}// 重载publicvoidshow(Strings){}// 重载重写Override发生在父子类之间方法名、参数列表必须完全一致子类返回值范围≤父类抛出异常范围≤父类访问权限≥父类父类private修饰的方法无法被子类重写。作用子类覆盖父类原有方法自定义业务逻辑classFather{publicvoidrun(){}}classSonextendsFather{Overridepublicvoidrun(){}// 重写父类run}7. 接口和抽象类的区别继承机制抽象类类与类单继承一个类只能继承一个抽象类接口支持多实现一个类可以同时实现多个接口成员属性抽象类变量修饰符无限制可定义实例变量、静态变量支持修改接口成员变量默认public static final属于常量必须初始化且不能修改方法定义抽象类可包含普通实例方法、static静态方法、抽象方法抽象方法权限可为public、protected接口抽象方法默认public abstractJava8新增default默认方法、static静态方法设计思想抽象类抽取多个子类共有属性与行为体现is-a继承关系接口定义行为规范只约束具备哪些功能不关注类本身属性使用场景关注事物本质共性使用抽象类只需要定义一组操作行为使用接口。8. List和Set的区别元素重复性List允许存储重复元素Set不允许元素重复依靠equals()hashCode()联合判断去重有序性与下标访问List存取有序自带索引下标可通过get(int index)按位置取值SetHashSet无序无索引不能按下标获取元素LinkedHashSet按照插入顺序排序TreeSet按照元素自然顺序排序遍历方式List支持普通for下标遍历、迭代器、增强for循环Set无下标仅可使用迭代器、增强for循环遍历9. ArrayList和LinkedList区别ArrayList底层基于动态数组连续内存存储随机下标查询效率高。数组容量不足时执行扩容新建数组拷贝原数据非尾部插入删除需要批量移动元素。初始化指定容量并尾部插入性能甚至优于LinkedListLinkedList需要频繁创建Node节点。LinkedList底层双向链表内存分散存储插入删除仅修改指针无需移动元素无索引结构遍历查询需要逐个节点遍历。禁止使用普通for循环搭配get(i)遍历每次get都会从头遍历链表性能损耗极大也不建议依靠indexOf获取索引遍历查找不到时会遍历整个链表推荐使用迭代器遍历。10. HashMap和HashTable有什么区别HashMap底层实现是什么二者区别HashMap方法无synchronized修饰非线程安全HashTable方法加同步锁线程安全。HashMap允许key、value为nullHashTable不允许key和value存入null。JDK1.8 HashMap底层实现主体结构数组 链表 红黑树节点以内部类Node存储。计算key哈希值经过二次扰动后对数组长度取模确定数组下标下标位置无元素直接存入Node节点发生哈希冲突调用equals比对keykey相同则覆盖valuekey不同则挂载链表链表长度达到8且数组容量大于等于64时链表转为红黑树红黑树节点数低于6时退化为链表key为null时统一存放在数组下标0位置。

相关新闻

2026/8/25 15:13:23

使用wechatapi接入本地AI引擎当网关

技术支持 wechatapi.net 我最近一直在重新想一个问题: 如果手里已经有微信 API 能力,最值得做的到底是什么? 以前最自然的想法当然是卖接口。 比如: 登录接口消息回调接口发文本接口发图片接口其他管理接口 这条路当然可以做&am…

2026/8/25 2:40:19

Windows右键菜单终极整理指南:3步打造高效工作流

Windows右键菜单终极整理指南:3步打造高效工作流 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单的杂乱无章而烦恼&#x…

2026/8/26 6:14:49

Granite 4模型如何颠覆嵌入式开发?本地AI编程助手实战

我这些年一直在折腾嵌入式开发,从8051到Cortex-M再到RISC-V,写过的底层代码不算少,调试过的板子也堆满了半个工作台。说实话,嵌入式开发这个圈子,工具链的变化其实很慢,几十年了还是C语言打底,寄…

2026/8/26 6:14:49

Python手工全景拼接:图割消除鬼影与多频段融合消除裂缝

简介:图像拼接是计算机视觉中一项基础且实用的技术,常被用于生成全景图。其核心流程分为图像配准与融合两个阶段,前者通过特征点匹配估算单应矩阵,后者将变换后的图像拼合为完整画面。然而,在动态场景或曝光差异较大的…

2026/8/26 6:14:49

隔离式USB串口桥设计指南:从地环路到电源隔离的完整方案

在工业现场折腾设备调试的工程师,恐怕都经历过这样的场景:单片机通过USB转串口连到工控机,明明接线没错、驱动也装了,可数据就是莫名其妙地乱码,甚至调试到一半,USB转串口模块直接烧了,顺带把电…

2026/8/26 6:14:49

Optitrack与PX4室内高精度定位:从原理到实战部署指南

1. 项目概述:为什么要在室内用Optitrack定位PX4?如果你玩过PX4,肯定知道它在室外靠GPS飞得挺稳。但一进室内,GPS信号一断,飞控立马就“懵”了,悬停?航线?想都别想。这时候&#xff0…

2026/8/26 6:14:49

软件测试工程师面试自我介绍的底层逻辑与实战技巧

1. 软件测试工程师面试自我介绍的底层逻辑面试中的自我介绍从来不是简单的复述简历内容,而是一场精心设计的价值展示。作为从业多年的测试工程师,我见过太多候选人把这段黄金时间浪费在无效信息上。实际上,好的自我介绍应该像测试用例一样结构…

2026/8/26 6:09:49

Ubuntu系统精准安装与管理多版本CUDA与cuDNN实战指南

1. 项目概述:为什么需要精确控制CUDA与cuDNN版本? 在深度学习、科学计算或者高性能图形处理领域工作过一段时间的朋友,大概率都遇到过版本依赖的“地狱”。一个项目需要CUDA 11.3,另一个项目则指定了CUDA 12.1,而你手…

2026/8/25 1:04:19

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 11:48:27

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 16:56:43

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 0:04:32

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 1:19:35

JSON总结

JSON概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C、C#、Java、JavaScr…

2026/8/26 1:19:35

保存连接sse 是什么原理,为什么不会一直请求

“保持连接”用的是 SSE(Server-Sent Events),本质是一个没有马上结束的 HTTP 请求。 过程是: 拷贝机发送一次请求: GET /api/code-sync/events服务器返回: Content-Type: text/event-stream但不关闭响应&…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/25 1:08:14

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…