JAVA面试题100问第一部分

以下是面试时常问到的JAVA面试题,能让你对JAVA面试有基本的了解。根据我个人的经验,一个好的面试官在面试的时候是不会事先准备一列问题清单,一般来说都从关于JAVA最基本的概念开始,然后再根据你的回答继续深入讨论。

问题:关于JAVA 你知道什么?

回答:JAVA是一种高级程序设计语言,由詹姆斯·高斯林发明并于1995年发布。JAVA可以在多种平台上运行,如Windows、Mac OS、各种版本的UNIX。

 

问题:JAVA编程语言支持什么平台?

回答:JAVA可以在多种平台上运行,如Windows、Mac OS、以及各种版本的UNIX/Linux操作系统如HP-Unix, Sun Solaris, Redhat Linux, Ubuntu, CentOS 等。

 

问题:请列举出JAVA至少5种特性。

回答:JAVA特性包括面向对象、平台独立、健壮性、解释性、多线程等。

 

问题:为什么JAVA是结构中立的?

回答:JAVA编译器会生成一种具备结构中立性的目标文件格式。编译后的程序码可以在提供Java运行系统的多种不同处理器上面执行。

 

问题:JAVA如何保证高效性?

回答:JAVA使用即时编译器来保证高效性。即时编译器能把Java字节码转换成可以直接发送给处理器的指令。

 

问题:为什么JAVA是动态的?

回答:JAVA能适应不断升级的环境。JAVA程序带有大量扩展的运行时信息,这些信息可以用来实时验证处理对对象的引用。

 

问题:什么是JAVA虚拟机?它对JAVA的平台独立性有什么作用?

回答:当JAVA代码被编译的时候,它并不是被编译成针对某一特定平台的机器码,而是转换成平台独立的字节码。这些字节码通过网络传送到不同的机器上,不管这些机器运行的是什么平台,JAVA虚拟机都可以解释字节码。

 

问题:列举两个JAVA集成编译环境。

回答:Netbeans、Eclipse

 

问题:列举几个JAVA与C/C++不同的关键词。

回答:import、super、finally等

 

问题:什么是对象?

回答:对象是在运行时的实体,它的状态储存于域中,它的行为通过方法实现。方法能够操作对象内部的数据,也是对象间通信的主要途径。

 

问题:请给定义类。

回答:类是一张蓝图,对象根据这张蓝图被创建。一个类可以包括数据域和方法,方法可以描述对象的行为。

 

问题:一个类可以包含什么类型的变量?

回答:包括居于变量,实例变量和类变量。

 

问题:什么是局域变量?

回答:在方法内、构造函数内或者代码块内定义的变量是局域变量。局域变量在函数内声明和初始化,当函数执行结束时局域变量会被销毁。

 

问题:什么是实例变量?

回答:实例变量是在类中但在任何函数之外的变量。实例变量只有当类实例化后才能被引用。

 

问题:什么是类变量?

回答:在类中并且在任何函数之外,使用static关键词声明的变量是类变量。

 

问题:什么是类的单例模式?

回答:单例类控制对象的生成,一次只能存在一个对象但兼具灵活性,当条件改变时允许创建多个变量。

 

问题:什么是构造函数?

回答:当一个新的对象被创建的时候会自动调用构造函数。每个类都有构造函数。如果不显性声明构造函数,JAVA编译器会调用默认构造函数。

 

问题:列举为类创建对象的过程(三步)。

回答:首先声明一个对象,然后实例化,再对其初始化。

 

问题:JAVA中字节数据类型的默认值是多少?

回答:0

 

问题:JAVA中float和double的默认值是多少?

回答:float型和double型的默认值与C/C++相同,float是0.0f,double是0.0d。

 

问题:byte类型在什么时候使用?

回答:byte类型用来在较大的数组中节省储存空间。使用byte类型替代int型可以节省三倍的空间。

 

问题:什么是静态变量?

回答:类变量也叫静态变量,使用关键词static,在类里,但在方法、构造函数和代码块之外。

 

问题:什么是访问控制修饰符?

回答:JAVA提供访问控制修饰符来修饰类、变量、方法和构造函数的访问控制属性。当不写出访问控制修饰符时,成员具有默认的访问权限或者包访问控制权限。

 

问题:什么是受保护访问控制修饰符?

回答:变量、方法和构造函数如果在父类中被声明为受保护,那么它们只能在其它包的子类中或者在该父类的包中被访问。

 

问题:什么是同步修饰符?

回答:JAVA在访问控制修饰符之外还提供同步修饰符,同步修饰符用来限制方法,使方法一次只能被一个线程调用。

 

