JAVA基础常见简答题面试题

2023-11-02

1.为什么java是半编译半解释性的语言,java如何实现跨平台
java的编译器先将其编译为class文件,也就是字节码;然后将字节码交由jvm(java虚拟机)解释执行, 所以很多地方都说“java是一种半编译、半解释执行”的语言
JAVA字节码通过虚拟机翻译(解释)给不同的平台,这个过程就叫做跨平台。JAVA字节码文件只有一个,但针对不同的平台会有不同的虚拟机,究其原因,实现跨平台最根本的东西是虚拟机
2.简述加强for循环有哪些使用限制
加强for不支持在遍历时修改集合元素
使用加强for时需要对所遍历的集合进行nul判断,否则会引发空指针异常
3.简述String、StringBuffer、StringBuilder的区别
String 类时不可变类,一旦一个String对象创建后,就不能修改知道销毁。
StringBufffer 则是一个字符序列可变的字符串 可以通过其提供的方法对该字符串进行各种操作 生成最终想要的字符串时,可以通过toString方法,将其转换成String类。
StringBuilder与StringBuffer基本相同 但区别是StringBuilder不需要安全检查,效率更高。
4.abstract class和interface有什么区别
Abstrcat 类是抽象类 interface 是接口 两者本质不同。
抽象类中可以有构造方法而接口中不能。
抽象类中可以包含普通或者抽象方法而接口中必须都是未实现的方法。
接口与接口之间可以多继承,而抽象类与类之间只能单继承。
一个类可以实现多个接口,而类与抽象类的继承只能为单继承
接口中的方法不加访问修饰符是 public abstract,而抽象类中不加访问修饰符是 默认的
5.简述Java类成员的访问控制权限
同类 同包 非同包子类 非同包非子类
Private √
Default √ √
Protected √ √ √
Public √ √ √ √
6.简述final的作用
可用于修饰变量 表示常量
可用于修饰类 表示最终类 即无子类
可用于修饰方法 表示最终方法 即不嗯你被重写或覆盖
7.简述overload和override的区别
Overload:重载
重载的方法名必须相同 但参数列表不同 构成重载的条件与返回值类型无关。
Override:重写
重写的方法名 方法列表必须完全相同,返回值类型如果是基本类型,则必须相同,如果是类类型,则应是其父类的返回值类型或子类。
8.简述Java的GC机制,finallize方法的作用
gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,齟大多数gc都使用类似的算法管理内存和执行收集操作。
Finallize表示一个Objec类的方法,在垃圾回收机制中执行的时候,它最主要的用途是回收特殊渠道申请的内存。
9.JDK8中如何声明默认方法?默认方法的价值在什么地方?
Default 被用来声明默认方法
在接口的命名前加默认 匿名类无需实现该方法
10.简述Collections和Collection的区别
Collection是一个接口,用于定义集合操作的标准。
Collections是一个工具类,可以操作任意的的集合对象。
11.什么是函数式接口?@Functional的的作用是什么?
函数式接口:在接口中有且只有一个未实现的方法。
@Functional 可用于限制该接口必须是函数式接口,否则会报错。
12.简述三种循环的区别
for循环的循环迭代语句并没有与循环体放在一起,不管是否使continue语句来结束本次循环,循环迭代语句一样会获得执行。
while循环先先判断是否符合条件在执行,可能一次都不执行。
do-while循环一定会先执行一次循环体内容,在根据循环条件决定是否继续执行。
13.简述方法返回值类型和return的关系
return语句返回的类型必须与函数的返回值类型相同。有返回值,就一定有return。

