面试题库之JAVA基础篇(三)
final
- 被final修饰的类不可以被继承。
- 被final修改的方法不可以被重写。
- 被final修改的方法,jvm会尝试内联,以提高运行效率。
- 被final修改的变量不可变,如果修改的是引用,那么引用不可变,引用指向的对象内容可变。
- 被final修饰的常量,在编译期间,会存入常量池中。
static
- 静态修饰符。
- 可修饰变量、方法、代码块(多用于初始化操作)、内部类、导包。
- 静态变量、静态方法、静态常量统称为类的静态成员。静态成员归整个类所有,不属于某个单一的对象,而是被类的所有实例对象共享。
- 局部变量不能被声明为静态变量。
- 静态方法不能访问非静态成员。
- 静态方法中不能使用this和super关键字。
- 静态方法不能被重写,但可以被继承。
- 抽象方法不能使用static进行修饰。
abstract
- 抽象修饰符,只能用来修饰类和方法。
- 不能修饰私有方法、静态方法、final方法和final类。
- 抽象类中不一定包含抽象方法,但有抽象方法的类必须是抽象类。
- 抽象类中可以有0~n个抽象方法,也可以有0~n个具体方法。
- 抽象类不能被实例化,一般是由子类进行实例化完成相关操作,声明抽象类的目的主要是为了对该类进行扩展。
- 抽象方法只有方法的声明,但没有方法体。
- 继承抽象类时,必须重写父类中所有的抽象方法,除非自己也是抽象类。
- 面向抽象编程使得调用者只须关心抽象方法的定义,而不必关心子类的具体实现。
异常
- 运行时异常(RuntimeException):RuntimeException及其子类,编译器不会检查,属于不可预知的异常。如:ClassCastException,NullPointerException。
- 被检查的异常(CheckedException)::Exception本身,以及Exception子类(除运行时异常外)都属于被检查的异常。可以理解为编译器会检查的异常,那么通过throw进行申明抛出,要么通过try-catch捕获处理。如:IOException。
- 错误(Error):Error类及其子类,当资源不足、约束失败、或是其他程序无法继续运行的条件发生时,就会产生错误,程序本省无法修复这些错误。如:OutOfMemoryErro,ThreadDeat。
try-catch-finally
- try 块负责监控可能出现异常的代码。
- catch 块负责捕获可能出现的异常,并进行处理。
- finally 块负责清理各种资源,不管是否出现异常都会执行。
- 其中 try 块是必须的,catch 和 finally 至少存在一个标准异常处理流程。
finally
- 不管有没有异常,finally模块中的代码都会执行。
- 当try和catch中有return时,finally任然会执行。
- return的值是在finally执行前确定的。
- finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
序列化和反序列化
- 序列化:将结构数据或对象转化成二进制字节流的过程,便于网络传输或存储。
- 反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。
serialVersionUID
- 用于标识序列化类版本的字段,当一个类实现了Serializable接口,说明这个类时可以被序列化的,编译器会自动生成一个serialVersionUID字段,表示该类的版本号。
- 当反序列化时,jvm会根据serialVersionUID进行版本检查,如果被反序列化数据的版本号跟当前对象的serialVersionUID不一致,则会抛出InvalidClassException,防止反序列化操作成功。
- serialVersionUID 允许不同版本的类在一定程度上兼容。当反序列化旧版本的对象时,如果新版本的类中删除了某些字段或方法,Java 虚拟机会忽略这些字段或方法,而不会引发异常。
- 如果需要序列化对象,建议手动显示的定义serialVersionUID。
transient
将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。
反射机制
- 概念:在运行时能够动态获取类信息和动态调用对象的机制。程序运行时,可以获取任意一个对象所属的类(Class),可以创建任意一个类的对象(Constructor),可以获取任意一个类的属性和方法,可以调用任意一个对象的属性和方法。
- 获取类方式:Class.forName(类路径)、类名.class、对象名.getClass()、基本类型的包装类.type。
- 优点:提高程序的灵活性。
- 确定:反射需要解析字节码,性能较低;相对不安全,破坏了封装性,因为反射可以获取对象的私有属性和方法。
浅拷贝
新对象和旧对象的成员变量的值一致,引用变量指向的也是同一个对象。
深拷贝
新对象和旧对象的成员变量的值一致,新对象中的引用变量指向的对象也是被复制了新对象。
程序、进程、线程
- 程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
- 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。
- 线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
Object的常用方法
- clone:保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出CloneNotSupportedException 异常,深拷贝也需要实现 Cloneable,同时其成员变量为引用类型的也需要实现 Cloneable,然后重写 clone 方法。
- finalize:该方法和垃圾收集器有关系,判断一个对象是否可以被回收的最后一步就是判断是否重写了此方法。
- equals:一般 equals 和 == 是不一样的,但是在 Object 中两者是一样的。子类一般都要重写这个方法。
- hashCode:该方法用于哈希查找,重写了 equals 方法一般都要重写 hashCode 方法,这个方法在一些具有哈希功能的 Collection 中用到,一般必须满足 obj1.equals(obj2)==true 。可以推出 obj1.hashCode()==obj2.hashCode() ,但是hashCode 相等不一定就满足 equals。不过为了提高效率,应该尽量使上面两个条件接近等价。
- wait:配合 synchronized 使用,wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。调用该方法后当前线程进入睡眠状态直到被唤醒、被中断、超时。
- notify:配合 synchronized 使用,该方法唤醒在该对象上等待队列中的某个线程(同步队列中的线程是指抢占 CPU 的线程,等待队列中的线程是指等待唤醒的线程)。
- notifyAll:配合 synchronized 使用,该方法唤醒在该对象上等待队列中的所有线程。
相关文章:
面试题库之JAVA基础篇(三)
final 被final修饰的类不可以被继承。被final修改的方法不可以被重写。被final修改的方法,jvm会尝试内联,以提高运行效率。被final修改的变量不可变,如果修改的是引用,那么引用不可变,引用指向的对象内容可变。被fin…...
CTF-虚拟机-QEMU-前置知识-操作流程与源码阅读
文章目录 总览内存PCI设备PCI配置空间前64个字节对应源码Memorry空间的BARIO空间的BAR MMIOPMIOIspci访问PCI设备配置空间中的Memory空间和IO空间MMIOPMIO QQM(qemu object model)简洁概要将 TypeInfo 注册 TypeImpl:ObjectClass的初始化&…...
java成神秘籍第一卷
前言 适合还没有入行小白学习,有些朋友会跑来问我这行的一些问题,下面算是详细系统的整理了一下啦。 全当是学习 复盘 整理 记录了 java成神秘籍第一卷 前言一 前提1 要不要考公,考编,考研2 语言选择3 就业岗位4 目标5 考不考虑…...
golang实现文件上传(高并发+分块+断点续传+加密)
运行视频 // todo 根据前端传递文件加密 func (s *FileProcess) FileProcessEncryptionByFront(file multipart.File, h *multipart.FileHeader) interface{} { //根据字节直接处理文件 这个是前端传递的二进制流s.FileProcessInit() //文件初始化 设置原来文件…...
用HeidiSQL在MySQL中新建用户
用HeidiSQL登录到MySQL数据库,注意登录的时候要使用有权限的用户: 选择工具-》用户管理: 点击左上角的“添加”: 输入用户名、密码,并且分配权限: 点击右边的“添加对象”: 可以根据自己…...
【IPv6】IPv6协议
一、IPv6数据报格式 这是与v4报头的对比 1.8bit的版本保留了,v4版本就是4,v6就是6。 2.v6去除了v4的首部长度字段,因为v6的首部长是固定的40字节。 3.服务类型(Type of Service, ToS)和通信类型(Traffi…...
无需服务器,无需魔法,拥有一个微信机器人就是这么简单
前情提要 还没看过的朋友可以看一下上一篇文章《拥有一个微信机器人总共需要几步?》在这篇文章里,我们提到,创建微信机器人需要一个大前提--你得有一台服务器。现在,不再需要了!没错,上一篇提到的Serverles…...
1、命名空间、C++的复合类型、缺省参数
命名空间 1、命名空间的定义 使用namespace定义,使用作用域限定符::访问 #include <iostream> namespace ICBC{int money 0;void save( int m){money m;} } int main( void ){ICBC::save( 100); std::cout << "工行卡余额:"…...
colab notebook导出为PDF
目录 方法一:使用浏览器打印功能 方法二:使用nbconvert转换 方法三:在线转换 方法一:使用浏览器打印功能 一般快捷键是CTRLP 然后改变目标打印机为另存为PDF 这样就可以将notebook保存为PDF了 方法二:使用nbconver…...
【Python动漫系列】名侦探柯南(完整代码)
文章目录 名侦探柯南环境需求完整代码程序分析系列文章名侦探柯南 《名侦探柯南》是由青山刚昌创作的一部侦探漫画,于1994年开始连载,并被改编为动画、电影、游戏等多种形式。故事讲述了高中生侦探工藤新一在破案时被不良组织所毒害,身体缩小成了一个小学生,为了寻找解药并…...
【matlab】QR分解
QR分解 给定一个mn的矩阵A,其中m≥n,即矩阵A是高矩阵或者是方阵,QR分解将矩阵A分解为两个矩阵Q和R的乘积,其中矩阵Q是一个mn的各列正交的矩阵,即QTQI,矩阵R是一个nn的上三角矩阵,其对角线元素为…...
Liunx系统使用超详细(三)
本篇内容开始逐渐描述有关liunx的各种命令的使用方法! 目录 一、目录和文件区别 1.1目录: 1.2文件: 1.3总结: 二、Linux命令的写法 三、linux命令清屏 四、pwd命令 五、ls命令 5.1 ls: 5.2 ls -l:…...
Kubernetes学习笔记-Part.06 Docker安装
目录 Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退 第六章 Docker安装 在master、worker、harbor上均需…...
现在的00后,实在是太卷了......
现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家里条…...
Maven项目目录结构
项目结构 目录说明.ideaIDEA工具的配置文件.mvn用于运行Maven项目src源码文件夹target字节码文件夹.gitignore配置git忽略文件HELP.md自述文件mvnw运行Maven命令(Linux)mvnw.cmd运行Maven命令(Windows)pom.xml依赖管理文件 如图…...
感慨!一路从测试小白到现在的高级测试工程师,方向不对真的很艰辛
1 功能测试人员,也就是我们常常俗称的进行点点点测试工程师。前 1-2 年做功能测试,使用其他人开发的工具进行测试。这个阶段的测试工作都比较初级,严重依赖于别人开发的工具和系统。当系统进行升级换代的时候,强哥会明显的感觉到…...
字符串经典基础面试题
关卡名 字符串经典基础面试题 我会了✔️ 内容 1.理解字符串反转的处理方法 ✔️ 2.熟练掌握回文串的判断方法 ✔️ 3.掌握字符串中搜索第一个唯一字符的方法 ✔️ 4.掌握判断是否互为字符串重排的处理技巧 ✔️ 1 反转的问题 我们知道反转是链表的一个重要考点…...
【华为OD题库-062】计算礼品发放的最小分组数目-java
题目 又到了一年的末尾,项目组让小明负责新年晚会的小礼品发放工作。为使得参加晚会的同时所获得的小礼品价值相对平衡,需要把小礼品根据价格进行分组,但每组最多只能包括两件小礼品,并且每个分组的价格总和不能超过一个价格上限。…...
[go 面试] 构建高效微服务通信:选择合适的通信方式
关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 构建分布式系统或微服务架构时,服务间通信成为至关重要的一环。不同的通信方式各有优劣,因此在选择时需根…...
【华为OD题库-048】拔河比赛-java
题目 公司最近准备进行拔河比赛,需要在全部员工中进行挑选。选拔的规则如下: 1.按照身高优先、体重次优先的方式准备比赛阵容 2.规定参赛的队伍派出10名选手 请实现一个选拔队员的小程序。 输入为一个数组,记录了部门人员的身高、体重信息,如…...
【WebSocket】通信协议基于 node 的简单实践和心跳机制和断线重连的实现
前后端 WebSocket 连接 阮一峰大佬 WebSocket 技术博客 H5 中提供的 WebSocket 协议是基于 TCP 的全双工传输协议。它属于应用层协议,并复用 HTTP 的握手通道。它只需要一次握手就可以创建持久性的连接。 那么什么是全双工呢? 全双工是计算机网络中的…...
【有ISSN、ISBN号!往届均已完成EI检索】第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024)
第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024) 2024 3rd International Conference on Electronic Information Engineering, Big Data and Computer Technology 第三届电子信息工程、大数据与计算机技术国际学术会议(…...
【Windows】使用SeaFile搭建本地私有云盘并结合内网穿透实现远程访问
1. 前言 现在我们身边的只能设备越来越多,各种智能手机、平板、智能手表和数码相机充斥身边,需要存储的数据也越来越大,一张手机拍摄的照片都可能有十多M,电影和视频更是按G计算。而智能设备的存储空间也用的捉襟见肘。能存储大量…...
Windows本地搭建WebDAV服务并使用内网穿透远程访问【无公网IP】
windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…...
责任链设计模式
package com.jmj.pattern.responsibility;/*** 请假条类*/ public class LeaveRequest {//姓名private String name;//请假天数private int num;//请假内容private String content;public LeaveRequest(String name, int num, String content) {this.name name;this.num num;…...
12.4 C++ 作业
完成沙发床的多继承 #include <iostream>using namespace std;//封装 沙发 类 class Sofa { private:string *sitting; public://无参构造函数Sofa(){cout << "Sofa::无参构造函数" << endl;}//有参构造函数Sofa(string s):sitting(new string(s)…...
基于ssm品牌会员在线商城源码
基于ssm品牌会员在线商城源码708 idea mysql数据库 navcat 开发技术:后端 ssm 后台管理 vue 用户端 vue.jshtml 演示视频: 基于ssm品牌会员在线商城源码 DROP TABLE IF EXISTS address; /*!40101 SET saved_cs_client character_set_client */; /…...
骨传导耳机音量大了有害吗?骨传导能保护听力吗?
无论是传统耳机还是骨传导耳机,只要使用音量过大,都会对有一定的损伤,然而由于骨传导耳机的传声原理和佩戴方式比较特殊,所以对人体的损伤比较小,想要知道骨传导耳机能否保护听力,就要先了解骨传导耳机的传…...
百望云供应链协同解决方案入选北大创新评论产业研究案例库
11月28日-29日,百望云受邀出席《北大创新评论》2023 Inno China 中国产业创新大会,从战略构建、生态塑造、科技创新等议题出发,与学术专家、产业专家、企业代表共赴盛会,思享汇聚。会上,《北大创新评论产业研究案例库&…...
selenium中元素定位正确但是操作失败,6种解决办法全搞定
selenium中元素定位正确但是操作失败的原因无外乎以下4种: 01 页面没加载好 解决方法:添加等待方法,如:time.sleep() 02 页面提交需要等待给数据后台 解决方法:添加等待方法,如:time.sleep(…...
网站建设只有20%的利润/百度一下搜索引擎
18年开始,新的一年新的开始。开年伊始,开始去年年底规划大数据通用平台的建设。 先介绍一下大数据通用能力平台,整个大数据通用能力平台的思路和2年前我在上海一家大型互联网公司规划的数据公厂基本类似,是一个大数据全生态体系平…...
做网站域名需哪些/如何自己开发一个网站
Android camera ISP相关 术语解释(三) 之 变焦和对焦的区别: 参考网址:https://blog.csdn.net/cruelchen/article/details/9308897 变焦: zoom 变焦分为zoom out (缩小)和zoom in(放大) 对焦(调焦): focus 分为FF(手动对焦)和AF(自动对焦) 透镜的焦点(focus)与焦距(fo…...
装修案例/搜索引擎优化的英文
开启redis-server提示 # Creating Server TCP listening socket *:6379: bind: Address already in use--解决方法参考文章: (1)开启redis-server提示 # Creating Server TCP listening socket *:6379: bind: Address already in use--解决方…...
一级a做爰片i免费网站/怎么做小程序
上一篇博客记录了如何将model中的图片存入FTP,通过一个第三方的storages简单的实现了,但是后续我发现如果想在浏览器通过url直接获取图片,就不太容易了(大神轻喷,小弟自学django和python,基础知识差&#x…...
龙华做棋牌网站建设找哪家效益快/山西seo排名
MySQL5.7 并行复制 1、缘由: 某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下。 一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) ----->IO Thread (…...
网站设计的概述/镇江网站建设方案
[b]存储数据有两种基本方法:保存到普通文件,或者保存到数据库中。[/b] [b]数据写入:[/b] [list] [*]1、打开文件。如果文件不存在,需要先创建它。 [*]2、将数据写入这个文件。 [*]3、关闭这个文件。 [/list] [b]数据读出ÿ…...