Java面试笔记

JAVA基础知识

语法结构

1.类 2.属性 3.方法 4.静态代码块

构造器

构造函数,构造类的对象,默认隐式,创建对象,先执行父类构造函数,再执行子类构造函数

父类的super必须在第一行

代码块

优先级最高,只执行一次

普通属性不能在静态方法里不能用

普通方法既可以使用静态属性也可以使用普通属性,静态方法只能使用静态属性

运算符

1.算数运算符 2.逻辑运算符 3.关系运算符 4.位运算符 5.三目运算符 6.赋值运算符

7.访问运算符

包与包结构

package import

程序执行结构

  • 顺序

  • 分支(if-else , if-else if , switch-case)

  • 循环(for, while, do-while,iterator,for-each)注:循环最多嵌套3层

关键字

true和false是值,不是关键字

this,super, abstarct, interface ,implements,static…

static(不可修饰类),静态代码块 (最优先执行,且只执行一次)

final(终态)(可以修饰类,不能被子类继承,修饰的方法不能被覆写)

continue(结束当次循环,进行下次循环)

注释与注解

单行,多行,文档注释

面向对象

封装(私有化成员属性,具有公开的get,set方法)直接操作属性,保证安全性,保证真实性

继承(单继承,接口可以多继承)将共有的代码提取出来,可以复用,层次关系,先执行父类构造方法,再执行子类构造方法,子类可以有父类实例化

多态(同一种行为的不同体现)重载,覆盖重写实现,左父右子

抽象类与接口

抽象类(方法法体为空,不能用new进行实例化,没有构造方法,通过子类继承)只需声明方法,不需要实现

接口(适配不同的设备) 方法都是未实现的,都是用子类去实现,接口和实现类没有任何关联的,属性都是常量

数组

定义方法

int [] num[];
int nums[]={1,2,3,4,5,6};
int number[]=new int[]{Integer.MAX_VALUE};

集合框架

Collection

List(有序序列,可以重复,不可以自己实例化,子类可以代替父类出现)

ArrayList 添加(add) 全部清除(clear) 移除(remove(0))获取(get(0)) 修改()

包含(contains) 转换为数组(toArray)

LinkedList 队首,队尾添加(addFirst,addLast)

Set(不可以放重复的元素,无序的)

TreeSet(有序集合) 比较实现comparable

Map

HashMap<key,value> 添加(put) 清除(clear) 移除() 键可以为空

比较器

Comparator(compare)

Collections.sort(list,Comparator)

工具类

Math.PI.abs(绝对值).ceil(向上取整).round(四舍五入).floor(向下取整)

Random

Calendar

字符串

String不能被继承,String对象不可变,可以共享,常量

charAt:返回指定索引处的 char

concat:将指定字符串连接到此字符串的结尾

contains:当且仅当此字符串包含指定的 char 值序列时,返回 true

endWith: 测试此字符串是否以指定的后缀结束

StringBuffer(先出来)

不会产生新的对象,线程安全

StringBuilder

线程不安全,但是效率高

delete(左闭右开)

reverse:翻转

IO流

File代表磁盘文件的类

文件流

输入流(read):文件到程序,磁盘到内存

输出流(write):程序到文件内存到磁盘

img

数据源:数据流入的源头

数据宿:数据流出的目的地

这里写图片描述

字节输入流 :InputStream(抽象类)实现FileInputStream is.available(判断长度)

字节输出流:OutputStream(抽象类)实现FileOutputStream

字符输入流

字符输出流:ready()

流先开的后关 换行:newLine();

读取:readLine

System.in对应键盘和System.out对应显示器

对象序列化

对象序列化就是把对象写入到输出流(文本)中,用来存储或传输

ObjectOutputStream

反序列化就是从输入流中读取对象

ObjectInputStream

作用:便于读写对象

序列化步骤

  1. 将即将要序列化的类实现Serializable

  2. 创建序列化类(ObjectOutputStream)

  3. 创建一个序列化对象

  4. 调用序列化对象的writeObject(对象)

  5. 关闭流

反序列化

  1. 创建反序列化类(ObjectInputStream)
  2. 创建序列化对象去接受,反序列化readObject(对象)
  3. 关闭流

异常与调试

运行时异常:RuntimeException类及其子类异常

编译时异常:代码错误

img

error错误不可处理

Exception:是运行时的错误,它可以被捕捉并处理

异常捕获try…catch…finally try…finally try…catch

抛出异常:throw new Ecption();

自定义异常(继承)extends Excption

不定参数

泛型