14.简述Java中this和super关键字的作用
this:本类成员 super:父类成员
This():本类构造 super():父类构造
15.final、finally、finallize的区别是什么
final: 表示最终的,用于修饰常量,类,方法。
finally:是一种异常处理机制,是对异常处理模式的补充。无论一异常是否发生,finally中的代码总会被执行。
finallize是一个方法名,用于垃圾回收机制时将对象从内存清除出去之前。
16.简述面向对象的三个主要特征
封装、继承、多态
17.List、Set、Map的区别有哪些
List:实现Collection接口的子接口,允许元素的重复,有序,允许任意数量的空值。
Set:实现Collection接口的子接口,不要允许元素的重复,若重复则只显示一个,无序,最多之允许一个空值的出现。
Map:是另一个集合接口,与Collection平级,以键值对的形式对元素进行储存,不允许重复键,但允许值重复。无序,之允许出现一个空键,但可以出现多个空值。
18.java8个基本类型,包括占用字节数和取值范围(浮点型不需要写取值范围)
int: 4个字节 -231 ~ 231-1
char: 2个字节 ‘\u0000’ ~’\uFFFF’
double: 8个字节
float: 4个字节
boolean: true/false
byte: 1个字节 -27 ~ 27-1
short: 2个字节 -215 ~ 215-1
long: 8个字节 -263~263-1
19.break和continue的区别
break:结束循环
continue:忽略本次循环
20.类的初始化块在何时执行?
在每一次实例化时
21.简述ArrayList、LinkedList和Vector的区别
实现方式:LinkedList:双向链表; ArrayList,Vector:数组
线程安全性:Vector:线程安全; ArrayList、LinkedList:非线程安全
线程同步:Vector:支持线程的同步;ArrayList、LinkedList:不支持线程的同步
22.简述jvm,jdk,jre的关系
JVM:java虚拟机,作用:保证java语言跨平台
JRE:java运行环境 jre=java虚拟机+核心类库。作用:java程序的运行环境。
JDK :java开发工具集。JDK=jre+java开发工具。作用:java程序的开发环境。
使用jdk开发完成的java程序,交给JRE去运行,由JVM来保证跨平台
23.&&和&的区别
&按位与/&&逻辑与。
&,双目运算符:将两个表达式的值按二进制位展开,对应的位(bit)按值进行“与”运算,结果保留在该位上
&&:双目运算符,计算两个表达式同时成立的“真值”(同时成立真值为真否则为假)
24.简述Java中的三种注释
// 单行注释
// 多行注释
/**…*/ 对文档或类注释
25.String str=”hello”;几次分配空间,请简述分配过程?
两次分配空间 现在栈区开辟一个空间存str,之后在堆区开辟空间存hello
26.简述HashMap和HashTable的区别
Hashtable 线程安全,不允许键值对为空
HashMap线程不安全,效率更高,允许键值为空
27.对比匿名内部类和Lambda它们有什么异同?
【Lambda表达式与匿名内部类的 区别】
1.匿名内部类可以为任意接口创建实例——不管有多少个抽象方法,只要匿名内部类实现了所有方法即可。
但是Lambda表达式只能为函数式接口创建实例。
2.匿名内部类可以为抽象类甚至普通类创创建实例,
但lambda表达式只能为函数式接口创建实例。
3.匿名内部类实现的抽象方法体允许调用接口中的默认方法,
但Lambda表达式的代码块不允许调用接口中的默认方法。
【Lambda表达式与匿名内部类的 相同点】
1.Lambda表达式和匿名内部类一样,都可以直接访问"effectively
final"的局部变量,以及外部类的成员变量(包括实力变量和类变量)
2.Lambda表达式创建的对象和匿名内部类创建的对象一样,都可以直接调用从接口中继承的默认方法。
28.简述如何实现对ArrayList集合进行排序(不是冒泡)
Sort()方法
29.在java内存中有几个区域?(答出>=3个)
静态存储区 堆区 栈区 常量区
30.什么编译期类型、什么是运行期类型、什么是静态绑定、什么是动态绑定
编译时类型由声明该变量时使用的类型决定 此时时动态绑定
运行时类型由实际赋给该变量的对象决定 此时时静态绑定

31.方法是动态绑定还是静态绑定,为什么?
方法是动态绑定