问题:在JAVA运算符优先级中,哪个运算符的优先级最高?

回答:圆括号()和下标运算符[]具有最高的优先级。

 

问题:在switch语句中能使用的数据类型包括哪些?

回答:switch中使用的变量只能是字节型、短整型、整型或字符型。

 

问题:parseInt()函数在什么时候使用到?

回答:parseInt()函数用于解析字符串返回整数。

 

问题:为什么说String类是不可变的?

回答:String对象一旦被创建就不可改变,因此可以在多个线程中被安全地引用,这对于多线程的编程来说十分重要。

 

问题:为什么说StringBuffer类是可变的?

回答:String类是不可变的,因此一个String对象一旦被创建就不可改变。如果需要对字符串进行频繁的修改,那么就应该使用StringBuffer。

 

问题:StringBuffer和StringBuilder类的区别在哪?

回答:尽可能使用StringBuilder,因为它运行时比StringBuffer快。但如果需要强调线程安全,那就应该使用StringBuffer。

 

问题:那个包使用正则表达式来实现模式匹配?

回答:包java.util.regex。

 

问题:java.util.regex包括那些类?

回答:包括三个类:Pattern类、Matcher类和PatternSyntaxException类。

 

问题:什么是finalize()方法?

回答:finalize()方法在一个对象被垃圾回收机制销毁前调用,可以保证对象被彻底地销毁。

 

问题:什么是Exception?

回答:Exception是当程序运行过程中遇到的异常。异常由方法调用栈中的Handler捕获。

 

问题:什么是受检查的异常?

回答:受检查异常通常为用户操作的异常,不能被程序员预见。例如,在打开一个文件的时候,无法找到文件就发生了异常,这样的异常在编译的时候不能被跳过。

问题:什么是运行时间异常?

回答:运行时间异常在编程时可以预见并避免。与受检查异常不同,运行时间异常在编译时可以被跳过。

 

问题:Exception类的两个子类是什么?

回答:Exception类有两个主要的子类:IOException类和RuntimeException类。

 

问题:关键词throws在什么情况下使用?

回答:如果一个方法没有使用handler处理异常,那么这个方法必须使用throws关键词声明。关键词throws用于方法签名之后。

 

问题:关键词throw在什么时候使用?

回答:不论是新实例化的异常还是刚捕获的异常,都可以通过使用关键词throw抛出异常。

 

问题:finally关键词在异常处理中如何使用?

回答:关键词finally用来在try代码块后再加一个代码块,不管有没有发生异常,finally代码块内的语句都会被执行。

 

问题:当自己创建异常类的时候应该注意什么?

回答:当创建异常类时应该注意:

  • 所有的异常类都应该是Throwable类的子类。

2.写一个遵循处理与声明规则的受检查异常类时,应该加上extend Exception。

3.写一个运行时间异常类,需要加上extend RuntimeException。

 

问题:什么是继承?

回答:继承指的是一个类获得另一个类的属性的过程。数据属性和行为按从父类到子类的顺序继承,便于管理。

 

问题:关键词super什么时候使用?

回答:如果一个方法重写了父类的方法,被重写的父类方法可以通过关键词super调用。super也可以用来调用被隐藏的域。

 

问题:什么是多态?

回答:多态是一个对象同时具有多种形态的能力。在面向对象编程中,多态最常见的应用是将一个父类指针指向一个子类的对象。

 

问题:什么是抽象?

回答:抽象是在面向对象编程中将一个类抽象化的过程。抽象能够降低复杂性,提高系统可维护性。

 

问题:什么是抽象类?

回答:抽象类不能被实例化,可以被部分实现接口。抽象方法是没有函数体的方法声明,抽象类含有一个或多个抽象方法。

 

问题:抽象方法什么时候被使用?

回答:当想要让类包含一个方法,但想要让方法的具体实现由子类决定,那么就可以在父类中声明抽象方法。

 

问题:什么是封装?

回答:封装是将数据域设为私有,提供公共方法来处理私有的数据域。如果一个域被设为私有,那么在类外就不能访问该数据域,这样就把数据域隐藏在类内部。因此封装也被称为数据隐藏。

 

问题:封装最主要的优点是什么?

回答:最主要的优点是允许修改实现的借口,同时不用修改他人使用接口的代码。封装使得代码具可维护性、灵活性和扩展性。

 

问题:什么是接口?

回答:接口是一系列抽象方法的集合,一个类实现接口,也就从接口中继承了这些抽象方法。

 

问题:接口具有什么特性?

回答:1.接口不能被实例化

2.接口不含任何构造函数

3.接口中的函数都是抽象函数

 

问题:什么是包?

