java面试题

  • 格式:doc
  • 大小:68.00 KB
  • 文档页数:20

JA V A 面试题简答题:1、JAVA实现跨平台的原理?答:java语言的跨平台是由java虚拟机来实现的。

不同的操作系统可以选择安装不同的java 虚拟机。

JVM就是在一台计算机上有软件和硬件模拟的计算机(完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统),JVM屏蔽了与操作系统平台相关的信息,读取并处理经编译过的与平台无关的字节码class文件。

Java编译器针对java虚拟机产生class文件,因此是独立于平台的,java解释器在负责将java虚拟机的代码在特定的平台上解析运行。

2、JAVA程序运行的原理?1、首先应该利用java编译器把java源文件(即.java)编译成.class文件。

2、其次应该利用JVM里面的类加载器把.class文件加载到JVM里面3、最后对.class文件进行字节码验证、解释及执行。

4、JAVA中的直接数有几种?分别是什么?答:一共有7中。

分别是String、 int、 float 、double、boolean、char、long5、什么叫JAVA中的变量?变量分为几种?答:变量是指在程序执行的过程中,其值可以改变的量。

按变量声明的位置划分,变量可以分为:1、成员变量:方法外部,类的内部定义的变量。

2、局部变量:方法或语句块内定义的变量。

6、局部变量与成员变量的区别?答:1、隶属于类的变量为成员变量各自的作用域不同。

成员变量定义在方法体之外,类体之中的位置。

而局部变量定义在语句块或者方法体中的位置2、成员变量具备自动初始化的能力,而局部变量在定义的时候,一定要显示手动初始化。

3、当成员变量和局部变量重名的时候,遵循的是就近原则。

4、成员变量可以随意的使用任何的修饰符,但是局部变量不能使用 [访问权限] 的修饰符。

5、final关键字。

在成员变量和局部变量中都是可以使用的,一旦使用了final,表示就是一个常量了。

7、String是基本数据类型吗?答:不是,String是一种复合引用类型,它是对字符串的描述。

同时也是被final修饰的一个常量,java的基本数据类型byte int short long boolean double float char8、Char能不能保存一个中文?为什么?答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的,字符型是没有复数的&与&&的区别?答:&是位运算符也叫短路,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。

位运算符的左右都参加计算,而逻辑运算符不必要9、2乘以8的最高效的运算方式是什么?答:利用位运算符,2左移3位。

2<<310、在JAVA中如何跳出当前的多重嵌套循环?答:用break; return 方法。

Return 使用时,如果方法存在返回类型的值,就不会跳出11、break、continue、return的区别?答:break:1>在switch-case语句中,终止一个语句序列;2>退出一个循环体(break所在的循环全部推出);3>可作为一种先进的goto语句;4>一个循环中可以有一个以上的break语句,但不推荐多使用。

continue:1>强迫一个循环体提早反复,跳过某一次不重要的;2>continue只能跳过本次循环的某一次执行。

return1>在有返回值的方法中必须使用return;2>return返回到调用它的地方;3>一个循环体中可以有多个return。

12、swtich否能作用在byte上,是否能作用在long上,是否能作用在String上?答:swtich在不同的版本使用是不同在1.6版本中支持,switch 语句的返回值类型必须是byte、short、int、char、枚举类型之一。

不能作用在long和String上。

1.7版本支持String类型。

13、什么叫方法的重载?方法重载的意义?答:方法的重载:在同一个类中,方法名相同、参数列表不同(类型不同、个数不同、顺序不同,)这一过程称为方法的重载。

方法的重载在一个类的构造函数中就是典型的体现。

方法重载的意义:1、实现了代码的很好的复用。

14、return只能写在方法的结束位置吗?为什么?答:不一定,当在程序中存在条件语句时,则return语句的位置不一定在结束位置。

(例如if-----else),不能再同一个流程中使用多个return语句15、swtich语句支持的表达式可以为变量吗?case中可以为变量吗?答:switch语句可以支持表达式是变量switch表达式的返回值类型必须是byte、short、int、char,枚举类型之一。

Case子句中值的value必须是常量,而且所有的case子句中的值应是不同的。

Default字句是可选的。

16、Arrays类是专门负责处理什么的?使用Arrays中的sort方法对数组进行排序的时候要注意些什么?答:Arrays类是数组的辅助类。

它提供了对数组的填充(copyof /copyofRange)、查找、比较、排序等方法。

Arrays里面全部是静态方法。

注意:数组类型必须有可比性。

17、冒泡法、选择法、插入法的排序原理?答:冒泡法:在一组数据序列中,在从左端开始将相邻的两个数字进行比较,如果左边的数据比右边的数据大,则交换其位置,一轮比较完以后,最大的数字会在最后的位置冒出。

重复比较和交换剩下未排序的数据,直到全部冒出。

选择法排序(采用假设法):在一组无序的数据序列中,将其最大的数据与最后一个数据进行位置交换,最大数据成为已排序数据序列,再将剩下的未排序数据序列中最大的数据与未排序数据序列最后一个进行交换位置,成为已排序数据,重复上面的步骤,直到所有数据都成为已排序数据。

