搜档网
当前位置:搜档网 › 2016最新java面试题_详细版

2016最新java面试题_详细版

2016最新java面试题_详细版
2016最新java面试题_详细版

详解笔试面试题集

(1)下列各题ABCD四个选顼中,只有一个选项是正确的,请将正确选项填写在答题纸上

(1)下列关于栈的描述中错误的是( B)

A. 栈是先进后出的线性表

B 栈只能顺序存储

C 栈具有记忆作用

D 对栈的插入弓删除操作中,不需要改变栈底指针

正确答案:B

分析:栈是链式存储的

(2)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )

A 冒泡排序为n/2

B 冒泡排序为n

C 快速排序为n

D 快速排序为n(n-l)/2

正确答案:D

分析:

想想快速排序,每次都会选取线性表的轴值,随后以此轴值划分为两个子线性表再分别进行快排,在最坏情况下,也就是说每次选出的线性表轴值完全不能将这个线性表划分为两个子线性表。那么此时快速排序退化为冒泡排序了。

那么第一趟排序时,轴值(线性表的中间位置)被选出,这个值绝对是这个线性表中最大的(不然也不能是最坏情况),其他值都比他小,那么线性表现在分为完全不对等的两段(一段是0,另一段是n - 1),一段是这个值,一段是其他值。同样第二趟排序在刚才剩下的值中选中间值(剩余值中最大的那个),又分为不对等两段,依次递推。也就是说每次都比较了N - 1个元素(轴值选出后都与它比较大小),那么肯定是比较了n - 1次(如第一次先挑了个轴值,然后剩下n - 1比较),n代表当前子线性表中元素个数由此最白痴的数列问题出现了,如下

1 +

2 +

3 + .......... + n - 2 + n - 1 = n(n - 1) / 2

还有一种投机取巧的方法,在最垃圾情况下既然快排变为冒泡,那由时间复杂度知其必为o(n ^ 2)的复杂度,答案中ABC都是线性时间复杂,显然错误

(3)下列对于线性链表的描述中正确的是( )

A 存储空间间不一定是连续,且各元素的存储顺序是任意的

B 存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C 存储定间必须连续,且前件元素一定存储在后件元素的前面

D 存储空间必须连续,且各元素的存储顺序是任意的

答案是A, 分析链接存储并不要求存储空间连续,存储位置也不用有序

(4)为了使模块爆可能独立,要求( )

A 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

答案:B

分析:高内聚,低耦合。

5)下列叙述中,正确的是( )

A Java语言的标识符是区分大小写的

B 源文件名与public类名可以不相同

C 源文件扩展名为.jar

D 源文件中public类的数目不限

答案:A

6)下列属于合法的Java标识符是( )

A _cat

B 5books

C +static

D -3.14159

答案:A

7) 在Java中,表示换行符的转义字符是( )

A \n

B \f

C ‘n’

D \dd

答案:A

( 8)扯Java中,所有类的根类是( )

A. https://www.sodocs.net/doc/0f9738179.html,ng.Object

B.https://www.sodocs.net/doc/0f9738179.html,ng.Class

C.java.applet.Applet

D.java.awt.Frame

答案:A

(9).在Java+中,用Package语句说明一个包时,该包的层次结构必须是( )

A 与文件的结构相同

B 与文件目录的层次相同

C 与文件类型相同

D 与文件大小相同

答案:A

(10)在读字符文件Employee.dat时,使用该文件作为参数的类是( )。

A BufferReader

B DatalnputStream

C DataOutoutStream

D FileInputStream

答案:D

(11)在Java中,能实现多重继承效果的方式是( )。

A 内部类

B 适配器

C 接口

D 同步

答案:C

(12) char类型的取值范围是( )。

A 2-7~27-1

B 0~216-1

C -215~215—1

D 0~28-1

答案:A

(13)下列方法中可以用来创建一个新线程的是( )。

A 实现https://www.sodocs.net/doc/0f9738179.html,ng.Runnable接口并重写start0方法

B 实现java.iang.Runnable接口并重写run0方法

C 继承https://www.sodocs.net/doc/0f9738179.html,ng.Thread类并重写run0方法

D 继承https://www.sodocs.net/doc/0f9738179.html,ng.Thread类并重写start0方法

答案:C

(14)下列关于线程优先级的说法中,正确的是( )。

A.线程的优先级是不能改变的

B.线程的优先级是在创建线程时设置的

C.在创建线程后的任何时候都可以设置

D. B和C

答案:C

(15)下列代码中,将引起一个编译错误的行是( )。

1) public class Test{

2) int m, n;

3) public Test(){}

4) public Test(int a){ m=a;)

5) public static void main(String args0){

6) Test t1, t2;

7) int j, k;

8) j=0; k=0;

9) t1 = new Test();

10) t2 = new Test(j,k);

11) }

12)}

A.第3行

B.第5行

C.第6行

D.第10行

答案:D

(16)阅读下列代码后

public class Person{

int arr[]=new int[10];

public static void main(String args[ ]){

System.out.println(arr[l]);

}

)

正确的说法是( )。

A 编译时将产生错误

B 编译时正确,运行时将产生错误

C 输出零

D 输出空

答案:A

