文档库 最新最全的文档下载
当前位置:文档库 › Java面试基础题

Java面试基础题

Java面试基础题
Java面试基础题

1 ==和equals的比较

“==”:运用在基本数据类型的时候,通过比较它们实际的值是否相同运用在比较引用类型的时候,则是比较两个引用的地址是否相等,也就是是否指向同一个对象

“equals”:https://www.wendangku.net/doc/6d288060.html,ng.Object的方法,所有java类都会有的类,它可以被程序员覆盖重写,通过自定义的方式来比较两个对象是否相等

对于https://www.wendangku.net/doc/6d288060.html,ng.String类而言,比较的是字符串内容是否相等

2 final, finally, finalize的区别

final 用于声明属性,方法和类。属性不可变,方法不可覆盖,类不可继承finally是异常处理语句结构的一部分,表示无论是否出现异常总是执行finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收

3 Overload和Override的区别

重载Overload是一个类中多态性的一种表现,方法名必须相同,参数列表必须不同.(长度不同或类型不同),与返回值类型无关。构造器也可以重载.方法名和参数列表都相同,只有返回类型不相同则是方法重复定义.编译出错.

重写Override是父类与子类之间多态性的一种表现。必须存在继承关系,如果在子类中定义某方法与其父类有相同的名称和参数,子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。子类的异常不能被放大,权限不能被缩小,返回值类型不能被放大。

4 abstract class和interface的区别

抽象类(abstract.class):表示一种继承关系,一个类只能继承一个抽象类,但却可以实现多个接口。可以有也可以没有抽象方法。并且可以定义和常规类一样的变量和方法。

接口(interface):所有的方法都是抽象的,所有的变量都是静态不可修改的。

5 Static Nested Class 和 Inner Class的不同

Nested Class(一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用。

注:静态内部类(Inner Class)意味着

1创建一个static内部类的对象,不需要一个外部类对象

2不能从一个static内部类的一个对象访问一个外部类对象

6 C++或Java中的异常处理机制的简单原理和应用

当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是https://www.wendangku.net/doc/6d288060.html,ng.Thowable的子类。

7 POST和GET的区别

GET方式: 1、跟在URL后面,以?开头,多个参数用&连接

2、提交参数数据有限制,不超过1kb

3、不适合提交敏感数据

4、浏览器直接访问的请求,默认提交的方式

POST方式:1、参数在请求的实体内容中

2、提交的参数数据没有限制

3、适合提交敏感数据

8 反射

8.1概念

主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例

8.2反射机制的作用

1反编译:.class-->.java

2通过反射机制访问java对象的属性,方法,构造方法等;

8.3 sun公司提供的反射机制中的类

https://www.wendangku.net/doc/6d288060.html,ng.Class;

https://www.wendangku.net/doc/6d288060.html,ng.reflect.Constructor;

https://www.wendangku.net/doc/6d288060.html,ng.reflect.Field; 属性

https://www.wendangku.net/doc/6d288060.html,ng.reflect.Method;

https://www.wendangku.net/doc/6d288060.html,ng.reflect.Modifier;

8.4具体功能实现

1、反射机制获取类有三种方法,我们来获取Employee类型

1.//第一种方式:

2.Classc1 = Class.forName("Employee");

3.//第二种方式:

4.//java中每个类型都有class 属性.

5.Classc2 = Employee.class;

6.//第三种方式:

7.//java语言中任何一个java对象都有getClass 方法

8.Employeee = new Employee();

9.Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)

2、创建对象:获取类以后我们来创建它的对象,利用newInstance:

1.Class c =Class.forName("Employee");

2.//创建此Class 对象所表示的类的一个新实例

3.Objecto = c.newInstance(); //调用了Employee的无参数构造方法.

3、获取属性:分为所有的属性和指定的属性:

A、先看获取所有的属性的写法:

1.//获取整个类

2.Class c = Class.forName("https://www.wendangku.net/doc/6d288060.html,ng.Integer");

3.//获取所有的属性

4. Field[] fs = c.getDeclaredFields();

5.

6.//定义可变长的字符串,用来存储属性

7. StringBuffer sb = new StringBuffer();

8.//通过追加的方法,将每个属性拼接到此字符串中

9.//最外边的public定义

10.sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName(

) +"{\n");

11.//里边的每一个属性

12.for(Field field:fs){

13. sb.append("\t");//空格

14. sb.append(Modifier.toString(field.getModifiers())+" ");//获得属性的修饰符,例

如public,static等等

15. sb.append(field.getType().getSimpleName() + " ");//属性的类型的名字

16. sb.append(field.getName()+";\n");//属性的名字+回车

17. }

18.

19.sb.append("}");

20.System.out.println(sb);

B、获取特定的属性,对比着传统的方法来学习:

