备战Java面试

一.JAVA基础


1.八个基本数据类型,长,占几个字节,取值范围是多少。

基本类型:

Byte   一般的数据 1个字节  取值范围  -128—127

short   极大的数据 2个字节  取值范围 -2的15次方到2的15次方减一

int    4个字节  取值范围 -2的31次方到2的31次方减一

long 8个字节  取值范围 -2的63次方到2的63次方减一

byte、short、int、long都是整数类型,并且是有符号整数 分别占用、2、4、8个字节。

浮点数

float  有效数字最长是7位 占四个字节,共32位,称为单精度浮点数

double  有效数字最长是15位 占八个字节,共64位,称为双精度浮点数

Java中的浮点型常量数值默认是double类型

注意: java提供的浮点类型不适合进行精确的运算

boolean

Boolean在内存中占用一个字节。

当java编译器把java源代码编译为字节码时,会用int或byte来表示boolean。在java虚拟机中,用整数零来表示false,用任意一个非零整数表示true。 java虚拟机这种底层处理方式对java虚拟机是透明的,在java源程序中boolean类型的变量取值只能是true或false。

char

char是字符类型 占用两个字节,java语言对字符采用Unicode字符编码

2.面向对象的特征

1. 封装(Encapsulation)

封装是面向对象编程中最基本的特征之一,它将数据和操作数据的方法(即方法)封装在一个单独的单元(即类)中。通过封装,我们可以隐藏对象的内部细节,只暴露出必要的接口供其他对象进行交互,从而实现了信息的隐藏和保护。

2. 继承(Inheritance)

继承是面向对象编程中的另一个重要特征,它允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展性。被继承的类称为父类(或超类),继承这个类的类称为子类。子类可以继承父类的所有非私有属性和方法,并可以在其基础上添加新的属性和方法。

3. 多态(Polymorphism)

多态是面向对象编程的第三个特征,它允许一个对象在不同的情况下表现出不同的行为。多态分为编译时多态和运行时多态。编译时多态是通过方法重载来实现的,而运行时多态是通过方法重写和向上转型来实现的。

3.实现多态的几种方式

1. 方法重载

        方法重载是一种实现多态的简单方式。它允许在同一个类中定义多个同名但参数列表不同的方法。当调用这些方法时,编译器会根据参数的类型和数量来确定具体调用哪个方法。这样就实现了多态性。

2. 方法重写

         方法覆盖是一种实现多态的常用方式。它允许子类重新定义父类中已经定义的方法。当子类对象调用这个方法时,将会执行子类中的方法实现,而不是父类中的方法。

3. 接口实现

        接口是一种定义了一组方法的抽象类型。类可以通过实现接口来达到多态的目的。当一个类实现了一个接口时,它必须实现该接口中定义的所有方法。

方法重载允许根据不同的参数类型来实现多态;方法覆盖允许子类重新定义父类中的方法以实现多态;接口实现允许类根据实现的接口来实现多态

4.什么叫装箱什么叫拆箱

装箱就是自动将基本数据类型转换为包装器类型;

装箱(Boxing): 装箱是指将基本数据类型转换为对应的包装类对象。这是通过调用包装类的构造函数或静态工厂方法来完成的。装箱过程将基本数据类型的值封装成一个包装类对象。

拆箱就是自动将包装器类型转换为基本数据类型

拆箱(Unboxing): 拆箱是指将包装类对象转换为基本数据类型。这是通过调用包装类的 xxxValue() 方法来完成的。拆箱过程将包装类对象中的值提取出来,转换为对应的基本数据类型。

5.装拆箱分别调用的是那个方法

装箱:这是通过调用包装类的构造函数或静态工厂方法来完成的。装箱过程将基本数据类型的值封装成一个包 装类对象。

拆箱:这是通过调用包装类的 GetValue() 方法来完成的。拆箱过程将包装类对象中的值提取出来,转换为对应 的基本数据类型。

6.Integer a=100; Integer b=100;   a == b (true)
Integer a=200;  Integer b=200;     a == b(false)
为什么?

integer :integer是int的包装类,首先它是一个类用==比较的是内存的地址,在integer类里面有一个成员静态 内部类IntegerCache,这成员静态内部类缓存了-128到127之间的所有的整数对象,并在jdk1.5之后引用了自 动 装箱,在将整数类型装箱时进行了判断,如果这个之大于-128到127之间就会重新new一个新的integer, 所 以尽 管两个数值相同,但地址不同,所以返回false。