(17) AIDL支持以下哪种数据类型?l)string 2)list 3)map 4)All native java datatype( ){,A.1,2和3

B.4

C.以上所有

D.都不支持

答案:C

分析:

AIDL 服务只支持有限的数据类型,如果用AIDL服务传递一些复杂的数据就需要做更一步处理,AIDL 服务支持的数据类型如下:

1. Java 的原生类型

2. String 和CharSequence

3. List 和Map ,List和Map 对象的元素必须是AIDL支持的数据类型;

以上三种类型都不需要导入(import)

4. AIDL 自动生成的接口

需要导入(import)

5. 实现android.os.Parcelable 接口的类. 需要导入(import)。

二、多项选择题

下列各题A.、B.、C.、D.四个选项中,有一个或多个选项是正确的,

(l)下列说法正确的有( )。

A. 环境变量可在编译source code时指定.

B.在编译程序时,所能指定的环境变盛不包括class path

C.javac -次可同时编译数个Java源文件

D. javac.exe能指定编译结果要置于哪个目录(directory)

答案:BCD

(2)不能用来修饰interface的有( )

A. private

B.public

C.protected

D.static

答案:ACD

(3)下列说法错误的有( )

A.在类方法中可用this来调用本类的类方法

B。在类方法中调用本类的类方法时可直接调用

C.在类方法中只能调用本类中的类方法

D.在类方法中绝对不能调用实例方法

答案:ACD

请将正确选项填写在答题纸上

(4)下列说法错误的有( )

A. Java面向对象语言容许单独的过程与函数存在

B.Java面向对象语言容许单独的方法存在

C.Java语亩中的方法属于类中的成员(member)

D. Java语言中的方法必定隶属于某…类(对象),调用方法与过程或函数相同答案:ABC

(5)下列说法错误的有( )。

A.能被java.exe成功运行的java class文件必须有main()方法

B.J2SDK就是Java API

C. Appletviewer.exe可利用jar选项运行Jar文件

D.能被Appletviewer成功运行的java class文件必须有main()方法

答案:BCD

三、判断题

请将每空的正确答案写在答题纸上,答在试卷上不得分。

(1)Java程序中的起始类名称必须与存放该类的文件名相同。(对)

(2)Unicode是用16位来表示一个字的。(对)

(3)原生类中的数据类型均可任意转换。(对)

三、填空题

请将每空的正确答案写在答题纸上【l】至【25】序号的横线上,答在试卷上不得分。(l)某二叉树中度为2的结点有18个,则该二叉树中有【1】19 个叶子结点。

二叉树的终端结点(叶子结点)数等于双分支结点数加1。

(2)在面向对象方法中,类的实例称为【2】对象

(3)诊断和改正程序中错误的工作通常称为【3】Debug

(4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】关系

(5)Java 源文件中最多只能有一个【5】public类,其他类的个数不限。

(6)线程在生命周期中要经历5中状态,分别是新建状态(准备)、可运行状态(就绪)、运行状态(运行)。【6】暂停(阻塞)状态和终止状态(死亡)。

(7)FileInputStream 是字节流;BufferedWriter是字符流,ObjectOutputStream是【7】

对象序列化流

(8)当使用Thread t = new Thread(r)创建一个线程时,表达式r instance of Thread 的值为【8】false 。r instanceOf Runnable

1.抽象类和接口的区别?

抽象类:

1)抽象方法,只有行为的概念,没有具体的行为实现。使用abstract

关键字修饰,没有方法体。子类必须重写这些抽象方法。

2)包含抽象方法的类,一定是抽象类。

3)抽象类只能被继承,一个类只能继承一个抽象类。

接口:

1)全部的方法都是抽象方法,属型都是常量

2)不能实例化,可以定义变量。

3)接口变量可以引用具体实现类的实例

4)接口只能被实现,一个具体类实现接口,必须实现全部的抽象方法

5)接口之间可以多实现

6)一个具体类可以实现多个接口,实现多继承现象

2.列举你所知道的线程同步的方法:

1)wait():让线程等待。将线程存储到一个线程池中。

2)notify():唤醒被等待的线程。通常都唤醒线程池中的第一个。让被

唤醒的线程处于临时阻塞状态。

3)notifyAll(): 唤醒所有的等待线程。将线程池中的所有线程都唤醒。

3.equals()方法和“==”操作符的区别是什么?重写equals()方法的时候,我们还需要重写哪些方法?为什么?

“==”比较的是一个对象在内存中的地址值,栈中的内容是否相同

equals()是针对引用的,比较的是引用类型的内容一样不一样,堆中的内容是否相同

重写equals()方法的时候,需重写hashcode方法,这样比较的时候,比较的是两个对象的hash值,不同对象的hash值不同。

7.写一个函数计算但参数为n(n很大)时的值1-2+3-4+5-6+7……+n。(提示:考虑程序执行效率)

private static void jisuan(int n) {

int sum=0;

if(n%2==0){

sum=-(n/2);

System.out.println(""+sum);

}else{

sum=-(n-1)/2+n;

System.out.println(""+sum);

}

}

(11)简述String和StringBuffer、ArrayList 和LinkedList、HashMap和HashTable的特点及区别。

答:String 对象的长度一旦定义就固定就不可以改变,对于已经存在的String 对象的修改都是创建一个新的对象,然后把新的值存进去,String类不能被继承。StringBuffer是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象。它只能通过构造函数来建立对象。另外StringBuffer还是一个线程安全的类。

ArrayList是实现了基于动态数组的数据结构用于,LinkedList基于连表的数据结构,二者都可以存储对象的引用。对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map 接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface 的一个实现。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须

为之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。就HashMap与HashTable主要从三方面来说。

一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

求质数的多种优化方式

答:一般我们求质数时都会去计算小于某一个数N的质数而不会不加限定,现在我们以求小于N的质数来说一说优化方式。在我们求质数的过程中一般会用到两种方法试除法和筛选法两种,现在下来说一下试除法:

