JAVA面试常考系列一

转载自 JAVA面试常考系列一

题目一

什么是Java虚拟机?为什么Java被称为平台无关的编程语言?

java虚拟机是一个可以执行字节码文件(.class)的虚拟机进程。

为什么java与平台无关呢?因为java源程序(.java)首先被编译器编译成字节码文件(.class)然后java虚拟机将字节码文件解释成机器码。而不同的操作平台,装有不同的java虚拟机(JVM),能够将相同的字节码文件(.class)解释为对应平台所需要的机器码。所以,java是一种与平台无关的编程语言。


题目二

JDK和JRE的区别是什么?

JDK是完整的Java软件开发包,包括编译器、Java运行时环境和其它的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

JRE是Java运行时环境,它是JDK的一个组成部分,只包括Java虚拟机、Java核心类库和支持文件。 


题目三

否在static环境中访问非static变量?

static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。 


题目四

Java支持的数据类型有哪些?什么是自动拆装箱?

支持类型


Java支持8种基本数据类型:

其中整数值型有四种byte,short,int,long,

字符型一种char

浮点类型两种float,double

布尔型一种boolean

整数默认int型,小数默认是double型。Float和long类型的必须加后缀。

Java还支持引用数据类型,引用类型包括类、接口、数组等。引用类型声明的变量是指该变量在内存中实际存储的是一个引用地址,实体在堆中。而包装类就属于引用类型

自动拆装箱


自动装箱和拆箱就是基本类型和引用类型之间的转换,转换的目的是因为基本类型转换为引用类型后,就可以new对象,从而调用包装类中封装好的方法进行基本类型之间的转换或者toString,还有就是如果集合中想存放基本类型,泛型的限定类型只能是对应的包装类型。


题目五

“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下被访问。

Java中static方法不能被覆盖,因为static方法是编译时静态绑定的,而方法覆盖是基于运行时动态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

java中也不可以覆盖private的方法,因为private修饰的变量和方法只能在当前类中使用,如果是其他的类继承当前类是不能访问到private变量或方法的,当然也不能覆盖。


题目六

Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

方法覆盖

Java中方法覆盖(Overriding)是指子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。重写方法不能为private,运用中最典型的就是对接口方法的覆盖。

方法重载

Java中方法重载Overloading)就是具有相同函数名,返回类型可以不同,参数个数、顺序、类型不同的函数。Overloading发生在同一个类里面具有两个或者是更多的函数具有相同名字的情况下。


题目七

Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

构造函数是对象被创建时初始化对象的成员方法,它具有和它所在的类完全一样的名字。构造函数只能有入口参数,没有返回类型,因为一个类的构造方法的返回类就是类本身。构造函数定义后,创建对象时就会自动调用它,对新创建的对象分配内存空间和初始化。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数

方法名称相同,参数项不相同。那么认为一个方法是另一个方法的重载方法。重载只跟参数有关,与返回类型无关。方法名和参数相同而返回类型不相同,不能说是重载。

构造方法重载是方法重载的一个典型的特例。参数列表不同。


题目八

Java为什么不支持多继承?

Java中类不支持多继承,因为两个继承于中一个父类的子类,被同一个子类继承时,会出现方法的引用歧义,所以Java中只支持单继承,即一个类只有一个父类。

java中的接口支持多继承,即一个子接口可以有多个父接口。接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能。


题目九

什么是值传递和引用传递?

值传递


值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。

引用传递


