JAVA基础阶段面试题(关键点)必备
1、简述什么是 JDK、JRE 和 JVM?
JDK : 开发工具包
JRE : 运行时环境
JVM : java虚拟机
2、写出Java的四类八种基本数据类?
整数 byte short int long
小数(浮点) float double
布尔 boolean
字符 char
3、& 和 && 的区别 ?
& 符号的左右两边,无论真或假都要执行
&& 符号的左边如果为假,符号的右边不再执行,提高了代码的执行效率
4、 switch的参数可以是什么类型
int 及以下整数包含 字符 char byte short int char
String
枚举
5,简述什么是标识符,及其定义的规则
标识符就是名字
数字不能开头
不能使用关键字起名字
特殊符号只有 _ $
26个大小写英文字母
数字0-9
其他国家的语言文字
6、说出成员变量和局部变量的区别
1, 物理位置
成员变量: 类中方法外
局部变量: 方法中或方法定义的小括号里面
2, 内存位置
成员变量: 在堆内存中
局部变量: 在栈内存中
3, 生命周期
成员变量: 随着对象创建而产生,随着对象的消失而消失
局部变量: 随着方法的调用而产生,随着方法调用结束而消失
4,有无默认值
成员变量: 有默认值, 整数0,小数0.0 字符 ‘\u0000’ 布尔 false 引用数据类型 null
局部变量: 没有默认值,使用的时候,必须先赋值
7、static关键字都能修饰什么? 都有什么特点
1, 修饰成员变量, 叫静态变量 具有共享性,节省内存空间
2, 修饰方法: 静态方法: 可以直接使用类名.进行调用,
3, 修饰代码块: 静态代码块 ,给静态变量进行赋值
4, 修饰类: 静态内部类
8 、什么是封装,为什么要封装
就是将事物的属性和行为 通过 private进行修饰,外界无法直接进行访问,需要提供公共的setter 和 getter 进行间接的访问
提高代码的安全性和复用性
9, 什么是面向对象,请详细说明(分别解释 封装 继承和多态)
面向对象是一种以事物为中心的编程思想,具体分为封装继承和多态
封装: 通过private关键字将事物的属性和行为封装起来,对外通过setter和getter提供公共的访问方式,提高了代码的安全性
继承: 让类与类之间产生子父级的关系,子类可以去使用父类的资源,提高了代码的复用性
多态: 事物的多种形态,发生多态的前提,必须有继承,有方法的重写,有父类的引用指向子类对象
10, overload和override的区别
overload 是重载 要求在同一个类中,方法名相同,参数列表不同与返回值类型无关
参数列表不同表现在: 个数不同, 数据类型顺序不同,数据类型不同
override是重写 要求发生在子父级的继承关系中,方法名相同,参数列表相同,返回值类型是父类返回值类型本身或其子类, 异常等于父类本身异常类型或小于父类本身异常
11, final 和 finally的区别
final 是权限修饰符, 表示最终的, 能修饰 变量, 方法,和类
修饰变量: 变成了常量
修饰方法: 变成了最终的方法,不能被重写,但是可以被正常调用
修饰类: 变成的最终的类,不能有子类,但是可以被正常创建对象
finally 是一个代码块,只能与我们的 try代码块连用,表示无论代码是否发生异常,finally里面的代码都要执行
12, this和super都能用到哪些地方
thissuper
可以区分成员变量与局部变量重名问题,如果本类没有这个成员变量,也可以调用父类的成员变量可以区分本类成员变量与父类成员变量重名问题,只能调用父类的成员变量
可以调用本类的成员方法,如果本类没有这个成员方法,也可以调用父类的成员方法只能调用父类的成员方法
可以通过this() 或 this(参数) 让其本类的构造方法直接相互调用子类通过super() 或 super(参数) 调用父类的构造方法
13, 接口与抽象类的区别
|
|
|
|
|
|
|
|
14, 静态变量与成员变量的区别
内存位置 : 静态变量在方法区中,成员变量在堆内存中
生命周期 : 静态变量随着.class文件加载而产生,随着.class文件结束而结束; 成员变量随着对象的创建而产生,随着对象的结束而结束
调用方式: 静态变量既可以通过 类名.直接进行调用, 也可以通过对象名.进行调用; 成员变量只能通过 对象名.进行访问
15, throw和throws 的区别
throw 是具体抛出一个异常对象,在方法的内部, 后面有且只能有一个异常对象,代码一旦遇到了throw证明出现了问题,代码就会停止
throws 是异常的声明, 在方法定义的小括号后面,后面可以跟多个异常的类型,方法有throws,代码不一定发生异常
16 String,StringBuilder 与 StringBuffer 的区别
String是不可变的字符串序列, StringBuilder和StringBuffer是可变的字符串序列
StringBuilder 是 线程不安全的,从jdk1.5版本开始的,效率高
StringBuffer 是 线程安全的,从jdk1.0开始的,效率低
17, == 和 equals的区别
== 既可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型,比较的是具体的值,比较引用数据类型比较是地址值
equals只能比较引用数据类型,重写之前比较的是引用数据类型的地址值,重写之后,比较的是引用数据类型的内容
18, 包装类拆箱装箱
基本数据类型转换成对应的引用数据类型,为装箱,把引用数据类型转换为对应的基本数据类型为拆箱,jdk1.5之后可以实现自动拆装箱
19,请说出5个异常类型
数组索引下标越界异常,空指针异常,文件找不到异常,类型转换异常,算数异常
ArithmeticException 算术异常,如除以0
ArrayIndexOutOfBoundsException 数组下标出界
IOException I/O异常的根类
FileNotFoundException 不能找到文件
NullPointerException空指针异常
20, HashSet 的去重原理
不同的对象,地址值肯定不同,地址不同,直接插入数据成功
如果地址值相同,不能证明是同一个对象
需要通过equals 的方法继续比较,比较的是对象中的每一个内容
如果内容相同证明是同一个对象,插入失败
如果内容不同,证明不是同一个对象,数据插入成功
21, jvm内存划分
jvm分为方法区,堆内存,栈内存,本地方法栈,程序计数器,
方法区: 主要存.class字节码文件,静态变量,字符串常量
堆内存: 主要存new出来的对象,数组也在堆内存中
栈内存: 存正在执行的方法,局部变量也在栈内存中
22, 构造方法是否可以被重写?为什么?
构造方法不能被重写,因为构造方法要求,方法名与类名保持一致,
23, Collection 与 Collections 的区别
collection是单列集合的顶层父接口,Collections 是处理集合的工具类
24, 集合与数组的区别
集合与数组都是容器
数组既可以存基本数据类型也可以存引用数据类型,数组的长度固定不能发生改变
集合只能存引用数据类型,可以存任意的引用数据类型,长度可变
25, 多线程的三种实现方式
1, 继承Thread,重写run方法,最后创建Thread 的子类对象,调用start()方法开启线程任务
2, 实现Runnable接口,重写run方法,创建Runnable 的实现类对象,通过Thread 的构造传递,调用start() 方法开启线程任务
3, 实现Callable接口,重写call方法,创建Callable的实现类对象,将Callable 的实现类对象,传递到FutureTask的构造方法中,最后将FutureTask传递到Thread 的构造方法中,通过start()方法开启线程任务
26, 多线程的生命周期
多线程的生命周期有5种状态,分别是 新建态,就绪态,运行态,阻塞态和死亡态
新建态: 刚new出来的时候
就绪态: 已经.start(),没有获取到cpu资源
运行态: 获取到cpu资源进入运行态
阻塞态: 线程遇到sleep(),遇到wait() 或者io流阻塞让cpu资源丢失
死亡态: 线程正常结束,线程任务出现异常
27, TreeSet和HashSet的区别
TreeSet 和 HashSet 一样都有 无序无索引不能重复
TreeSet 可以进行根据一定的排序规则进行排序
HashSet 没有排序的规则
28, TreeMap如何去重
TreeMap去重 是利用key值的 compareTo 方法,compareTo方法为0,就证明是同一个元素,进行去重
29,所学习的io流一共分为几类
IO流根据流向 有输入流和输出流两种
IO流根据类型分类有 字节输入输出流 和 字符输入输出流
字节输入流 InputStream
字节输出流 OutputStream
字符输入流 Reader
字符输出流 Writer
30, 目前学习的最高效的文件复制方式
高效缓冲流+字节数组 字节数组的大小一般是1024的倍数 最高一般不超过8倍
31,String abc = new String("abc")有几个对象
有两个对象,一个对象"abc"在方法区的字符串常量池中,一个在堆内存中,是new String()
32,map的两种遍历方式
map不能直接遍历,想要遍历有两种间接的方式
1, 通过map方法的 keySet() 方法, 将map中的key 取出来,存到set集合里面,之后遍历set集合,通过map中的 get(key key) 方法取出每一个value值
2, 通过map中的 entrySet() 方法, 将map中的key 和 value 存到 map的内部类 entry中,之后将entry对象存到set集合里面,之后通过遍历set集合,通过entry内部类中的 getKey, 和 getValue 获取每一个值
33,HashMap与HashTable 的区别
HashMap 是线程不安全的,允许有空的键值对
Hashtable 是线程安全的,不允许有空的键值对
34,什么是反射?
反射就是在程序运行时期,动态的获取类中成员信息(构造方法,成员变量,成员方法)的过程!
35, 字节流与字符流有什么区别
字节流是万能流,可以处理任意的文件
字符流不是万能流,只能处理纯文本文件
扩展:
1, Java的线程池有哪些?那你最常用的线程池是哪个?
newCachedTheadPool 动态的线程池
newFixedThreadPool 固定线程数的线程池
newSingleThreadExecutorPool 固定只有一条线程的线程池
newSCheduledThreadPool 以固定频率执行的线程池
一般来说,这四种线程池都不使用,一般使用ThreadPoolExecutor来自定义线程池
2, sleep wait notify notifyAll的作用
sleep方法是Thread类的静态方法
调用sleep方法可以让当前正在运行的线程进入睡眠状态,即暂时停止运行指定的单位时间。并且该线程在睡眠期间不会释放对象锁。
wait是Object提供的一个方法
调用wait方法可以让当前线程进入等待唤醒状态,并释放锁。该线程会处于等待唤醒状态直到另一个线程调用了object对象的notify方法或者notifyAll方法。
notify也是Object提供的一个方法
当其它线程调用该对象的notifyAll()方法(唤醒所有wait线程)或notify()方法(只随机唤醒一个wait线程),被唤醒的的线程便会进入该对象的锁池中,锁池中的线程会去公平竞争该对象锁。
3,HashMap的底层数据结构是什么?那什么时候变为红黑树呢?
在JDK1.7的时候是数组+链表;
在JDK1.8的时候是数组+链表+红黑树;
当链表的长度大于8的时候,就会变成红黑树
4, final,finally,finalize有什么区别?
final用于修饰类,变量,方法
1.final修饰类,类不能被继承了。
2.final可以修饰方法,方法就不能被重写了。
3.final修饰变量总规则:变量有且仅能被赋值一次。
finally用于try-catch捕获异常,无论代码是否发生异常,finally中的代码一定会被执行,通常用来关闭资源
finalize属于Object类中的一个方法,当对象被回收的时候,会调用此方法
相关文章:
JAVA基础阶段面试题(关键点)必备
1、简述什么是 JDK、JRE 和 JVM? JDK : 开发工具包JRE : 运行时环境JVM : java虚拟机2、写出Java的四类八种基本数据类?整数 byte short int long小数(浮点) float double布尔 boolean字符 char3、& 和 && 的区别 ?& 符号的左右两边,无…...
Shiro简介
介绍 ApacheShiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成:认证、授权、加密、会话管理、与 Web集成、缓存等。借助Shiro 您可以快速轻松地保护任何应用程序一一从最小的移动应用程序到最大的 Web 和企业应用程序。 1.2:为什么要用 shiro 自2003年以…...
cmu 445 poject 3笔记
2022年的任务 https://15445.courses.cs.cmu.edu/fall2022/project3/ task1, 从磁盘读取数据的算子 task2, 聚合和join算子 task3, sort,limit,topn算子,以及sortlimit->TopN优化 leaderboard没做 本文不写代码,只记录遇到的一些思维盲点 Task1 scan…...
CHAPTER 2 Zabbix界面操作
Zabbix界面操作2.1 Zabbix界面操作1.zabbix的web界面安装2.添加监控信息3.查看监控内容4.查看图像2.2 自定义监控与监控报警1.自定义监控1.1 说明1.2 预备知识2.实现自定义监控2.1 自定义语法2.2 agent注册2.3 在server端注册(web操作)2.4 查看监控图形2.3 监控报警1.第三方报警…...
keep-alive的使用-及遇到的问题
被keep-alive包括的的组件,当组件切换是不是走销毁流程,而是缓存起来 keep-alive有三个参数include匹配name名被缓存,exclude匹配name名不会被缓存,max被缓存组件数量 不写,组件默认全部缓存 <keep-alive ><…...
华为OD面试经验分享,尤其注意机试题部分
文章目录招聘流程和背景介绍面试准备机试题目类型和解答技巧在算法部分在操作系统部分面试官提问和答题技巧面试总结和建议推荐一些华为 od 常见的机试题题目:两数之和题目:二叉树的遍历题目:链表反转题目:最大子序和招聘流程和背…...
【Java】String、StringBuffer、StringBuilder的区别
一、String 由 char[] 数组构成,使用了 final 修饰,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,然后把指针指向新的引用对象,不仅效率低下,而且浪费大量优先的内存空间。 二…...
iOS开发:对Block使用的一次研究总结
在开发中Block是经常使用的,那我们就得知其然,知其所以然。 Block是什么? Block可以封装一个匿名函数为对象,并捕获上下文所需的数据,并传给目标对象在适当的时候回调。我们使用Block的目的其实就是回调传值,那我们去看看Block的底层,再深入了解一下Block。 Block的底…...
Spark 3.1.1 shuffle fetch 导致shuffle错位的问题
背景 最近从数据仓库小组那边反馈了一个问题,一个SQL任务出来的结果不正确,重新运行一次之后就没问题了,具体的SQL如下: select col1,count(1) as cnt from table1 where dt 20230202 group by col1 having count(1) > 1这个问题是偶发…...
2月第2周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!
飞瓜轻数发布2023年2月6日-2月12日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B站…...
Jdk19 动态编译 Java源码为 Class 文件
动态编译 Java 源码为 Class一.背景1.Jdk 版本2.需求二.Java 源码动态编译实现1.Maven 依赖2.源码包装类3.Java 文件对象封装类4.文件管理器封装类5.类加载器6.类编译器三.动态编译测试1.普通测试类2.接口实现类3.测试四.用动态编译 Class 替换 SpringBoot 的 Bean(…...
安装 GPU 版本的 tensorflow 完整版本
前言: 之前安装的 CPU 版本的 tensorflow 一直出问题,索性就直接安装 GPU 版本的 tensorflow 了(有了GPU 就不能浪费)。 安装过程: 1)看自己有无 GPU,找到对应 GPU 的版本:任务管理…...
BOM编程-设置地址栏上的URL
<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>设置地址栏上的URL</title> </head> <body> <script> function go(){ // 获…...
设计模式之原型模式与建造者模式详解和应用
目录1 原型模式1.1 原型模式定义1.2 原型模式的应用场景1.3 原型模式的通用写法(浅拷贝)1.4 使用序列化实现深度克隆1.5 克隆破坏单例模式1.6 原型模式在源码中的应用1.7 原型模式的优缺点1.8 总结2 建造者模式2.1 建造者模式定义2.2 建造者模式的应用场…...
C语言(函数和递归)
函数是完成特定任务的独立程序代码单元。 目录 一.函数 1.创建一个简单的函数 2.定义带形式参数的函数 3.使用return从函数中返回值 二.递归 一.函数 1.创建一个简单的函数 #include <stdio.h> void print(void); //函数原型 int main(){ print(); //函…...
快乐的shell命令行
快乐的shell命令行 PART1——基础 1.权限 #超级用户权限$普通用户 2.复制粘贴 复制:鼠标左键沿着文本拖动高亮的文本被复制到X管理的缓冲区(或者双击一个单词)粘贴:鼠标中键 3.简单命令 时间和日期date当前月份的日历cal磁…...
大数据面试题flume篇
1.Flume 的Source,Sink,Channel 的作用?你们Source 是什么类型? 1. 作用 (1)Source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括 avro、thrift、exec、jm…...
零信任-深信服零信任aTrust介绍(5)
深信服零信任aTrust介绍 深信服是国内领先的互联网信任服务提供商,也是国内首家通过认证的全球信任服务商。深信服零信任是其中一项核心的信任技术,主要针对身份认证、数字签名、数字证书等方面的信任问题。 深信服零信任提供了一种新的安全保护模式…...
UVa 1343 The Rotation Game 旋转游戏 IDA* BFS 路径还原
题目链接:The Rotation Game 题目描述: 给定二十四个整数,这二十四个整数由八个一,八个二,八个三组成,从左到右,从上到下依次描述下图方格中的数字: 例如上图左边对应的输入就是[1,…...
硬件学习 软件Cadence day02 画原理图的基本操作 (键盘快捷键 , 原理图设计流程 , 从开始到导出网表流程)
1. ORCAD Capture cls 界面的快捷键 键盘 按键对应的操作I放大 (可以滚轮操作)O缩小 (可以滚轮操作)W画线Esc退出现在的状态 (画图界面 右键 End xxx)N放置网络标号J放置节点 (控制…...
【python】基于Socket的聊天室Python开发
基于Socket的聊天室Python开发一、Socket简述二、创建服务端Server2.1 创建服务端初始化2.2 监听客户端连接2.3 处理客户端消息三、创建客户端Client3.1 创建服务端初始化3.2 发送消息3.3 接收消息3.3 线程工作3.4 线程工作是不是挺好玩的呢?也可以作为课程设计哦&a…...
2023想转行软件测试的看过来,你想要了解的薪资、前景、岗位方向、学习路线都讲明白了
在过去的一年中,软件测试行业发展迅速,随着数字化技术应用的广泛普及,业界对于软件测试的要求也在持续迭代与增加。 同样的,有市场就有需求,软件测试逐渐成为企业中不可或缺的岗位,作为一个高薪又需求广的…...
TortoiseSVN的使用
基本概念 版本库 SVN保持数据的地方,所有的文件都保存在这个库中,Tortoise访问的就是远程服务器上的Subversion版本库。 工作拷贝 就是工作副本,可将版本库的文件拷贝到本地中,可以任意修改, 不会影响版本库。在你…...
操作系统(day09) -- 连续分配管理方式
连续分配管理方式 单元连续分配 动态分区分配 1.系统要用什么样的数据结构记录内存的使用情况? 两种常用的数据结构 空闲分区表 每个空闲分区对应一个表项。表项中包含分区号、分区大小、分区起始地址等信息空闲分区链 每个分区的起始部分和末尾部分分别设置前向…...
APISpace 带你一起走进西湖美景
俗话说:“上有天堂,下有苏杭”。 “欲把西湖比西子,浓妆艳抹总相宜” 今天我就带大家走进杭州的西湖美景。自古以来,文人歌者面对西湖美景留下千古绝句,还以西湖为背景书写了一段段动人的爱情传说。 天生自带浪漫色…...
傻白探索Chiplet,Design Space Exploration for Chiplet-Assembly-Based Processors(十三)
阅读了Design Space Exploration for Chiplet-Assembly-Based Processors这篇论文,是关于chiplet设计空间探索的,个人感觉核心贡献有两个:1.提出使用整数线性规划算法进行Chiplet的选择;2.基于RE和NRE提出了一个cost模型ÿ…...
系统分析师真题2020试卷相关概念一
对象系统测试的基本概念: 面向对象系统的单元测试包括方法层次的测试、类层次的测试和类树层次的测试。方法层次的测试类似于传统软件测试中对单个函数的测试; 测试技术: 方法层次的测试,单个函数的测试;常用的技术:等价类划分测试、组合功能测试、递归函数的测试和多态…...
20230215_数据库过程_渠道业务计算过程
—20221209 渠道产能 —自有人员工号表 shzc.xc_qdcn_pgtx_opertype —select * from shzc.xc_qdcn_pgtx_opertype for update ; —渠道基础目录 shzc.xc_qdcn_pgtx_qdtype —select * from shzc.xc_qdcn_pgtx_qdtype for update ; SQL_STRING:‘update shzc.xc_qdcn_pgtx_q…...
【C++】Expression的学习笔记
关于不同类别表达式的举例,请参考博文《C 中的值类别》 1. 左值和右值的简单理解 左值对应了具有内存地址的对象,而右值仅仅是临时使用的值对象。(引用自博文《C 中的值类别》)左值有名称(变量或常量名称)…...
[数据库迁移]-MySQL常见问题
[数据库迁移]-MySQL常见问题 森格 | 2023年2月 介绍:记录在MySQL数据库迁移过程中遇到的问题,以及解决方案。 文章目录[数据库迁移]-MySQL常见问题一、背景二、常见问题2.1 ERROR 20032.2 ERROR 12732.3 ERROR 10712.4 视图权限2.5 ERROR 1062三、总结一…...
东莞手机网站建设/想建立自己的网站
文章目录 一、前言二、源码二、版本三、开始1、游戏规则2、艺术风格3、摄像机设置4、光线设置5、地面设置6、建筑物设置7、城堡设置8、怪物设置9、生成怪物10、子弹设置11、防御塔设置12、内容拓展一、前言 在本教程中,我们将创建一个小的三维塔防御游戏与一个完全独特的图形…...
做网站 广告费 步骤/百度一下的网址
# RSA加解密及签名算法的技术原理及其Go语言实现对称加密中,加密和解密使用相同的密钥,因此必须向解密者配送密钥,即密钥配送问题。而非对称加密中,由于加密和解密分别使用公钥和私钥,而公钥是公开的,因此可…...
西安网约车公司排行榜/重庆百度推广优化
小哥哥、小姐姐,你们好,请把手伸出来,我给你们点东西。 1、JavaScript异步编程 同步与异步回调函数promisegeneratorasyncawait2、写一个符合规范的promise库 1、JavaScript异步编程 1-1、同步与异步 我们都知道js是单线程语言,这…...
社交网站开发流程/网站开发需要哪些技术
文章目录1.Navicat介绍Navicat for MySQL2.Navicat for MySQL安装1.下载链接2.解压压缩包文件3.通过命令提示符登陆mysql4.复制MySQL数据库文件到Navicat_V11.0.10内的目录下5.配置Navicat for MySQL的环境变量6.启动Navicat for MySQL里的navicat.exe1.Navicat介绍 Navicat是一…...
有关风水的网站建设栏目/2023广东最新疫情
文章目录摘要一、Introduction1、引入原因2、结构框架二、相关工作1、新闻推荐算法2、推荐中的强化学习3、问题定义三、实现原理1、模型框架2、特征构造3、深度强化推荐Deep Reinforcement Recommendation4、用户活跃度5、探索四、实验结果1、数据集2、评价指标3、实验设置4、性…...
iis7安装wordpress/视频号怎么付费推广
软件工程-软件维护/系统维护 系统可维护性 评价指标 可理解性可测试性可修改性 系统维护类型 改正性维护适应性维护预防性维护完善性维护 tip:完善性维护占半壁江山 系统文档 开发文档:技术员编写,与开发相关产品文档:与用…...