①.判断小于N的数X是否是质数,就是从2一直尝试到X-1,这种做法效率最差,并不可取----->②如果X是质数,那么它如果不能被小于X/2的数整除即可,这样算法效率提高一些---->③除了2以外,所有的质数都只能是奇数,所以我们可以将数X先试除2,然后尝试从3一直到X/2的所有奇数----->④其实判断一个数是否是质数,只需判断一个数能不能被除了1之外小于x的数整除即可,----->⑤最后,我们可以利用前面求出来的质数来判断,我们只需判断X能不能被小于x的质数整除即可,这样效率是不是更高。

再说筛选法:对于使用筛选法的优化主要是从空间上考虑

①定义一个容器,将数据放入容器中,然后遍历其中的数据,将是合数的数据删除,最后剩余的就是质数了------>②我们可以定义一个布尔类型的数组容器,将其中的值都赋值为true,在筛选的过程中将不是质数的数作为数组的下标将对应元素的值改为false,最后取出值为true的元素的下标即可----->③构造定长的byte数组,数组的每个byte存储8个布尔值,这样性能是不是又有了提

高呢。

(14) 简述几种排序方式(至少四种,可以从以下各个方面来比较这几种算法,例如从时间复杂度和空间复杂度)

排序法最差时间分

析平均时间复杂

稳定度空间复杂度

冒泡排序O(n2) O(n2) 稳定O(1)

快速排序O(n2) O(n*log

2n) 不稳定O(log

2

n)~O(n)

选择排序O(n2) O(n2) 稳定O(1)二叉树排序O(n2) O(n*log

2

n) 不一定O(n)插入排序O(n2) O(n2) 稳定O(1)

堆排序O(n*log

2n) O(n*log

2

n) 不稳定O(1)

希尔排序O(n1.25) 不稳定O(1)

冒泡排序:(Bubble Sort)冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。

插入排序(Insertion Sort)插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L插入L[1..i-1]的适当位置,使得

L[1..i]又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首

先比较L和L[i-1],如果L[i-1]≤ L,则L[1..i]已排好序,第i遍处理就结束了;否则交换L与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j] ≤L[j+1]时为止。

选择排序(Selection Sort)选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第 i 遍处理是将[i..n]中最小者与位置 i 交换位置。这样,经过 i 遍处理之后,前 i 个记录的位置已经是正确的了。

快速排序(Quick Sort)快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。

一、专业知识

1、a0=1、a1=1、a2=a1+a0、a3=a2+a1,以此类推,请写代码用递归算出a30?

3、简述值类型和引用类型的区别

值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等

他们两在内存中存储的方式不同,值类型以栈的方式存储的,引用类型以堆的方式;前者是真实的存储空间,后者只是存储地址的引用!

4、简述类中的静态成员和非静态成员的区别

静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问。不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问。一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。

5、什么是单例?

一个类中只有一个实例并且自行化向整个系统提供这个实例叫单例

下面程序段的输出结果是:

Void complicatedex(){

int x=20,y=30;

boolean b; b=x>50&&y>60||x>50&&y<-6||x<-50&&y>60||x<-50&&y<-60;

system.out.println(b);

}

结果为:fasle

super()和this()的区别

Super()指父类的无参构造方法,this()指当前类的无参构造方法,两者都必须写在构造方法的第一句

2、Java中public,private,protected,和默认的区别

a、private修饰词,表示成员是私有的,只有自身可以访问;

b、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。

c、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly 这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限;

d、public修饰词,表示成员是公开的,所有其他类都可以访问;

3、描述一下java的事件委托机制和垃圾回收机制

java事件委托机制:一个源产生一个事件时,把他送到一个或多个监听器那里,在这种机制种,监听器只是等待,一旦收到事件,处理事件并返回;

Java垃圾回收:是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用,以免造成内存泄露。

什么是java序列化,如何事件java序列化

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

public class Cat implements Serializable {}

……

Try{

FileOutputStream fos = new FileOutputStream("catDemo.out");

ObjectOutputStream oos = new ObjectOutputStream(fos);

System.out.println(" 1> " + cat.getName());

cat.setName("My Cat");

oos.writeObject(cat);

oos.close();

}catch(Exception e){

……

}

……

overload和overrride的区别。Overloaded 的方法和是否可以改变返回值类型

override(重写,覆盖)

1、方法名、参数、返回值相同。

2、子类方法不能缩小父类方法的访问权限。

3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

4、存在于父类和子类之间。

5、方法被定义为final不能被重写。

overload(重载,过载)

1、参数类型、个数、顺序至少有一个不相同。

2、不能重载只有返回值不同的方法名。

3、存在于父类和子类、同类中。

Overloaded的方法不能改变返回值类型

final类有什么特点

该类不能被继承

写出下面代码的输出结果

Package test;

Public class OuterClass{

Private class InterClass{

Public InterClass{

System.out.println(“interClass create”);

}

}

Public OuterClass(){

InterClass ic= new InterClass();

System.out.println(“outerclass create”);

}

Public static void main(String[] args){

OuterClass oc=new OuterClass();

}

}

输出:

interClass create

Outerclass create

如何格式化日期

java日期的格式话主要用的是SimpleDateFormat df = new SimpleDateFormat ();

ArrayList Vector LinkedList 的存储性能好特性,HashMap和Hashtable的区别

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList

使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key 和value都可以)。

3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

4.HashTable使用Enumeration,HashMap使用Iterator。

String是基本数据类型吗?

不是

多线程有几种实现方式,同步有几种实现方式,stop()和suspend()方法为什么不推荐使用

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

同步的实现方面有两种,分别是synchronized,wait与notify"

反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成

死锁。所以不应该使用suspend(),而应在自己的 Thread类中置入一个标志,

1.请阐述一下你对Java多线程中同步的几种使用方式,区别,以及其重要性。

