2020年Java面试必问题目
20个常见的初级Java开发工程师面试题以及相应的解答
20个常见的初级Java开发工程师面试题以及相应的解答1. 什么是Java?它有哪些特点?答案:Java是一种高级编程语言,具有跨平台性、面向对象、强类型、自动内存管理等特点。
2. Java中的基本数据类型有哪些?答案:Java的基本数据类型包括整数类型(byte、short、int、long)、浮点数类型(float、double)、字符类型(char)和布尔类型(boolean)。
3. 什么是面向对象编程(OOP)?答案:面向对象编程是一种编程范例,它将程序中的数据和操作封装在对象中,通过对象之间的交互来解决问题。
4. Java中如何创建一个对象?答案:可以使用`new`关键字来创建对象,例如:`MyClass obj = new MyClass();`。
5. 什么是构造函数?答案:构造函数是用于初始化对象的特殊方法,它在对象创建时自动调用,通常用于设置对象的初始状态。
6. Java中的继承是什么?如何实现继承?答案:继承是一种面向对象编程的概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。
在Java中,可以使用`extends`关键字来实现继承。
7. 什么是多态性(Polymorphism)?答案:多态性是面向对象编程的一个特性,它允许不同的对象以相同的方式响应相同的方法调用。
多态性可以通过继承和接口来实现。
8. Java中如何防止继承?答案:可以使用`final`关键字来防止类被继承,或者使用`final`关键字来防止方法被子类覆盖。
9. 什么是接口(Interface)?答案:接口是一种抽象数据类型,它定义了一组方法的签名,但没有提供方法的具体实现。
类可以实现接口,以提供接口中定义的方法的具体实现。
10. Java中的异常是什么?如何处理异常?答案:异常是在程序执行期间可能出现的错误或异常情况。
可以使用`try-catch`块来捕获和处理异常。
11. 什么是Java集合框架?答案:Java集合框架是一组接口和类,用于存储和操作数据。
32道java程序员面试题及答案.
JAVA 程序员面试 32问第一,谈谈 final, finally, finalize的区别。
final-修饰符(关键字如果一个类被声明为 final ,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为 abstract的,又被声明为 final 的。
将变量或方法声明为 final ,可以保证它们在使用中不被改变。
被声明为 final 的变量必须在声明时给定初值, 而在以后的引用中只能读取, 不可修改。
被声明为final 的方法也同样只能使用,不能重载finally-再异常处理时提供 finally 块来执行任何清除操作。
如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话。
finalize-方法名。
Java 技术允许使用 finalize( 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
它是在 Object 类中定义的, 因此所有的类都继承了它。
子类覆盖 finalize( 方法以整理系统资源或者执行其他清理工作。
finalize( 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二, Anonymous Inner Class (匿名内部类是否可以 extends(继承其它类,是否可以 implements(实现 interface(接口 ?匿名的内部类是没有名字的内部类。
不能 extends(继承其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三, Static Nested Class 和 Inner Class 的不同,说得越多越好 (面试题有的很笼统。
Nested Class (一般是 C++的说法 , Inner Class (一般是 JAVA 的说法。
Java 内部类与 C++嵌套类最大的不同就在于是否有指向外部的引用上。
精选最新2020年JAVA程序员笔试面试测试题库300题(含参考答案)
2020年JAVA程序员笔试面试题库300题[含答案]一、简答题1."下面代码显示的结果是什么public class Test {static init arr[] = new int[0]public static void main(String [] arge) {System.out.print(arr[1]);}}答案:可编译通过,运行报异常2.如果你被要求写一段代码读取一个图片文件,那么一般使用哪种Stream?A. ObjectInputStreamB. FileInputStreamC. FileReaderD. DataInputStream答案:D3.每一个Oracle数据库有一个或多个物理的数据文件(data file)。
数据文件有哪个特征?A. 一个表空间(数据库存储的逻辑单元)可由一个或多个数据文件组成B. 数据文件建立后,大小可随业务需要进行调整C. 文件中的数据在需要时可以读取并存储在ORACLE内存储区中D. 一个数据文件可与多个数据库联系答案:A4.下面哪些声明是错误的?A. char c = ‘\u0000’;B. int i=’a’;C. byte b=01;D. long l=1234567890L;E. int i=0xFFFFFFFF;答案:5."类Test定义如下:public abstract class Test{public abstract void m1();public abstract void m2(){System.out.println(“hello”);}}如果对这段程序进行修改,其中不会导致错误的修改是( )A. 将修饰m1()方法的 abstract关键字删除B. 将修饰Test类的abstrac关键字删除C. 用“;”替换第4~6行D. 为m1()方法添加一个方法体答案:D6.下面对数组的操作代码哪个是正确的?A. char[] a=”hello world”.toCharArray();B. char c=a[999];C. Class cc=a.getClass();D. int len=a.length;E. a.equals(new Object());F. char c=a[0];答案:DF7.定义整型变量:int n=456;,表达式的值为5的是:A. n/10B. n%10C. (n-n/100*100)/10D. n/10%10答案:CD8.欲构造ArrayList 类的一个实例,此类继承了List 接口,下列哪个认识方法是正确的?A. ArrayList myList=new Object();B. List mylist=new ArrayList();C. ArrayList myList=new List();D. List myList=new List();答案:B9.方法中的局部变量何时分配内存答案:在方法被调用时、静态变量在类被加载时分配内存10."运行以下程序段后,变量t1的值是:public static void exchange(int x, int y) {int temp=x;x=y;y=temp;}public static void main(String args[]) {int t1=2;int t2=3;exchange(t1, t2);}A. 3B. 2C. 5D. 7答案:B11.String s1=”Hello”表达式s1==”Hello”返回true or false答案:TRUE12.如果配置一个servlet需要使用的参数,最好在哪个方法中A. doPostB. destroyC. doGetD. serviceE. init答案:AC13.关系数据库中,典型的实体关系模型有三个要素?答案:数据结构、关系操作、完整性约束14.在Weblogic中如果部署的应用访问两个数据库并需要进行事务控制时,则需配置答案:两阶段提交协议15.System同时包含三个预定义的流变量,分别是答案:In out err16.定义字符串:String str =Abcddefg”; 则str.substring(1,4).indexOf(“d”) 的结果是答案:217."下面代码中队result描述正确的是?InputStream in = … ;byte[] buff = new byte[1024];int result = in.read(buff, 0, 256)A. result 可能等于256B. result 可能等于0C. result 可能等于1024D. result 可能等于1答案:AB18.面向对象的特征答案:(抽象、继承、多态、封装)19.在oracle中,语句select ‘test’ || null from dual;的查询结果为:A. 结果是testB. 结果是testnullC. 结果是空D. 结果是NULL答案:A20.下列方法哪2 个可以用来获取用户提交的表单(Form)参数?A) HttpServletRequest. getParameter(String)B) HttpServletRequest.getAttribute(String)C) HttpServletRequest.getParameterNames()D) HttpServletRequest.getAttributeNames()答案:A,C21.下面哪一个primitive type 和对应的wrapper class 是错误的?ng.IntegerB.g ng.LongC.short ng.ShortD.void ng.V oidE.char[] ng.String答案:E22.下面哪个声明是错误?A. int i=0xFFFFFFFF;B. byte b=01;C. char c=\u0000;D. long l=1234567890LE. int i=’a’;答案:C23."转发HTTP 请求一般有两种方法,response.sendRedirect 和RequestDispatcher.forward,哪种方法可以保存request.setAttribute()中设置的值不丢BA. sendRedirectssB. forwardC. 两个都不能D. 两个都可以答案:24."下面语句片段的输出结果是什么?()int score=9;switch(score){case 0: System.out.println();default: System.out.println(“Error”);case 1: System.out.println(“Good”); break;case 2: System.out.println(“Best”);}A. ErrorB. 没有输出C. Error,Good,BestD. Error,Good答案:D25."下面的main方法执行到A时, str的值是?void main() {String str=”BEA”;This.modify(str);//A}void modify(String str) {str.replace(‘A’, ‘E’);str.toLowerCase();str+=”B”;}A. “BEEB. “BEAC. “beeBD. “bee答案:B26.释放SessionBean使用的某些资源或者刷新Entity Bean的缓存的代码一般实现在哪个方法中?A. ejbLoadB. ejbPassivateC. ejbStoreD. ejbRemoveE. ejbActivate答案:B27.在Java图形用户界面编程中,若显示一些不需要改动的文本信息,一般是使用()类的对象来实现。
最新2020年JAVA笔试面试考试题库588题(含标准答案)
2020年JAVA笔试面试题库588题
一、简答题
1."下面代码中队result描述正确的是?
InputStream in = … ;
byte[] buff = new byte[1024];
int result = in.read(buff, 0, 256)
A. result 可能等于256
B. result 可能等于0
C. result 可能等于1024
D. result 可能等于1
答案:AB
2.软件测试的目的是:A.确定软件产品质量
B. 确定软件产品是否正确
C. 最大可能发现软件产品错误或者缺陷
D. 判断软件是否符合规则说明书
答案:A
3."下面语句输出的结果是什么?
int score = 9;
switch (score){
case 0:System.out.println();
default: System.out.println(""Error"");
case 3: System.out.println(""Good"");break;
case 2: System.out.println(""Best"");
}
A. Error Good Best
B. Error good
C. Error
D. 没有任何输出
答案:B
4.多选题:
答案:
5.下面哪些是合法的标识符?A. *point;
B. _endline;
C. $person。
精选最新2020年JAVA笔试面试完整题库588题(含标准答案)
2020年JAVA笔试面试题库588题一、简答题1.J2EE的三层模型是什么?答案:Model View Controller2.下面哪个声明是错误?A. int i=0xFFFFFFFF;B. byte b=01;C. char c=\u0000;D. long l=1234567890LE. int i=’a’;答案:C3.1. 保证在java应用程序中,一个类Class只有一个实例存在该使用什么设计模式答案:单例4.算法的时间复杂度是指:答案:时间复杂度是度量算法执行的时间长短。
随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
5.System同时包含三个预定义的流变量,分别是答案:In out err6.关系数据库中,典型的实体关系模型有三个要素?答案:数据结构、关系操作、完整性约束7.容器Panel和applet缺省使用的布局编辑策略是答案:FlowLayout的布局管理器8."下面哪一项运行结果为true?int i = 9;int j = 9;A. ++j == i;B. j == i ++;C. j == ++ i;D. j == i;E. j++ == i;答案:BDE9.下面哪个是合法的布尔值A. “false”B. falseC. 10答案:B10."下面代码中队result描述正确的是?InputStream in = … ;byte[] buff = new byte[1024];int result = in.read(buff, 0, 256)A. result 可能等于256B. result 可能等于0C. result 可能等于1024D. result 可能等于1答案:AB11.String s1=”Hello”表达式s1==”Hello”返回true or false 答案:TRUE12."下面代码显示的结果是什么public class Test {static init arr[] = new int[0]public static void main(String [] arge) {System.out.print(arr[1]);}}答案:可编译通过,运行报异常13.EJB在WEBLOGIC中的部署文件答案:weblogic-ejb-jar.xml14."int k=0;for(int i=5;i>0&k<10;i--){k+=i;}最后k的值是多少?答案://k=1215.面向对象的特征答案:(抽象、继承、多态、封装)16."public void test() {try {oneMethod();System.out.println(“condition 1”);} catch(ArrayIndexOutOfBoundsException e) {System.out.println(“condition 2”);} catch(Exception e) {System.out.println(“condition 3”);} finally {System.out.println(“finally”);}}在oneMethod()方法运行正常的情况下将显示什么?A.condition 2B.condition 3C.finallyD.condition 1答案:CD17.单选题:答案:18.转发HTTP请求的两个方法 respsonse.sendDirect 和 RequestDispatcher.forward 的区别答案:RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
(完整版)Java经典面试题大全带答案
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.java。
langD.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 pathC.javac一次可同时编译数个Java源文件D.javac。
Java经典面试题及答案(200题)
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 方法,把它变成了值比较。
java面试题大全带答案
java面试题大全带答案一、基础知识1. 什么是Java?Java是一种高级编程语言,由Sun Microsystems于1995年推出。
它是一种面向对象的语言,可以在不同的平台上运行。
2. 什么是JDK和JRE?JDK(Java Development Kit)是Java开发工具包,包含了编译器和其他开发工具。
JRE(Java Runtime Environment)是Java运行时环境,包含了JVM和Java类库。
3. 什么是JVM?JVM(Java Virtual Machine)是Java虚拟机,它是Java程序运行的环境。
JVM负责将Java字节码翻译成机器码,并执行程序。
4. 说说Java的特点?- 简单易学:Java采用了类似C++的语法,但去掉了一些复杂的特性,使得代码更加简洁易懂。
- 面向对象:Java支持封装、继承、多态等面向对象的特性,使得代码更加模块化、可重用。
- 跨平台性:由于Java程序是在JVM上运行的,可以在不同的操作系统上运行,提高了程序的可移植性。
- 安全性:Java有内置的安全机制,如沙箱安全机制和字节码校验,可以防止恶意代码的运行。
- 垃圾回收:Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的内存,减轻了开发人员的负担。
二、面向对象1. Java中的类和对象有什么区别?类是对象的模板,描述了对象具有的属性和方法。
而对象则是类的一个实例,它具有类定义的属性和方法。
2. 什么是继承?继承是面向对象编程的一种特性,它允许一个类继承另一个类的属性和方法。
子类通过继承可以重用父类的代码,并且可以在此基础上添加新的功能。
3. 什么是多态性?多态性是指对象在不同的情况下表现出不同的行为。
在Java中,通过继承和方法重写可以实现多态性。
4. 什么是封装?封装是一种将数据和代码包装在一起的机制,通过访问修饰符来限制对数据和代码的访问。
它可以隐藏实现细节,提高代码的安全性和可维护性。
精选2020年JAVA程序员笔试面试完整考试题库300题(含答案)
4.J2EE的三层模型是什么?
答案:Model View Controller
5.关系数据库中,典型的实体关系模型有三个要素?
答案:数据结构、关系操作、完整性约束
6.System同时包含三个预定义的流变量,分别是
答案:In out err
7.1.保证在java应用程序中,一个类Class只有一个实例存在该使用什么设计模式
str.replace(‘A’, ‘E’);
str.toLowerCase();
str+=”B”;
}
A. “BEEB. “BEAC. “beeBD. “bee
答案:B
22.下面哪些赋值语句是错误的。A. double d = 3.14D;
B. double d = 5.3E12;
C. double d = 3.14159;
D. HTTP实现MVC的View部分
答案:C
17.J2EE部署时,最小的单元是?A.对象
B.组建
C.模块
D.类
答案:D
18.单选题
答案:
19.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,他的前序遍历序列是:A. decab
B. deabc
C. acbed
D. cedba
答案:
20."在选择开发方法时,有些情况不适合使用原型法,以下选项中不能使用快速原型法的情
D. float f = 11.1;
答案:D
23."定义字符串:String s1=”hello”:对下面程序描述正确的是:
If(s1==”hello”) {
System.out.println(“s1=\”hello\””);
Java面试常问问题及答案(非常详细)
Java⾯试常问问题及答案(⾮常详细)⼀:java基础1.简述string对象,StringBuffer、StringBuilder区分string是final的,内部⽤⼀个final类型的char数组存储数据,它的拼接效率⽐较低,实际上是通过建⽴⼀个StringBuffer,让后台调⽤append(),最后再将StringBuffer toSting(),每次操作Sting 都会重新建⽴新的对象来保存新的值.这样原来的对象就没⽤了,就要被垃圾回收.这也是要影响性能的。
StringBuffer也是final,线程安全的,中采⽤⼀个char数组来保存需要append的字符串,char数组有⼀个初始⼤⼩,当append的字符串长度超过当前char数组容量时,则对char数组进⾏动态扩展,也即重新申请⼀段更⼤的内存空间,然后将当前char数组拷贝到新的位置,因为重新分配内存并拷贝的开销⽐较⼤,所以每次重新申请内存空间都是采⽤申请⼤于当前需要的内存空间的⽅式,这⾥是2倍。
StringBuilder,线程不安全。
2.多态的原理多态就是:允许基类的指针或引⽤指向派⽣类的对象,⽽在具体访问时实现⽅法的动态绑定。
原理是java的后期绑定。
3.简要描述⾯向对象编程的思想抽象:通过特定的实例抽取出共同的特征以后形成的概念的过程,它强调主要特征和忽略次要特征。
封装:把对象的属性和⽅法结合成⼀个独⽴的整体,隐藏实现细节,并提供对外访问的接⼝。
继承:从已知的⼀个类中派⽣出新的⼀个类,叫⼦类。
⼦类实现了⽗类所有⾮私有化属性和⽅法,并能根据⾃⼰的实际需求扩展出新的⾏为。
多态:多个不同的对象对同⼀消息作出响应,同⼀消息根据不同的对象⽽采⽤各种不同的⾏为⽅法。
4.反射的原理java虚拟机运⾏时内存有个叫⽅法区,主要作⽤是存储被装载的类的类型信息。
每装载⼀个类的时候,java就会创建⼀个该类的Class对象实例。
我们就可以通过这个实例,来访问这个类的信息。
java面试官常问的问题
java面试官常问的问题java面试官常问的问题篇一1、问题:如果main方法被声明为private会怎样?答案:能正常编译,但运行的时候会提示”main方法不是public的”。
2、问题:Java里的传引用和传值的区别是什么?答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。
3、问题:如果要重写一个对象的equals方法,还要考虑什么?答案:hashCode。
4、问题:Java的”一次编写,处处运行”是如何实现的?答案:Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的。
5、问题:说明一下public static void main(String args[])这段声明里每个关键字的作用答案:public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。
所以可见性设置为pulic.static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。
void: main方法没有返回值。
String是命令行传进参数的类型,args是指命令行传进的字符串数组。
6、问题:==与equals的区别答案:==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。
两个String对象存储的值是一样的,但有可能在内存里存储在不同的地方 .==比较的是引用而equals方法比较的是内容。
public booleanequals(Object obj) 这个方法是由Object对象提供的,可以由子类进行重写。
默认的实现只有当对象和自身进行比较时才会返回true,这个时候和==是等价的。
String, BitSet, Date, 和File都对equals方法进行了重写,对两个String 对象而言,值相等意味着它们包含同样的字符序列。
对于基本类型的包装类来说,值相等意味着对应的基本类型的值一样。
Java经典面试题大全 带答案
Java经典面试题大全带答案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.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程序中的起始类名称必需与存放该类的文件名相同。
精选最新2020年JAVA程序员笔试面试完整考试题库300题(含标准答案)
2020年JAVA程序员笔试面试题库300题[含答案]
一、简答题
1.构造ArrayList类的一个实例,下列哪个方法是正确的?A. List myList = new ArrayList();
B. ArrayList myList = new List();
C. List myList = new List();
D. ArrayList myList = new Object();
答案:A
2.面向对象的特征
答案:(抽象、继承、多态、封装)
3.方法中的局部变量何时分配内存
答案:在方法被调用时、静态变量在类被加载时分配内存
4.String s1=”Hello”表达式s1==”Hello”返回true or false
答案:TRUE
5.关系数据库中,典型的实体关系模型有三个要素?
答案:数据结构、关系操作、完整性约束
6.在Weblogic中如果部署的应用访问两个数据库并需要进行事务控制时,则需配置
答案:两阶段提交协议
7.System同时包含三个预定义的流变量,分别是
答案:In out err
8.以下的变量定义中,合法的语句是:A. double a=1+4e2.5;
B. short do=15;
C. int abc_21;
D. float 1_variable=3.4;
答案:
9."执行下列代码后,哪个结论是正确的?
String[] s = new String[10];
A. s.length为10
B. s[9]为null
C. s[10]为”
D. s[9]为0。
java最常见的面试题(带答案)
java最常见的面试题(带答案)java最常见的面试题面试题NO.01-NO.05问题:如果main方法被声明为private会怎样答案:能正常编译,但运行的时候会提示”main方法不是public的”。
问题:Java里的传引用和传值的区别是什么答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。
问题:如果要重写一个对象的equals方法,还要考虑什么答案:hashCode。
问题:Java的”一次编写,处处运行”是如何实现的答案:Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的。
问题:说明一下public static void main(String args[])这段声明里每个关键字的作用答案:public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。
所以可见性设置为pulic.static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。
void: main方法没有返回值。
String是命令行传进参数的类型,args是指命令行传进的字符串数组。
面试题NO.06-NO.10问题:==与equals的区别答案:==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。
两个String对象存储的值是一样的,但有可能在内存里存储在不同的地方 .==比较的是引用而equals方法比较的是内容。
public booleanequals(Object obj) 这个方法是由Object对象提供的,可以由子类进行重写。
默认的实现只有当对象和自身进行比较时才会返回true,这个时候和==是等价的。
String, BitSet, Date, 和File都对equals方法进行了重写,对两个String对象而言,值相等意味着它们包含同样的字符序列。
Java面试问题40个「附答案」
Java面试问题40个「附答案」Java集合面试问题40个「附答案」Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
下面店铺为大家带来Java面试问题40个「附答案」,希望大家喜欢!1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。
随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。
在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。
它还包括在Java并发包中,阻塞接口以及它们的实现。
集合框架的部分优点如下:(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。
(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。
(3)通过使用JDK附带的集合类,可以降低代码维护成本。
(4)复用性和可操作性。
2.集合框架中的泛型有什么优点?Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。
泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。
这避免了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。
泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。
它也给运行时带来好处,因为不会产生类型检查的字节码指令。
3.Java集合框架的基础接口有哪些?Collection为集合层级的根接口。
一个集合代表一组对象,这些对象即为它的元素。
Java平台不提供这个接口任何直接的实现。
Set是一个不能包含重复元素的集合。
这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。
List是一个有序集合,可以包含重复元素。
你可以通过它的索引来访问任何元素。
java面试题30道及答案
【18】sleep() 和 wait() 有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
【16】给我一个符合开闭原则的设计模式的例子?
开闭原则要求你的代码对扩展开放,对修改关闭。这个意思就是说,如果你想增加一个新的功能,你可以很容易的在不改变已测试过的代码的前提下增加新的代码。有好几个设计模式是基于开闭原则的,如策略模式,如果你需要一个新的策略,只需要实现接口,增加配置,不需要改变核心逻辑。一个正在工作的例子是 Collections.sort() 方法,这就是基于策略模式,遵循开闭原则的,你不需为新的对象修改 sort() 方法,你需要做的仅仅是实现你自己的 Comparator 接口。
【1】a = a + b 与 a += b 的区别?
+= 隐式的将加操作的结果类型强制转换为持有结果的类型。如果两这个整型相加,如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作。如果加法操作的结果比 a 的最大值要大,则 a+b 会出现编译错误,但是 a += b 没问题,如下:
【2】int 和 Integer 哪个会占用更多的内存?
Integer 对象会占用更多的内存。Integer 是一个对象,需要存储对象的元数据。但是 int 是一个原始类型的数据,所以占用的空间更少。
【3】64 位 JVM 中,int 的长度是多数?
Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。意思就是说,在 32 位 和 64 位 的Java 虚拟机中,int 类型的长度是相同的。都是 32 位或者 4 个字节。
java面试官常用问题
java面试官常用问题在Java面试中,面试官常常会问一些基础知识、编程能力和项目经验相关的问题。
以下是一些常见的Java面试问题,我会从不同角度给出详细回答:1. 什么是Java?Java是一种面向对象的编程语言,由Sun Microsystems(现在是Oracle)于1995年推出。
它具有跨平台、可移植性强、安全性高等特点,广泛应用于开发各种类型的应用程序。
2. Java中的基本数据类型有哪些?Java中的基本数据类型包括整型(byte、short、int、long)、浮点型(float、double)、字符型(char)、布尔型(boolean)。
3. 什么是面向对象编程?面向对象编程(OOP)是一种编程范式,它将数据和操作数据的方法封装在一起,通过创建对象的方式来解决问题。
Java是一种面向对象的编程语言,它支持封装、继承和多态等特性。
4. 什么是Java虚拟机(JVM)?Java虚拟机是Java程序运行的环境,它负责将Java源代码编译成字节码,并在不同平台上执行。
JVM提供了内存管理、垃圾回收、安全性等功能,使得Java程序具有跨平台性。
5. Java中的异常处理机制是什么?Java中的异常处理机制通过try-catch-finally语句块来处理可能出现的异常情况。
当代码块中发生异常时,异常会被捕获并交由catch块处理,而finally块中的代码无论是否发生异常都会执行。
6. 什么是Java中的多线程?多线程是指同时执行多个线程的机制。
Java中可以通过继承Thread类或实现Runnable接口来创建线程。
多线程可以提高程序的并发性和响应性,但也需要注意线程安全和资源竞争的问题。
7. Java中的集合框架有哪些?Java中的集合框架包括List、Set、Map等接口及其实现类。
List接口有ArrayList、LinkedList等实现类,Set接口有HashSet、TreeSet等实现类,Map接口有HashMap、TreeMap等实现类。
Java经典面试题大全_带答案
Java经典面试题大全_带答案Java经典面试题带答案一、单项选择题1.Java是从()语言改进重新设计。
A.AdaB.C++C.PasacalD.BASIC答案:B2.下列语句哪一个正确()A.Java程序经编译后会产生machine codeB.Java程序经编译后会产生byte code(字节码)C.Java程序经编译后会产生DLLD.以上都不正确答案:B3.下列说法正确的有()A.class中的constructor不可省略B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器)D.一个class只能定义一个constructor答案:C4.提供Java存取数据库能力的包是()A.Java.sql /sql/数据库还有Oracle 也是一种数据库B.java.awtC./doc/287018356.html,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程序中的起始类名称必须与存放该类的文件名相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020年Java面试必问题目黑马程序员免费视频库:?2020sxkyk以下的内容是对原有的和最近Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,相对来说比较经典,相信对准备入职的Java程序员一定有所裨益。
一、Java基础部分1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。
抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
2)继承:继承是从已有类得到继承信息创建新类的过程。
提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。
继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。
3)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。
我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。
可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
4)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。
简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。
多态性分为编译时的多态性和运行时的多态性。
如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B 系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。
方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。
运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1. 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2. 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
黑马程序员视频库网址:(海量热门编程视频、资料免费学习)学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 3285264708 / 35496641952、访问修饰符public,private,protected,以及不写(默认)时的区别?答:区别如下:作用域当前类同包子类其他public √√√√protected √√√×default √√××private √×××类的成员不写访问修饰时默认为default。
默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。
受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。
3、String 是最基本的数据类型吗?答:不是。
Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。
4、float f=3.4;是否正确?答:不正确。
3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。
5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。
而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。
6、Java 有没有goto?答:goto 是Java中的保留字,在目前版本的Java中没有使用。
(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)黑马程序员视频库网址:(海量热门编程视频、资料免费学习)学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 3285264708 / 35496641957、int 和Integer 有什么区别?答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是Integer,从JDK 1.5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
Java 为每个原始类型提供了包装类型:原始类型: boolean,char,byte,short,int,long,float,double包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Doublepackage com.lovo;// 何问起public class AutoUnboxingTest {public static void main(String[] args) {Integer a = new Integer(3);Integer b = 3; // 将3自动装箱成Integer类型int c = 3;System.out.println(a == b); // false 两个引用没有引用同一对象System.out.println(a == c); // true a自动拆箱成int类型再和c比较}}补充:最近还遇到一个面试题,也是和自动装箱和拆箱相关的,代码如下所示:public class Test03 {public static void main(String[] args) {Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;System.out.println(f1 == f2);System.out.println(f3 == f4);}}// 如果不明就里很容易认为两个输出要么都是true要么都是false。
首先需要注意的是f1、f2、f3、f4四个变量都是Integer对象,所以下面的==运算比较的不是值而是引用。
装箱的本质是什么呢?当我们给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,如果看看valueOf的源代码就知道发生了什么。
public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}// IntegerCache是Integer的内部类,其代码如下所示:/*** Cache to support the object identity semantics of autoboxing for values between* -128 and 127 (inclusive) as required by JLS.** The cache is initialized on first usage. The size of the cache* may be controlled by the {@code -XX:AutoBoxCacheMax=<size>} option. * During VM initialization, ng.Integer.IntegerCache.high property* may be set and saved in the private system properties in the* sun.misc.VM class.* */private static class IntegerCache {static final int low = -128;static final int high;static final Integer cache[];static {// high value may be configured by propertyint h = 127;String integerCacheHighPropValue =sun.misc.VM.getSavedProperty("ng.Integer.IntegerCache.high");if (integerCacheHighPropValue != null) {try {int i = parseInt(integerCacheHighPropValue);i = Math.max(i, 127);// Maximum array size is Integer.MAX_VALUEh = Math.min(i, Integer.MAX_VALUE - (-low) -1);} catch( NumberFormatException nfe) {// If the property cannot be parsed into an int, ignore it.}}high = h;cache = new Integer[(high - low) + 1];int j = low;for(int k = 0; k < cache.length; k++)cache[k] = new Integer(j++);// range [-128, 127] must be interned (JLS7 5.1.7)assert IntegerCache.high >= 127;}private IntegerCache() {}}简单的说,如果字面量的值在-128到127之间,那么不会new新的Integer 对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false。