1.public static void main(String[] args) throws Exception{

2.

3. //以前的方式:

4./*

5. User u = new User();

6. u.age = 12; //set

7. System.out.println(u.age); //get

8. */

9.

10.//获取类

11. Class c = Class.forName("User");

12.//获取id属性

13. Field idF = c.getDeclaredField("id");

14.//实例化这个类赋给o

15. Object o = c.newInstance();

16.//打破封装

17. idF.setAccessible(true); //使用反射机制可以打破封装性,导致了java对象的属性

不安全。

18.//给o对象的id属性赋值"110"

19. idF.set(o, "110"); //set

20.//get

21. System.out.println(idF.get(o));

22.}

4,获取方法,和构造方法,不再详细描述,只来看一下关键字:getDeclaredMethods()获取所有的方法

getReturnType()获得方法的放回类型

getParameterTypes()获得方法的传入参数类型

getDeclaredMethod("方法名",参数类型.class,……)获得特定的方法getDeclaredConstructors()获取所有的构造方法

getDeclaredConstructor(参数类型.class,……) 获取特定的构造方

父类和父接口含义

getSuperclass() 获取某类的父类

getInterfaces() 获取某类实现的接口

这样我们就可以获得类的各种内容,进行了反编译。对于JAVA这种先编译再运行的语言来说,反射机制可以使代码更加灵活,更加容易实现面向对象。

9 Comparable(自然排序)和Comparator(客户化排序)的区别

Comparable 和Comparator 都是用来实现集合中元素的比较、排序的

只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序。

Comparator位于包java.util下,而Comparable位于包https://www.wendangku.net/doc/6d288060.html,ng下

Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 String、Integer自己就可以完成比较大小操作,已经实现了Comparable接口)

10 线程详解

10.1什么是线程

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位

10.2 线程和进程有什么区别

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间

10.3 如何在Java中实现线程

由于线程类本身就是调用的Runnable接口所以你可以继承https://www.wendangku.net/doc/6d288060.html,ng.Thread 类或者直接调用(实现)Runnable接口来重写run()方法实现线程

10.4 Thread类中的start()和run()方法的区别

start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程

10.5 Java中Runnable和Callable有什么不同

Runnable和Callable都代表那些要在不同的线程中执行的任务。Runnable从JDK1.0开始就有了,Callable是在JDK1.5增加的。它们的主要区别是Callable 的 call() 方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable可以返回装载有计算结果的Future对象

10.6 Java中CyclicBarrier和CountDownLatch有什么不同CyclicBarrier 和 CountDownLatch 都可以用来让一组线程等待其它线程。与CyclicBarrier不同的是,CountdownLatch 不能重新使用

10.7 notify()和notifyAll()的区别

notify()方法不能唤醒某个具体的线程,所以只有一个线程在等待的时候它才有用武之地。而notifyAll()唤醒所有线程并允许他们争夺锁确保了至少有一个线程能继续运行。

10.8 Java中interrupted 和isInterruptedd方法的区别interrupted() 和isInterrupted()的主要区别是前者会将中断状态清除而后者不会10.9 什么是线程池

为了避免创建线程花费昂贵的资源和时间和一个进程创建的线程数有限的问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程

10.10 Java多线程中调用wait() 和sleep()方法有什么不同Java程序中wait 和sleep都会造成某种形式的暂停,它们可以满足不同的需要。wait()方法用于线程间通信,如果等待条件为真且其它线程被唤醒时它会释放锁,而sleep()方法仅仅释放CPU资源或者让当前线程停止执行一段时间,但不会释放锁

11 IO流详解

11.1 概念

io流分为输入流及输出流,输入流是文件到内存,输出流是内存到文件。11.2 体系结构

PrintStream、BufferedWriter、PrintWriter的比较

PrintStream:属于字节流,即可以打印字节也可以打印数组写入文件不用close 或flush,e.printStackTrace()、System.out.println()都是它的实例。

B ufferedWriter、PrintWriter:属于字符流,只可以打印字符或字符串因为有缓存,要想写入文件必须close或flush

12 集合详解

12.1Collection接口

Collection是最基本集合接口,它定义了一组允许重复的对象。Collection 接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,如下:Set接口

Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set 接口的集合类中的元素是无序且不可重复。

特征:无序且不可重复。

List接口

List接口同样也继承于Collection接口,但是与Set接口恰恰相反,List 接口的集合类中的元素是对象有序且可重复。

特征:有序且可重复。

两个重要的实现类:ArrayList和LinkedList

1.ArrayList特点是有序可重复的

2.LinkedList是一个双向链表结构的。

12.2 M ap接口

Map也是接口,但没有继承Collection接口。该接口描述了从不重复的键到值的映射。Map接口用于维护键/值对(key/value pairs)。

特征:它描述了从不重复的键到值的映射。

两个重要的实现类:HashMap和TreeMap

1.HashMap,中文叫散列表,基于哈希表实现,特点就是键值对的映射关系。一个key对应一个Value。HashMap中元素的排列顺序是不固定的。更加适合于对元素进行插入、删除和定位。

2.TreeMap,基于红黑书实现。TreeMap中的元素保持着某种固定的顺序。更加适合于对元素的顺序遍历。

12.3 Iterator接口