同步有两种实现方式

1.同步方法

2.同步代码块

多线程的同步时为了能够保证关键数据在单位时间能只能有一个线程操作,保证数据的同步性,安全性

2.final ,finally , finalize 的区别。

Final 有最终的不可改变的意思,可以用来修饰基本数据使之成为常

量,该常量只能在编译期进行修改。

当修饰对象时,则该对象引用不能改变,但该对象本身可以做修改。

当修饰方法时,表示该方法在被继承时不能被修改,或覆盖

当修饰类时,表示该类不会别别的类继承

Finally 用于在Try-catch-finally语句中 finally 中的代码块时必须执行的

finalize 当某个对象要被当做垃圾回收时,会调用finalize()方法,该方法用于检查对象不被运行状态的对象引用或间接地引用

sleep() 和wait()有什么区别?

Sleep()是线程中的一个方法,该方法用于控制自身线程的流程,当

执行sleep()方法睡眠时保持对象锁。

Wait()方法是object类中的一个方法,该方法用于让一个线程处于

等待状态并释放对象锁,当该线程想要再次执行时需要调用notity

方法唤醒此线程

4. abstact 的method是否可同时是static,是否可同时是native,是否可同时是synchronized ?

不可以

5当一个线程进入一个对象的Synchronized 方法后,其他线程是否可进入此对象的其他方法

可以去访问非Synchronized方法。

6.当一个对象被当做参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

值传递

7.创建一个class对象有几种方法?分别是什么?

有三种:

1.Class c=Class.for(“https://www.sodocs.net/doc/0f9738179.html,ng.String”);

2.String str=new Stirng();

Class c=Str.getClass();

3.Class c=String.Class;

9.如何获取一个目录下有多少个文件?

File f=new Fil e(“D://”);

Int count=f.list().length;

10.请写出下列代码的输出结果:

public class FatherClass{

public FatherClass(){

System.out.println(“FatherClass Create”);

}

public static class ChildClass extends FatherClass{

public ChildClass(){

System.out.println(“ChildClass Create”);

}

}

public static void main(){

FatherClass fc=new FatherClass();

ChildClass cc=new ChildClass();

}

}

FatherClass Create

FatherClass Create

ChildClass Create

13.当一个对象不再被使用时,如何才能从内存中消失?

将该对象引用值为空

14.请写一个整数组成的矩阵转置程序,及行变成列,列变成行?

int[][] transponse(int[][] t);

public int[][] transponse(int[][] t){

int [][] f=new int[t[0].length][t.length];

for(int i=0;i

int index=0;

index++;

for(int x=0;i

int m=0;

m++;

f[m][index]=t[i][x];

}

}

Return f;

}

1.下列哪些语句关于内存回收的说明是正确的?( b )

A,程序员必须创建一个线程来释放内存

B,内存回收程序负责释放无用内存

C,内存回收程序允许程序员直接释放内存

D,内存回收程序可以在指定的时间释放内存对象

java高级工程师_面试题和答案

一:选择题 1. 关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic( ); 5. hs1.x++; 6. HasStatic hs2=new HasStatic( ); 7. hs2.x++; 8. hs1=new HasStatic( ); 9. hs1.x++; 10. HasStatic.x- -; 11. System.out.println(“x=”+x); 12. } 13. } A、 5行不能通过编译,因为引用了私有静态变量 B、 10行不能通过编译,因为x是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 2. 下列关于for循环和while循环的说法中哪个是正确的?( B ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换 D.两种循环结构中都必须有循环体,循环体不能为空 3. 以下选项中循环结构合法的是( C ) A、while (int i<7) { i++; System.out.println(“i is “+i); } B、 int j=3; while(j) { System.out.println(“ j is “+j); } C、int j=0; for(int k=0; j + k !=10; j++,k++) { System.out.println(“ j is “+ j + “k is”+ k); } D、 int j=0; do{ System.out.println( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4. 给出下面代码段, 哪行将引起一个编译时错误?( D )

JAVA高级面试题集及答案

1 1、BS与CS的联系与区别。 回答:C/S 是Client/Server 的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、 Sybase、Informix 或SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server 的缩写,客户机上只要安装 一个浏览器(Browser),如Netscape Navigator 或Internet Explorer,服务器安装Oracle、Sybase、Informix或SQL Server 等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端 实现。浏览器通过web Server 同数据库进行数据交互。 C/S 与B/S 区别: 1.硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S 更强的适 应范围, 一般只要有****作系统和浏览器就行 2.对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通 过B/S 发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。 3.对程序架构不同 C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S 有更高的要求B/S 结构的程序架构 是发展的趋势, 从MS 的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的 JavaBean 构件技术等,使B/S更加成熟. 4.软件重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石 头桌子 5.系统维护不同 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实 现升级. 6.处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与****作系统相关. 应该都是相同的系统

15个Java多线程面试题及答案

15个Java多线程面试题及答案 1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。 2)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它? lock接口在多线程和并发编程中最大的优势是它们为读和写分别提 供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来提问。芯学苑老师强烈建议在你在面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。 3)在java中wait和sleep方法的不同?

通常会在电话面试中经常被问到的Java线程面试问题。最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。 4)用Java实现阻塞队列。 这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用Java线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用wait()和notify()方法来实现阻塞队列,你可以要求他用最新的Java 5中的并发类来再写一次。 5)用Java写代码来解决生产者——消费者问题。 与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。在Java中怎么解决生产者——消费者问题,当然有很多解决方法,我已经分享了一种用阻塞队列实现的方法。有些时候他们甚至会问怎么实现哲学家进餐问题。 6)用Java编程一个会导致死锁的程序,你将怎么解决?

