面试题库之JAVA基础篇(三)

final 
  1. 被final修饰的类不可以被继承。
  2. 被final修改的方法不可以被重写。
  3. 被final修改的方法,jvm会尝试内联,以提高运行效率。
  4. 被final修改的变量不可变,如果修改的是引用,那么引用不可变,引用指向的对象内容可变。
  5. 被final修饰的常量,在编译期间,会存入常量池中。 
static 
  1. 静态修饰符。
  2.  可修饰变量、方法、代码块(多用于初始化操作)、内部类、导包。
  3. 静态变量、静态方法、静态常量统称为类的静态成员。静态成员归整个类所有,不属于某个单一的对象,而是被类的所有实例对象共享。
  4. 局部变量不能被声明为静态变量。
  5. 静态方法不能访问非静态成员。
  6. 静态方法中不能使用this和super关键字。
  7. 静态方法不能被重写,但可以被继承。
  8. 抽象方法不能使用static进行修饰。
abstract 
  1. 抽象修饰符,只能用来修饰类和方法。
  2. 不能修饰私有方法、静态方法、final方法和final类。
  3. 抽象类中不一定包含抽象方法,但有抽象方法的类必须是抽象类。
  4. 抽象类中可以有0~n个抽象方法,也可以有0~n个具体方法。
  5. 抽象类不能被实例化,一般是由子类进行实例化完成相关操作,声明抽象类的目的主要是为了对该类进行扩展。
  6. 抽象方法只有方法的声明,但没有方法体。
  7. 继承抽象类时,必须重写父类中所有的抽象方法,除非自己也是抽象类。
  8. 面向抽象编程使得调用者只须关心抽象方法的定义,而不必关心子类的具体实现。
异常 
  1. 运行时异常(RuntimeException):RuntimeException及其子类,编译器不会检查,属于不可预知的异常。如:ClassCastException,NullPointerException。
  2. 被检查的异常(CheckedException)::Exception本身,以及Exception子类(除运行时异常外)都属于被检查的异常。可以理解为编译器会检查的异常,那么通过throw进行申明抛出,要么通过try-catch捕获处理。如:IOException。
  3. 错误(Error):Error类及其子类,当资源不足、约束失败、或是其他程序无法继续运行的条件发生时,就会产生错误,程序本省无法修复这些错误。如:OutOfMemoryErro,ThreadDeat。
try-catch-finally  
  1. try 块负责监控可能出现异常的代码。
  2. catch 块负责捕获可能出现的异常,并进行处理。
  3. finally 块负责清理各种资源,不管是否出现异常都会执行。
  4. 其中 try 块是必须的,catch 和 finally 至少存在一个标准异常处理流程。 
finally 
  1.  不管有没有异常,finally模块中的代码都会执行。
  2. 当try和catch中有return时,finally任然会执行。
  3. return的值是在finally执行前确定的。
  4. finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。 
序列化和反序列化
  1. 序列化:将结构数据或对象转化成二进制字节流的过程,便于网络传输或存储。
  2. 反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。
serialVersionUID
  1. 用于标识序列化类版本的字段,当一个类实现了Serializable接口,说明这个类时可以被序列化的,编译器会自动生成一个serialVersionUID字段,表示该类的版本号。
  2. 当反序列化时,jvm会根据serialVersionUID进行版本检查,如果被反序列化数据的版本号跟当前对象的serialVersionUID不一致,则会抛出InvalidClassException,防止反序列化操作成功。
  3. serialVersionUID 允许不同版本的类在一定程度上兼容。当反序列化旧版本的对象时,如果新版本的类中删除了某些字段或方法,Java 虚拟机会忽略这些字段或方法,而不会引发异常。
  4. 如果需要序列化对象,建议手动显示的定义serialVersionUID。
transient 

         将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。

反射机制
  1. 概念:在运行时能够动态获取类信息和动态调用对象的机制。程序运行时,可以获取任意一个对象所属的类(Class),可以创建任意一个类的对象(Constructor),可以获取任意一个类的属性和方法,可以调用任意一个对象的属性和方法。
  2.  获取类方式:Class.forName(类路径)、类名.class、对象名.getClass()、基本类型的包装类.type。
  3. 优点:提高程序的灵活性。
  4. 确定:反射需要解析字节码,性能较低;相对不安全,破坏了封装性,因为反射可以获取对象的私有属性和方法。