插入法排序:将数据分成两堆,每次从后面一堆中找到第一个数据,然后插入前面一堆数据中适当的位置。

18、数组的特性是什么?答:1>数组中的类型都是同类型的2>数组的大小是确定的,即有固定长度3>数组中的元素可以是基本类型和引用类型4>数组是引用类型,数组型数据是对象5>数组是通过操作索引来使用的19、JAVA中为什么要引入包体的概念?有何作用?答:通过包可以划分不同的功能类,层次更加明确,可以更好的管理工程。

1>能够区分名称相同的类2>有助于实施访问权限控制3>有助于划分和组织Java应用中的各个类的应用20、递归要注意什么?答:递归要注意三个问题:1》在一个函数(方法)的内部调用本身。

2》必须得是一个独立的函数的方式出现的。

3》递归必须要有出口,也就是结束的标志,否则为死循环。

21、面向对象的特征有哪些?详细描述?答:面向对象有三大特征:继承性、封装性、多态性。

答:面向对象具有继承性、封装性、多态性。

1>类是相同属性和方法的封装体,因此类具有封装性;2>子类可以在继承父类中能够继承的属性和方法的基础上,再增加自己特有的属性和方法,因此类具有继承性;3>在一个类层次中,定义为父类的对象可被赋值为其任何子类的对象,并根据子类对象的不同而调用不同的方法,因此类具有多态性。

4>还有抽象22、静态变量和实例变量的区别?答:静态变量就是使用static修饰的变量,而实例变量是没有static 修饰的变量。

区别:类的静态变量在内存中只有一个,JA V A虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被所有类的实例共享。

静态变量可以通过类名访问。

静态变量的生命周期取决于类的生命周期。

类的每个实例都有相应的实例变量,每创建一个类的实例。

Java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中。

实例变量的生命周期取决于实例的变量周期。

23、构造函数是一个方法吗?有什么样的特点?答:构造函数是一个方法。

特点:构造方法的特点:1》构造方法的名称必须与类名相同。

2》构造方法没有返回类型的约定,是为了对象初始化而存在,并为对象属性初始化的特殊方法。

3》如果在定义类时没有显示的定义构造方法,则在java语言中会为我们提供一个无参的默认构造器。

4》如果我们提供了一个自定义的构造方法,那么系统不再提供不带参的默认构造函数。

5》构造方法可以重载,通过调用不同的构造方法来表达对象的多种初始化行为。

构造方法的重载是指定义多个形式参数列表不同的多个构造方法。

24、this、super的含义?使用的时候要注意什么?答:this关键字的使用:1、this代表的是当前类的对象(这是一个变量),永远指向的是发出调用的对象。

2、this关键字使用的注意点:this是本类的对象的一个【引用】,只有存在了之后才谈得上是引用,那么要求在this运行前必须首先产生一个本类的对象。

所以this只能在实例方法或者是语句块中使用。

3、this经常用于区分局部变量和成员变量重名问题。

4、使用this实现构造的互调,只能是在构造的第一行位置,不能同时形成互调。

Super是实现对父类构造函数的调用。

以及解决父类与子类方法和变量重名的问题。

二者应该注意的问题:1、super语句和this关键字出现在构造方法中必须放在构造方法的第一行,并且不能同时出现。

2、super与this不能同时出现在类方法中、类代码块中。

3、super和this关键字都可以用用来覆盖java语言的默认作用域,使被屏蔽的方法或变量可见,25、构造器Constructor是否可被override?答:构造方法不能被重写,但可以重载。

因为构造方法不能被继承,而方法的重写是发生在继承关系下的,所以构造方法不能被重写。

26、构造函数的作用是什么?答:构造函数的作用:创建对象并进行初始化。

27、详细叙述在创建一个类的对象的时候的内部过程?答:1>类通过new关键字和构造方法创建对象2>使用new开辟堆内存空间,并初始化3>类中的属性保存在了堆内存中4>创建的对象保存在了栈内存中28、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?答:是引用传递,传递的是引用地址的首地址。

29、说出目前常用的类,包,接口,请各举几个?答:Object类、Arrays类、java.util包、ng包、java.util……(罗列一些确实常用的类,和包)30、Overload和Override的区别。

Overloaded的方法是否可以改变返回值的类型?答:1>都要求方法名相同,都可以用于抽象方法和非抽象方法之间2>重写要求参数列表必须一致,而重载要求参数列表必须不一致3>重写要求返回类型必须一致,而重载对此不做限制4>重写只能用于子类重写父类的方法,而重载用于同一个类的所有方法(包括从父类中继承而来的方法)5>重写对方法的访问修饰符有特殊要求,而重载对此不做限制6>父类的一个方法只能被同一个子类重写一次,而一个方法在所在的类中可以被重载多次7>构造方法能被重载,但不能被重写31、谈谈final的含义?答:final是最终的目的是最终被执行的代码区域。