Java面试测试题并赋予答案

在main(String[] args)方法内是否可以调用一个非静态方法? 1.不能 同一个文件里是否可以有两个public类? 2.不能 方法名是否可以与构造器的名字相同? 3.可以。 public class Test { public Test(String iceboy) { System.out.println(iceboy); } public void Test(String iceboy) { System.out.println(iceboy); } public static void main(String[] args) { Test a = new Test("abc");//输出“abc” a.Test("iceboy");//输出“iceboy” } } 4.初始化了一个没有run()方法的线程类,是否会出错? 4.不会。 第一种方法:直接继承Thread类。 public class Test { public static void main(String[] args) { ThreadClass t = new ThreadClass(); t.start(); System.out.println("end");//输出“end” } } class ThreadClass extends Thread //Thread类已经实现了空的run()方法。 { } 第二种方法:实现Runnable接口 public class Test { public static void main(String[] args)

{ ThreadClass t = new ThreadClass(); Thread thread = new Thread(t); thread.start(); System.out.println("end"); } } class ThreadClass implements Runnable { public void run() //必须有此方法否则编译报错。它是Runnable接口中的抽象方法。 { System.out.println("Threads"); } } 局部内部类是否可以访问非final变量? 不能访问局部的非final修饰的变量,可以访问局部的使用了final修饰的变量,可以访问成员变量(全局的)。 class Out { private String name = "https://www.sodocs.net/doc/0f9738179.html,"; void print() { final String work = "out.local.work";//若不是final的则不能被Animal 使用. int age=10; class Animal //定义一个局部内部类.只能在print()方法中使用. //局部类中不能使用外部的非final的局部变量.全局的可以. { public void eat() { System.out.println(work);/ /ok //age=20;//error not final,编译时就会出错 System.out.println(name);/ /ok. } } Animal local = new Animal(); local.eat(); }

JAVA高级工程师笔试题(技术部分)

Java 软件高级工程师笔试题 【智力部分】(30分) 1.烧一根不均匀的绳要用一个小时,如何用它来判断半个小时?(5分) 2.4,4,10,10,加减乘除,怎么出24点?(5分) 3.如果你有无穷多的水,一个容积为3L的和5L的提桶,你如何准确称出4L的水?(5分) 4.一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天 睡觉的时候会往下滑2尺,井深10尺,问蜗牛几天可以爬出来?(5分) 5.有一种细菌,经过一分钟分裂为2个,再过一分钟,分裂为4个,这样,将一个细菌放在一个瓶子里面,一个 小时后瓶子被细菌充满了。现在假设一开始放入瓶中的为两个细菌,那么到充满瓶子要多长的时间?(10分) 【专业部分】(70分) 6.简述一下面向对象的特征,并举例说明你对面向对象的理解?(5分) 7.ArrayList和HsahSet的区别,HashMap和Hashtable的区别?(5分) 8.线程同步的关键字是什么?sleep() 和wait() 有什么区别?怎么唤醒wait()停止的线程?(5分)

9.列举你在项目中常用的设计模式(伪代码或类图),并说明每种设计模式的具体应用场景。(5分) 10.Spring中事务管理支持哪几种方式以及每种方式的具体使用方法。(5分) 11.Hibernate的缓存等级及其特点(5分) 12.至少写出一种11位手机号码的正则表达式。(5分) 13.用简短的代码实现字符串“s tr in g”到“s tr in g”转换。即将多个空格转换为一个空格(5 分) 14.使用Socket编写一个程序,客户端向服务器端发送请求(发送字符串即可),服务端接收后发送反馈信息.(10 分)

java高级软件工程师面试题

java高级软件工程师面试题 招聘java高级工程师,职位描述如下,有兴趣的加394504340交流,打扰了,谢谢! 职位名称:java高级开发工程师(急) 职位描述:互联网产品的开发和维护。 职位要求:1. 熟悉JAVA、J2EE体系结构,熟练掌握Spring、Struts、Hibernate、ibatis 的开发技术。 2. 熟悉MySql等数据库开发,熟练掌握SQL语句,有较好的数据库设计能力。 3. 熟练掌握HTML、javascript、ajax等web开发技术,熟悉http协议。 4. 熟悉SVN、Maven、Junit等工具。 5. 具有良好的学习能力、沟通能力,乐于承担工作压力。 6. 有大型门户或社区网站开发经验者优先。 职位所在城市:杭州 职位所在行业:高科技 -------------------------========================================================= 1.说一下struts中常用的对象 2.怎样整合apatche和tomcat 3.说一下在linx系统中搭建服务器 4.简述一下sql server 建模 5.请写一个程序,把一个10进制转换成16进制 6.表student 列id name age WA(本科以上,大专,高中,初中以下) 毕业学校ID,学校信息表 问:统计出文化学历本科以上,大专,高中,初中以下,每个年龄各有多少人(一条SQL语句) 7.有两位少年从隧道的一端向另一端行走.当他们走过隧道的五分之二时,发现隧道外面迎来一辆火车.火车很快就要进入隧道.两位少年向来时隧道跑去.两位少年都是每小时10公里.两位在千钧一发跑出了隧道.假设火车速度恒定,并且两位少年都在瞬间达到最大速度,请问火车的速度 8.请写出常用的oracle语句及说明,存储过程的语句及说明 ---------------------------------------------------------------------------------------------------------------------------------

java高级工程师面试题及答案完整版

j a v a高级工程师面试题 及答案 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

一:选择题 1. 关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic( ); 5. hs1.x++; 6. HasStatic hs2=new HasStatic( ); 7. hs2.x++; 8. hs1=new HasStatic( ); 9. hs1.x++; 10. HasStatic.x- -; 11. (“x=”+x); 12. } 13. } A、 5行不能通过编译,因为引用了私有静态变量 B、 10行不能通过编译,因为x是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 2. 下列关于for循环和while循环的说法中哪个是正确的( B ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换 D.两种循环结构中都必须有循环体,循环体不能为空 3. 以下选项中循环结构合法的是( C ) A、while (int i<7) { i++; (“i is “+i); } B、 int j=3; while(j) { (“ j is “+j); } C、int j=0; for(int k=0; j + k !=10; j++,k++) { (“ j is “+ j + “k is”+ k); } D、 int j=0; do{ ( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4. 给出下面代码段, 哪行将引起一个编译时错误( D ) 1) public class Test {

2019蚂蚁金服Java必问面试题及答案

一面 1、自我介绍、自己做的项目和技术领域 开放题 2、项目中的监控:那个监控指标常见的有哪些? 答:CPU、内存、IO 等等。建议下载个nmon 工具,里面有各个指标。 数据库:Mysql (缓存命中、索引、单条SQL 性能、数据库线程数、数据池连接数) 中间件: 1.消息2、负载均衡 3 、缓存(包括线程数、连接数、日志)。 网络:吞吐量、吞吐率 应用:jvm 内存、日志、Full GC 频率 3、微服务涉及到的技术以及需要注意的问题有哪些? 4、注册中心你了解了哪些? 答:Consul 、Eureka 、ZooKeeper 5、consul 的可靠性你了解吗? 6、consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过? 7、项目用Spring 比较多,有没有了解Spring 的原理?AOP 和IOC 的原

答:(1). IoC (Inversion of Control )是指容器控制程序对象之间的关系,而不 是传统实现中,由程序代码直接操控。控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。对于Spring 而言,就是由Spring 来控制对象的生命周期和对象之间的关系;IoC 还有另外一个名字——“依赖注入(Dependency Injection )”。从名字上理解,所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,即由容器动态地将某种依赖关系注入到组件之中。(2) . 在Spring 的工作方式中,所有的类都会在spring 容器中登记,告诉spring 这是个什么东西,你需要什么东西,然后spring 会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由spring 来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring 。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring 控制,所以这叫控制反转。 (3) . 在系统运行中,动态的向某个对象提供它所需要的其他对象。 (4) . 依赖注入的思想是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set 方法将事先保存在HashMap 中的类属性注入到类中。总而言之,在传统的对象创建方式中,通常由调用者来创建被调用者的实例,而在Spring 中创建被调用者的工作由Spring 来完成,然后注入调用者,即所谓的依赖注入or 控制反转。注入方式有两种:依赖注入和设置注入;IoC 的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管AOP (Aspect Oriented Programming )

(完整版)2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

java高级工程师面试题及答案

java高级工程师面试题及答案

一:选择题 1. 关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2.private static int x=100; 3.public static void main(String args[ ]){ 4.HasStatic hs1=new HasStatic( ); 5.hs1.x++; 6.HasStatic hs2=new HasStatic( ); 7.hs2.x++; 8.hs1=new HasStatic( ); 9.hs1.x++; 10.HasStatic.x- -; 11.System.out.println(“x=”+x); 12.} 13.} A、5行不能经过编译,因为引用了私有静态 变量 B、10行不能经过编译,因为x是私有静态 变量 C、程序经过编译,输出结果为:x=103 D、程序经过编译,输出结果为:x=102 2. 下列关于for循环和while循环的说法中哪个是正确的?( B )

A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for 循环判断条件一般是非程序结果 C.两种循环任何时候都可替换 D.两种循环结构中都必须有循环体,循环体不能为空 3. 以下选项中循环结构合法的是( C ) A、while (int i<7) { i++; System.out.println(“i is “+i); } B、int j=3; while(j) { System.out.println(“ j is “+j); } C、int j=0; for(int k=0; j + k !=10; j++,k++) { System.out.println(“ j is “+ j + “k is”+ k); } D、int j=0; do{ System.out.println( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4. 给出下面代码段, 哪行将引起一个编译时错误?( D )

java高级面试题

第一部分:选择题 1.D 2.D 3.C 4.C 5.BCD 6.D 7.B 8.C 9.C 10.C 11.B 12.B 13.ABC 14.D 15.A 16.D 17.C 18.A 19.ABD 20.D 1.下面java标识符合乎规范的是(D ) A. class B. const C. 3Person D. $People5 答:第一个字母:_ ,$ ,字母开头 不能为关键字 2.下列数组声明错误的是(D ) A.int a[][]=new int[0][]; B.int a[][]=new int[2][3]; C.int i=2; int a[][]=new int[i][]; D.int a[][]=new int[][4]; 答:int[] a=new int[]是特殊的数组 等号左边[]里面不能填数字,不能少new int[] a=new int[0]、int[] a=new int[-1]编译能通过,但是错误的,最小长度为1。 引用和基本数据类型都是放在栈里面的,一维的int[0],int[1]是引用,对于二维的 Int[0]是int[0][0]、int[0][1]、int[0][2],如果没有一维的数组,所以就没有二位这样的Int[][]a=new int[][4],所以不能这样写,int[0][3]也是对的,a[0]=new int[5]; 3.运行以下代码,控制台输出(C ) String str=";;str;;"; String strArray[]=str.split(";");

System.out.println(strArray.length); A.1 B.2 C.3 D.4 答:“str;;;;”长度为1,java在检查长度时,是从右边向左边开始,从不是“;”开始,在非字符串之前的若没有算空字符串。 4.下列哪个不是运行时的异常( C) A.ClassCastException B.NullPointerException C.IOException D.IllegalArgumentException 5.指出下列哪个方法与方法public void add(int a){}为合理的重载方法.(多选) (BCD ) A. public int add(int a) B. public void add(long a) C. public void add(int a,int b) D. public void add(float a) 答:重载:第一,方法名要相同,不考虑返回类型;第二,参数类型不同、参数顺序不同public void add(int a,long b)。 6.指出正确的表达式(D ) A. float f=1.0; B. short s=2;s=s+1; C. byte b =128; D. char c =256; 答:1.0是double;1是int类型,2是不超过short的范围是short类型;byte是-128-127 7.下列哪个java集合类现实是同步的(B) A.ArrayList B.Hashtable C.HashSet D.TreeSet 答:Hashtable是同步的,线程安全的,其类内部声明transient,表示最新的结果 8.运行下列程序, 会产生什么结果(B ) public class A{ public int hashCode(){return 1;} public Boolean equals(Object b){return true;} public static void main(String args[]){ Set set=new HashSet(); set.add(new A()); set.add(new A()); set.add(new A()); set.add(null); set.add(null); System.out.println(set.size()); } } A.控制台输出5 B.控制台输出3 C.控制台输出2 D.运行时抛出异常

java高级工程师-面试题及答案

一: 选择题 1、关于以下程序代码的说明正确的就是( D ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic( ); 5. hs1、x++; 6. HasStatic hs2=new HasStatic( ); 7. hs2、x++; 8. hs1=new HasStatic( ); 9. hs1、x++; 10. HasStatic、x- -; 11. System、out、println(“x=”+x); 12. } 13. } A、5行不能通过编译,因为引用了私有静态变量 B、10行不能通过编译,因为x就是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 2、下列关于for循环与while循环的说法中哪个就是正确的?( B ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般就是程序结果,for循环判断条件一般就是非程序结果 C.两种循环任何时候都可替换 D.两种循环结构中都必须有循环体,循环体不能为空 3、以下选项中循环结构合法的就是( C ) A、while (int i<7) { i++; System、out、println(“i is “+i); } B、int j=3; while(j) { System、out、println(“ j is “+j); } C、int j=0; for(int k=0; j + k !=10; j++,k++) { System、out、println(“ j is “+ j + “k is”+ k); } D、int j=0; do{ System、out、println( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4、给出下面代码段, 哪行将引起一个编译时错误?( D ) 1) public class Test { 2) int n = 0; 3) int m = 0; 4) public Test(int a) { m=a; } 5) public static void main(String arg[]) { 6) Test t1,t2; 7) int j,k; 8) j=3; k=5; 9) t1=new Test();