Iterator接口,在C#里有例外一种说法IEnumerator,他们都是集合访问

器,用于循环访问集合中的对象。

所有实现了Collection接口的容器类都有iterator方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,Iterator接口方法能以迭代方式逐个访问集合中各个元素,并可以从Collection中除去适当的元素。

[csharp]view plain copy print?

1.Iterator it = collection.iterator(); // 获得一

个迭代子

2.while(it.hasNext())

3.{

4.Object obj = it.next(); // 得到下一个元素

5. }

12.4、Comparable接口

Comparable可以用于比较的实现,实现了Comparable接口的类可以通过实现comparaTo方法从而确定该类对象的排序方式。

13 面向对象

面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP Connection:主要是开启程序和数据库之间的连结

13.1 MVC模式

MVC(Model View Controller)模型-视图-控制器MVC是典型的平行关系,没有说谁在上谁在下的关系,模型负责业务领域的事情,视图负责显示的事情,控制器把数据读取出来填充模型后把模型交给视图去处理。而各种验证什么的应该是在模型里处理了。它强制性的使应用程序的输入、处理和输出分开。MVC最大的好处是将逻辑和页面分离。

13.2什么是装箱和拆箱

装箱:从值类型接口转换到引用类型。

拆箱:从引用类型转换到值类型。

13.3 堆和栈的区别

栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义

堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小

13.4 String s = new String("xyz");创建了几个String Object ?两个对象,一个是“xyx”,一个是指向“xyx”的引用对象

14Servlet

14.1 Servlet重要的四个生命周期方法

构造方法:创建servlet对象的时候调用。默认情况下,第一次访问servlet 的时候创建servlet对象只调用1次。证明servlet对象在tomcat是单实例的。init方法:创建完servlet对象的时候调用。只调用1次。

service方法:每次发出请求时调用。调用n次。

destroy方法:销毁servlet对象的时候调用。停止服务器或者重新部署web应用时销毁servlet对象。只调用1次。

14.2 如何解决引发线程安全问题

分析:因为servlet是多线程的,所以当多个servlet的线程同时访问了servlet 的共享数据,如成员变量,可能会引发线程安全问题

解决办法:

1)把使用到共享数据的代码块进行同步(使用synchronized关键字进行同步)2)建议在servlet类中尽量不要使用成员变量。如果确实要使用成员,必须同步。而且尽量缩小同步代码块的范围。(哪里使用到了成员变量,就同步哪里!!),以避免因为同步而导致并发效率降低。

java基础笔试题(答案已整理)

Java基础试题 一:选择题(1*30=30)(题目写在答题纸上面) 1:Java 提供哪几种运算符多选( abcd )。 A)算术运算符B)位运算符 C)关系运算符D)逻辑运算符E)条件运算符 2:https://www.wendangku.net/doc/6d288060.html,ng包的()方法比较二个对象是否相等返回true.。(b) A:toString() B:equals() C:compare D:以上都不正确 3:下列对Java 的变量与函数说法正确的是多选(ace )。 A)变量是用来保存数据的B)变量是用来实现操作过程的C)函数是用来实现操作过程的D)函数是用来保存数据的E)函数的参数是数据的入口 4:已知:int[] a = new int[100];在下列给出的数组元素中,非法的是。(d) A:a[0] B:a[1] C:a[99] D:a[100] 5:在java中,一个类可同时定义许多同名的方法,在这些方法的形式参数个数,类型或顺序各不相同,传值也可以各不相同。这种面向对象程序的特性称为。(c) A:隐藏B:覆盖C:重载D:Java不支持此特性 6:()是一组常量和抽象方法的集合。(d) A:实例B:类C:包D:接口 7:下面关于数组说法正确的是多选(abcde)。 A)一维数组实质上是相同类型变量的列表 B)创建一个数组首先定义数组变量所需的类型 C)char c[]=new char[26];可声明一个含有26 个元素的char型数组 D)当为一个多维数组的时候分配内存时,仅需要为第一指定内存,然后再分配其他维的存E)int twain[][] = new int[4][5];可声明一个二维数组 8:Java源文件和编译后的文件扩展名分别为。(b) A:.class和.java B:.java各.class C:.class和.class D:.java和.java 9:设x=5;则y=x--和y=--x的结果,使y分别为。(c) A:5,5 B:5,6 C:5,4 D:4,4 10:若x是float类变量,x=10/4;则x 的值是。(b) A:2 B:2.0 C:2,5 D:编译错误 11:.下面方法中,用于调度线程使其运行的是?多选(bc ) A. init() B. start() C. run() D. resume() E. sleep() 12.下面哪种情况能实现自动转换多选(ace )。 A)byte 型转换成int 型B)int 型转换成byte 型 C)float 型转换成double型D)double 型转换成int 型E)char型转换成int 型 13:下列那些是正确的JAVA字符串?多选(abd )。 A. "\"\"" B. "Oxzabc" C. "\"\" D. "\t\t\r\n" E. "boolean"5 14:在使用super 和this关键字时,以下描述正确的是。(a) A::在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过 B:super()和this()不一定要放在构造方法内第一行

