java核心面试_Java核心面试问题

java核心面试

问:如果main方法被声明为私有该怎么办?

回答:

该程序可以正确编译,但在运行时会显示“ Main方法不公开”。 信息。

问:在Java中按引用传递和按值传递是什么意思?

回答:

通过引用方式传递,传递地址本身而不传递值。 按值传递表示传递值的副本

问:如果您要覆盖对象的equals()方法,那么您可能还会考虑其他哪种方法?

回答:

hashCode()

问:什么是字节码?

要么

问:是什么使Java具有“编写一次即可在任何地方运行”的特性?

回答:

所有Java程序都被编译成包含字节码的类文件。 这些字节码可以在任何平台上运行,因此java被称为独立于平台的。

问:解释每个公共static void main(String args [])关键字的原因?

回答:

  • public – main(..)是Java环境在执行程序时调用的第一个方法,因此必须可以从Java环境进行访问。 因此,访问说明符必须是公共的。
  • static :Java环境应该能够在不创建类实例的情况下调用此方法,因此必须将该方法声明为static。
  • void :main 不返回任何内容,因此返回类型必须为void

参数String表示在命令行中给出的参数类型,而arg是在命令行中给出的字符串数组。

问:==和.equals()有什么区别?

要么

问:==和equals之间的区别是什么

要么

问:==和equals方法之间的区别

要么

问:您将使用什么来比较两个String变量–运算符==或方法equals()?

要么

问:在==运算符下,两个具有相同值的String对象怎么可能不相等?

回答:

==运算符比较两个对象,以确定它们是否是内存中的同一对象,即是否存在于同一内存位置。 两个String对象可能具有相同的值,但位于不同的内存区域中。

==比较引用,而.equals比较内容。 方法public boolean equals(Object obj)由Object类提供,并且可以重写。 仅当对象与自身进行比较时,默认实现才返回true,这等效于等于运算符==用于将别名与对象进行比较。 字符串,BitSet,日期和文件会覆盖equals()方法。 对于两个String对象,值相等意味着它们包含相同的字符序列。 对于Wrapper类,值相等意味着原始值相等。

public class EqualsTest {public static void main(String[] args) {String s1 = “abc”;String s2 = s1;String s5 = “abc”;String s3 = new String(”abc”);String s4 = new String(”abc”);System.out.println(”== comparison : ” + (s1 == s5));System.out.println(”== comparison : ” + (s1 == s2));System.out.println(”Using equals method : ” + s1.equals(s2));System.out.println(”== comparison : ” + s3 == s4);System.out.println(”Using equals method : ” + s3.equals(s4));}
}

输出量

== comparison : true
== comparison : true
Using equals method : true
false
Using equals method : true

问:如果从主方法的签名中删除了静态修饰符怎么办?

要么

问:如果我不提供String数组作为方法的参数怎么办?

回答:

程序编译。 但是在运行时会引发错误“ NoSuchMethodError”。

问:为什么将oracle Type 4驱动程序命名为oracle Thin驱动程序?

回答:

Oracle提供了Type 4 JDBC驱动程序,称为Oracle“瘦”驱动程序。 该驱动程序包括自己的完全用Java编写的Oracle Net8的TCP / IP版本的实现,因此它是独立于平台的,可以在运行时下载到浏览器,并且不需要客户端上的任何Oracle软件。 该驱动程序在服务器端需要一个TCP / IP侦听器,并且客户端连接字符串使用TCP / IP端口地址,而不是数据库名称的TNSNAMES条目。

您对java final关键字了解什么?

要么

问:什么是final,finalize()和final?

要么

问:什么是finalize()方法?

要么

问:班级或成员是决赛是什么意思?

回答:

  • 最终 –声明常量
  • 最终 –处理异常
  • 完成 –帮助垃圾收集

接口中定义的变量是隐式最终的。 最终类不能扩展,即,最终类不能被子类化。 出于安全原因,使用String和Integer之类的基本类来完成此操作。 它还允许编译器进行一些优化,并使线程安全性更容易实现。 继承其类的最终方法时,不能覆盖该方法。 您不能更改最终变量的值(是常量)。 finalize()方法仅在对象被销毁和垃圾回收之前使用。 最后,在异常处理中使用的关键字将被执行,无论是否引发异常。 例如,打开连接的关闭是在finally方法中完成的。

问:什么是Java API?

回答:

Java API是大量现成的软件组件的集合,这些组件提供了许多有用的功能,例如图形用户界面(GUI)小部件。

问:什么是GregorianCalendar类?

回答:

GregorianCalendar支持传统的西方日历。