Java-高级编程笔试题说课材料

J a v a-高级编程笔试 题

《使用Java实现面向对象编程》阶段测试-笔试试卷 一、选择题(共25题,每题4分,满分100分) 1) 下列选项中关于Java中ArrayList、LinkedList、HashMap三个类的描述错误的是()。 A. ArrayList和LinkedList均实现了List接口 B. ArrayList的访问速度比LinkedList快 C. 添加和删除元素时,ArrayList的表现更佳 D. HashMap实现Map接口,它允许任何类型的键和值对象,允许将null用作键或值 2) 关于Java中的集合实现类,下列说法描述错误的是()。 A. HashMap是Map接口的实现类 B. ArrayList对象是长度可变的对象引用数组 C. 集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法 D. Set中存储一组不允许重复、有序的对象 3) 对于Java中的集合类java.util.ArrayList,以下说法正确的是()。 A. 这个集合中的元素是无序的 B. 可以通过键来获取这个集合中的元素 C. 在对这个集合的元素执行遍历操作时,效率比较高 D. 可以通过addFirst()方法,在列表的首部插入元素

4) 给定如下Java代码,其中第()行代码有错误。 import java.util.*; public class MapTest { public static void main(String[] args) { List pList = new ArrayList(); pList.add("A"); //第五行 pList.add("B"); //第六行 for (int i = 0; i < pList.size(); i++) { //第七行 String str = pList.get(i); //第八行 System.out.print(str); } } } A. 五 B. 六 C. 七 D. 八 5) 给定如下Java代码,可以填入横线处的代码是()。 import java.util.*; public class Test { public static void main(String[] args) { ________ list.addLast("001"); } } A. List list = new ArrayList(); B. List list = new List(); C. ArrayList list = new ArrayList(); D. LinkedList list = new LinkedList(); 6) 在Java中,()类的对象可被用作堆栈或者队列。 A. LinkedList

面试二十多家公司总结的java高级面试题

面试二十多家公司总结的java高级面试题 一、jvm内存模型以及调优篇 1.jvm内存模型这块有了解吗?讲讲你的理解 2.堆外内存是存放在哪的,受不受jvm堆内存大小的限制 3.cms和g1的区别 4.gc的触发机制是什么 5.新生代使用什么收集器 6.直接内存主要是存放什么的 7.各个收集算法的优缺点 8.jvm是怎么确定一个对象是否可达 9.java对象有哪几种引用?每种引用的生命周期是什么样的 10.如果线上出现了oom,你是怎么进行排查的(主要考察jps、jstack、jstat、jmap) 11.栈溢出(StackOverflowError)在什么情况下会出现,如果解决使用什么命令调整栈内存的大小 二、java基础篇 1.HashMap的底层原理(1.8与1.7的区别必须要说出来) 2.HashMap是线程不安全的,并发场景下会出现什么问题 3.遍历HashMap的几种方式,那种更快 4.HashMap的扩容是如何实现的 5.CounrrentHashmap的底层实现原理,是如果实现安全的 6.计算CounrrentHashmap的size底层是什么样的 7.HashTable与CounrrentHashmap的区别 8.HashSet与Treeset的区别 9.List如果实现排序 10.String为什么是final的 11.String在内存中是如何存放的 12.设计模式相关(重要,单例就算了...烂大街了) 13.静态变量、静态代码块、代码块、构造函数。在类加载时,他们的执行顺序 14.volatile 变量是什么?volatile 变量和atomic 变量有什么不同 15.switch能作用在string和long上吗 16.hashmap、treemap的区别 17.set的元素是不能重复的,那么是怎么判断一个元素是否重复呢? 18.io与nio的区别是什么 19.简述hash的一致性 三、多线程并发篇 1.java中都有什么锁 2.synchronize与Lock的区别 3.synchronize与Lock谁更快?

【2020最新Java面试题资料】15道面试常问的Java多线程面试题

1)现在有T1T2T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。 2)在中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它? lock接口在多线程和并发编程中最大的优势是它们为读和写分别提供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。线程面试的问题越来越会根据面试者的回答来提问。我强烈建议在你去参加多线程的面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。 3)在java中wait和sleep方法的不同? 通常会在电话面试中经常被问到的线程面试问题。最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。 4)用实现阻塞队列。 这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用wait()和notify()方法来实现阻塞队列,你可以要求他用最新的Java 5中的并发类来再写一次。 5)用Java写代码来解决生产者——消费者问题。 与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。在中怎么解决生产者——消费者问题,当然有很多解决方法,我已经分享了一种用阻塞队列实现的方法。有些时候他们甚至会问怎么实现哲学家进餐问题。 6)用编程一个会导致死锁的程序,你将怎么解决? 这是我最喜欢的线程面试问题,因为即使死锁问题在写多线程并发程序时非常普遍,但是很多侯选者并不能写deadlock free code(无死锁代码?),他们很挣扎。只要告诉他们,你有N个资源和N个线程,并且你需要所有的资源来完成一个操作。为了简单这里的n可以替换为2,越大的数据会使问题看起来更复杂。通过避免中的死锁来得到关于死锁的更多信息。

