搜档网
当前位置:搜档网 › java面试题-下篇word

java面试题-下篇word

java面试题-下篇word
java面试题-下篇word

1、面向对象的特征有哪些方面?

答:面向对象的特征主要有以下几个方面:

- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。

(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。

3、String 是最基本的数据类型吗?

答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type),Java 5以后引入的枚举类型也算是一种比较特殊的引用类型。

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语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)

7、int和Integer有什么区别?

答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

Java 为每个原始类型提供了包装类型:

- 原始类型: boolean,char,byte,short,int,long,float,double

- 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

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比较} }

●1

●2

●3

●4

●6

●7

●8

●9

●10

●1

●2

●3

●4

●5

●6

●7

●8

●9

●10

最近还遇到一个面试题,也是和自动装箱和拆箱有点关系的,代码如下所示:

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); } }

●1

●2

●3

●4

●5

●6

●7

●8

●9

●1

●2

●3

●4

●5

●6

●7

●8

●9

如果不明就里很容易认为两个输出要么都是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); }

●2

●3

●4

●5

●1

●2

●3

●4

●5 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=} option. * During VM initialization, https://www.sodocs.net/doc/873172260.html,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 property int h = 127; String integerCacheHighPropValue =

sun.misc.VM.getSavedProperty("https://www.sodocs.net/doc/873172260.html,ng.Integer.IntegerCache.high"); if (integerCacheHighPropValue != null) { try { int i =

parseInt(integerCacheHighPropValue); i = Math.max(i, 127); // Maximum array size is Integer.MAX_VALUE h = 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() {} }

●1

●2

●3

●4

●5

●6

●7

●8

●9

●10

●11

●12

●13

●14

●15

●16

●18●19●20●21●22●23●24●25●26●27●28●29●30●31●32●33●34●35●36●37●38●39●40●41●42●43●44●1●2●3●4●5●6●7●8●9●10●11●12●13●14●15●16

●18

●19

●20

●21

●22

●23

●24

●25

●26

●27

●28

●29

●30

●31

●32

●33

●34

●35

●36

●37

●38

●39

●40

●41

●42

●43

●44简单的说,如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4

的结果是false。

提醒:越是貌似简单的面试题其中的玄机就越多,需要面试者有相当深厚的功力。8、&和&&的区别?

答:&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null

&&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

补充:如果你熟悉JavaScript,那你可能更能感受到短路运算的强大,想成为

JavaScript的高手就先从玩转短路运算开始吧。

9、解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。

答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间;而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收集算法,所以堆空间还可以细分为新生代和老生代,再具体一点可以分为Eden、Survivor(又可分为From Survivor和To Survivor)、Tenured;方法区和堆都是各个线程共享的内存区域,用于存储已经被JVM加载的类信息、常量、静态变量、JIT编译器编译后的代码等数据;程序中的字面量(literal)如直接书写的100、"hello"和常量都是放在常量池中,常量池是方法区的一部分,。栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,栈和堆的大小都可以通过JVM的启动参数来进行调整,栈空间用光了会引发StackOverflowError,而堆和常量池空间不足则会引发OutOfMemoryError。

String str = new String("hello");

●1

●1上面的语句中变量str放在栈上,用new创建出来的字符串对象放在堆上,而"hello"这个字面量是放在方法区的。

补充1:较新版本的Java(从Java 6的某个更新开始)中,由于JIT编译器的发展和"

逃逸分析"技术的逐渐成熟,栈上分配、标量替换等优化技术使得对象一定分配在堆上这件事情已经变得不那么绝对了。

补充2:运行时常量池相当于Class文件常量池具有动态性,Java语言并不要求常量一定只有编译期间才能产生,运行期间也可以将新的常量放入池中,String类的intern()方法就是这样的。

看看下面代码的执行结果是什么并且比较一下Java 7以前和以后的运行结果是否一致。String s1 = new StringBuilder("go") .append("od").toString();System.out.println(s1.intern() == s1);String s2 = new StringBuilder("ja") .append("va").toString();System.out.println(s2.intern() == s2);

●1

●2

●3

●4

●5

●6

●1

●2

●3

●4

●5

●6 10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是

在参数上加0.5然后进行下取整。

11、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,

Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

12、用最有效率的方法计算2乘以8?

答: 2 << 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)。

补充:我们为编写的类重写hashCode方法时,可能会看到如下所示的代码,其实我们

不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数

是个素数,为什么通常选择31这个数?前两个问题的答案你可以自己百度一下,选择

31是因为可以用移位和减法运算来代替乘法,从而得到更好的性能。说到这里你可能

已经想到了:31 * num 等价于(num << 5) - num,左移5位相当于乘以2的5次方再减

去自身就相当于乘以31,现在的VM都能自动完成这个优化。

public class PhoneNumber { private int areaCode; private String prefix; private String lineNumber; @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + areaCode; result = prime * result + ((lineNumber == null) ?

0 : lineNumber.hashCode()); result = prime * result + ((prefix == null) ? 0 :

prefix.hashCode()); return result; } @Override public boolean equals(Object obj)

{ if (this == obj) return true; if (obj == null) return false; if

(getClass() != obj.getClass()) return false; PhoneNumber other = (PhoneNumber) obj; if (areaCode != other.areaCode) return false; if (lineNumber == null) { if (other.lineNumber != null) return false; } else if

(!lineNumber.equals(other.lineNumber)) return false; if (prefix == null) { if (other.prefix != null) return false; } else if (!prefix.equals(other.prefix))

return false; return true; } }