问:什么是ResourceBundle类?

回答:

ResourceBundle类用于存储特定于语言环境的资源,该资源可由程序加载,以根据正在其中运行程序的特定语言环境来定制程序的外观。

问:为什么Java中没有全局变量?

回答:

全局变量可全局访问。 由于以下原因,Java不支持全局可访问变量:

  • 全局变量破坏了参照透明性
  • 全局变量在命名空间中创建冲突 。

问:如何在Java程序中将String转换为Number?

回答:

Integer类的valueOf()函数用于将字符串转换为Number。 这是代码示例:

String numString = “1000″;
int id=Integer.valueOf(numString).intValue();

问:什么是SimpleTimeZone类?

回答:

SimpleTimeZone类提供对公历的支持。

问:while语句和do语句有什么区别?

回答:

while语句(预测试)在循环开始时进行检查,以查看是否应发生下一个循环迭代。 do while语句(测试后)在循环结束时进行检查,以查看是否应发生循环的下一次迭代。 do语句将始终至少执行一次循环主体。

问:什么是语言环境类?

回答:

Locale类用于根据特定地理,政治或文化区域的惯例定制程序输出。

问:描述OOPS的原理。

回答:

oop的三个主要原理称为多态,继承和封装。

问:解释继承原理。

回答:

继承是一个对象获取另一对象的属性的过程。 继承允许反复使用经过良好测试的过程,并使更改一次完成并在所有相关位置生效

问:什么是隐式强制转换?

回答:

隐式转换是简单地将一个实体分配给另一个实体而没有对编译器的任何转换指导的过程。 在所有类型的转换中均不允许使用这种类型的转换,并且可能不适用于所有场景。

int i = 1000;
long j = i; //Implicit casting

问:sizeof是Java中的关键字吗?

回答:

sizeof不是关键字。

问:什么是本机方法?

回答:

本机方法是用Java以外的语言实现的方法。

问:在System.out.println()中,什么是System,out和println?

回答:

System是预定义的最终类,out是PrintStream对象,而println是out对象中的内置重载方法。

问:什么是封装,继承和多态性

要么

解释多态的不同形式。

回答:

简单的多态性意味着一个名字很多形式 。 多态使一个实体可以用作不同类型动作的通用类别。 具体行动取决于情况的确切性质。

多态性在Java中以三种不同的形式存在:

  • 方法重载
  • 通过继承重写方法
  • 通过Java接口覆盖的方法

问:什么是显式强制转换?

回答:

在明确告知编译器有关转换对象的过程中进行显式转换。

long i = 700.20;
int j = (int) i; //Explicit casting

问:什么是Java虚拟机(JVM)?

回答:

Java虚拟机是可以移植到各种基于硬件的平台上的软件

问:您对向下转换了解什么?

回答:

向下转换的过程是指从通用类型转换为更具体的类型,即向下转换层次结构

问:什么是Java访问说明符?

要么

问:公共,私有,受保护和默认访问说明符之间有什么区别?

要么

问:什么是访问修饰符?

回答:

访问说明符是确定对类成员的访问类型的关键字。 这些关键字用于允许对程序部分(例如函数和变量)进行特权。 这些是:

  • 公开:所有班级均可使用
  • 受保护 :同一包中的类和任何子类均可访问。
  • 私人的:只能由他们所属的班级访问
  • 默认值:它们所属的类和同一包中的子类可以访问

问:哪个类别是每个类别的超类?

回答:

目的。

问:命名原始Java类型。

回答:

这8种基本类型是字节,字符,短型,整数,长型,浮点型,双精度型和布尔型。 附加是字符串。

问:静态变量和非静态变量有什么区别?

要么

问:什么是“

要么

问:什么是java中的static?

要么

问:什么是静态方法?

回答:

静态变量与整个类相关联,而不是与类的特定实例相关联。 每个对象将共享一个静态变量的通用副本,即,无论从哪个类创建多少个对象,每个类只有一个副本。 类变量或静态变量在类中使用static关键字声明。 它们在类外部声明并存储在静态内存中。 类变量主要用于常量。 静态变量始终由类名称调用。 该变量在程序启动时创建,并在程序停止时销毁。 类变量的范围与实例变量相同。 它的初始值与实例变量相同,并且在未初始化时(与数据类型相对应)获得默认值。 同样,静态方法是属于该类的方法,而不是属于该类的任何对象的方法,并且不适用于某个对象,甚至不需要实例化该类的任何对象。 静态方法是隐式最终的,因为重写是基于对象的类型完成的,并且静态方法是附加到类而不是对象上的。 只要原始方法未声明为final,则超类中的静态方法可能会被子类中的另一个静态方法遮盖。 但是,您不能用非静态方法覆盖静态方法。 换句话说,您不能将静态方法更改为子类中的实例方法。

