java综合面试题_JAVA 综合面试题 PDF 下载

主要内容:

Java面试题整理

Java面向对象

1. super()与this()的区别?

This():当前类的对象,super父类对象。Super():在子类访问父类的成员和行为,

必须受类继承规则的约束而this他代表当前对象,当然所有的资源都可以访问. 在构

造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数

的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化

构造.而this就没有这个要求,因为它本身就进行实例化的构造. 而在方法中super和

this使用的方法就差不多了.只不过super 要考虑是否能访问其父类的资源.

2. 作用域public,protected,private,以及不写时的区别?

Public:不同包、同一包、类内都可用

Private:类内

Protected: 不同包的子类、同一包、类内都可用

不写时:同一包内、类内

3. 编程输出如下图形。

* * * * *

* * * *

* * *

* *

*

代码如下:

public class Print {

public static void main(String[] args) {

for (int i = 0; i < 5; i++) {

for (int j = 5; j > i; j--) {

System.out.print("*");

}

System.out.println();

}

} }

4. JAVA的事件委托机制和垃圾回收机制

java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。

在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听

器将处理这个事件,然后返回。垃圾回收机制垃圾收集是将分配给对象但不再使用

的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为null,则次

对象适合进行垃圾回收

5. 在JAVA中,如何跳出当前的多重嵌套循环?

用break; return 方法。

6. 什么是java序列化,如何实现java序列化?(写一个实例)

序列化: 处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流

化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解

决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类

实现Serializable接口,该接口没有需要实现的方法,implements Serializable

只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)

来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对

象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),

要恢复的话则用输入流。

7. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以。如果这个类的修饰符是public,其类名与文件名必须相同。

8. 排序都有哪几种方法?请列举。用JAVA实现一个快速排序?

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快

速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、

基数排序)快速排序的伪代码。

package com.njzb.test.student.tb;

import java.util.Random;

public class MySort {

private int []myArray;

private int size;

public MySort(int size){

myArray = new int[size];

this.size =size;

init();

}

private void init(){

Random rand=new Random();

for(int i=0;i

myArray[i]=rand.nextInt(1000);

} }

public void quick(int low,int high){//快速排序

int lo=low;//最小值

int hi=high;//最大值

if(lo>=hi){return;}

boolean flag= false;

while(lo

if(myArray[lo]

int temp= myArray[lo];

myArray[lo]=myArray[hi];

myArray[hi]=temp;

flag=!flag;

}

if(flag){

lo++;

}else{

hi--; } }

lo--;hi++;

quick(low,lo);

quick(hi,high);

}

public void pop(){//冒泡排序

for (int i=0;i

for(int j=0;j

if(myArray[j]<=myArray[j+1]){

int temp = myArray[j];

myArray[j] = myArray[j+1];

myArray[j+1]=temp;

} } } }

public void opt(){//选择排序

for(int i=0;i

int max=i;

for (int j=i+1;j

if(myArray[max]

max=j;

} }

int temp = myArray[max];

myArray[max] = myArray[i];

myArray[i]=temp;

} }

public void insert(){//插入排序

for(int i=1;i

int temp = myArray[i];

int pos = i-1;

//下标大于0并且你的temp比pos的值大

while(pos>=0 && temp>myArray[pos]){

myArray[pos+1]=myArray[pos];

pos--; }

myArray[pos+1]=temp;

} }

public void dis(){

for (int i:myArray){

System.out.print(i+":");

}

System.out.println();

}

public void disss(int month){

if(month<=12){

System.out.println(month);

disss(++month);

} }

public static void main(String[] args) {

MySort ms = new MySort(10);

// ms.disss(1);

ms.dis();

// long time =System.currentTimeMillis();

// ms.insert();

//ms.pop();

//ms.opt();

ms.quick(0, 9);

// System.out.println(System.currentTimeMillis()-time);

ms.dis();

} }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值