例如:Teacher 泛型的上下界

Map

List

枚举

引用数据类型

常用结构:private static final

  • 私有化构造器 唯一实例
private Season(){
}
  • 定义属性

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

注:不能添加引号 定义属性只能在实例对象的下面 第一行必须是实例

多线程

进程:每一个程序,容器是操作系统

线程:容器是进程

维度多进程多线程优劣
数据共享、同步数据是分开的:共享复杂,需要用IPC;同步简单多线程共享进程数据:共享简单;同步复杂各有优势
内存、CPU占用内存多,切换复杂,CPU利用率低占用内存少,切换简单,CPU利用率高线程占优
创建销毁、切换创建销毁、切换复杂,速度慢创建销毁、切换简单,速度快线程占优
编程调试编程简单,调试简单编程复杂,调试复杂进程占优
可靠性进程间不会相互影响一个线程挂掉将导致整个进程挂掉进程占优
分布式适应于多核、多机分布 ;如果一台机器不够,扩展到多台机器比较简单适应于多核分布进程占优

线程实现方式

  • 继承Thread类
  • 实现Runnable接口
  • 实现Callable接口

线程的生命周期

继承Thread类

  1. 创建一个类,继承Thraed
  2. 重写run()方法
  3. 创建对应类的实例(并非是Thread的实例)
  4. 调用对应类实例的start()方法

实现Runnable接口

  1. 创建一个类实现Runnable接口
  2. 重写run()方法
  3. 创建Thread类对象,构造函数中放入对应类的实例
  4. 调用Thread类对象的strat()方法

实现Callable接口

  • 1、Callable规定的方法是call(),Runnable规定的方法是run().
  • 2、Callable的任务执行后可返回值,而Runnable的任务是不能返回值得
  • 3、call方法可以抛出异常,run方法不可以
  • 4、运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。

Timer和TimerTask定时器

同步锁

关键字:synchronized 作用属性是变量和方法

Lock接口(轻量级)

Lock lock=new ReetrantLock()

volatile:锁 指令重排

死锁

产出死锁的原因:

  1. 循环等待
  2. 互斥
  3. 占有且申请
  4. 不可抢占

加锁

yield

setDaemon:守护线程(后台线程)

线程类型转换

新建状态----->就绪状态----->阻塞状态------>等待状态------>限时等待状态------>结束状态

notify():唤醒 Object(类)

断言

assert() 只能放逻辑变量 在VM中添加参数 -ea参数

JDBC


步骤

  1. 导入jar包

  2. 注册驱动(只执行一次)

    ClassforName("com.mysql.jdbc.Driver")
    
  3. 建立连接

    Connection c=DriverManager.getConnection("jdbc:mysql://localhost:3306/user?useSSL=false?username=root&password=root")
    
  4. 创建执行SQL的语句

    Statement st=c.createStatement();
    
  5. 执行语句

    查询用ResultSet去接收

    st.executeUpdate(sql)
    
    while(rs.next){
    
    }
    
  6. 处理执行结果

    预编译

  7. 释放资源

注:CRUD(read) 先开后关(ResultSet,Statement,Connection)

批处理

事务

特性:ACID

原子性:要么成功,要么失败

一致性:事务前后数据完整性保持一致

持久性:事务一旦提交,不可逆

隔离性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

数据库连接池

c3p0

javascript

基于对象和事件驱动并具有安全性的解释性语言

java与javascript的区别

  • 编译型/解释性
  • 强变量和弱变量
  • 代码格式不一样
  • 嵌入方式不一样
  • 静态联编/动态联编

可以做什么

  • 提供交互性
  • 控制表单的输入
  • 及时创建HTML页面
  • 设置cookie

不能做什么

  • 不可以读取客户机的文件
  • 不允许写服务器上的文件
  • 不能关闭不是由他打开的窗口
  • 不能来自另外的服务器打开的网页读取信息

MIME类型

数据类型

注释

函数(匿名函数)

标识符:字母数字下划线美元组成、

弹出框

  • alert()
  • confirm()
  • prompt()

关闭浏览器

windows.close()在函数中使用

变量

const:声明常量

let/var

表达式

控制语句/循环语句

ECMAScript6

闭包:值保留,可以访问到内部局部变量,消耗内存,

双等,三等(值相等,类型相等)

内置对象

属性,事件和方法(不一定都具有)

array

数组声明

var 数组名=new Array(5)

添加元素:push 移除元素:pop 可以放Boolean,各种数据类型,没有数组越界 var nums=[]

boolean

date

function

global

全局对象

eval()