回答:包包含相关的类型(类、接口、枚举和注释),提供访问保护和命名空间管理。

 

问题:为什么要使用包?

回答:JAVA中使用包可以避免命名空间矛盾,控制访问权限,便于定位和使用类、接口、枚举和注释等。

 

问题:什么是多线程编程?

回答:多线程编程包含两个或者更多个可以同时运行的部分,这些部分被叫做线程。每个线程有独立的执行路径。

 

问题:创建线程的两种方式是什么?

回答:通过实现Runnable接口或者继承Thread类。

 

问题:什么是applet?

回答:applet是一个运行在Web浏览器上的JAVA程序。由于它带有整个JAVA的API,因此可以实现JAVA提供的所有功能。

 

问题:applet继承哪个类?

回答:applet继承了java.applet.Applet 类。

 

问题:解释下JAVA的垃圾回收机制。

回答:JAVA垃圾回收机制能够清理不再被引用的对象,从而来释放内存。

 

问题:什么是不可变对象?

回答:不可变对象一旦被创建就不能再改变。

时间: 2024-09-27 02:42:49

JAVA面试题100问第一部分的相关文章

100+经典Java面试题及答案解析

Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性.   面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性.   封装   封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:public,private和protected.每一种修饰符给其他的

最有价值的50道java面试题 适用于准入职Java程序员_java

下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目.经典面试编程题.大型网站技术架构.操作系统.数据库.软件测试.设计模式.UML等内容,同时还对很多知识点进行了深入的剖析,例如hashCode方法的设计.垃圾收集的堆和代.Java新的并发编程.NIO.2等,相信对准备入职的Ja

Java线程试题Top50

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发.调试.优化经验,所以线程相关的问题在面试中经常会被提到. 在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread类还是调用Runnable接口),然后逐渐问到并发问题像在J

java多线程问题-有一道Java面试题,没太理解明白,求大神指点啊~

问题描述 有一道Java面试题,没太理解明白,求大神指点啊~ package test2; /** 设计4个线程,其中两个线程每次对i增加1,另外两个线程对i每次减少1 @author liuyu * */ public class Test { private int i ; private synchronized void inc(){ i ++; System. out .println(Thread.currentThread().getName()+ "--inc--" +

Java 面试题和答案 - (下)_java

第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP. 异常处理 Java小应用程序(Applet) Swing JDBC 远程方法调用(RMI) Servlet JSP 异常处理 43.Java中的两种异常类型是什么?他们有什么区别? Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常.不受检查的异

java 面试题大全,求大神们帮助一下~~~~

问题描述 java 面试题大全,求大神们帮助一下~~~~ java 面试题大全,求大神们帮助一下~~~~java 面试题大全,求大神们帮助一下~~~~java 面试题大全,求大神们帮助一下~~~~java 面试题大全,求大神们帮助一下~~~~java 面试题大全,求大神们帮助一下~~~~java 面试题大全,求大神们帮助一下~~~~ 解决方案 求啥,百度上有的是,还带答案 解决方案二: http://pan.baidu.com/s/1kTxbjt9 百度文库 解决方案三: 同意楼上的,去百度上搜

java-一个经典的Java面试题,异常处理

问题描述 一个经典的Java面试题,异常处理 什么情况下,finally中的代码不会执行(前提是执行到了try里面) 解决方案 在程序try中,执行了system.exit()方法.finally里面的代码就不会被执行了 解决方案二: http://my.oschina.net/MiniBu/blog/338123 解决方案三: try 中的代码没有任何异常时.在 try 中执行了退出等,都不会执行 finally 中的代码 解决方案四: 都是对的,但是第一个回答最早. 解决方案五: 用了got

代码分析-一道Java笔试题,求解答(关于类的加载与初始化)

问题描述 一道Java笔试题,求解答(关于类的加载与初始化) 自己查了一些资料,还是看不懂这个程序的输出结果,求各位详细解释初始化和执行过程,谢! public class Alibaba { public static int k = 0; public static Alibaba t1 = new Alibaba("t1"); public static Alibaba t2 = new Alibaba("t2"); public static int i =

新手下了java实用编程100例

问题描述 新手下了java实用编程100例 想照着敲它个滚瓜烂熟,没想到第一个就出了问题 想知道那个arges是从哪里来的 解决方案 参数传进来的.你可以在运行程序的时候附加参数. 好比你执行dos命令,输入命令空一格,后面加上的东西就是参数. 如果你用eclipse调试,可以配置http://jingyan.baidu.com/article/93f9803fe5d2f3e0e46f5503.html 解决方案二: 就是用dos命令,java flowDemo 1234就可以传参数