●1

●2

●3

●4

●5

●6

●7

●8

●9

●10

●11

●12

●13

●14

●15

●16

Java笔试题及答案

Java笔试题及答案 一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 详解:见下面代码,很明显方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。 package net.study; public class TestConStructor { public TestConStructor() {

} public void TestConStructor() { } public static void main(String[] args) { TestConStructor testConStructor = new TestConStructor(); testConStructor.TestConStructor(); } } 4.提供Java存取数据库能力的包是() 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 详解: java 中没有<> := 这种运算符,if else不算运算符 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是()

Java面试题带答案

J a v a面试题带答案 Document number:BGCG-0857-BTDO-0089-2022

湖南世杰Java工程师面试题 选择题: 单选题 1,以下java程序代码,执行后的结果是( ) map= ("name",null); ("name","Jack"); 0 B: null C: 1 D: 2 答案:C 2,执行以下程序后的输出结果是( ) Public class Test { Public static void main(String[] args) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); operator(a, b);

+","+ b); } Public static void operator(StringBuffer x, StringBuffer y) { (y); y = x; } } A: A,A B: A,B C: B,B D: AB,B 答案:D 3,关于依赖注入,下列选项中说法错误的是( ) A:依赖注入能够独立开发各组件,然后根据组件间关系进行组装 B:依赖注入使组件之间相互依赖,相互制约 C:依赖注入提供使用接口编程 D:依赖注入指对象在使用时动态注入 答案:B