32.在java中浮点类型会精度缺失,用什么类解决精度缺失问题
通过使用BigDecimel进行转换后再计算。
33.Java中的八大包装类有哪8个?
Integer Double Byte Float Boolean Long Short Character
33.在jdk1.8中接口定义时,包括的成员有哪些?(>=3种)
变量 为实现方法 已实现方法 静态方法
34.构成方法重写时,重写时的三个注意规则,规则是哪三个?
1. 重写的方法名 方法列表必须完全相同,返回值类型如果是基本类型,则必须相同,如果是类类型,则应是其父类的返回值类型或子类。
2.子类抛出的异常不能超过父类相应方法抛出的异常。
3.子类方法饿访问级别不能低于父类方法的访问级别
35.对于基本类型与引用类型判断相等时的区别?引用类型如何判断值相等。
对于基本类型判断是是比较值是否相等,对引用类型判断是是比较堆中的地址是否相同。引用类型判断值相等应采用.equals()
36.String str=”hello”与String str1=new String(“hello”); str
str1?是否相等?为什么?
不相等
str=“hello”;这种方法创建的字符串,如果内存已经为“hello“字符串分配了内存,那么str就指向“hello”内存对象的地址
String str=new String(“hello”);这种方法创建的字符串,不管内存有没有为“hello”字符串分配内存,都会在内存中重新分配一个内存区域存放“hello”,然后用str指向它,相当于内存中有两个“hello”只是存放的地址不一样。
37.Integer a1=125;Integer a2=245; a1
a2?是否相等?为什么?
不相等 Integer的取值范围是-128 ~127 超出这个范围要用.equals
38.List与List接口的区别?
List是接口,ArrayList是List的一种实现,List是ArrayList的泛型,
39.什么是ArrayList 的扩容?
增加容量,以确保它至少能容纳由最小容量参数指定的元素数
40.ArrayList与HashMap的区别?
1.ArrayList :有序允许重复,按索引访问
       HashMap:无序通过键值来访问存值
2. 底层实现:ArrayList:数组扩容
       HashMap:链表+红黑树
41.如何防止一个类在外部进行实例化?如何防止一个类被继承?
私有构造防止类的被实例化
使用final可以防止该类被继承
42.请解释类与对象的关系?
类是对象的抽象,对象是类的实例化

43.请解释如下关键字用法:final,abstract,interface,class,new ,extends的作用和用法
final: 可用于修饰变量 表示常量
可用于修饰类 表示最终类 即无子类
可用于修饰方法 表示最终方法 即不嗯你被重写或覆盖
abstract:可用于修饰类 表示抽象类
可用于修饰方法 表示抽象方法 抽象方法必须在抽象类中 不能被实例化
interface:接口 支持多继承 可以类被实现 不能被类继承
class:声明类
new:实例化对象时使用,即创建新对象时。
extends:表示继承
44.继承与实现的区别?
继承是子类继承父类 即类之间的关系为继承
实现是类与接口的关系 通常为类实现接口
Java只支持单继承,但可以多实现

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA基础常见简答题面试题 的相关文章

