广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java的基础面试题目(4)
  • 665
分享到

Java的基础面试题目(4)

java面试题Java 2020-03-09 19:03:05 665人浏览 绘本
摘要

a.hashCode() 有什么用?与 a.equals(b) 有什么关系?hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它

a.hashCode() 有什么用?与 a.equals(b) 有什么关系?

hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它与 equals() 方法关系特别紧密。根据 Java 规范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash code。

字节流与字符流的区别 (推荐学习:java面试题目)

要把一段二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一段二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作。

用一种抽象的方式进行描述,这个抽象描述方式起名为io流,对应的抽象类为OutputStream和InputStream,不同的实现类就代表不同的输入和输出设备,它们都是针对字节进行操作的。

计算机中的一切最终都是二进制的字节形式存在。对于经常用到的中文字符,首先要得到其对应的字节,然后将字节写入到输出流。

读取时,首先读到的是字节,可是我们要把它显示为字符,我们需要将字节转换成字符。由于这样的需求很广泛,Java专门提供了字符流包装类。

底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成字节再进行写入。字符流是字节流的包装,字符流则是直接接受字符串,它内部将串转成字节,再写入底层设备,这为我们向IO设备写入或读取字符串提供了一点点方便。

字符向字节转换时,要注意编码的问题,因为字符串转成字节数组,其实是转成该字符的某种编码的字节形式,读取也是反之的道理。

什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写代码去把一个java对象变成某个格式的字节流再传输。

但是,jre本身就提供了这种支持,我们可以调用OutputStream的writeObject方法来做,如果要让java帮我们做,要被传输的对象必须实现serializable接口,这样,javac编译时就会进行特殊处理,编译的类才可以被writeObject方法操作,这就是所谓的序列化。

需要被序列化的类必须实现Serializable接口,该接口是一个mini接口,其中没有需要实现方法,implements Serializable只是为了标注该对象是可被序列化的。

例如,在web开发中,如果对象被保存在了Session中,Tomcat在重启时要把Session对象序列化到硬盘,这个对象就必须实现Serializable接口。如果对象要经过分布式系统进行网络传输,被传输的对象就必须实现Serializable接口。

描述一下JVM加载class文件的原理机制?

JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

heap和stack有什么区别。

java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。

堆是与栈作用不同的内存,一般用于存放不在当前方法栈中的那些数据。

例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。

GC是什么?为什么要有GC?

GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃。

Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

垃圾回收的优点和原理。并考虑2种回收机制。

Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。

垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。

垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。

通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。

程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

Java 中,throw 和 throws 有什么区别

throw 用于抛出 java.lang.Throwable 类的一个实例化对象,意思是说你可以通过关键字 throw 抛出一个Exception,如:

throw new IllegalArgumentException(“XXXXXXXXX″)

而throws 的作用是作为方法声明和签名的一部分,方法被抛出相应的异常以便调用者能处理。Java 中,任何未处理的受检查异常强制在 throws 子句中声明。

java中会存在内存泄漏吗,请简单描述。

先解释什么是内存泄漏:所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。java中有垃圾回收机制,它可以保证当对象不再被引用的时候,对象将自动被垃圾回收器从内存中清除掉。

由于Java使用有向图的方式进行垃圾回收管理,可以消除引用循环的问题,例如有两个对象,相互引用,只要它们和根进程不可达,那么GC也是可以回收它们的。

java中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。

通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是java中可能出现内存泄露的情况。

例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局map对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。

--结束END--

本文标题: Java的基础面试题目(4)

