JAVA常见面试题及答案
- 格式:pdf
- 大小:97.47 KB
- 文档页数:4
Java面试题大全(答案版)1、一个".java"源文件中是否可以包括多个类(不是内部类)有什么限制可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致2、&和&&的区别。
&和&&都可以用作逻辑与;&&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式;&还可以用作位运算符,当&操作符两边的表达式不是boolean 类型时,&表示按位与操作。
3、Java有没有gotojava中的保留字,现在没有在java中使用。
4、在JAVA中,如何跳出当前的多重嵌套循环break+变量控制与 return5、switch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在String上Switch可以作用在int上,而byte可以隐式转换为int 所以能作用在byte上不能作用在long上,也不能作用在String上6、short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。
s1+=1不会报,因为JVM 会对它特殊处理(自动强转)7、char型变量中能不能存贮一个中文汉字为什么可以,char型变量是用来存储unicode(依妮Q特)编码的,而unicode编码包含了中文,所以是可以保存的8、编程题: 用最有效率的方法算出2乘以8等於几2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方,左移运算,CPU直接支持,所以是最有效率的9、请设计一个一百亿的计算器思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。
10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变引用变量不能变11、"=="和equals方法究竟有什么区别==和equals方法都可以用来比较两个对象是否是同一个对象。
第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。
答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。
- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。
- 安全性:Java提供了强大的安全机制,如沙箱安全模型。
- 体系结构中立:Java不依赖于特定的硬件或操作系统。
- 高效:Java的运行速度接近C/C++。
- 多线程:Java内置多线程支持,便于实现并发处理。
- 动态性:Java在运行时可以进行扩展和修改。
2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。
答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。
- 管理内存,包括堆、栈、方法区等。
- 提供垃圾回收机制。
- 管理线程和同步。
3. Java内存模型题目:请简述Java内存模型的组成。
答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。
- 栈(Stack):存储局部变量和方法调用。
- 方法区(Method Area):存储类信息、常量、静态变量等。
- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。
- 程序计数器(Program Counter Register):存储线程的当前指令地址。
4. Java关键字题目:请列举并解释Java中的几个关键字。
答案:- `public`:表示访问权限为公开。
- `private`:表示访问权限为私有。
- `protected`:表示访问权限为受保护。
- `static`:表示属于类本身,而非对象实例。
- `final`:表示常量或方法不能被修改。
- `synchronized`:表示线程同步。
- `transient`:表示数据在序列化时不会被持久化。
二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。
答案:类是对象的模板,对象是类的实例。
1. J2EE是什么?它包括哪些技术?解答:从整体上讲,J2EE是使用Java技术开发企业级应用的工业标准,它是Java 技术不断适应和促进企业级应用过程中的产物。
适用于企业级应用的J2EE,提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。
J2EE是一个标准,而不是一个现成的产品。
主要包括以下这些技术:1) Servlet Servlet是Java平台上的CGI技术。
Servlet在服务器端运行,动态地生成Web页面。
与传统的CGI和许多其它类似CGI的技术相比,Java Servlet具有更高的效率并更容易使用。
对于Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。
2)JSP JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术。
从这一点来看,非常类似Microsoft ASP、PHP等技术。
借助形式上的内容和外观表现的分离,Web页面制作的任务可以比较方便地划分给页面设计人员和程序员,并方便地通过JSP 来合成。
在运行时态,JSP将会被首先转换成Servlet,并以Servlet的形态编译运行,因此它的效率和功能与Servlet相比没有差别,一样具有很高的效率。
3) EJB EJB定义了一组可重用的组件:Enterprise Beans。
开发人员可以利用这些组件,像搭积木一样建立分布式应用。
4)JDBC JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准Java API编写数据库应用程序。
JDBC API主要用来连接数据库和直接调用SQL命令执行各种SQL语句。
利用JDBC API可以执行一般的SQL语句、动态SQL语句及带IN和OUT参数的存储过程。
一. 选择题(234)1.下面中哪两个可以在A 的子类中使用:()class A {protected int method1 (int a, int b) {return 0;}}A. public int method 1 (int a, int b) { return 0; }B. private int method1 (int a, int b) { return 0; }C. private int method1 (int a, long b) { return 0; }D. public short method1 (int a, int b) { return 0; }解答:AC主要考查子类重写父类的方法的原则B,子类重写父类的方法,访问权限不能降低C,属于重载D,子类重写父类的方法返回值类型要相同或是父类方法返回值类型的子类2.Abstract method cannot be static. True or False ?A TrueB False解答:A抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract 是矛盾的,所以abstract 是不能被修饰为static,否则就失去了abstract 的意义了3.What will be the output when you compile and execute the following program.class Base{void test() {System.out.println("Base.test()");}}public class Child extends Base {void test() {System.out.println("Child.test()");}static public void main(String[] a) {Child anObj = new Child();Base baseObj = (Base)anObj;baseObj.test();}}Select most appropriate answer.A Child.test()Base.test()B Base.test()Child.test()C Base.test()D Child.test()解答:D测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父类的test 方法,因此调用子类的test 方法。
java常见面试题及答案问题:介绍下继承的原则答案:继承使得一个对象可以获取另一个对象的属性。
使用继承可以让已经测试完备的功能得以复用,并且可以一次修改,所有继承的地方都同时生效。
问题:什么是隐式的类型转化?答案:隐式的类型转化就是简单的一个类型赋值给另一个类型,没有显式的告诉编译器发生了转化。
并不是所有的类型都支持隐式的类型转化。
代码示例:int i = 1000;long j = i; //Implicit casting问题:sizeof是Java的关键字吗?答案:不是。
问题:native方法是什么?答案:native方法是非Java代码实现的方法。
问题:在System.out.println()里面,System, out, println分别是什么?答案:System是系统提供的预定义的final类,out是一个PrintStream对象,println是out对象里面一个重载的方法。
问题:封装,继承和多态是什么?答案:简单来说,多态是指一个名字多种实现。
多态使得一个实体通过一个通用的方式来实现不同的操作。
具体的操作是由实际的实现来决定的。
多态在Java里有三种表现方式:方法重载通过继承实现方法重写通过Java接口进行方法重写。
问题:显式的类型转化是什么?答案:显式的类型转化是明确告诉了编译器来进行对象的转化。
代码示例:long i = 700.20;int j = (int) i; //Explicit casting问题:什么是Java虚拟机?答案:Java虚拟机是能移植到不同硬件平台上的软件系统。
问题:类型向下转换是什么?答案:向下转换是指由一个通用类型转换成一个具体的类型,在继承结构上向下进行。
问题:Java的访问修饰符是什么?答案:访问权限修饰符是表明类成员的访问权限类型的关键字。
使用这些关键字来限定程序的方法或者变量的访问权限。
它们包含:public: 所有类都可以访问 protected: 同一个包内以及所有子类都可以访问 private: 只有归属的类才能访问默认: 归属类及相同包下的子类可以访问问题:所有类的父类是什么?答案:Object.问题:Java的基本类型有哪些?答案:byte,char, short, int, long, float, double, boolean。
Java面试题大全及答案1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。
Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。
Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.JDK和JRE的区别是什么?Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。
它同时也包含了执行applet需要的浏览器插件。
Java开发工具包 (JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行 Java应用程序。
3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。
static方法跟类的任何实例都不相关,所以概念上不适用。
4.是否可以在static环境中访问非static变量?static变量在Java中是属于类的,它在所有的实例中的值是一样的。
当类被Java虚拟机载入的时候,会对static变量进行初始化。
如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java支持的数据类型有哪些?什么是自动拆装箱?Java语言支持的8中基本数据类型是:byteshortintlongfloatdoublebooleanchar自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。
经典java面试题及答案详解参加面试前,很多人都希望能提前预知面试题目,最好的方法就是整理一些经典的面试题,java面试的专业性比较强,如果你的基础不够扎实,那么最好找些经典的java面试题及答案分析,提前参透一下吧!java面试题1、说说HashMap和Hashtable的差别答案分析:都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap类没有分类或排序。
他允许一个null键和多个null值。
Hashtable类似于HashMap,不过不允许null键和null值。
他也比HashMap慢,因为他是同步的。
java面试题2、Anonymous Inner Class (匿名内部类)是否能extends(继承)其他类,是否implements(实现)interface(接口)?答案分析:匿名的内部类是没有名字的内部类。
不能extends(继承)其他类,但一个内部类能作为一个接口,由另一个内部类实现。
java面试题3、STRING与STRINGBUFFER的区别是什么?答案分析:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。
如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。
java面试题4、什么时候用assert答案分析:断言是个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。
如果表达式计算为false,那么系统会报告一个AssertionError,他用于调试目的。
java面试题5、Set里的元素是不能重复的,那么用什么方法来区分重复和否呢?是用==还是equals()?他们有何差别?答案分析:Set里的元素是不能重复的,那么用iterator()方法来区分重复和否。
equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
Java常见数据结构⾯试题(带答案)1.栈和队列的共同特点是(只允许在端点处插⼊和删除元素)4.栈通常采⽤的两种存储结构是(线性存储结构和链表存储结构)5.下列关于栈的叙述正确的是(D)A.栈是⾮线性结构B.栈是⼀种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任⼀元素C.插⼊删除不需要移动元素D.所需空间与线性表长度成正⽐7.⽤链表表⽰线性表的优点是(便于插⼊和删除操作)8.在单链表中,增加头结点的⽬的是(⽅便运算的实现)9.循环链表的主要优点是(从表中任⼀结点出发都能访问到整个链表)10.线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)A.每个元素都有⼀个直接前件和直接后件B.线性表中⾄少要有⼀个元素C.表中诸元素的排列顺序必须是由⼩到⼤或由⼤到⼩D.除第⼀个和最后⼀个元素外,其余每个元素都有⼀个且只有⼀个直接前件和直接后件11.线性表若采⽤链式存储结构时,要求内存中可⽤存储单元的地址(D)A.必须是连续的B.部分地址必须是连续的C.⼀定是不连续的D.连续不连续都可以12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)13.树是结点的集合,它的根结点数⽬是(有且只有1)14.在深度为5的满⼆叉树中,叶⼦结点的个数为(31)15.具有3个结点的⼆叉树有(5种形态)16.设⼀棵⼆叉树中有3个叶⼦结点,有8个度为1的结点,则该⼆叉树中总的结点数为(13)17.已知⼆叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)18.已知⼀棵⼆叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该⼆叉树的后序遍历为(DGEBHFCA)19.若某⼆叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。
Java经典面试题带答案一、单项选择题1.Java是从()语言改进重新设计。
A.AdaB.C++C.PasacalD.BASIC答案:B2.下列语句哪一个正确()A.Java程序经编译后会产生machine codeB.Java程序经编译后会产生byte codeC.Java程序经编译后会产生DLLD.以上都不正确答案:B3.下列说法正确的有()A.class中的constructor不可省略B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行D.一个class只能定义一个constructor答案:C4.提供Java存取数据库能力的包是()A.java.sqlB.java.awtC.ngD.java.swing答案:A5.下列运算符合法的是()A.&&B.<>C.ifD.:=答案:A6.执行如下程序代码a=0;c=0;do{--c;a=a-1;}while(a>0);后,C的值是()A.0B.1C.-1D.死循环答案:C7.下列哪一种叙述是正确的()A.abstract修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{}包住C.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号答案:D8.下列语句正确的是()A.形式参数可被视为localvariableB.形式参数可被字段修饰符修饰C.形式参数为方法被调用时,真正被传递的参数D.形式参数不可以是对象答案:A9.下列哪种说法是正确的()A.实例方法可直接调用超类的实例方法B.实例方法可直接调用超类的类方法C.实例方法可直接调用其他类的实例方法D.实例方法可直接调用本类的类方法答案:D二、多项选择题1.Java程序的种类有()A.类(Class)B.AppletC.ApplicationD.Servlet2.下列说法正确的有()A.环境变量可在编译sourcecode时指定B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD3.下列标识符不合法的有()A.newB.$UsdollarsC.1234D.car.taxi答案:ACD4.下列说法错误的有()A.数组是一种对象B.数组属于一种原生类C.intnumber=[]={31,23,33,43,35,63}D.数组的大小可以任意改变答案:BCD5.不能用来修饰interface的有()A.privateB.publicC.protectedD.static答案:ACD6.下列正确的有()A.call byvalue不会改变实际参数的数值B.call by reference能改变实际参数的参考地址C.call byreference不能改变实际参数的参考地址D.call byreference能改变实际参数的内容答案:ACD7.下列说法错误的有()A.在类方法中可用this来调用本类的类方法B.在类方法中调用本类的类方法时可直接调用C.在类方法中只能调用本类中的类方法D.在类方法中绝对不能调用实例方法答案:ACD8.下列说法错误的有()A.Java面向对象语言容许单独的过程与函数存在B.Java面向对象语言容许单独的方法存在C.Java语言中的方法属于类中的成员(member)D.Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同答案:ABC9.下列说法错误的有()A.能被java.exe成功运行的javaclass文件必须有main()方法B.J2SDK就是Java APIC.Appletviewer.exe可利用jar选项运行.jar文件D.能被Appletviewer成功运行的javaclass文件必须有main()方法答案:BCD三、判断题1.Java程序中的起始类名称必须与存放该类的文件名相同。
Java经典面试题及答案(200题) Java经典面试题200道Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。
简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
2. == 和 equals 的区别是什么?「== 解读」对于基本类型和引用类型 == 的作用效果是不同的,如下所示:基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;代码示例:String x = "string";String y = "string";String z = new String("string");System.out.println(x==y); // trueSystem.out.println(x==z); // falseSystem.out.println(x.equals(y)); // trueSystem.out.println(x.equals(z)); // true代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。
「equals 解读」equals 本质上就是 ==,只不过 String 和 Integer 等重写了equals 方法,把它变成了值比较。