java基础笔试测试题与答案

Java 一章至五章考试 一. 填空题(8 分) 1. 面向对象的三大原则是( 封装),( 继承) 和( 多态).2 分 2. 如果想在对象实例化的同时就初始化成员属性,则使用( 构造函数).2 分 3. ( 实体) 方法和( 构造) 方法不能修饰为abstract ?2分 二.选择题(60 分) 1) 在Java 语言中,下列(a,d )是不满足命名规范的变量名。(选择二项) a) 姓名 b) $Name c) _instanceof d) instanceof 2) 下列Java 代码片段的输出结果是( a ) 。 char c='a'; int i=c; float f=i; byte b=(byte)c; System.out.println(c+","+i+","+f+","+b); a) 编译错误 b) a,97,97,97 c) a,97,97.0,97 d) a,97,97.0f,97 3) 下列Java 代码中,空白处的代码是(b,c )。( 选择两项) public interface Fee{ public float calLabFee(float unitPrice, float time); } public class FeeImpl implements Fee { public float calLabFee(float unitPrice, float time){ return unitPrice * time; } } public class FeeInterfaceTest { public static void main(String[] args){ ________________ Float labFee = fee.calLabFee(400.00,5); } }

JAVA基础面试题经典

JAVA基础面试题经典

第一阶段题库 基础知识部分: 1.JDK是什么?JRE是什么? a)答:JDK:java开发工具包。JRE:java运行时 环境。 2.什么是java的平台无关性? a)答:Java源文件被编译成字节码的形式,无论 在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。也就是一处编写,处处运行。这就是java的跨平台性。 3.在一台电脑上配置java环境,path起什么作 用?如何配置? a)答:path的作用是在DOS环境下,能在任意 位置使用JDK目录中bin文件夹中的可执行程序,来编译执行java程序。 b)在环境变量中找到path变量,把bin文件夹 的绝对路径加上即可。 4.什么样的标识符是合法的? a)由字母、数字、_和$组成,长度不限。其中字 母能够是大写或小写的英文字母,数字为0到9。

b)标识符的第一个字符不能是数字。 c)标识符区分大小写。 d)标识符不能包含空格。 5.Java有几种基本数据类型? a)byte,short,int,long,char,boolean,float,double 6.什么是隐式类型转换?什么是显示类型转换? a)当将占位数少的类型赋值给占位数多的类型 时,Java自动使用隐式类型转换。 b)当把在级别高的变量的值赋给级别底变量时, 必须使用显示类型转换运算。 7.&&和&区别,||和|区别? a)&&和||是短路与,短路或,当左边的表示式能 判断当前结果,则不判断右边的表示式。 b)而& 和|则将两边的表示式都运算完毕后,再 算结果。 8.break,continue区别? a)break结束最近的一个循环,continue结束当 次循环,进入下次循环。 9.类的命名规则是什么? a)如果类名使用拉丁字母,那么名字的首写字母 使用大写字母。

Java基础笔试机试测试题(带答案)

Java基础考试题 班级:__________ 姓名:___________ 日期:_____________ 一、笔试(45题,每题2分) 1) 分析下面的Java程序段,编译运行后的输出结果是()。 public class Test { public static void changeString(StringBuffer sb) { sb.append("stringbuffer2"); } public static void main(String[] args) { StringBuffer sb = new StringBuffer("stringbuffer1"); changeString(sb); System.out.println("sb = " + sb.toString()); } } A. sb = stringbuffer2stringbuffer1 B. sb = stringbuffer1 C. sb = stringbuffer2 D. sb = stringbuffer1stringbuffer2 2) 在Java中,包有多种用途,但不包含()。 A. 将类组合成较小的单元,便于使用 B. 有助于避免命名冲突 C. 有助于提高运行效率 D. 允许在更广的范围内保护类、数据和方法 3) 在Java中,如果要在字符串类型s="java" 中,得到字母'v' 出现的位置,选()语句。 A)s.matches('v'); B)s.charAt('v'); C)s.indexOf('v'); D)s.substring('v'); 4)下列代码运行后,变量 c 的值是()。 int a=15,b=10; double c=a/b; a) 1.5 b) 1.0 c) 1 d) 0 5)main 方法如下所示,该程序的运行结果是()。 public static void main(String [] args){ int i=0; System.out.print(i++); } a) 输出0 b) 输出1 c) 编译错误d) 运行时出现异常

JAVA笔试题--基础很全有答案

第一组 1.下列不可作为java语言修饰符的是(D) A) a1B) $1C) _1D) 11 2.有一段java应用程序,它的主类名是a1,那么保存它的源文件名可以是(A)A) a1.javaB) a1.classC) a1D)都对 3.整型数据类型中,需要内存空间最少的是(D) A) shortB) longC) intD) byte 4. Java类可以作为(C) A)类型定义机制 B)数据封装机制 C)类型定义机制和数据封装机制 D)上述都不对 5.在创建对象时必须(C) A)先声明对象,然后才能使用对象 B)先声明对象,为对象分配内存空间,然后才能使用对象 C)先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象 D)上述说法都对 6.在调用方法时,若要使方法改变实参的值,可以(B) A)用基本数据类型作为参数 B)用对象作为参数 C) A和B都对