随机推荐

  • linux脚本的注释符号是什么,linux的shell编程中的符号`是什么

    bin sh 是指此脚本使用 bin sh来解释执行 是特殊的表示符 其后面根的是此解释此脚本的shell的路径 bash 表示系统提示符 表示此用户为普通用户 超级用户的提示符是 bash是shell的一种 是linux下最常用的一种sh
  • ARM MMU 详解

    一 MMU 的产生 许多年以前 当人们还在使用DOS或是更古老的操作系统的时候 计算机的内存还非常小 一般都是以 K 为单位进行计算 相应的 当时的程序规模也不大 所以内存容量虽然小 但还是可以容纳当时的程序 但随着图形界面的兴起 还有用户
  • @Resource注解的使用

    1 在spring的配置文件中导入命名空间 xmlns context http www springframework org schema context http www springframework org schema cont
  • 推荐一个好组件Javascript文本比较工具

    您的项目上有没有遇到需要在前端显示并比较两个不同版本的文本文件 希望它像winmerge 或eclipse的svn比较工具那样标注不同的地方 我找到了 分享给大家吧 最近项目上需要一个类似cvs svn文本比较工具 把左右两个文本中不一样的
  • 在Eclipse添加Android兼容包( v4、v7 appcompat )

    昨天添加Android兼容包 碰到了很多问题 在这里记录一下 让后面的路好走 如何选择兼容包 请参考Android Support Library Features 二 一 下载Support Library 方法1 右击项目 选择Andr
  • Jenkins配置定时调度部署

    H 22 表示每天22点 自动构建
  • 怎么找CVPR/ICCV/ECCV文章

    原文链接 https www jianshu com p aed3dd8c81fa CVPR论文查找 每年一届 点击如下链接 输入相关关键字即可搜索 http openaccess thecvf com CVPR2013 search py
  • 冒泡排序原理详解及代码实现

    1 冒泡排序数组排序常用的一种方式 为什么要叫冒泡排序呢 这还要从它的原理说起 2 代码实现 低效版 3 原理详解 冒泡排序最基本的思想就是从左到右依次判断相邻的两个数的大小关系 如果前面的数大于后面的数 则两数互换位置 但是只是从左到右遍
  • C++11---智能指针

    智能指针 1 为什么引入智能指针 1 1 内存泄漏 2 智能指针的使用及原理 2 1 RAII 2 2 智能指针的原理 3 C 98 auto ptr 4 unique ptr 5 shared ptr 5 1 循环引用 6 weak pt
  • 在Anaconda下安装了TensorFlow库matplotlib库却调用不了了

    在Anaconda下安装了TensorFlow库 但是Anaconda中的matplotlib库却调用不了了 解决方法如下 1 打开Anaconda Prompt 2 输入activate tensorflow 3 输入conda inst
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题解析-A

    2022年全国职业院校技能大赛 中职组 网络安全竞赛试题 1 总分100分 需要环境可以私信博主 赛题说明 一 竞赛项目简介 网络安全 竞赛共分A 基础设施设置与安全加固 B 网络安全事件响应 数字取证调查和应用安全 C CTF夺旗 攻击
  • StackGAN笔记

    Stack可译做堆叠 就是在GAN上面再放上一个GAN 作者讲述的自己的解决思路 原来难以生成高分辨率的图像 他们分解了这个问题 把生成高分辨率图片这个任务分解成两个更为简单的任务 就是文中说的一个GAN生成大致的形状和颜色 第二个GAN生
  • 自主HttpServer实现(C++实战项目)

    文章目录 项目介绍 CGI技术 概念 原理 设计框架 日志文件 TCPServer 任务类 初始化与启动HttpServer HTTP请求结构 HTTP响应结构 线程回调 EndPoint类 EndPoint主体框架 读取HTTP请求 处理
  • tidymodels-workflow工作流

    在阅读这篇文章前 我强烈建议你先读一下tidymodels入门篇 tidymodels用于机器学习的细节 首先对tidymodels有一个整体的认知 今天主要介绍workflow的用法 workflow可以把你的数据预处理步骤和模型连接起来
  • 深聊性能测试,从入门到放弃之:性能测试基准与阶段

    如何做性能测试 1 引言 2 性能测试内容 2 1 基准测试 2 2 日常压力测试 2 3 峰值压力测试 2 4 容量测试 2 5 稳定性测试 3 性能测试阶段 3 1 测试确认 3 2 确定通过标准 3 3 测试设计 3 4 测试环境准备
  • 【问题解决】后端如何以文件流的形式返回本地资源给前端,提供下载服务

    后端以文件流的形式返回本地资源 文件地址 String path PDFpath File file new File PDFpath 读取生成的PDF文件 InputStream inputStream OutputStream outp
  • python中文主客观分类

    查了很久发现主客观分析的方法很多 但是数据集少的可怜 能直接使用的库更少 好不容易找到一个 收藏一下 Github 页面 https github com liuhuanyong ZhuguanDetection 下载与使用方法 git c
  • ELK之logstash单节点安装

    ELK之logstash单节点安装 最近在搞ELK 写个文章记录分享一下经验 去官网上下载对应版本的logstash安装包 将工具包上传至服务器 1 解压工具包 命令 tar xzvf logstash tar gz 2 配置logstas
  • Pycharm全局搜索窗口关不掉的解决方案 (ctrl shift F)

    Pycharm全局搜索窗口可以ctrl shift F打开 但是找不到直接关闭的按钮 清空搜索内容也关不掉 只能把窗口挪走 再次ctrl shift F也不会打开新的窗口 一度有点烦恼 后来发现 按ESC就行了 按ESC就行了 按ESC就行
  • JAVA基础常见简答题面试题

    1 为什么java是半编译半解释性的语言 java如何实现跨平台 java的编译器先将其编译为class文件 也就是字节码 然后将字节码交由jvm java虚拟机 解释执行 所以很多地方都说 java是一种半编译 半解释执行 的语言 JAV