浅拷贝

         新对象和旧对象的成员变量的值一致,引用变量指向的也是同一个对象。

深拷贝 

         新对象和旧对象的成员变量的值一致,新对象中的引用变量指向的对象也是被复制了新对象。

程序、进程、线程
  1. 程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
  2. 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。
  3. 线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
Object的常用方法 
  1. clone:保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出CloneNotSupportedException 异常,深拷贝也需要实现 Cloneable,同时其成员变量为引用类型的也需要实现 Cloneable,然后重写 clone 方法。 
  2. finalize:该方法和垃圾收集器有关系,判断一个对象是否可以被回收的最后一步就是判断是否重写了此方法。
  3. equals:一般 equals 和 == 是不一样的,但是在 Object 中两者是一样的。子类一般都要重写这个方法。
  4. hashCode:该方法用于哈希查找,重写了 equals 方法一般都要重写 hashCode 方法,这个方法在一些具有哈希功能的 Collection 中用到,一般必须满足 obj1.equals(obj2)==true 。可以推出 obj1.hashCode()==obj2.hashCode() ,但是hashCode 相等不一定就满足 equals。不过为了提高效率,应该尽量使上面两个条件接近等价。
  5. wait:配合 synchronized 使用,wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。调用该方法后当前线程进入睡眠状态直到被唤醒、被中断、超时。
  6. notify:配合 synchronized 使用,该方法唤醒在该对象上等待队列中的某个线程(同步队列中的线程是指抢占 CPU 的线程,等待队列中的线程是指等待唤醒的线程)。
  7. notifyAll:配合 synchronized 使用,该方法唤醒在该对象上等待队列中的所有线程。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前缀和例题:子矩阵的和AcWing796

//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小 //计算前缀的时候用:g[i][j] g[i][j-1] g[i-1][j] - g[i-1][j-1] Integer.parseInt(init[j-1]); //计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] g[x1 -1][y1 - 1] "\n" //一些重复加的地…

固态硬盘与机械硬盘的区别