D) A和B都不对 7. Java中(C) A)一个子类可以有多个父类,一个父类也可以有多个子类 B)一个子类可以有多个父类,但一个父类只可以有一个子类 C)一个子类可以有一个父类,但一个父类可以有多个子类 D)上述说法都不对 8.Java语言具有许多优点和特点,哪个反映了Java程序并行机制的特点?(B)A)安全性B)多线性C)跨平台D)可移植 9. Character流与Byte流的区别是(C) A)每次读入的字节数不同B)前者带有缓冲,后者没有C)前者是字符读写,后者是字节读写D)二者没有区别,可以互换使用 10.以下声明合法的是(D) A、defaultStrings; B、publicfinalstaticnativeintw( ) C、abstractdoubled; D、abstractfinaldoublehyperbolicCosine( ) 11.关于以下application的说明,正确的是(C) 1.classStaticStuff 2.{ 3.staticintx=10; 4.static{ x+=5;} 5.publicstaticvoidmain(Stringargs[ ]) 6.{ 7.System.out.println(“x=”+ x);

Java基础试题

考砸了,把做错的题目重新复习一下对应的知识点 一、单项选择(每题2.5分,20 * 2.5’=50’)A 1.下面哪种情况属于方法重载。 A)方法名相同,参数类型与个数不同 B)方法参数类型相同 C)方法参数个数相同 D)方法名相同,方法参数类型与个数也相同 2.你想用下面的代码查找数组最后一个元素的值,当你编译并运行它的时候,会发 生什么?C public class MyAr{ public static void main(String argv[]){ int[] i = new int[5]; System.out.println(i[5]); } } A).编译通过并输出0 B).编译通过并输出 null C).编译通过但发生运行时错误 D).编译出错 3.JFrame的默认布局管理器是什么?C 4.Frame 的默认布局是FlowLayout 5.JFrame的默认布局是BorderLayout A)FlowLayout B)GridLayout C)BorderLayout D)CardLayout 6.给定下面的类定义D class Base{ Base(int i){} } class DefCon extends Base{ DefCon(int i){ //XX } } 如果将标记//XX 的地方替换为下面的行,哪一行是独立合法的? A).super(); B).this();

C).this(99); D).s uper(99); 7.启动线程方法正确的是___D________。 A)run( )方法 B)suspend( )方法 C)stop( )方法 D)start( )方法 6、在Java中,调用Math.random() 方法可能返回的结果是(B) Math.random 返回的是一个double值此值大于0.0 且小于1.0 A)132.34 B)0.342 C)29.34E10 D) 1.0009 7、下面的哪一个声明是合法的?B A) public protected amethod(int i) B) public void amethod(int i) C) public void amethod(void) D) void public amethod(int i) 8、假设有以下Java代码:C import java.applet.*; import java.awt.*; public class My_Applet extends Applet { … } 如果要在HTML页中嵌入以上Applet,可按下面()方式完成。(选择一项) A) B) C) D) 9、在Java中,要想使只有定义该类所在的包内的类可以访问该类,应该用(A)关 键字。 A)不需要任何关键字 B)private C)final D)protected 10、下述哪些说法是正确的?A

Java基础试题及其答案

J a v a基础试题及其答案 The latest revision on November 22, 2020

Java试题 1) java程序中,main方法的格式正确的是()。(选择一项) a)static void main(String[] args) b)public void main(String[] args) c)public static void main(String[]s) d)public static void main(String[] args) 2)给定java代码,如下: public byte count(byte b1,byte b2){ return______; } 要使用这段代码能够编译成功,横线处可以填入()。(选择一项) a)(byte) (b1-b2) b)(byte) b1-b2 c) b1-b2 d) (byte) b1/b2 3)在Java中,在包下定义一个类,要让包下的所有类都可以访问这个类,这个类必须定义为()。(选择一项) a)protected b)private c)public d)friendly 4)在Java中,下列()语句不能通过编译。 (选择一项) a) String s= “join”+ “was”+ “here”; b) String s= “join”+3; “”+new Person() toString() c) int a= 3+5 d) float f=5+; double float 6)给定java代码如下,运行时,会产生()类型的异常。(选择一项) String s=null; (“abc”); a)ArithmeticException b)NullPointerException c)IOException d)EOFException 已到文件尾,再读取抛出 7) 在java中,()对象可以使用键/值的形式保存数据。(选择一项) a)ArrayList List 有序可重复 b) HashSet Set 无序不可重复同一对象是重复的 c) HashMap Map(key/value)重复定义:hashCode、equals(业务) d) LinkedList List 8)给定如下java代码,编译运行之后,将会输出()。 public class Test{ public static void main(String args[]){ int a=5; Sys((a%2==1) (a+1) /2:a/2) ;三目表达式 } } (选择一项) a)1 b)2