4,关于spring说法错误的是( ) A: spring是一个轻量级JAVA EE的框架集合 B: spring是“依赖注入”模式的实现 C: 使用spring可以实现声明事务 D: spring提供了AOP方式的日志系统 答案:D 5,要在session对象中保存属性,可以使用以下哪个语句( ) A: (“key”,”value”) B: (“key”,”value”) C: (“key”) D: (“key”) 答案:B 6,关于以下程序代码的说明正确的是( ) Public class HasStatic{ Private static int x = 100; Public static void main(String args[]){

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 (一般是JA V A的说法)。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用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的 7、String s = new String("xyz");创建了几个String Object 答:两个,一个字符对象,一个字符对象引用对象 8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少 答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor 9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错 答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译) 10、Java有没有goto 答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法 答:数组没有length()这个方法,有length的属性。String有有length()这个方法 12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

Java工程师面试题(含答案)

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗 基本数据类型包括byte、int、char、long、float、double、boolean和short。 类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和Integer 有什么区别 Java提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int 提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String 类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求

Java面试题大全(答案版)

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致 2、&和&&的区别。 &和&&都可以用作逻辑与; &&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式; &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。 3、Java有没有goto? java中的保留字,现在没有在java中使用。 4、在JAVA中,如何跳出当前的多重嵌套循环? break+变量控制与return 5、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方法都可以用来比较两个对象是否是同一个对象。 ==还可以比较两个变量的值是否相等。 equals是Object类中的方法,可以由子类重写此方法,实现内容相等。 12、静态变量和实例变量的区别? 语法上不同: 静态变量前要加static关键字,实例变量不需要 程序运行时不同: 实例变量是属于某个对象的,只有创建了对象,才会为这个对象的实例变量分配空间。静态变量是属于类的,当程序加载了这个类的字节码文件,就会为静态变量分配空间,并且所有对象共享这个变量 13、是否可以从一个static方法内部发出对非static方法的调用? 不可以,非static方法需要与对象关联在一起的,而static方法调用时不需要对象,可以直接调用,也就是说调用static方法时,可能还没有创建任何实例 14、Integer与int的区别 int是java中的8种基本数据类型之一,默认值是0,Integer是int的包装类,默认值是null,即Integer可以表示未赋值和赋值为0 15、(麦死)Math.round(乱的)(11.5)等於多少? Math.round(-11.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经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.sodocs.net/doc/873172260.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

java面试题-经典选择题部分

1 、给出如下代码: class Test{ private int m; public static void fun() { // some code... } } 如何使成员变量m 被函数fun() 直接访问? C A 、将private int m 改为protected int m B 、将private int m 改为public int m C 、将private int m 改为static int m D 、将private int m 改为int m 2 、下面哪个函数是public void example(){...} 的重载函数?D A 、private void example( int m){...} B 、public int example(){...} C 、public void example2(){...} D 、public int example ( int m, float f){...} 3 、给出下面的代码段: public class Base{ int w, x, y ,z; public Base(int a,int b) { x=a; y=b; } public Base(int a, int b, int c, int d) { // assignment x=a, y=b w=d; z=c; } } 在代码说明// assignment x=a, y=b 处写入如下哪个代码是正确的?D A 、Base(a,b); B 、x=a, y=b; C 、this(a),this(b); D 、this(a,b); 4 、已知如下定义:String s = "story"; 下面哪个表达式是合法的?A A 、s += "books"; B 、char c = s[1]; C 、int len = s.length;

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用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的

Java开发工程师笔试题(带答案)

Java开发工程师笔试试题 (请不要在试题上留任痕迹,所有答案均写在答题纸上) 一.编程题(共26分) 1.任意写出一种排序算法。(6分) public void sort(int [] array){ //代码区 } 2.求1+2+3+..n(不能使用乘除法、for 、while 、if 、else 、switch 、case 等关键字 以及条件判断语句)(8分) public int sum(int n){ //代码区 return 0; } 3.完成下面法,输入一个整数,输出如下指定样式图案。(12分) 输入:3, 输出: 1*2*3 7*8*9 4*5*6

输入:4 输出: 1*2*3*4 9*10*11*12 13*14*15*16 5*6*7*8 public void drawNumPic(int n){ //代码区 } 二.选择题(定项选择每题3分,不定项选择每题4分,共63分) 1.在基本JAVA类型中,如果不明确指定,整数型的默认是__类型,带小数的默认是__类型?( B ) A.int float B.int double C.long float D.long double 2.只有实现了__接口的类,其对象才能序列化( A ) A.Serializable B.Cloneable https://www.sodocs.net/doc/873172260.html,parable

D.Writeable 3.代码System. out. println(10 % 3 * 2);将打印出?( B ) A. 1 B.2 C.4 D.6 4.以下程序运行的结果为( A ) public class Example extends Thread{ @Override public void run(){ try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } System.out.print("run"); } public static void main(String[] args){ Example example=new Example(); example.run(); System.out.print("main"); } } A.run main B.main run C.main D.run E.不能确定 5.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?( B ) A.实例变量指的是类中定义的变量,即类成员变量,如果没有初始化,会有默认值

百一测评——Java经典面试题 带答案

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/873172260.html, 试卷名称:Java经典面试题带答案 试卷描述:java笔试题目、招聘笔试、微信考试、在线考试 试卷链接:https://www.sodocs.net/doc/873172260.html,/store/open/paperInfo/41651 试卷限时:50分 一.单项选择题 每题分值:2.5分 是否题目乱序:是 是否选项乱序:是 是否可回溯:是 难度:中 1.[单选]Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.[单选]下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/873172260.html, 答案:B 3.[单选]下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名 C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.[单选]提供Java存取数据库能力的包是() A.java.sql B.java.awt C.https://www.sodocs.net/doc/873172260.html,ng D.java.swing 答案:A 5.[单选]下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.[单选]执行如下程序代码 a=0;c=0;

职业技能题库&在线云笔试平台https://www.sodocs.net/doc/873172260.html, do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环 答案:C 7.[单选]下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.[单选]下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象

javaWeb面试题(含答案)

1、jsp和servlet的区别、共同点、各自应用的围?? JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层. 2、cookie和session的作用、区别、应用围,session的工作原理??? Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。 Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的存资源。 3、jstl是什么?优点有哪些?? JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。优点有: 1、在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。 2、简化了JSP和WEB应用程序的开发。 3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet 代码的程序。在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。 4、允许JSP设计工具与WEB应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE 开发工具出现。 4、j2ee的优越性主要表现在哪些方面?MVC模式 a、 J2EE基于JAVA 技术,与平台无关 b、 J2EE拥有开放标准,许多大型公司实现了对该规支持的应用服务器。如BEA ,IBM,ORACLE

最新最新java笔试题及答案

一.选择题(1-10题每题2分,11-15题每题4分) 1.下面关于Java语言说法错误的是:() A.java语言是完全面向对象的 B。java语言支持多继承 C.java语言支持多线程 D。java语言最早是为消费电子产品领域设计的 2.下面标识符中正确的是:() A.*123 B。12java C.continue D。java$next 3.下列关于注释语句的描述中,正确的一项是() A。以//开始的是多行注释语句 B。以/*开始,*/结束的是单行注释语句 C。以/**开始,*/结束的是可以用于生成帮助文档的注释语句 D。以/**开始,*/结束的是单行注释语句 4.为了区分重载多态中同名的不同方法,要求()。 A)形式参数个数或者类型不同 B)返回值类型不同 C)调用时用类名或对象名做前缀 D)形式参数名称不同 5.下面定义数组的格式中正确的是:() A.int a[10] B。int a=new int[10] C.int []a=new int[5] D.int a[] 6.下面说法中不正确的是:() A.类是对象的抽象,对象是类的实例 B。类是组成java程序的最小的单位 C.java语言支持多继承 D。java一个程序中只能有一个public类 7.定义类时,不可能用到的保留字是()。 A) private B) class C) extends D) implements 8.为 AB 类的定义一个公共的构造函数,该方法头的形式为()

A.void AB( ) B。public void method( ) C.public method ( ) D。public AB( ) 9.下面说法中不正确的是:() A.java中一个类只允许实现一个接口 B。抽象类中允许有非抽象方法的存在 C.类变量(实例变量)可以直接用类名调用 D。通过super可以调用基类的构造函数 10.容器JFrame 默认使用的布局编辑策略是() A.BorderLayout B。FlowLayout C。GridLayout D。CardLayout 11.以下哪个表达式是不合法的() A.String x=”Hello”; int y=9; x+=y; B.String x=”Hello”; int y=9; if(x= =y) { } C.String x=”Hello”; int y=9; x=x+y; D.String x=null; int y=(x!=null)&&(x.length()>0) 12.class person { public int addvalue(int a,int b) { int s; s=a+b; return s; } }

Java面试题(带答案)

湖南世杰Java工程师面试题选择题: 单选题 1,以下java程序代码,执行后的结果是( ) java.util.HashMap map=newjava.util.HashMap(); map.put("name",null); map.put("name","Jack"); System.out.println(map.size()); A: 0 B: null C: 1 D: 2 答案:C 2,执行以下程序后的输出结果是( ) Public class Test { Public static void main(String[] args) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); operator(a, b); System.out.println(a +","+ b); } Public static void operator(StringBuffer x, StringBuffer y) { x.append(y); y = x; }

} A: A,A B: A,B C: B,B D: AB,B 答案:D 3,关于依赖注入,下列选项中说法错误的是( ) A:依赖注入能够独立开发各组件,然后根据组件间关系进行组装 B:依赖注入使组件之间相互依赖,相互制约 C:依赖注入提供使用接口编程 D:依赖注入指对象在使用时动态注入 答案:B 4,关于spring说法错误的是( ) A: spring是一个轻量级JAVA EE的框架集合 B: spring是“依赖注入”模式的实现 C: 使用spring可以实现声明事务 D: spring提供了AOP方式的日志系统 答案:D 5,要在session对象中保存属性,可以使用以下哪个语句( ) A: session.getAttribute(“key”,”value”) B: session.setAttribute(“key”,”value”) C: session.setAttribute(“key”) D: session.getAttribute(“key”) 答案:B 6,关于以下程序代码的说明正确的是?( ) Public class HasStatic{ Private static int x = 100;

2017年最新Java经典笔试面试题笔试题目及答案

2017年最新Java经典笔试面试题 2017年最新Java经典笔试面试题 想要成为java程序员可不是容易的事情,下面YJBYS小编为大家精心搜集了关于Java 经典笔试的面试题,欢迎大家参考借鉴,希望可以帮助到大家! 一.选择题(共50题,每题1.5分,共75分。多选题选不全或选错都不得分。) 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.sodocs.net/doc/873172260.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(){ System.out.println(“this is a Person”);

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.sodocs.net/doc/873172260.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企业面试题填空题及答案

————————————————————————————————作者:————————————————————————————————日期:

Java填空题 1 一个Java源程序是由若干个类组成。 2 class 是Java的关键字,用来定义类。 3 Java应用程序中有多个类时,java命令后的类名必须是包含了main 方法的那个类的名字。 4 一个Java应用程序必须且只有一个类含有main 方法。 5 在一个Java应用程序中main方法必须被说明为public static void 。 6 Java中所有程序都使用方法,应用程序以main 方法开始。 7 Java源文件中有多个类,但只能有一个类是public 类。 8 Java源程序编译后生成的字节码文件扩展名为class 。 9 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。 10 Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字。 11 关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把这类词作为名字来用。 12 使用关键字boolean 来定义逻辑变量。 13 关键字就是Java语言中已经被赋予特定意义的一些单词。 14 结构化程序设计的基本数据类型包括逻辑类型、整数类型、字符类型、浮点类型。 15 Java中byte型数组在内存中的存储形式是补码。 16 对于int型变量,内存分配 4 个字节。 17 对于byte型变量,内存分配 1 个字节。 18 对于long型变量,内存分配8 个字节。 19 对于short型变量,内存分配 2 个字节。 20 结构化程序设计的基本数据类型包括整数类型、逻辑类型、字符类型、浮点类型。 21 使用关键字char 来定义字符变量。 22 结构化程序设计的基本数据类型包括字符类型、逻辑类型、整数类型、浮点类型。 23 java中,浮点型变量的类型有float和double 两种。 24 对于float型变量,内存分配 4 个字节。 25 对于double型变量,内存分配8 个字节。 26 结构化程序设计的基本数据类型包括浮点类型、逻辑类型、整数类型、字符类型。 27 Java使用Unicode 字符集。 28 混合运算中不同类型的数据先转化为同一类型,然后运算,其中不包括逻辑类型和字符类型。 29 混合运算中不同类型的数据先转化为同一类型,然后运算,其中不包括字符类型、逻辑类型。 30 当把级别高的变量的值赋予级别低的变量时,必须使用强制类型转换。 31 Java中关系运算符的运算结果是boolean 型。 32 Java中逻辑运算符的操作元必须是boolean 型数据。 33 整数类型数据在内存中以二进制的方式表示。 34 Java语言的控制语句有3种类型,即条件语句、循环语句、和转移语句。 35 Java中有两种类型的控制语句即if和switch 。 36 Java语言的控制语句有3种类型,即条件语句、循环语句、和转移语句。

相关主题