pasta():构造器

expando:给对象添加属性

math

Math.E:自然底数

Math.abs(-1):绝对值

Math.PI:圆周率

Math.sprt:平方根

Math.pow(2,2):求平方

number

object

regexp

error

string

indexof,charaAt,length,charCodeAt

spilt(数组是一个对象类型)

with:提取公因式

宿主对象

浏览器

返回浏览器一系列信息

navigator

screen

window

location

history

document

innerHTML和innerText

不写值输出值

写值替换值

网络编程

  • TCP:TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 层是位于 IP 层之上,应用层之下的中间层。TCP 保障了两个应用程序之间的可靠信通常用于互联网协议,被称 TCP / IP。三次握手
  • UDP:UDP (英语:User Datagram Protocol,用户数据报协议),位于 OSI 模型的传输层。一个无连接的议提供了应用程序之间要发送数据的数据报。由于UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。一次握手

socket

反射

class类

只能由系统创建

一个类在JVM中只会有一个class实例

览器

返回浏览器一系列信息

navigator

screen

window

location

history

document

innerHTML和innerText

不写值输出值

写值替换值

网络编程

  • TCP:TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 层是位于 IP 层之上,应用层之下的中间层。TCP 保障了两个应用程序之间的可靠信通常用于互联网协议,被称 TCP / IP。三次握手
  • UDP:UDP (英语:User Datagram Protocol,用户数据报协议),位于 OSI 模型的传输层。一个无连接的议提供了应用程序之间要发送数据的数据报。由于UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。一次握手

socket

反射

class类

只能由系统创建

一个类在JVM中只会有一个class实例

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

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

相关文章

3ds Max图文教程: 使用动态工具Mass FX 创建风铃动画

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 简单的场景设置 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 我将向您展示风铃背后的动态 通过简单的场景设置进行模拟。一旦你有了这个想法&#xff0c;你就可以应用这个 技术到复杂的风铃结构。 基…

pytest study

pytest 测试用例的识别与运行 测试文件&#xff1a;test_*.py 和 *_test.py 以test开头或结尾的文件 测试用例&#xff1a;Test*类包含的所有 test_*的方法&#xff08;测试类不能带有__init__方法&#xff09;&#xff0c; 不在class中的所有test_*的方法 def func(x):r…

我对牟长青分享的各个私董会数据分析

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 其实之前&#xff0c;我也想写一个关于各个草根社群的数据分析&#xff0c;但这样的文章容易得罪人&#xff0c;因为我一直喜欢直言不讳&#xff0c;所以一直没有动笔。例如&#xff0c;我在6月份写…

windows安装linux

https://www.cnblogs.com/liuqingzheng/p/16271895.html 咱们安装linux系统是centos7 准备工作&#xff1a; 安装软件&#xff1a;vmware -------虚拟机 官网下载地址&#xff1a;下载 VMware Workstation Pro | CN 也可以从这里面下载 链接&#xff1a;https://pan.bai…

Bugs记录

一、/usr/bin/ld: cannot find -l**** 参考&#xff1a;https://www.cnblogs.com/sakuraie/p/13341508.html 在ubuntu上安装软件时&#xff0c;经常出现这样的问题&#xff1a; /usr/bin/ld: cannot find -l**** 例如&#xff1a; /usr/bin/ld: cannot find -lcaffe 安装 需…

SIP视频对讲sip广播网关

SV-PA2是专门对行业用户需求研发的一款SIP音视频对讲&#xff0c;媒体流传输采用标准IP/RTP/RTSP协议。它很好的继承了锐科达话机稳定性好、电信级音质的优点&#xff0c;且完美兼容当下所有基于SIP的主流IPPBX/软交换/IMS平台,如Asterisk, Broadsoft, 3CX, Elastix 等。它集多…

uni-app接口请求封装

1.前言。 正所谓“工欲善其事必先利其器”&#xff0c;在vue-PC项目中&#xff0c;我们可以借助axios来封装对应的api接口请求&#xff08;ps&#xff1a;axios的接口请求封装&#xff09;。不过&#xff0c;如果是用uni-app开发小程序&#xff0c;那么又该如何借助uni-app自带…

了解Unity编辑器之组件篇Physics(四)

Physics&#xff1a;用于处理物理仿真和碰撞检测。它提供了一组功能强大的工具和算法&#xff0c;用于模拟真实世界中的物理行为&#xff0c;使游戏或应用程序更加真实和可信。 主要用途包括&#xff1a; 碰撞检测&#xff1a;Unity Physics 提供了高效的碰撞检测算法&#x…