引用传递(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数 


题目十

接口和抽象类的区别是什么?

接口是对动作的抽象,抽象类是对根源的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,大猫小猫来定义两个类,他们的抽象类是。说明,他们都是可以奔跑,狗也可以奔跑,把奔跑定义成一个接口,然后让这些类去实现它。

所以,在高级语言上,一个类只能继承一个类(抽象类)(正如不可能同时是动物植物),但是可以实现多个接口(吃奔跑口、跳跃接口)。

区别如下:

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类要被子类继承,接口要被类实现。

3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现

4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果

7、抽象类里可以没有抽象方法

8、如果一个类里有抽象方法,那么这个类只能是抽象类

9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

10、接口可继承接口,并可多继承接口,但类只能单根继承。


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

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

相关文章

转:运维监控系统-监控项及指标的梳理

转自: 运维监控系统-监控项及指标的梳理_程序员杂谈-CSDN博客_运维监控指标综合监控功能工具 综合监控工具完成对被管对象的集中监控、集中维护和集中管理,被管对象包括网络设备、服务器、PC设备、数据库、中间件、存储、备份、安全设备、应用系统等。工…

圆心角 圆弧上点坐标_数控加工中心CNC的G02/G03圆弧指令的I、J、与R的区别

G02:顺(CW)圆弧插补G03:逆(CCW)圆弧插补根据所选择的X、Y平面,指令格式如下两种:G17 G02/G03 X_ Y_ I_ J_ F_;G17 G02/G03 X_ Y_ R_ F_;定义方式:依右手坐标系统&#xf…

AutoMapper 使用实践

一. 使用意图 常常在开发过程中,碰到一个实体上的属性值,要赋值给另外一个相类似实体属性时,且属性有很多的情况。一般不利用工具的话,就要实例化被赋值实体B,然后再将实体A的字段一个个赋值给B的属性,单…

kafka可靠数据传递

【README】 本文阐述了kafka可靠消息传递机制; 本文部分内容总结于《kafka权威指南》(一本好书,墙裂推荐),再加上自己的理解; 【1】可靠性保证 1,在讨论可靠性时,一般使用保证这个…

JAVA面试常考系列二

转载自 JAVA面试常考系列二 题目一 解释一下线程和进程 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上…

雨滴桌面时间插件_Win10美化向——如何搭配你的桌面

// 2020-02-11 //桌面这个东西大家肯定不陌生了,很多人的桌面都如下。_______滑动查看更多图片这多重水印是什么鬼?????还有很多网友呢,也美化了一下自己的桌面。不过呢严格来说,这应…

python画建筑_专题 | Python 绘图入门

我的施工之路Python 绘图入门这是施工系列第18篇,同时也进入到一个新的阶段:Python绘图篇。作为绘图模块的第一篇,与大家一起过过最基本的Python绘图原理。掌握基本的绘图原理很有必要,各个常用绘图库的原理基本都是相通的。所以了…

最新版dotnet-cli下的ASP.NET Core和asp.net mvc【RC2尝鲜】

RC1是http://get.asp.net里面提供的https://docs.asp.net/en/latest/getting-started/index.html,使用旧的ASP.NET Core 1.0。这个版本会使用dnvm,dnu restore和dnx web等,而RC2则不需要,RC2只需要dotnet restore和dotnet run&…

kafka生产者开发方式

【README】 本文记录了 kafka生产者开发方式; 【1】生产者概览 【1.1】kafka发送消息过程 【1.2】创建kafka生产者 1)创建kafka生产者, 有3个必选属性: bootstrap.servers: kakfa集群节点地址;key.seri…

JAVA面试常考系列三

转载自 JAVA面试常考系列三 题目一 什么是迭代器(Iterator)? 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址。迭代器提供了一种方法,可…

linux wait函数头文件_手把手教Linux驱动9-等待队列waitq

在上一篇《手把手教Linux驱动8-Linux IO模型》我们已经了解了阻塞、非阻塞、同步和异步等相关概念,本文主要讲解如何通过等待队列实现对进程的阻塞。应用场景:当进程要获取某些资源(例如从网卡读取数据)的时候,但资源并没有准备好(例如网卡还…

HoloLens开发手记-配置开发环境 Install the tools

随着Build 2016开发者大会的结束,HoloLens开发包也正式开放下载。Hololens没有独立的SDK,开发特性被集成到最新的Visual Studio Update 2中。如果你没有HoloLens真机,那么可以安装HoloLens模拟器。 安装清单 注意: 这里为了方便大家顺利下载安…

kafka再均衡监听器测试

【README】 本文使用的kafka是最新的 kafka3.0.0;本文kafka集群有3个节点分别是 centos201, centos202, centos203 ; brokerid 分别为 1,2,3;本文主要用于测试 再均衡监听器;当有新消费者加入时,会发生分区…

java面试常考系列四

转载自 java面试常考系列四 题目一 大O符号(big-O notation)的作用是什么?有哪些使用方法? 大O符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下有多么好。大O符号也可用来描述其他的行为,比如&…

用python进行自然语言处理_Python自然语言处理示例:SVM和贝叶斯分类

❝关于自然语言处理(NLP)方面的文章、书籍非常之多,对于自然语言处理的上手,很多人是不知所措的。通过对本文的浏览,您应该能够对自然语言处理会有一个能够完整的有趣的基于Python的对自然语言处理的了解。❞什么是文本分类文本分类是将文本按…

Build 2016,你可能忽视的几个细节

微软公司主办的Build 2016大会尚在进程中,但是两场重量级的主题演讲已经结束。下面列举了我个人非常关注的几个细节,介绍一些背景知识以饲读者。 Bash on Windows背后的历史和未来 微软和IBM二十多年前联合开发NT内核的时候就已经为接驳多种操作系统留下…

JAVA面试常考系列五

转载自 JAVA面试常考系列五 题目一 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序。串行收集器对大多数的小应用(在现代处理器上需要大概100M左右的内存…

kafka消费者开发方式小结

【README】 1, 本文总结了 kafka消费者开发方式;2, 本文使用的是最新的kafka版本 3.0.0;【1】 kafka消费则 【1.1】消费者与消费者组 1)消费者: 应用程序需要创建消费者对象,订阅主题并开始接…

微软发布Azure Functions、Service Fabric和IoT Starter Kits新服务

微软此次 Build 2016 大会的重点主题一直都围绕开发和 Microsoft Azure 云服务,今天更是对外发布了 Azure Functions、Service Fabric 和 IoT Starter Kit 等一系列新服务。就目前与其它友商的竞争而言,微软近期不断的修炼内功,使 Microsoft …

python发送邮件 退回_python 发送邮件(收到的邮件要有发送方才能回复)

Python使用SMTP(简单邮件传输协议)发送邮件普通文本邮件普通文本邮件发送的实现,关键是要将MIMEText中_subtype设置为plain## -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMEText#导入MIMEText类from email import encodersfrom email.heade…