Java面试题:最常见的200道面试题,

Java面试题:最常见的200道面试题,面试必备面试题模块介绍 这份面试题包含的内容了十九了模块:Java基础、容器、多线程、反射、对象拷贝、Java Web模块、异常、网络、设计模式、Spring/Spring MVC、SpringBoot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM。 可能对于初学者不需要后面的框架和JVM模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java程序员 想要查漏补缺的人 想要不断完善和扩充自己java技术栈的人 java面试官 具体面试题 下面一起来看208道面试题,具体的内容。 一、Java基础 1、JDK和JRE有什么区别? 2、==和equals的区别是什么? 3、两个对象的hashCode()相同,则equals()也一定为true,对吗? 4、final在java中有什么作用? 5、java中的Math、round(-1、5)等于多少? 6、String属于基础的数据类型吗? 7、java中操作字符串都有哪些类?它们之间有什么区别?

8、String str="i"与String str=new String(“i”)一样吗? 9、如何将字符串反转? 10、String类的常用方法都有那些? 11、抽象类必须要有抽象方法吗? 12、普通类和抽象类有哪些区别? 13、抽象类能使用final修饰吗? 14、接口和抽象类有什么区别? 15、javaxxIO流分为几种? 16、BIO、NIO、AIO有什么区别? 17、Files的常用方法都有哪些? 二、容器 18、java容器都有哪些? 19、Collection和Collections有什么区别? 20、List、Set、Map之间的区别是什么? 21、HashMap和Hashtable有什么区别? 22、如何决定使用HashMap还是TreeMap? 23、说一下HashMap的实现原理? 24、说一下HashSet的实现原理? 25、ArrayList和LinkedList的区别是什么? 26、如何实现数组和List之间的转换? 27、ArrayList和Vector的区别是什么?