非静态变量在每个对象实例中都具有唯一值。

问:布尔&运算符和&&运算符有什么区别?

回答:

如果对包含布尔&运算符的表达式求值,则将对两个操作数求值,而&&运算符是快捷运算符。 计算涉及&&运算符的表达式时,将计算第一个操作数。 如果第一个操作数返回值true,则对第二个操作数求值。 如果第一个操作数的评估结果为false,则跳过第二个操作数的评估结果。

问:Java如何处理整数上溢和下溢?

回答:

它使用结果的那些低位字节 ,这些字节可以适合该操作所允许的类型的大小。

问:如果我写静态公共无效而不是公共静态无效怎么办?

回答:

程序编译并正常运行。

问:声明变量和定义变量有什么区别?

回答:

在声明中,我们仅提及变量的类型及其名称,而没有对其进行初始化。 定义意味着声明+初始化。 例如String s; 只是一个声明,而String s = new String(“ bob”); 或String s =“ bob”; 都是定义。

问:Java支持哪种类型的参数传递?

回答:

在Java中,参数(基元和对象)始终按值传递。 对于对象,对象引用本身通过值传递,因此原始引用和参数副本都引用同一对象。

问:解释封装原理。

回答:

封装是将数据和对数据进行操作的代码绑定或包装到单个实体中的过程。 这样可以确保数据不受外部接口和滥用的影响。 对象允许将过程与其数据一起封装,以减少潜在的干扰。 考虑封装的一种方法是作为保护性包装器,以防止代码和数据被包装器外部定义的其他代码任意访问。

问:您对变量有什么了解?

回答:

变量是可以在程序中轻松引用的命名存储位置。 该变量用于保存数据,并且可以在程序执行过程中对其进行更改。

问:您对数字促销有什么了解?

回答:

数值提升是将较小的数字类型转换为较大的数字类型,以便进行整数和浮点运算。 在数字提升过程中,字节,字符和短值转换为整数值。 如果需要,int值也将转换为long值。 根据需要将long和float值转换为double值。

铸件有哪些类型?

回答:

将一种数据类型转换为另一种数据的过程称为强制转换。 Java有两种类型的转换: 这些是隐式转换和显式转换。

问:main方法中String数组的第一个参数是什么?

回答:

字符串数组为空。 它没有任何元素。 这与C / C ++不同,在C / C ++中,默认情况下的第一个元素是程序名称。 如果我们在命令行上不提供任何参数,则main方法的String数组将为空,但不能为null。

问:如何证明数组不是空而是空?

回答:

打印array.length。 它将打印0。这意味着它为空。 但是如果它为null,则在尝试打印array.length时将抛出NullPointerException。

问:一个应用程序可以有多个具有main方法的类吗?

回答:

是。 在启动应用程序时,我们提到要运行的类名。 JVM仅在您提到其名称的类中查找main方法。 因此,在具有main方法的多个类之间不存在冲突。

什么时候在Java中完全加载了静态块?

回答:

当类加载器将类带入JVM时,将加载静态变量。 不必必须创建对象。 静态变量在加载后将被分配内存空间。 静态块中的代码仅被加载/执行一次,即在首次初始化该类时。 一个类可以具有任意数量的静态块。 静态块不是类的成员,它们没有return语句,因此不能直接调用它们。 不能包含此或超级。 它们主要用于初始化静态字段。

问:同一类中可以有多个主要方法吗?

回答:

我们可以有多个重载的main方法,但是只有一个具有以下签名的main方法:

public static void main(String[] args) {}

没有程序无法编译。 编译器说main方法已经在该类中定义。

问:解释Java虚拟机(JVM)的工作方式吗?

回答:

JVM是一个抽象的计算机,与其他任何真正的计算机一样,它首先使用Compiler将.java文件转换为.class文件(.class只是字节代码文件。),并且Interpreter读取字节代码。

问:如何不使用第三个变量就交换两个变量?

回答:

添加两个变量并将其值分配给First变量。 用结果值减去第二个值。 并分配给Second变量。 用第二个变量的结果减去第一个变量的结果并分配给第一个变量。 例:

int a=5,b=10;a=a+b; b=a-b; a=a-b;

解决相同问题的另一种方法

您使用XOR交换。 (最佳方法),如使用上述方法,可能会超出/超出流量。 例如:

int a = 5; int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;

问:什么是数据封装?