Java基础面试题

Java常见面试题集--面试题全面综合(一) Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时默认为friendly 2、ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector 默认增长为原来一培,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。 一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 3、char型变量中能不能存贮一个中文汉字?为什么? 答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的 4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 答:父类: package test; public class FatherClass { public FatherClass() { System.out.println(\"FatherClass Create\"); } } 子类:

java基础面试全集

Java面试题大全 2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的CSDN博客。在修订的过程中,参照了当时JDK最新版本(Java 7)给出了题目的答案和相关代码,去掉了EJB 2.x、JSF等无用内容或过时内容,补充了数据结构和算法、大型网站技术架构、设计模式、UML、spring MVC等内容并对很多知识点进行了深入的剖析,例如hashCode方法的设计、垃圾收集、并发编程、数据库事务等。当时我甚至希望把面试中经常出现的操作系统、数据库、软件测试等内容也补充进去,但是由于各种原因,最终只整理出了150道面试题。让我欣慰的是,这150道题还是帮助到了很多人,而且在我CSDN 博客上的总访问量超过了5万次,最终还被很多网站和个人以原创的方式转载了。最近一年内,用百度搜索”Java面试”我写的这些东西基本上都排在搜索结果的前5名,这让我觉得”亚历山大”,因为我写的这些东西一旦不准确就可能误导很多人。2014年的时候我又整理了30道题,希望把之前遗漏的面试题和知识点补充上去,但是仍然感觉挂一漏万,而且Java 8问世后很多新的东西又需要去总结和整理。为此,我不止一次的修改了之前的180题,修改到自己已经感觉有些疲惫或者厌烦了。2014年至今,自己带的学生又有很多走上了Java程序员、Java工程师的工作岗位,他们的面试经验也还没来得及跟大家分享,冥冥之中似乎有一股力量在刺激我要重新写一篇《Java面试题全集》,于是这篇文章就诞生了。请不要责备我把那些出现过的内容又写了一次,因为每次写东西就算是重复的内容,我也需要对编程语言和相关技术进行重新思考,不仅字斟句酌更是力求至臻完美,所以请相

java笔试题大集合及答案Java基础方面

Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√× friendly √√×× private √××× 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确

JAVA面试基础题

Java程序基础 开发和运行环境 1.JDK和JRE的区别是什么?它们各自有什么作用 2.如何利用JDK编译和运行应用程序 3.环境变量CLASSPATH的作用是什么 4.如何为Java程序动态的指定类搜索路径 5.Java与C++程序在编译和运行上有什么区别 6.什么是JVM及其工作原理 7.Java程序为什么无须delete语句进行内存回收生成、部署和配置 8.如何利用命名提示符把Java程序打包成jar文件 9.关于Java Web项目的生成、部署和配置问题 10.EJB项目的生成和部署问题 Java语法基础基础类型和语法 1.变量及其作用范围 2.Java的变量分哪两种大的数据类型 3.Java包含哪些基本数据类型及其包装类 4.如何理解Java中的装箱和拆箱 5.Java的引用和C++的指针有什么区别 6.请简述Java中的main()方法 7.Java中equal和==的区别是什么 8.Java提供了哪几种循环结构?它们各自的特点是什么 9.Java中的三元运算符是什么 10.Java中的注释有哪些 对象和类型 1.类和对象有什么区别 2.Java中如何使用继承来重用代码 3.简述Java中的多态 4.请介绍Java中静态成员的特点 5.简述Java派生类中的构造方法如何为父类传递参数 6.简述接口和抽象类的区别 7.简述一下内部类的实质是什么 包和访问控制 1.包应该如何被创建及使用 2.说明private、protected、public和default的区别 数据类型及类型转换 1.int和Integer有什么区别 2.int的取值范围 3.如何用八进制和十六进制来表示整型数据 4.long的取值范围

Java基础面试题

1.下面能够得到文件“file.txt”的父路径的是: A.String name= File.getParentName(“file.txt”); B.String name= (new File(“file.txt”)).getParent(); C.String name = (new File(“file.txt”)).getParentName(); D.String name= (new File(“file.txt”)).getParentFile(); 2.在Java中,要创建一个新目录,要使用的类的实例是: A.File B.FileOutputStrean C.PrintWriter D.Dir 3.题目代码的功能为:在d:创建一个文件“test.txt”,并向文件写入“HelloWorld”,然后删除文件。 public static void main(String[] args) { File file = new File("d:\\", "file.txt"); try { <填入代码> } catch (Exception e) { e.printStackTrace(); } } A. BufferedWriter bw = new BufferedWriter(new FileWriter(file)); bw.write("HelloWorld"); bw.close(); if (file.exists()) { file.delete(); } B. BufferedWriter bw = new BufferedWriter(new FileWriter(file)); bw.write("HelloWorld");

Java面试经典试题及答案

Java面试经典试题及答案 第一,谈谈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 (一般是JA V A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //https://www.wendangku.net/doc/6d288060.html,/articles/services/view.asp?id=704&page=1 注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static 内部类的一个对象访问一个外部类对象 第四,&和&&的区别。 &是位运算符。&&是布尔逻辑运算符。 第五,HashMap和Hashtable的区别。 都属于Map接口的类,实现了将惟一键映射到特定的值上。 HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。 Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。 第六,Collection 和 Collections的区别。 Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。Collection是个java.util下的接口,它是各种集合结构的父接口。

Java基础面试题及答案(在后面)

JAVA基础部分-选择题 (单选)1.在Java语言中,字符串“Java程序员”在内存中所占用的字节数是:()。 A.10 B.7 C.13 D.14 2. (单选)下列表达式中,可以得到精确结果的是()。 A.double d1 = 3.0 - 2.6; B.double d4 = 2.5 * 1.5; C.double d2 = 30/300; D.double d3 = 1/2 + 0.5; 3.(多选)所谓“水仙花”数是一个整数等于各位数字立方的和,例如:153 = 下列选项中,空白处可以填入的代码是:()。 A.int s = 0, n1 = n; while (n1 > 0) { int t = n1 % 10; s += t * t * t; n1 /= 10; } B.int s = 0, n1 = n; while (n1 > 0) { int t = n1 / 10; s+= t * t * t; n1 %= 10; } C.int s = 0; for(int n1 = n; n1>0; n1 /= 10) { int t = n1%10; s += t * t * t; } D.int s = 0; for(int n1 = n; n1>0; n1 %= 10) { int t = n1 / 10; s += t * t * t; } 4.下列语句序列执行后,k 的值是 ( )

A.60 B.5 C.0 D.54 5.设 a = 8,则表达式 a >>> 2 的值是:(无符号右移动)( ) A.1 B.2 C.3 D.4 6.下列程序 在程序中插入下列哪一行代码可以编译通过: A static void doSomething(int[] args){} B static void doSomething(int... args){} C static coid doSomething(int...args,int x){}

【优质】Java基础笔试题大全word版本 (16页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == Java基础笔试题大全 还在找JAVA 笔试题吗,下面小编为大家精心搜集了关于Java基础笔试题的大全,欢迎大家参考借鉴,希望可以帮助到大家! 1. 以下属于面向对象的特征的是(C,D)。(两项) A) 重载 B) 重写 C) 封装 D) 继承 2. 以下代码运行输出是(C) public class Person{ private String name=”Person”; int age=0; } public class Child extends Person{ public String grade; public static void main(String[] args){ Person p = new Child(); System.out.println(https://www.wendangku.net/doc/6d288060.html,); } }

A) 输出:Person B) 没有输出 C) 编译出错 D) 运行出错 3. 在使用super 和this关键字时,以下描述正确的是(A) A) 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过 B) super()和this()不一定要放在构造方法内第一行 C) this()和super()可以同时出现在一个构造函数中 D) this()和super()可以在static环境中使用,包括static方法和static语句块 4. 以下对封装的描述正确的是(D) A) 只能对一个类中的方法进行封装,不能对属性进行封装 B) 如果子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用 C) 封装的意义不大,因此在编码时尽量不要使用 D) 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性 5. 以下对继承的描述错误的是(A) A) Java中的继承允许一个子类继承多个父类 B) 父类更具有通用性,子类更具体 C) Java中的继承存在着传递性 D) 当实例化子类时会递归调用父类中的构造方法 6. 以下程序的运行结果是(D) class Person{ public Person(){

JAVA基础面试题(经典)

基础知识部分: 1. JDK是什么?JRE是什么? a) 答:JDK:java开发工具包。JRE:java运行时环境。 2. 什么是java的平台无关性? a) 答:Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。也就是一处编写,处处运行。这就是java的跨平台性。 3. 在一台电脑上配置java环境,path起什么作用?如何配置? a) 答:path的作用是在DOS环境下,能在任意位置使用JD K目录中bin文件夹中的可执行程序,来编译执行java程序。 b) 在环境变量中找到path变量,把bin文件夹的绝对路径加上即可。