7.Object有那7个方法

  1. getClass():获取类的class对象。返回对象的运行时类。返回的是 Class 对象,可以获取类的信息,如类名、父类、接口等。
  2. hashCode:返回对象的哈希码值。哈希码是根据对象的内容计算得出的一个整数,用于快速查找和比较对 象。在重写 equals 方法时,通常也要同时重写 hashCode 方法,以保证相等的对象具有相同的哈希码
  3. equals():比较对象是否相等,比较的是值和地址,子类可重写以自定义。默认情况下,使用 == 运算符进行比较,即判断两个对象的 引用是否指向同一个内存地址。如果需要自定义比较规则,可以重写该方法。
  4. clone():克隆方法。创建并返回当前对象的副本。默认情况下,使用浅拷贝方式复制对象,即只复制对象的字段值,而不 复制引用类型的对象。如果需要实现深拷贝,可以重写该方法
  5. toString():将对象转换为字符串表示形式。 如果没有重写,应用对象将打印的是地址值。
  6. notify():随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
  7. notifyall():解除所有那些在该对象上调用wait方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
  8. wait():导致线程进入等待状态,并释放对象锁。直到它被其他线程通过notify()或者notifyAll唤醒。该方法只能在同步方法中调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
  9. finalize(饭no来吱):在对象被垃圾回收器回收之前调用。可以重写该方法来执行资源释放等清理操作。

8.常量(final)关键字的作用 他与finally,finalize的区别

final:

  1. 定义:在Java等编程语言中,final是一个关键字,用于表示某个变量、方法或类是不可变的。
  2. 用途:使用final关键字可以使变量成为常量,一旦赋值后不能修改;方法不能被子类重写;类不能被继承。

finally:

finally是在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获,finally块都会被执行。

  1. 定义:在异常处理中,finally块是用来指定无论是否发生异常都要执行的代码块。
  2. 用途:无论try块中的代码是否抛出异常,finally块中的代码都会执行,例如关闭文件、释放资源等。

finalize:

  1. 定义:在Java等面向对象的编程语言中,finalize()方法是Object类的一个方法,当垃圾收集器决定回收对象时,会先调用该对象的finalize()方法。
  2. 用途:在这个方法中,你可以定义一些清理资源或执行必要操作的代码,以防止资源泄漏和其他问题。finalize()方法通常在对象的生命周期结束时被调用。

9.*Voliate,(单例模式)

单例模式:

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

特点
 1、单例类只能有一个实例。
 2、单例类必须自己创建自己的唯一实例。

 3、单例类必须给所有其他对象提供这一实例。

优点:

系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能。

缺点:

没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

Voliate:

volatile主要有两层语义:

  1. 内存可见性。
  2. 禁止指令重排序。

在实现单例模式时,通常会将构造函数私有化,并提供一个静态的getnstance()方法来获取单例对象。由于单例对象只会被创建一次,因此需要保证其线程安全性,避免多个线程同时访问导致的并

发问题。

在Java 1.5之前,通常使用双重检査锁定(double-checked locking)来实现单例模式的线程安全性,这种实现方式会在getlnstance()方法中使用synchronized关键字来保证线程安全,但synchronized关键字会影响性能。为了避免synchronized关键字的影响,可以使用volatile关键字来保证单例对象的可见性和原子性,从而保证线程安全性。

具体来说,当一个变量被声明为volatie时,它的值的修改会立即被其他线程可见,避免了多线程访问时出现的问题。在使用双重检查锁定实现单例模式时,使用volatile关键字可以保证在初始化单例对象时,多个线程能够正确地访问和修改变量。如果不使用volatile关键字,则可能出现多个线程同时访问变量导致的并发问题。

需要注意的是,使用volatile关键字不能完全避免线程安全问题,它只能保证可见性和原子性,不能保证有序性和互斥性。在实现单例模式时,需要考虑到多种因素,包括性能、可靠性和安全性等,选择最合适的实现方式。

10.Static的作用

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,

11.*String buffer和String 以及String builder的区别

12.==和equals的区别

13.Java当中的四种引用类型(后续补充)

二.集合


1.*Java当中有那些集合类

2.**HashMap的底层原理(存储结构,put的过程,0.75,8,6,16)


3.*ArryList和LinkdcList的区别

4.HashMap的HashTable的区别

5.*如何使用线程安全的Map

6.ConcurrentHashMap的原理

三.线程


1.*创建线程有几种方式

2.线程的生命周期

3.***线程池的原理以及7个参数是什么(有什么作用),4个拒绝策略是什么

4.线程安全,线程通信

5.*Reentrantlock和synchromied lock的区别

6.synchromied lock 修饰实例方法  静态方法 代码块 分别的含义