回答:

可以通过在类(JAVABEAN)中创建“ get”和“ set”方法来使用封装,这些方法用于访问对象的字段。 通常,字段是私有的,而get和set方法是公共的。 封装可用于验证要存储的数据,对存储在一个或多个字段中的数据进行计算,或者用于自省(例如,在Struts中使用javabeans时通常就是这种情况)。 将数据和功能包装到单个单元中称为数据封装。 封装只不过是将数据和关联的方法包装到单个单元中,以便可以借助关联的方法访问数据。 封装提供数据安全性。 就是隐藏数据。

如何实施?

回答:

反射是在运行时内省类的功能和状态并在运行时动态进行处理的过程。 通过使用带有内置类(例如类,方法,字段,构造函数等)的Reflection API可以支持此功能。示例:使用Java Reflection API,我们可以使用getName方法获取类名。

为什么

回答:

是的,JVM自己维护一个缓存。 它在HEAP上创建对象,但是对这些对象的引用在堆栈上。

问:什么是幻像记忆?

回答:

虚拟内存是错误的内存。 现实中不存在的内存。

问:一种方法可以是静态且同步的吗?

回答:

静态方法可以同步。 如果这样做,JVM将在java.lang上获得一个锁。

与对象关联的类实例。 类似于说:

synchronized(XYZ.class) {
}

问:String和StringTokenizer有什么区别?

回答:

StringTokenizer是用于拆分字符串的实用程序类。

例:

StringTokenizer st = new StringTokenizer(”Hello World”);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}

输出:

Hello
World

问题:什么是瞬时变量?

回答:

暂态变量不能序列化。 例如,如果在Serializable类中将变量声明为瞬态并将该类写入ObjectStream,则无法将变量的值写入流,而是从ObjectStream检索该类时,变量的值将变为null

注意