【论文笔记】RCM-Fusion: Radar-Camera Multi-Level Fusion for 3D Object Detection

原文链接&#xff1a;https://arxiv.org/abs/2307.10249 1. 引言 目前的一些雷达-相机融合3D目标检测方法进行实例级的融合&#xff0c;从相机图像生成3D提案&#xff0c;并与雷达点云相关联以修正提案。但这种方法没有在最初阶段使用雷达&#xff0c;依赖于相机3D检测器&…

VAE-根据李宏毅视频总结的最通俗理解

1.VAE的直观理解 先简单了解一下自编码器&#xff0c;也就是常说的Auto-Encoder。Auto-Encoder包括一个编码器&#xff08;Encoder&#xff09;和一个解码器&#xff08;Decoder&#xff09;。其结构如下&#xff1a; 自编码器是一种先把输入数据压缩为某种编码, 后仅通过该编…

【2500. 删除每行中的最大值】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个 m x n 大小的矩阵 grid &#xff0c;由若干正整数组成。 执行下述操作&#xff0c;直到 grid 变为空矩阵&#xff1a; 从每一行删除值最大的元素。如果存在多个这样的值&#xff0c;删除其…

【Spring Cloud】Ribbon 中的几种负载均衡策略

文章目录 前言一、Ribbon 介绍二、负载均衡设置三、7种负载均衡策略3.1.轮询策略3.2.权重策略3.3.随机策略3.4.最小连接数策略3.5.重试策略3.6.可用性敏感策略3.7.区域敏感策略 前言 负载均衡通常有两种实现手段&#xff0c;一种是服务端负载均衡器&#xff0c;另一种是客户端…

OSI模型简介及socket,tcp,http三者之间的区别和原理

1.OSI模型简介&#xff08;七层网络模型&#xff09; OSI 模型(Open System Interconnection model)&#xff1a;一个由国际标准化组织提出的概念模型&#xff0c;试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。 它将计算机网络体系结构划分为七层,每…

【2023】java数据结构-时间、空间复杂度分析

1、算法效率 算法效率分析分为两种&#xff1a;第一种是时间效率&#xff0c;第二种是空间效率。时间效率被称为时间复杂度&#xff0c;而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度&#xff0c;而空间复杂度主要衡量一个算法所需要的额外空间 2、…

Docker 数据管理

Docker 数据管理 一、docker数据管理 1.数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改操作立刻可见&#xff0c;并且更新数据不会影响镜像&#xff0c;从而实现数据在宿主机与容器之间的迁移。…

【数据库 - 用户权限管理】(简略)

目录 一、概述 二、用户权限类型 1.ALL PRIVILEGES 2.CREATE 3.DROP 4.SELECT 5.INSERT 6.UPDATE 7.DELETE 8.INDEX 9.ALTER 10.CREATE VIEW和CREATE ROUTINE 11.SHUTDOWN 12GRANT OPTION 三、语句格式 1.用户赋权 2.权限删除 3.用户删除 一、概述 数据库用…

Sentinel限流中间件

目录 介绍 Sentinel 的特征 Sentinel 的组成 实战使用 简单实例 配置本地控制台 使用可视化ui配置简单流控 配置异步任务限流 使用注解定义限流资源 SpringCloud整合Sentinel 简单整合 并发线程流控 关联模式 整合openFeign使用 介绍 随着微服务的流行&#xff0…

phkit - 中英音素处理、文本转拼音、文本正则化

文章目录 关于 phkit安装包含组件pinyinkitchinesesymbolsequencepinyinphonemenumberconvertstyleenglish关于 phkit phoneme toolkit: 拼音相关的文本处理工具箱,中文和英文的语音合成前端文本解决方案。 github : https://github.com/KuangDD/phkit

RT thread 之 Nand flash 读写过程分析

文章目录 前言&#xff1a;什么是Nand Flash&#xff1f;1、Nand Flash 读取步骤2、从主存读到Cache2.1 在标准spi接口下读取过程2.2 测试时序&#xff08;SPI频率30MHz&#xff09; 3.从Cache读取数据3.1在标准spi接口读取过程测试时序 前言&#xff1a;什么是Nand Flash&…

【LangChain】检索器之上下文压缩

LangChain学习文档 【LangChain】检索器(Retrievers)【LangChain】检索器之MultiQueryRetriever【LangChain】检索器之上下文压缩 上下文压缩 LangChain学习文档 概要内容使用普通向量存储检索器使用 LLMChainExtractor 添加上下文压缩(Adding contextual compression with an…