4. 什么样的标识符是合法的? a) 由字母、数字、_和$组成,长度不限。其中字母可以是大写或小写的英文字母,数字为0到9。 b) 标识符的第一个字符不能是数字。 c) 标识符区分大小写。 d) 标识符不能包含空格。 5. Java有几种基本数据类型? a) byte,short,int,long,float,double,char,bool ean 6. 什么是隐式类型转换?什么是显示类型转换? a) 当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换。

b) 当把在级别高的变量的值赋给级别底变量时,必须使用显示类型转换运算。 7. &&和&区别,||和|区别? a) &&和||是短路与,短路或,当左边的表达式能判断当前结果,则不判断右边的表达式。 b) 而& 和|则将两边的表达式都运算完毕后,再算结果。 8. break,continue区别? a) break结束所有循环,continue结束当次循环,进入下次循环。 9. 类的命名规则是什么? a) 如果类名使用拉丁字母,那么名字的首写字母使用大写字母。

Java面试测试题(基础部分)

目录 1面向对象知识 (3) 2面向对象的特征有哪些方面 (3) 3String是最基本的数据类型吗? (3) 4运行时异常与一般异常有何异同? (4) 5final, finally, finalize的区别? (4) 6heap和stack有什么区别? (4) 7java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? (4) 8启动一个线程是用run()还是start()? (4) 9线程的基本概念、线程的基本状态以及状态之间的关系 (4) 10super()与this()的区别? (4) 11作用域public,protected,private,以及不写时的区别? (5) 12什么是java序列化,如何实现java序列化?(写一个实例) (5) 13java中实现多态的机制是什么? (5) 14垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? (5) 15abstract class 和interface的区别 (6) 16当方法题内没写try/catch/语句时,throws异常声明是否必须 (6) 17静态变量和实例变量的区别? (6) 18是否可以从一个static方法内部发出对非static方法的调用? (7) 19说说你说知道的设计模式 (7) 20你对Collection了解多少,有哪些实现类 (7) 21线程有几种状态,sleep和wait有何不同 (7) 22JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? (7) 23Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用。 (8) 24谈谈final, finally, finalize的区别。 (8) 25Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? (8) 26Static Nested Class 和Inner Class的不同,说得越多越好 (8) 27&和&&的区别 (8) 28HashMap和Hashtable的区别 (9) 29Collection 和Collections的区别 (9) 30什么时候用assert (9) 31GC是什么? 为什么要有GC? (9) 32String s = new String("xyz");创建了几个String Object? (9) 33Math.round(11.5)等於多少? Math.round(-11.5)等於多少? (9) 34short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? (10) 35sleep() 和wait() 有什么区别? (10) 36Java有没有goto? (10)