transient identifies a variable not to be written out when an instance is serialized  (It can't be copied to remove system)volatile indicates that the field is used by synchronized threads and that the compiler should not attempt to perform optimizations with it.When more than one thread share a (volatile) data it is checked every time. Every thread keeps the latest value of volatile variable

问题:命名使用“边框布局”作为默认布局的容器吗?

回答:

默认使用“边框布局”的容器是:window,Frame和Dialog类。

问题:通过同步您了解什么?

回答:

同步是以一种方式控制多个线程对共享资源的访问的过程,即一次仅一个线程可以访问一个资源。 在非同步多线程应用程序中,一个线程可能会修改共享对象,而另一线程正在使用或更新对象的值。 同步可防止此类数据损坏。

例如同步功能:

public synchronized void Method1 () {// Appropriate method-related code.}

例如,在函数内部同步代码块:

public myFunction (){synchronized (this) {// Synchronized code here.}
}

参考: Sunil Gulabani博客上来自我们JCG合作伙伴 Sunil Gulabani的核心Java面试问题 。

翻译自: https://www.javacodegeeks.com/2013/09/core-java-interview-questions.html

java核心面试

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

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

相关文章

oracle sql条件语句,谁能介绍下Oraclesql之条件语句?

一IF。。THENIFconditionTHENstatements1;statements2;。。。。ENDIF;二IF。。THEN。。。ELSEIFconditionTHENstatements1;statements2;。 。。。ELSEstatements1;statements2;。。。。ENDIF;三IF。。THEN。。ELSIFIFcondition1THENstatement1;ELSIFcondition2THENstatement2;…

Java集合(3)--Iterator迭代器

Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。Collection接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,那么所有实现了Collection接口的集合类都有一个iterator()方法,用以返…

oracle 中文脚本,ORACLE常用脚本

--创建表空间Create tablespace BRANCH datafile D:\tablespace\BRANCH.dbf size 500M autoextend on maxsize unlimited;--查询YS所拥有的表空间select distinct(tablespace_name) from dba_segments where ownerYS;--删除用户drop user ys cascade;--删除表空间及…

Java集合(4)--List接口及其实现类ArrayList、LinkedList和Vector

文章目录List接口概述List接口常用方法ArrayList实现类LinkedList实现类Vector实现类List接口概述 List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引 List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据 序号…

java hadoop_单元测试Java Hadoop作业

java hadoop在我以前的文章中,我展示了如何设置一个完整的基于Maven的项目,以用Java创建Hadoop作业。 当然并没有完成,因为它缺少单元测试部分。 在这篇文章中,我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单…

软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办

Navicat连接oracle数据库时连接失败,出现ORA-28547错误。原因:navicat Primium版本的OCi和本地数据库的OCI版本不一致。解决方法:1、把navicat Primium版本自带oci.dll替换本地Oracle安装路径里的oci.dll。我的本地navicat Primium版本自带oc…

Java集合(5)--Set接口及其实现类HashSet、LinkedHashSet和TreeSet

文章目录Set接口概述HashSet实现类LinkedHashSet实现类TreeSet实现类Set接口概述 1、Set接口是Collection的子接口,set接口没有定义额外的方法,使用的都是Collection接口中的方法。 2、Set 集合不允许包含相同的元素,如果试把两个相同的元素…

php设置超链接,怎么给一个PHP密码访问页面加超链接

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼$password "1234"; // 这里是密码$p "";if(isset($_COOKIE["isview"]) and $_COOKIE["isview"] $password){$isview true;}else{if(isset($_POST["pwd"])){if($_POST["…

Java集合(6)--Map接口

文章目录Map接口概述Map结构的理解Map接口常用方法Map接口概述 Map与Collection并列存在,用于保存具有映射关系的数据:key-value Map中的 key 和 value 都可以是任何引用类型的数据 常用String类作为Map的“键”。key 和 value 之间存在单向一对一关系&#xff0…

php+js表单验证数字,.validate表单验证js

$("#signupForm").validate({rules: {name: {required: true},id:{required:true校验类型:}},messages: {name: {required: "请输入姓名"},id{required: 必填校验类型:}}})name可以填入div里的idrequired 设置必填校验类型取值描述requiredtrue|false必填字…

java低延迟_像Java这样的C ++具有低延迟

java低延迟总览 以前,我写过一篇有关Java之类的C的文章。 这是我以前遇到的术语。 但是,经过思考,我认为像Java这样的C 是一个更好的术语,因为您仍在使用OOP惯例(不是C惯例),但是您需要投入更多…

Java集合(7)--Map接口的实现类HashMap、LinkHashMap、TreeMap和Properties

文章目录HashMap类LinkedHashMap类TreeMap类Hashtable类Properties类HashMap类 1、HashMap类概述 HashMap是 Map 接口使用频率最高的实现类,允许使用null键和null值,与HashSet一样,不保证映射的顺序。 所有的key构成的集合是Set&#xff1a…

为什么SpringBoot如此受欢迎,以及如何有效地学习SpringBoot?

SpringBoot是最流行和使用最广泛的Java框架。 有时这种讨论“为什么SpringBoot如此受欢迎?” 来我和我的朋友/同事之间。 另外,我确实收到了许多人发来的电子邮件,询问“春天很大,如何快速学习?” 。 在这篇文章中&…

支持linux系统摄像头模块,在Linux操作系统上使用摄像头

我的公家笔记本的摄像头一直没啥用,偶尔用 vmware player 2.0模拟个 msn 用(其实到目前一次都没用过)。搞过安全对这东西严重不信任通常都不驱动,忽然想起重案6组那个警察兄弟说搞高科技的最怕高科技产品。linux 下一直没装,晚上闲着没啥事&a…

Java实现复数Complex的加减乘除运算、取模、求幅角角度

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) /*** Author: Yeman* Date: 2021-09-23-9:03* Description:*/…

linux 域账户密码忘记,linux基础命令-用户域用户组管理

//与用户相关的配置文件:/etc/passwd: #用户的配置文件, 保存用户账户的基本信息/etc/shadow #用户影子口令文件一、用户帐号文件——passwd1.“/etc/passwd”文件是UNIX安全的关键文件之一。该文件用于用户登录时效验用户的登录名、加密的口令数据项、…

Java集合(8)--集合工具类Collections

Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。 排序操作 reverse(List):反转 List 中元素的顺…

Java程序员应在2018年学习的3种JVM语言

如果您是Java程序员,并且想学习更多的编程语言以扩展您的知识和技能,但是不确定选择哪种编程语言,那么您来对地方了。 在本文中,我将分享Java程序员可以在2018年学习的3种JVM语言以及为什么要学习它们。 成为多语种开发人员的素质…

Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用

文章目录泛型的概念集合中使用泛型自定义泛型结构泛型在继承上的体现通配符的使用泛型的概念 集合容器类在设计阶段/声明阶段不能确定这个容器实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个…

linux 内存 面试,【Linux内存面试题】面试问题:查看机器配置命… - 看准网

1、查看内存大小solari:prtconf -vp | grep Memlinux :grep MemTotal /proc/meminfo2、查看硬盘大小solari:df -klinux :fdisk -l[rootssoldap ~]# fdisk -lDisk /dev/sda: 146.6 GB, 146685296640 bytes255 heads, 63 sectors/tr…