盘、磁道、扇区、柱面,这些都是机械硬盘的概念,固态硬盘没有这些东西,固态硬盘和机械硬盘虽然都叫硬盘,但是在原理层面有着本质上的区别。 速印机(理想、荣大等)、复印机(夏普、东芝、理光、佳能…

Go 语言中的函数调用。

更好的观看体验,请点击——函数调用 | YinKais Blog 本文将从函数的调用惯例和参数传递方法两个方面分别介绍函数执行的过程。 1、调用惯例 对于不同的编程语言, 它们在调用函数的时候往往都使用相同的语法: somefunction(arg0, arg1) 虽…

Intellij idea 快速定位到文件的开头或者结尾的几种方式

方式一:Scroll To Top / Scroll To Bottom 首先打开Keymap设置,并搜索Scroll To 依次点击File->Settings->Keymap可打开该界面 对于Scroll To Top 快速滑动定位到文件顶部, Scroll To Bottom快速定位到文件底部 默认是没有设置快捷键的…

C++ Easyx 让圆球跟随鼠标移动

目录 下载Easyx 检验 绘制窗口 画圆 响应事件的处理 清除原先绘图 渲染缓冲区 逻辑 代码托管 下载Easyx 在Easyx官网下载大暑版: 检验 写如下代码: 编译运行,如果控制台出现2023字样,代表配置成功: 绘制窗口 进入Eaxy官方网站,点…

科研试剂实验室Tubulysin M微管蛋白抑制剂936691-46-2

Tubulysin M 微管蛋白抑制剂 M 936691-46-2 英文名称:Tubulysin M 中文名称:微管蛋白抑制剂 M 化学名称:(2S,4R)-4-[[2-[(1R,3R)-1-乙酰氧基-4-甲基-3-[甲基-[(2S,3S)-3-甲基-2-[[(2R) -1-甲基哌啶-2-羰基]氨基]戊酰基]氨基]戊基]-1,3-噻唑…

数据结构树,二叉树,堆

目录 ​编辑 1.树概念及结构 2. 树的表示 3.二叉树概念及结构 特殊的二叉树 二叉树的性质 ​编辑 二叉树选择题 二叉树的存储结构 4.堆的概念及结构 父亲孩子下标关系​编辑 堆的实现接口 堆结构体设计堆的初始化堆的销毁 堆的插入(附:向上调整算法) 堆…

spring日志输出到elasticsearch

1.maven <!--日志elasticsearch--><dependency><groupId>com.agido</groupId><artifactId>logback-elasticsearch-appender</artifactId><version>3.0.8</version></dependency><dependency><groupId>net.l…

Android编译FreeType2

cmake_minimum_required(VERSION 3.4.1) project(freetype2-static)# 添加定义 add_definitions(-DANDROID_NDK -DFT2_BUILD_LIBRARY1)# 指定头文件的搜索路径 #include_directories(${CMAKE_SOURCE_DIR}/include_all) #include_directories(${CMAKE_SOURCE_DIR}/../../include…

22、为什么是卷积?

(本文已加入“计算机视觉入门与调优”专栏,点击专栏查看更多文章信息) 我们先看一看神经网络(或者叫一个AI模型),是如何完成一张图片的推理的。 你肯定听说过阿尔法狗大战柯洁的故事,当时新闻一出,不知大家什么反应,反正我是被震撼到了。机器竟然学到了那么多的棋谱,…

维度建模与数据仓库设计:理论与实践案例

文章目录 定义案例&#xff1a;零售销售数据仓库实践创建维度表创建事实表插入维度表数据插入事实表数据增改查 定义 维度建模是一种用于数据仓库设计的技术&#xff0c;它的目标是使数据库结构更加直观&#xff0c;易于理解和使用&#xff0c;特别是对于那些进行数据查询和报…

鸿蒙(HarmonyOS)应用开发——容器组件(Tabs组件)

前言 前面一篇文章中&#xff0c;已经说了Gridt组件。那么接下来就是容器组件中的Tabs组件 #mermaid-svg-sBnRJ30uI3RLwr3y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sBnRJ30uI3RLwr3y .error-icon{fill:#552…

【OpenCV】计算机视觉图像处理基础知识

目录 前言 推荐 1、OpenCV礼帽操作和黑帽操作 2、Sobel算子理论基础及实际操作 3、Scharr算子简介及相关操作 4、Sobel算子和Scharr算子的比较 5、laplacian算子简介及相关操作 6、Canny边缘检测的原理 6.1 去噪 6.2 梯度运算 6.3 非极大值抑制 6.4 滞后阈值 7、Ca…

vue 用Nginx实现负载均衡

Nginx负载均衡的作用(相当于客户端的请求是发到Nginx上的&#xff0c;然后由Nginx决定到底调用哪台服务器): 在 .net core 中的具体实现步骤 1.在nginx官网上下载安装包&#xff0c;推荐稳定版&#xff1b; 建议1.18版本 2.下载完成后&#xff0c;到所在目录执行 nginx绿色图…

易点易动二维码巡检方案:提升企业巡检效率的智慧选择

在当今科技发达的时代&#xff0c;传统的纸质设备巡检方式已经无法满足企业管理的需求。纸质巡检方式存在诸多弊端&#xff0c;如巡检效率低、数据管理困难等问题。然而&#xff0c;随着易点易动二维码巡检方案的出现&#xff0c;企业可以迎来一种全新的巡检方式&#xff0c;极…

无需公网IP!Apache服务器本地部署与内网穿透实现公网访问

Apache服务安装配置与结合内网穿透实现公网访问 文章目录 Apache服务安装配置与结合内网穿透实现公网访问前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpo…

实战分析和精华总结:服务器端请求伪造SSRF漏洞数据劫持、复现、分析、利用及修复过程

实战分析和精华总结:服务器端请求伪造SSRF漏洞数据劫持、复现、分析、利用及修复过程。 SSRF漏洞(服务器端请求伪造):是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以…

力扣209题 长度最小的子数组 双指针算法(滑动窗口)

什么是滑动窗口? 同向双指针 什么时候用滑动窗口? 利用带调性, 两个指针都不用回退的时候 怎么用? 初始化 left 0; right 0;进窗口判断是否出窗口 滑动窗口的正确性 利用单调性规避了很多没有必要的枚举行为 209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一…

“丝路电商”与泛欧在线公共采购平台Peppol

近期上海商务委员会公布《关于在上海市创建“丝路电商”合作先行区的方案》&#xff08;以下简称方案&#xff09;&#xff0c;方案中提出&#xff1a;“全面贯彻落实党的二十大精神&#xff0c;立足新发展阶段&#xff0c;完整、准确、全面贯彻新发展理念&#xff0c;加快构建…