7.Sleep和wait的区别

8.什么是反射机制

9.*Cglib的动态代理和jdk的动态代理的区别

10.JVM内存模型(每一步分别放什么内容)

11.垃圾回收算法

12.Java当中的四种引用类型

13.(如何控制线程的执行顺序)

14.*接口和抽象类的区别

15.JDK1.8的新特性

16.什么是双亲委派

17.为什么需要双亲委派


四.Redis


1.Redis为什么快?(单线程,内存)

2.*Redis常用的数据类型(5个)

3.*Redis的持久化策略

4.数据淘汰策略

5.*Redis中的大K问题

五.Mysql


1.sql语句的执行顺序

2.***Mysql索引失效的场景

3.**Sql语句如何优化

4.***Mysql数据库的优化(数据库里加索引一定有效吗?一定效率快吗?)

5.Mysql中索引有哪些类型

6.*B+树索引和Hash索引的区别

7.Mysql为什么使用B+树索引而不使用B-树索引

8.*列举一些Mysql当中常用的聚合函数

9.列举Mysql开窗函数

10.行转列,列转行

11.****Mysql事务的隔离级别

12.*事务的四个特性

13.****Mysql是如何使用MVC解决,脏读,幻读,不可重复读现象的

14.*Mysql的七大日志

15.Union和UnionAll的区别

16.*Mysql中常用的日期函数和字符串函数

六.Linux


1.列举常用的Linux命令

ps , kill(和kill -9的区别), telnet, tail ,  source ,
top* ,grep |(管道符) ,mvn 查看帮助,history,cat,vim ,yum,rpm,ping ifconfig ipconfig
 

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

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

相关文章

