备战Java面试时查漏补缺到的知识(个人笔记)(一)

Docker小白也能搞定!5分钟用calibre-web搭建私人Kindle书库(附静读天下配置) 本文为零基础用户提供了一份详尽的指南,介绍如何利用Docker容器技术,在5分钟内快速部署Calibre-Web服务,从而搭建一个完全私有的个人Kindle书库。教程涵盖了从Docker安装、Calibre-Web一键部署、书籍元数据管理到移动端配置的全流程,并重点讲解了如何与安卓端知名阅读应用“静读天下”联动,实现跨设备无缝访问,打造媲美在线书城的个性化阅读体验。 阅读详情
  • Java参数传递的方式只有值传递一种
    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
    是值传递。Java 语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。
    eg:要想实现引用传递也可以:
    使用Wrapper 类(将需要通过方法
    调用修改的引用置于一个 Wrapper 类中,再将 Wrapper 对象传入方法)
    - 解释为什么函数不能根据返回类型来区分重载
void f() {}
int f() {}

因为调用时不能指定类型信息,编译器不知道你要调用哪个函数。若编译器可根据上下文(语境)明确判断出含义,比如在 int x=f()中,那么这样做完全没有问题。然而,我们也可能调用一个方法,同时忽略返回值;我们通常把这称为“为它的副作用去调用一个方法”,因为我们关心的不是返回值,而是方法调用的其他效果。所以假如我们像下面这样调用方法: f(); Java 怎样判断 f()的具体调用方式呢?而且别人如何识别并理解代码呢?由于存在这一类的问题,所以不能。
函数的返回值只是作为函数运行之后的一个“状态”,他是保持方法的调用者与被调用者进行通信的关键。并不能
作为某个方法的“标识”。

  • equals() 和 hashcode()的关系
    两个对象值相同 (x.equals(y) == true) 则该两个对象的hashcode值一定相等,但反过来却不成立Java 对于 eqauls 方法和 hashCode 方法是这样规定的:
    (1)如果两个对象相同(equals 方法返回 true),那么它们的 hashCode 值一定要相同;
    (2)如果两个对象的 hashCode 相同,它们并不一定相同。

  • 还有大家耳熟能详的面向对象的特征(封装、继承、多态、抽象),脑子里都懂但真正让你解释清楚,能说的明白吗?