java入门基础笔试题

笔试题 一、选择题 1)对以下代码,下面说法正确的是() int k=10; while(k==0){ k=k-1; } A.循环将执行10次 B.死循环,将一直执行下去 C. 循环将执行1次 D.循环一次也不执行 2)下面变量名正确的是() A.num1 B.2num C.%num D.num# 3) else if块的选择结构应用于() A.switch选择结构 B.基本if选择结构 C.多重if选择结构 D.while循环 4)下面属于逻辑运算符的是() A.+ - * % B. ++ -- C.>= != <= D.&& || 5)在java中,以下代码的输出结果是()(选择一项)。 int num1=7; int num2=5; System.out.println(num1/num2); 选择一项 A:1.4 B:4 C:1 D:2 6)分析以下java代码程序,运行以下表达式后,变量a的值是()。 int a=5+4*3%2/1; A:1 B:2 C:3 D:4 E:5 7)在java中,如下代码的输出结果是()。 public static void main(String args[]){ double avg=0; int score1=61; int score2=78; avg=(score1+score2)/2; System.out.println(“平均分是:”+avg); A.平均分是69.0 B.平均分是69 C.平均分是69.0000 D.编译错误 8)在java中,以下()能够实现向控制台输出换行符。(选择二项) A.System.out.println(); B.System.out.print(“\n”); C.System.out.print(“\t”); D.System.out.print(“”); 9)Java代码如下所示,编译运行结果是()。 public static void main(string[] args){

Java基础面试题.doc

—、JDK与JRE有什么区别?答:?JDK: Java开发工具包,包括Java开发工具和JRE。 ②JRE : Java运行环境,包括运行Java程序所需的核心类库和JVM。 ③JVM : Java虚拟机,保证Java程序的跨平台性。 总结:由JDK开发的Java程序,交给JRE来运行,并由JVM来保证Java程序的 跨平台性。 二、byte b = (byte) 130;的运行结果是? ①130 的原码:00000000 0000000000000000 10000010 ②130 的反码:00000000 0000000000000000 10000010 ③130 的补码:00000000 0000000000000000 10000010 ④一个字节截取的补码为10000010 ⑤补码10000010的反码为10000001 ⑥反码10000001的原码为11111110 ,计算结果为-126 三、判断下面代码第三行和第四行编译会出现问题吗? byte bl=3; byte b2=4; byte b3=bl+b2 ; byte b4=3+4; ①第三行会出现问题。如果是变量相加,首先会自动提升数据类型,然后再运算。 ②第四行编译运行通过。如果是常量相加,会直接计算,然后看运算的结果是否在其数据类型所能描述的范围内 、判断下列代码的第二行和第三行编译是否能通过?并说明理由 short s=5; s=s+2;//报错,变量s参与运算,会自动提升数据类型至int

s+=2;//编译通过。s+=2隐含了强制类型转换,相当于s=(short)(s+2); 五、请用高效的形式写出:2*8 2<<3 六、如何交换两个变量? ①用第三方变量来做(开发做) int temp = a; a = b; b = temp; ②用按位异或来做(面试做) 按位异或的特性:一个数据对另一个数据异或两次,又变回原本的值。 a=a A b; b=a A b; a=a A b; ③用算术运算符 a=a + b; b=a-b; a=a-b; 七、写出下面程序的运行结果 class Fu

相关文档