本文链接: https://www.lsjlt.com/news/3390.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java的基础面试题目(4)
    a.hashCode() 有什么用?与 a.equals(b) 有什么关系?hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它...
    99+
    2020-03-09
    java面试题 Java
  • Java的基础面试题目(2)
    11、是否可以从一个static方法内部发出对非static方法的调用?不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。 ...
    99+
    2019-02-27
    java面试题 Java
  • Java的基础面试题目(1)
    1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 (推荐学习:java面试题目)2、Java有没有goto java中的...
    99+
    2016-11-11
    java面试题 Java
  • Java的基础面试题目(3)
    String s = new String("xyz");创建了几个StringObject?是否可以继承String类两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那...
    99+
    2018-01-28
    java面试题 Java
  • java——《面试题——基础篇》
    全文章节 Java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java—...
    99+
    2023-10-21
    java 面试题
  • Java常见的基础面试题
    JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,java 运行环境,为...
    99+
    2017-11-11
    java面试题 Java
  • java面试中有哪些基础面试题
    这篇“java面试中有哪些基础面试题”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java面试中有哪些基础面试题”文章吧。作...
    99+
    2023-06-03
  • Java基础面试题有哪些
    小编给大家分享一下Java基础面试题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!面试题1:JDK1.8的新特性有哪些?接口的默认和静态方法:Java 8允...
    99+
    2023-06-20
  • spring bean的基础面试题目及答案
    Spring框架中的单例bean是线程安全的吗 Spring框架中的单例bean不是线程安全的。 (推荐学习:java面试题目)什么是Spring的内部bean?当一个 bean 仅被用作另一个 bean 的属性时...
    99+
    2019-06-01
    java面试题 Java
  • MySQL面试题-基础
    MySQL面试题-基础 MySQL面试题-基础 1、SQL中文全称 结构化查询语言2、SQL语句分类 (1)数据查询语言DQL包括select字段名from表名where条件 (2)...
    99+
    2021-02-19
    MySQL面试题-基础
  • Java基础面试题之volatile详解
    目录1、volatile保证可见性1.1、什么是JMM模型?1.2、volatile保证可见性的代码验证1.2.1、无可见性代码验证1.2.1、volatile保证可见性验证2、vo...
    99+
    2022-11-13
  • java最新基础知识面试题
    java最新基础知识面试题1、static关键字什么意思?java中是否可以覆盖一个private或者是static的方法?“static”表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下访问。java中static方法不能...
    99+
    2014-06-09
    java面试题 java 面试题 基础
  • Java基础概述面试题复习
    目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系JVMJREJDK什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码...
    99+
    2022-11-12
  • ​Java语言的基础面试题有哪些
    这篇文章主要介绍“Java语言的基础面试题有哪些”,在日常操作中,相信很多人在Java语言的基础面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java语言的基础面试题有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-02
  • MySQL 面试题——MySQL 基础
    目录 1.什么是 MySQL?有什么优点?2.MySQL 中的 DDL 与 DML 是分别指什么?3.✨数据类型 varchar 与 char 有什么区别?4.数据类型 BLOB 与 TEXT...
    99+
    2023-09-20
    mysql 数据库 面试题
  • Python面试题 基础篇
    最近,整理了一些python常见的面试题目,语言是一种工具,但是多角度的了解工具能帮助我们更好的工作。 从很多国内网站以及一些国外论坛翻译过来的,虽然本文标注为"原创",但是仅仅是自己日常整理的材料,文章后面会附上参考来源。 第一部分:...
    99+
    2023-01-31
    面试题 基础 Python
  • python基础面试题整理
    Python基础语法相关 一、Python中的pass语句的作用是什么? pass语句什么也不做,一般作为占位符 或者创建站位程序,pass语句不会不执行任何操作。 二、Py...
    99+
    2022-11-12
  • Python常考基础面试题
    文章目录 Python基础面试题1、 Python 数据结构有哪些2、Python 中列表和元组的区别是什么?元组是不是真的不可变?3、什么是生成器和迭代器?它们之间有什么区别?迭代器生成器 ...
    99+
    2023-09-02
    python 人工智能 开发语言 算法
  • 2020全新Java面试题——基础部分(一)
    JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,java 运行环境,为...
    99+
    2016-06-06
    java面试题 java 面试
  • Java并发基础常见面试题(总结)
    本篇文章给大家总结了一下Java并发基础常见面试题,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1. 什么是线程和进程1.1. 何为进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程...
    99+
    2015-12-07
    java面试题 spring Java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作