**1)继承**:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继
承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的
重要手段。
**2) 封装**:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象
的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我
们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程
接口。
**3) 多态性**:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调
用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外
界提供的服务,那么运行时的多态性可以解释为:当 A 系统访问 B 系统提供的服务时,B 系统有多种提供服务的方式,
但一切对 A 系统来说都是透明的。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写
(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做
两件事:1. 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2. 对象造型(用父类型引用引用子类型对
象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
**4)抽象**:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对
象有哪些属性和行为,并不关注这些行为的细节是什么。


  • 使用clone()方法的细节
    要注意深拷贝和浅拷贝的细节
 public class Person implements Cloneable{
 privatint age ;
 private String name;
 public Person(int age, String name) {
 this.age = age;
 this.name = name;
 }
 public Person() {}
 public int getAge() {
 return age;
 }
 public String getName() {
 return name;
 }
@Override
protected Object clone() throws CloneNotSupportedException {
 return (Person)super.clone();
 }
}

由于 age 是基本数据类型,那么对它的拷贝没有什么疑议,直接将一个 4 字节的整数值拷贝过来就行。但是 name是 String 类型的, 它只是一个引用, 指向一个真正的 String 对象,那么对它的拷贝有两种方式: 直接将原对象中的 name 的引用值拷贝给新对象的 name 字段, 或者是根据原 Person 对象中的 name 指向的字符串对象创建一个新的相同的字符串对象,将这个新字符串对象的引用赋给新拷贝的 Person 对象的 name 字段。这两种拷贝方式分别叫做浅拷贝和深拷贝。深拷贝和浅拷贝的原理如下图所示:
在这里插入图片描述
下面通过代码进行验证。如果两个 Person 对象的 name 的地址值相同, 说明两个对象的 name 都指向同一个String 对象,也就是浅拷贝, 而如果两个对象的 name 的地址值不同, 那么就说明指向不同的 String 对象, 也就是在拷贝 Person 对象的时候, 同时拷贝了 name 引用的 String 对象, 也就是深拷贝。验证代码如下:

Person p = new Person(23, "zhang");
Person p1 = (Person) p.clone();
String result = p.getName() == p1.getName()
? "clone 是浅拷贝的" : "clone 是深拷贝的";
System.out.println(result);

结果肯定为:clone 是浅拷贝的
所以,clone 方法执行的是浅拷贝, 在编写程序时要注意这个细节。

如何进行深拷贝:
由以上的内容可以得出如下结论:如果想要深拷贝一个对象,这个对象必须要实现 Cloneable 接口,实现 clone方法,并且在 clone 方法内部,把该对象引用的其他对象也要 clone 一份,这就要求这个被引用的对象必须也要实现Cloneable 接口并且实现 clone 方法。那么,按照上面的结论,实现以下代码 Body 类组合了 Head 类,要想深拷贝Body 类,必须在 Body 类的 clone 方法中将 Head 类也要拷贝一份。代码如下:

 static class Body implements Cloneable{
 public Head head;
 public Body() {}
 public Body(Head head) {this.head = head;}
 @Override
 protected Object clone() throws CloneNotSupportedException {
 Body newBody = (Body) super.clone();
 newBody.head = (Head) head.clone();
 return newBody;
 }
}
static class Head implements Cloneable{
 public Face face;
 public Head() {}
 @Override
 protected Object clone() throws CloneNotSupportedException {
 return super.clone();
 } }
public static void main(String[] args) throws CloneNotSupportedException {
 Body body = new Body(new Head(new Face()));
 Body body1 = (Body) body.clone();
 System.out.println("body == body1 : " + (body == body1) );
 System.out.println("body.head == body1.head : " + (body.head == body1.head));
}

结果为:

 body == body1 : false
 body.head == body1.head : false

ps:今天就是1024程序员的节日,提前祝各位程序员节日快乐,心想事“橙”!
在这里插入图片描述

告别城市峡谷定位漂移:手把手教你用PSINS仿真INS/NHC/ODO组合导航(附代码获取) 本文详细解析了INS/NHC/ODO组合导航系统在城市峡谷环境中的应用,通过PSINS平台实现精准定位。文章涵盖核心原理、环境搭建、算法实现及性能优化,帮助开发者解决GNSS信号中断时的定位漂移问题,提升自动驾驶系统在复杂环境中的可靠性。 阅读详情

相关推荐

基于STM32F407标准库与SimpleFOC实现无刷电机2804位置闭环控制的实战解析

本文详细解析了基于STM32F407标准库与SimpleFOC算法实现2804无刷电机位置闭环控制的实战过程。通过硬件选型、速度闭环调试到位置环PID参数整定,提供了完整的工程实现方案和抗饱和策略,帮助开发者掌握高精度电机控制技术。

oauth7security的博客 916

备战Java面试时查漏补缺到的知识(个人笔记)(二)

java数据类型转换 问题的引出: 该题考查两个知识点final用法和数据类型转换 首先知道final修饰的变量是一个常量不能修改其值,所以语句4错误,对于语句1、2、3,需要清楚一个知识点: 当使用 +、-、、/、%、运算操作是,遵循如下规则*:** 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型,如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型,如果两个操作数中有一个是long类型的..

一名Java语言狂热分子。 4046

实验六 有源滤波器

实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路

胡毛毛的博客 1万+

查漏补缺:备战2020年java后端岗高频面试题(含答案解析)

java后端面试题及答案 前言 这几天很多小伙伴加到我,小木哥,年后我准备跳槽面试了,该怎么做准备 哎,我也是一头苦恼啊,还能怎么办,那就是干呗,多看下高频面试题,多研究研究源码,总会对你有帮助的 最近几天我也算吐血整理了,一直在更新面试题系列,昨天晚上又熬了一个通宵,下面把下面13道面试题整理发布给大家,也是希望对大家有所帮助 来都来了,点个赞呗 文末领取博主为大家准备的面试渡劫大礼包喔 1...

JAVA木笙 9102

5分钟搞懂Paris公式:如何用裂纹扩展速率预测零件寿命(附Python代码示例)

本文详细介绍了Paris公式在裂纹扩展速率预测零件寿命中的应用,通过Python代码示例展示了从理论到实践的完整流程。文章涵盖了Paris公式的工程本质、寿命预测计算流程、几何修正因子选择以及实际案例演示,帮助工程师快速掌握这一关键技术。

weixin_29309475的博客 426

步进电机励磁模式

1. 励磁模式 步进电机的基本操作模式称为 励磁模式,能够使步进电机工作在全步模式,半步模式和微步模式,其中微步模式能够有效的降低步进电机相电流的噪声,能够改善步进电机固有的噪声震动问题。下面将介绍 3 种励磁模式。 2. 全步励磁模式 所谓全步模式,就是依据电机固有结构设计固定的步距角工作,一个电脉冲,步进电机前进一个步距角。这个步距角使电机设计结构所决定的,也可以理解为电机以最大的步距角旋转。 3. 半步励磁模式 半步模式是以电机固有的结构决定的步距角的一半角度进行步进旋转。如下图所示,步进

zhbi98 的技术 Blogs 5546

2026年最全Java面试题,及答案汇总!

123.在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?118.在 hibernate 中使用 Integer 和 int 做映射有什么区别?29.在 Queue 中 poll()和 remove()有什么区别?46.线程池中 submit()和 execute()方法有什么区别?53.synchronized 和 volatile 的区别是什么?25.ArrayList 和 LinkedList 的区别是什么?

2401_89221867的博客 1万+

使用Anaconda和conda快速搭建YOLO开发环境

本文详细介绍了如何使用Anaconda和conda为YOLO目标检测项目快速搭建独立、纯净的开发环境。通过创建虚拟环境,有效解决了Python包版本冲突和CUDA兼容性问题,并指导安装GPU版PyTorch等核心依赖,最后通过验证脚本确保环境配置成功,为YOLO开发提供了稳定可靠的基础。

weixin_28829629的博客 161

Java面试前程序员如何系统的查漏补缺?

很多Java程序员,对自身是没有一个清楚的认知的,甚至不知道自己短板在哪?这样不做准备的就去面试,你肯定会离心仪的offer越来越远!我今天写这篇文章的意义就在于劝诫大家如果面试准备阶段没有方向的话,不妨暂时停下来,看一下自己怎么才能更加系统、有条理地去备战面试,建立起一个系统的查漏补缺体系;怎么才能从自己的实际出发,了解自身与互联网公司面试需求的实际差距。

wdj_yyds的博客 241

【2025最新版】间接平差——以水准网平差为例 (python详细过程版)

水准网间接平差的python代码实现。博客长期更新,本文最新更新时间为:2025年5月20日。

点云侠的博客 1702

YOLO26 正式发布源代码!极致速度优化方案, 面向工业级落地的目标检测模型!

YOLO26 作为 Ultralytics 公司于 2025 年 9 月发布的最新一代目标检测模型,在架构设计和技术实现上展现了显著的创新。本文深入分析了 YOLO26 的核心架构改进和技术原理,重点探讨了其在边界框回归、推理流程、损失函数设计和优化算法方面的突破性进展。

魔改工程师的博客 1243

Java面试八股文:秋招备战重点总结

1500字虽无法穷尽所有细节,但提供了核心知识框架和高效备战策略。此刻起,立即行动,系统复习,深度思考,反复练习。记住,秋招不仅是实力的较量,更是策略与毅力的比拼。祝每一位奋战在秋招路上的同学都能斩获心仪的Offer!关于Java面试八股文-高频、基础且必须掌握的知识点。整理总结如下:(因为包含干货比较多,已经整理好。喜欢的可以文章最下方拿走)加载、验证、准备、解析、初始化过程;双亲委派模型原理、作用及破坏场景(如 SPI);Java秋招竞争激烈,95%的淘汰率是常态。

2401_83384536的博客 918

看28377代码笔记

使用的是20MHz外部晶振,为取200MHz系统时钟,倍频设为20,分频设为2,这样sysclock = 20MHz * 20 / 2,正好200MHz。注意:SPISTE配置成普通的GPIO端口,是为了更好控制芯片,配置芯片的时序。FMULT_0:小数点位数,小数只能有0,0.25,0.5,0.75四个选择。XTAL_OSC:表示使用外部晶振。GPIO_MUX_CPU1:复用类型。GPIO_MUX_CPU1:复用类型。PLLCLK_BY_2:表示2分频。IMULT_20:表示倍频数。

小柚子的博客 805

备战金九银十:这 1200 道 Java 面试题,足以让你通关大厂

Java 无疑是当今最热门的编程语言之一,多年来一直稳坐程序员最爱的编程语言宝座,这也导致了每年都有大量的新鲜血液加入到 Java 程序员的队伍中。对于新入职的 Java 程序员来说,他们究竟是踏入了这个行业的门槛,还是仅仅停留在表面,很大程度上取决于他们对 Java 语言的理解和态度。不论如何,面试是他们进入职场前必须跨越的一道门槛。

m0_46995061的博客 981

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

2025年最全Java面试八股文,备战金九银十,查缺补漏

看面试题可以是为了面试,也可以是对自己学到的东西的一种查漏补缺,更加深刻的去了解一些核心知识点。

sjkflw121150的博客 976

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

备战BAT面试:查漏补缺——反射

备战BAT面试的学习记录,整理了最近自己查漏补缺的知识点,总结出来和大家分享,如有错误,欢迎指出! 备战BAT面试

Yaoman753的博客 181

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

这可能是2024年看过最全最详细的Java面试八股文,备战秋招,查缺补漏。

看面试题可以是为了面试,也可以是对自己学到的东西的一种查漏补缺,更加深刻的去了解一些核心知识点。

qq13321123的博客 791

这可能是2024年看过最全最详细的Java面试八股文,备战金九银十,查缺补漏。

看面试题可以是为了面试,也可以是对自己学到的东西的一种查漏补缺,更加深刻的去了解一些核心知识点。

qq13321123的博客 999

【Java 经典面试 800 题】面试必备,查漏补缺;多线程 +spring+JVM 调优 + 分布式 +redis+ 算法

春招,秋招,社招,我们 Java 程序员的面试之路,是挺难的,过了 HR,还得被技术面,鄙人在去各个厂面试的时候,经常是通宵睡不着觉,头发都脱了一大把,还好最终侥幸能够入职一个独角兽公司,安稳从事喜欢的工作至今...近期也算是抽取出大部分休息的时间,为大家准备了一份通往大厂面试的小捷径,准备了一整套 Java 复习面试的刷题以及答案,我知道很多朋友不知道怎么复习,不知道学习过程中哪些才是重点,其实,你们经历过的事情,鄙人也经历过,正应为经历过,所以不愿意看到还有万千学子为此伤神,

sjkflw121150的博客 957

这可能是2024年看过最全最详细的Java面试八股文,备战2025,查缺补漏。

看面试题可以是为了面试,也可以是对自己学到的东西的一种查漏补缺,更加深刻的去了解一些核心知识点。

m0_69632475的博客 831

备战BAT面试:查漏补缺——泛型

备战BAT面试的学习记录,整理了最近自己查漏补缺的知识点,总结出来和大家分享,如有错误,欢迎指出! 备战BAT面试 泛型 泛型备战BAT面试泛型概述泛型只在编译阶段有效泛型的使用泛型类泛型接口泛型方法泛型通配符泛型上下边界关于泛型数组 概述 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。 那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化

Yaoman753的博客 205

备战BAT面试:查漏补缺——容器

备战BAT面试的学习记录,整理了最近自己查漏补缺的知识点,总结出来和大家分享,如有错误,欢迎指出! 备战BAT面试 容器 容器是我们保存对象的一种手段 说道保存对象,其实最简单的是数组,但是数组具有固定的尺寸。而通常来说,程序总是在运行时根据条件来创建对象,我们无法预知将要创建对象的个数以及类型,所以Java推出了容器类来解决这一问题。 两种不同概念的容器 Collection,独立元素序列,这些元素都服从一条或多条规则。Collection包括List,Set以及Queue。 -List必须按照顺序保

Yaoman753的博客 215

2026最新Java常见面试题及答案

本文汇总了208道Java常见面试题,涵盖19个核心模块:Java基础、容器、多线程、反射、对象拷贝、JavaWeb、异常、网络、设计模式等主流技术框架(Spring/MyBatis/Redis等)及JVM原理。内容包含基础概念对比(如JDK/JRE区别)、核心原理(HashMap实现)、线程安全、框架特性(Spring事务隔离)及分布式组件(RabbitMQ/Kafka)等高频

2401_89221867的博客 1526

备战BAT面试:查漏补缺——运行时栈帧结构

备战BAT面试的学习记录,整理了最近自己查漏补缺的知识点,总结出来和大家分享,如有错误,欢迎指出! 备战BAT面试 栈帧 是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素; 存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息,每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机里面从入栈到出栈的过程; 要分配多少内存在编译时就完全确定并写入到方法表的Code属性之中了,不会受到程序运行期变量数据的影响; 对于执行引擎来说,在活动线程中只

Yaoman753的博客 326

备战BAT面试:查漏补缺——关于异常

学习记录,知识点零散,如有错误,欢迎指出! Java学习记录 关于异常 运行时异常,非运行时异常和error 异常分为运行时异常,非运行时异常和error,其中error是系统异常,只能重启系统解决。非运行时异常需要我们自己捕获,而运行异常是程序运行时由虚拟机帮助我们捕获,运行时异常包括数组的溢出,内存的溢出空指针,分母为0等! 编译期和运行期的典型操作 编译时期 运行时期 静态绑定 动态绑定 使用private,static,final修饰变量或方法使用静态绑定 可以被子类重写的方法

Yaoman753的博客 420

备战BAT面试:查漏补缺——JVM内存模型

备战BAT面试的学习记录,整理了最近自己查漏补缺的知识点,总结出来和大家分享,如有错误,欢迎指出! 备战BAT面试 JVM的内存分布如上图所示。方法区和堆是线程共享的,而寄存器、java方法栈、本地方法栈是各个线程私有的。 区域介绍 方法区 注:在最新的《深入理解Java虚拟机》一书中,已经取消了方法区“永久代”的称呼。 方法区是用来存储已被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据这个区域很少进行垃圾回收,回收目标主要是针对常量池的回收和对类型的卸载。 运行时常量池 是方

Yaoman753的博客 237
上一篇: VS Code右下角的通知弹窗如何关闭?
下一篇: MyBatis-Plus简介及开发帮助在线文档
JavaWizard-M
博客等级 码龄6年 3159粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值