2021年java高级工程师面试题及答案

一:选取题 1. 关于如下程序代码阐明对的是( D ) 1.class HasStatic{ 2.private static int x=100; 3.public static void main(String args[ ]){ 4.HasStatic hs1=new HasStatic( ); 5.hs1.x++; 6.HasStatic hs2=new HasStatic( ); 7.hs2.x++; 8.hs1=new HasStatic( ); 9.hs1.x++; 10.HasStatic.x--; 11.System.out.println(“x=”+x); 12.} 13.} A、5行不能通过编译,由于引用了私有静态变量 B、10行不能通过编译,由于x是私有静态变量 C、程序通过编译,输出成果为:x=103 D、程序通过编译,输出成果为:x=102 2. 下列关于for循环和while循环说法中哪个是对的?( B ) A.while循环能实现操作,for循环也都能实现 B.while循环判断条件普通是程序成果,for循环判断条件普通是非程序成果C.两种循环任何时候都可替代 D.两种循环构造中都必要有循环体,循环体不能为空 3. 如下选项中循环构造合法是( C ) A、while (int i<7) { i++;

System.out.println(“i is “+i); } B、int j=3; while(j) { System.out.println(“ j is “+j); } C、int j=0; for(int k=0;j + k !=10;j++,k++) { System.out.println(“ j is “+ j + “k is”+ k); } D、int j=0; do{ System.out.println( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4. 给出下面代码段,哪行将引起一种编译时错误?( D ) 1) public class Test { 2) int n = 0; 3) int m = 0; 4) public Test(int a) { m=a;} 5) public static void main(String arg[]) { 6) Test t1,t2; 7) int j,k; 8) j=3;k=5; 9) t1=new Test(); 10) t2=new Test(k); 11) } 12) } A. 行1 B. 行4 C. 行6 D. 行9

相关主题