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实例

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

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

相关文章

Modbus TCP/IP之异常响应

文章目录 一、异常响应二、异常码分析2.1 异常码0x012.2 异常码0x022.3 异常码0x032.4 异常码0x04、0x05等 一、异常响应 对于查询报文&#xff0c;存在以下四种处理反馈&#xff1a; 正常接收&#xff0c;正常处理&#xff0c;返回正常响应报文&#xff1b;因为通信错误等原因…

全志F1C200S嵌入式驱动开发(基于usb otg的spi-nor镜像烧入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面既然已经搞定了spi-nor驱动,那么下一步考虑的就是怎么从spi-nor flash上面加载uboot、kernel和rootfs。目前spi-nor就是一块白片,上面肯定什么都没有,那么这个时候,我们要做…

UE5、CesiumForUnreal实现选中区域地形压平效果

文章目录 1.实现目标2.实现过程2.1 Demo说明2.2 实现过程3.参考资料声明:本篇文章是为某位读者朋友定制开发的功能需求,所以放在了特定的专栏里,其他的朋友可以忽略这篇文章哈! 1.实现目标 基于CesiumForUnreal插件的CesiumPolygonRasterOverlay组件实现选中区域地形压平的…

构建自己的ChatGPT:从零开始构建个性化语言模型

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

【力扣每日一题】2023.7.27 删除每行中的最大值

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码运行结果&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一个矩阵&#xff0c;每次都把每行中的最大元素拿出来删掉&#xff0c;再把每次删除的元素里最大的元素拿出来加到结果里&…

Jetbrains 2023.2教程

IDEA 2023.2 激活演示 Pycharm 2023.2 激活演示 WebStorm 2023.2 激活演示 Clion 2023.2 激活演示 DataGrip 2023.2 PhpStorm 2023.1.4 激活演示&#xff08;2023.2尚未发布&#xff09; RubyMine 2023.2 激活演示 获取方式 仔细看每一个工具演示的图片 本文由 mdnice …

火车头神码ai伪原创【php源码】

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python中常用的类&#xff0c;python 类的用法&#xff0c;现在让我们一起来看看吧&#xff01; 火车头采集ai伪原创插件截图&#xff1a;

Python - OpenCV实现摄像头人脸识别(亲测版)

要使用Python 3和OpenCV进行摄像头人脸识别&#xff0c;您可以按照以下步骤进行操作&#xff1a; 1.安装OpenCV库 在命令行中输入以下命令&#xff1a; pip install opencv-python2.准备人脸检测器 使用OpenCV的人脸检测器可以检测出图像中的人脸。在Python中&#xff0c;您…

【Terraform学习】TerraformCloud入门介绍(快速入门)

TerraformCloud入门介绍 什么是 TerraformCloud&#xff1f; Terraform Cloud是Hashicorp Terraform的SaaS版本。 免费版功能 免费版功能包括版本控制集成、远程计划和实施远程计划和实施、通知及webhook、全http API驱动、状态管理、模拟计划、私有化模块注册器以及全HTTP界…

LabVIEW开发谐振器陀螺仪仿真系统

LabVIEW开发谐振器陀螺仪仿真系统 陀螺仪是INS系统中最重要的传感器。它们的性能&#xff08;如精度和偏置稳定性&#xff09;决定了INS系统的水平。陀螺仪按原理分为三类&#xff1a;角动量守恒、萨格纳克效应和科里奥利效应。旋转坐标系中的移动物体受到的力与旋转坐标系的角…

7-22练习

题目1 链接5071 不难发现通过A的范围可以缩小B的范围进而减少循环次数 通过B可以消除A的循环 这个是一个很巧妙的地方。这个题还有一个比较容易引起歧义的地方就是i:n每一次循环都要符合条件 这样我们不难构造出一个函数 f(B+x) = 1000*A+x 试验1 运行超时-- 需要减少复杂度…

Hive视图

hive的视图 简介 hive的视图简单理解为逻辑上的表hive只支持逻辑视图&#xff0c;不支持物化视图视图存在的意义 对数据进行局部暴露&#xff08;涉及隐私的数据不暴露&#xff09;简化复杂查询 创建视图&#xff1a; create view if not exists v_1 as select uid,movie f…

windows 安装 mongodb 数据库

软件下载 访问官方的下载地址&#xff1a; https://www.mongodb.com/try/download/community &#xff0c;然后选择对应的版本进行下载 下载好了之后双击进行安装 软件安装 1、点击 next 点击下一步 2、勾选接受协议&#xff0c;点击 next 3、第三页有两个选项&#x…

大学生活题解

样例输入&#xff1a; 3 .xA ... Bx.样例输出&#xff1a; 6思路分析&#xff1a; 这道题只需要在正常的广搜模板上多维护一个— —方向&#xff0c;如果当前改变方向&#xff0c;就坐标不变&#xff0c;方向变&#xff0c;步数加一&#xff1b;否则坐标变&#xff0c;方向不…

视频讲解Codeforces Round 887 (Div. 2)(A--C)

文章目录 A. Desorting1、板书2、代码 B. Fibonaccharsis1、板书2、代码 C. Ntarsis Set1、板书2、代码 视频讲解Codeforces Round 887 (Div. 2)&#xff08;A–C&#xff09; A. Desorting 1、板书 2、代码 #include<bits/stdc.h> #define endl \n #define INF 0x3f…

2023年的深度学习入门指南(20) - LLaMA 2模型解析

2023年的深度学习入门指南(20) - LLaMA 2模型解析 上一节我们把LLaMA 2的生成过程以及封装的过程的代码简单介绍了下。还差LLaMA 2的模型部分没有介绍。这一节我们就来介绍下LLaMA 2的模型部分。 这一部分需要一些深度神经网络的基础知识&#xff0c;不懂的话不用着急&#xf…

Python电商爬虫保姆级入门教程(纯新手向)

图灵Python课堂 长沙图灵教育于2001年开始进入教育行业&#xff0c;立足泛IT类职业教育&#xff0c;以打造高新技术人才为宗旨&#xff0c;专注于提供多层次、个性化的职业技能培训课程&#xff0c;为各行业培养技术开发、应用和管理等岗位的中高端人才&#xff0c;致力于成为…

【无标题】自定义类型:位段,枚举,联合

自定义类型&#xff1a;位段&#xff0c;枚举&#xff0c;联合 1. 位段1.1 什么是位段1.2 位段的内存分配1.3 位段的跨平台问题 2. 枚举2.1 枚举类型的定义2.2 枚举类型的优点2.3 枚举的使用 3. 联合&#xff08;共用体&#xff09;3.1 联合类型的定义3.2联合的特点3.2.1 相关面…

LUMEN技术要点总结

LUMEN总结 主题是动态全局光照和Lumen Lumen更像是一个各种GI算法的集大成者。 1. 如何理解lumen及全局光照的实现机制 渲染方程 至今为止所有的实时光照都是按照Render Equation来进行渲染的&#xff0c;我们做得到只是在无限的逼近它。 我们把只进行一次反弹叫做SingleBou…

【UniApp开发小程序】悬浮按钮+出售闲置商品+商品分类选择【基于若依管理系统开发】

文章目录 界面效果界面实现悬浮按钮实现商品分类选择界面使元素均匀分布 闲置商品描述信息填写界面价格校验 界面效果 【悬浮按钮】 【闲置商品描述信息填写界面】 【商品分类选择界面】 【分类选择完成】 界面实现 悬浮按钮实现 悬浮按钮漂浮于页面之上&#xff0c;等页面…