JS绘制电流闪烁流动效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>电流闪动动效</title><style>.sd1 {dis…

618买什么最划算?618买什么东西便宜?必备数码好物清单分享

​只不&#xff0c;马上又到了618购物节咯&#xff0c;数码产品的优惠力度尤为显著&#xff0c;是购买数码产品的绝佳时机。接下来&#xff0c;我将为大家分享几款性价比超高的数码产品&#xff0c;相信总有一款能吸引你的目光。 一、南卡OE MIX开放式蓝牙耳机 在618购物狂欢节…

linux中git的使用

为什么要有git git相当于一个仓库可以让我们更好的去管理我们的代码&#xff0c;实现版本的控制&#xff0c;上传到云端仓库。有了git,就可以实现多人同时开发一个项目&#xff08;每个负责一部分代码&#xff0c;最后都上传到同一个仓库&#xff09;。 git github/gitee 的区…

【Linux】LInux下的进程状态

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

APP UI自动化测试,思路全总结在这里了

首先想要说明一下&#xff0c;APP自动化测试可能很多公司不用&#xff0c;但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的&#xff0c;所以为了更好的待遇&#xff0c;我们还是需要花时间去掌握的&#xff0c;毕竟谁也不会跟钱过不去。 接下来&#xff0c…

新书速览|数字身份认证技术与实践

本书不仅仅讲述标准解决方案以及相关理论&#xff0c;更重要的是以丰富的案例&#xff0c;讲透如何将这些理论应用到具体实际场景。 本书内容 《数字身份认证技术与实践》内容涵盖身份认证的基础理论&#xff0c;包括身份认证与授权的区别、常见的认证方式以及关键技术和协议&…

代码随想录算法训练营33期 第五十天 | 188.买卖股票的最佳时机IV

dp[i][0] 不操作&#xff1b;d[i][1]第一次开始持有股票 //dp[i]当前天i的价值情况&#xff0c;dp[i][0]表示不操作的最大价值&#xff0c;dp[i][1]在当前天第一次持有的最大价值&#xff0c;dp[i][2]在当前天第一次卖出的最大价值, dp[i][3]在当前天第二次持有的最大价值&am…

苍穹外卖学习笔记(8.用户端历史订单模块,商家端订单管理模块)

目录 一、商家端订单管理模块1、查看历史订单2、查询订单详情3、取消订单4、再来一单5、代码开发6、测试 二、用户端历史订单模块1、订单搜索2、各个状态的订单数量统计3、查询订单详情4、接单5、拒单6、取消订单7、派送订单8、完成订单9、代码开发10、测试 三、校验收货地址是…

matlab学习005-利用matlab设计滤波器

目录 一&#xff0c;含有多个频率成分的三角信号 1&#xff0c;以采样频率fs20KHz对信号采样&#xff0c; 画出信号的波形&#xff1b; 1&#xff09;前期基础 2&#xff09;波形图 3&#xff09;代码 2&#xff0c;选取合适的采样点数&#xff0c;利用DFT分析信号的…

Python静态资源库之webassets使用详解

概要 Python webassets库是一个用于管理静态资源的工具,如CSS、JavaScript等,帮助开发者更有效地管理和优化网站的静态文件。本文将介绍如何安装和使用Python webassets库,以及它的特性、基本功能、高级功能、实际应用场景和总结部分。 安装 首先,需要安装Python webasse…

Mysql索引详解(索引分类)

文章目录 概述索引对查询速度的影响索引的优缺点索引类型一级索引和二级索引的区别MySQL 回表联合索引&#xff08;最左前缀原则主键索引和唯一索引的区别BTree索引和Hash索引的区别 覆盖索引索引下推加索引能够提升查询效率原因MySQL 索引结构采用 B树原因索引失效的场景MySQL…

知识图谱嵌入领域的重要研究:编辑基于语言模型的知识图谱嵌入

今天&#xff0c;向大家介绍一篇在知识图谱嵌入领域具有重要意义的研究论文——Editing Language Model-based Knowledge Graph Embeddings。这项工作由浙江大学和腾讯公司的研究人员联合完成&#xff0c;为我们在动态更新知识图谱嵌入方面提供了新的视角和方法。 研究背景 在…

kubernetes中的附件组件Metrics-server与hpa资源实现对pod的自动扩容和缩容

一、概述 Metrics-Server组件目的&#xff1a;获取集群中pod、节点等负载信息&#xff1b; hpa资源目的&#xff1a;通过metrics-server获取的pod负载信息&#xff0c;自动伸缩创建pod&#xff1b; 二、安装部署 Metrics-Server组件 安装目的&#xff0c;就是给k8s集群安装top…

Win 下 ncnn 编译运行

ncnn 官网上编译的过程比较详细&#xff0c;本文主要记录编译、运行过程中遇到的问题&#xff0c;希望可以帮到大家。 我的环境是 Win10 系统&#xff0c;VS 2022。 编译 先使用如下命令获取 ncnn 代码库&#xff1a; git clone https://github.com/Tencent/ncnn.git cd n…

【库函数】Linux下动态库.so和静态库.a的生成和使用

目录 &#x1f31e;1. Linux下静态库和动态库的基本概念 &#x1f31e;2. 动态库 &#x1f30a;2.1 动态库如何生成 &#x1f30d;2.1.1 文件详情 &#x1f30d;2.1.2 编译生成动态库 &#x1f30a;2.2 动态库如何使用 &#x1f30d;2.2.1 案例 &#x1f30d;2.2.2 动态…

速卖通自养号测评:如何规避安全风险?

对于初涉电商领域的新卖家而言&#xff0c;进行销量测评显得尤为关键。由于速卖通新店铺往往难以获得平台活动的支持&#xff0c;流量也相对匮乏&#xff0c;因此&#xff0c;开店的首要任务便是进行测评&#xff0c;通过积累一定的评论和销售数据。 测评的益处颇多&#xff0…

【数据结构与算法】8.二叉树的基本概念|前序遍历|中序遍历|后序遍历

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

4.3网安学习第四阶段第三周回顾(个人学习记录使用)

本周重点 ①Java入门基础 ②Java方法入门 ③Java面向对象(**重点) ④Java的Maven构建项目工具 ⑤Java其他操作补充 ⑥Java序列化和反序列化 ⑦Url 的DNS 审计链(**难点) ⑧Springboot和前端数据分离(主流使用) ⑨Common Collections(CC链漏洞) 本周主要内容 ①Java入…

使用 Flutter 打造引人入胜的休闲游戏体验

作者 / Zoey Fan 去年&#xff0c;Flutter 休闲游戏工具包进行了一次重大更新。近期在旧金山举办的游戏开发者大会 (GDC) 上&#xff0c;Flutter 首次亮相。GDC 是游戏行业的顶级专业盛会&#xff0c;致力于帮助游戏开发者不断提升开发技能。欢迎您继续阅读&#xff0c;了解开发…

01、创建型-单例模式--只有一个实例

文章目录 前言一、基本介绍1.1 什么是单例模式1.2 为什么要用单例模式1.3 应用场景1.4 单例优缺点 二、单例模式的实现方式2.1 饿汉式单例2.1.1 静态变量方式2.1.2 静态代码块 2.2 懒汉式单例2.2.1 懒汉式单例2.2.2 懒汉式优化①-线程安全2.2.2 懒汉式优化②-双重检查锁2.2.3 懒…