「java笔试排序」java面试排序

博主:adminadmin 2022-12-11 20:36:05 71

本篇文章给大家谈谈java笔试排序,以及java面试排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

求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 {

publicstatic 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接口,该接口没有需要实现的方法,implementsSerializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

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

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

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

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码。

9. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

重写Override,子类覆盖父类的方法,将子类传与父类的引用调用的还是子类的方法。

重载Overloading 一个类多个方法,名称相同,参数个数类型不同。

两者都是Java多态性的不同表现。

Overloaded的方法是可以改变返回值的类型。

1, public class Ctest(){

Public static void main(){

System.out.prinln(8+8+”88”+8+8);

}

} 168888

(方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

Overloaded的方法是可以改变返回值的类型。)

10. Final类有什么特点?

属性常量 方法不可以overridding 类不可以继承

11. 继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?

答:父类:

package test;

public class FatherClass {

public FatherClass() {

System.out.println("FatherClassCreate");

}

}

子类:

package test;

import test.FatherClass;

public class ChildClass extends FatherClass{

public ChildClass() {

System.out.println("ChildClassCreate");

}

public static void main(String[] args) {

FatherClass fc = new FatherClass();

ChildClass cc = new ChildClass();

}

}

输出结果:

C:java test.ChildClass

FatherClass Create

FatherClass Create

ChildClass Create

12. 内部类的实现方式?

package test;

public class OuterClass {

private class InterClass {

Public Interlass(){

System.out.println("InterClassCreate");

}

}

public OuterClass(){

InterClass ic = new InterClass();

System.out.println("OuterClassCreate");

}

public static void main(String[] args){

OuterClass oc = new OuterClass();

}

}

输出结果:

C:java test/OuterClass InterClass Create OuterClass Create

13. 用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?

14. 如在COLLECTION框架中,实现比较要实现什么样的接口?

15. 用插入法进行排序代码如下

package test;

import java.util.*;

class InsertSort {

ArrayList al;

public InsertSort(int num,int mod) {

al = new ArrayList(num);

Random rand = new Random();

System.out.println("The ArrayList SortBefore:");

for (int i=0;inum ;i++ ){

al.add(new Integer(Math.abs(rand.nextInt())% mod + 1));

System.out.println("al["+i+"]="+al.get(i));

}

}

public void SortIt(){

Integer tempInt;

int MaxSize=1;

for(int i=1;ial.size();i++){

tempInt = (Integer)al.remove(i);

if(tempInt.intValue()=((Integer)al.get(MaxSize-1)).intValue()){

al.add(MaxSize,tempInt);

MaxSize++;

System.out.println(al.toString());

} else {

for (int j=0;jMaxSize ;j++ ){

if(((Integer)al.get(j)).intValue()=tempInt.intValue()){

al.add(j,tempInt);

MaxSize++;

System.out.println(al.toString());

break;

}

}

}

}

System.out.println("The ArrayList SortAfter:");

for(int i=0;ial.size();i++) {

System.out.println("al["+i+"]="+al.get(i));

}

}

public static void main(String[] args) {

InsertSort is = new InsertSort(10,100);

is.SortIt();

}

}

JAVA类实现序例化的方法是实现java.io.Serializable接口

Collection框架中实现比较要实现Comparable 接口和 Comparator 接口

16. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。

public static void split(String source,intnum) throws Exception{

intk=0;

Stringtemp="";

for(int i = 0; i source.length(); i++){

byte[]b=(source.charAt(i)+"").getBytes();

k=k+b.length;

if(knum){

break;

}

temp=temp+source.charAt(i);

}

System.out.println(temp);

}

15、Java编程,打印昨天的当前时刻

public class YesterdayCurrent{

public void main(String[] args){

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DATE, -1);

System.out.println(cal.getTime());

}

}

16、文件读写,实现一个计数器

public int getNum(){

int i = -1;

try{

String stri="";

BufferedReader in = new BufferedReader(newFileReader(f));

while((stri=in.readLine())!=null){

i = Integer.parseInt(stri.trim());

}

in.close();

}catch(Exception e){

e.printStackTrace();

}

return i;

}

public void setNum(){

int i = getNum();

i++;

try{

PrintWriter out=new PrintWriter(newBufferedWriter(new FileWriter(f,false)));

out.write(String.valueOf(i)); //可能是编码的原因,如果直接写入int的话,将出现java编码和windows编码的混乱,因此此处写入的是String

out.close() ;

}catch(Exception e){

e.printStackTrace();

}

}

17、指出下面程序的运行结果。

class A{

static{

System.out.print("1");

}

public A(){

System.out.print("2");

}

}

class B extends A{

static{

System.out.print("a");

}

public B(){

System.out.print("b");

}

}

public class Hello{

public static void main(String[] ars){

A ab = new B(); //执行到此处,结果: 1a2b

ab = new B(); //执行到此处,结果: 1a2b2b

}

}注:类的static 代码段,可以看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其本身的构造

18、抽象类和接口的区别?

(1)接口可以被多重implements,抽象类只能被单一extends(2)接口只有定义,抽象类可以有定义和实现(3)接口的字段定义默认为:publicstatic final, 抽象类字段默认是"friendly"(本包可见)

当功能需要累积时用抽象类,不需要累积时用接口。

19、什么是类的反射机制?

通过类(Class对象),可以得出当前类的fields、method、construtor、interface、superClass、modified等,同是可以通过类实例化一个实例、设置属性、唤醒方法。Spring中一切都是返射、struts、hibernate都是通过类的返射进行开发的。

20、类的返射机制中的包及核心类?

①java.lang.Class②java.lang.refrection.Method③java.lang.refrection.Field

④java.lang.refrection.Constructor⑤java.lang.refrection.Modifier⑥java.lang.refrection.Interface

21、得到Class的三个过程是什么?

①对象.getClass()②类.class或Integer.type(int) Integer.class(java.lang.Integer)③Class.forName();

22、如何唤起类中的一个方法?

①产生一个Class数组,说明方法的参数②通过Class对象及方法参数得到Method③通过method.invoke(实例,参数值数组)唤醒方法

23、如何将数值型字符转换为数字(Integer,Double)?

Integer.parseInt(“1234”) Double.parseDouble(“123.2”)

24、如何将数字转换为字符?

1+”” 1.0+””

25、如何去小数点前两位,并四舍五入。

double d=1256.22d; d=d/100; System.out.println(Math.round(d)*100);

26、如何取得年月日,小时分秒?

Calendar c=Calendar.getInstance();

c.set(Calendar.YEAR,2004);

c.set(Calendar.MONTH,0);

c.set(Calendar.DAY_OF_MONTH,31);

System.out.println(c.get(Calendar.YEAR)+" "+(c.get(Calendar.MONTH)+1)+" "+c.get(Calendar.DAY_OF_MONTH));

27、如何取得从1970年到现在的毫秒数

Java.util.Date dat=new Date(); long now=dat.getTime();

或System.currentTimeMillis()

28、如何获取某个日期是当月的最后一天?

当前日期加一天,若当前日期与结果的月份不相同,就是最后一天。

取下一个月的第一天,下一个月的第一天-1

public static void main(String[] args){

Calendarc=Calendar.getInstance();

c.set(Calendar.YEAR,2004);

c.set(Calendar.MONTH,0);

c.set(Calendar.DAY_OF_MONTH,30);

Calendarc1=(Calendar)c.clone();

System.out.println(c.get(Calendar.YEAR)+""+(c.get(Calendar.MONTH)+1)+" "+c.get(Calendar.DAY_OF_MONTH));

c.add(Calendar.DAY_OF_MONTH,1);

if(c.get(Calendar.MONTH)!=c1.get(Calendar.MONTH)){

System.out.println("是最后一天");

}else{

System.out.println("不是取后一天");

}

}

29、如何格式化日期?

Import java.text. SimpleDateFormat;

SimpleDateFormat sdf=newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");

Date dat=new Date();

String str=sdf.format(dat); //把日期转化为字符串

System.out.println(str);

Java.util.Date d1=sdf.parse(“yyyy-mm-dd”); //将字符串转化为日期

30、编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。

String a=new String("中".getBytes("gb2312"),"iso-8859-1");

String a=new String("中".getBytes("iso-8859-1"));

应该是String a=new String("中".getBytes("gb2312"),"iso-8859-1");

String a1=newString(a.getBytes("iso-8859-1"));

java实现几种常见排序算法

下面给你介绍四种常用排序算法:

1、冒泡排序

特点:效率低,实现简单

思想(从小到大排):每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有元素。这只是冒泡排序的一种,当然也可以从后往前排。

2、选择排序

特点:效率低,容易实现。

思想:每一趟从待排序序列选择一个最小的元素放到已排好序序列的末尾,剩下的位待排序序列,重复上述步骤直到完成排序。

3、插入排序

特点:效率低,容易实现。

思想:将数组分为两部分,将后部分元素逐一与前部分元素比较,如果当前元素array[i]小,就替换。找到合理位置插入array[i]

4、快速排序

特点:高效,时间复杂度为nlogn。

采用分治法的思想:首先设置一个轴值pivot,然后以这个轴值为划分基准将待排序序列分成比pivot大和比pivot小的两部分,接下来对划分完的子序列进行快排直到子序列为一个元素为止。

java程序员笔试面试都考什么呀?

1)面向对象的基础知识

2)java写一段程序,通常是排序或者计算后输出的

3)关于web开发的基础知识,比如什么是jsp,servlet与jsp的区别,session与cookie的区别

4)对常用的开源框架的了解,如struts,spring,hibernate,ibatis等

java几种基本排序

/**

     * 冒泡排序

     * 比较相邻的元素。如果第一个比第二个大,就交换他们两个。  

     * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。  

     * 针对所有的元素重复以上的步骤,除了最后一个。

     * 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 

     * @param numbers 需要排序的整型数组

     */

    public static void bubbleSort(int[] numbers)

    {

        int temp = 0;

        int size = numbers.length;

        for(int i = 0 ; i  size-1; i ++)

        {

        for(int j = 0 ;j  size-1-i ; j++)

        {

            if(numbers[j]  numbers[j+1])  //交换两数位置

            {

            temp = numbers[j];

            numbers[j] = numbers[j+1];

            numbers[j+1] = temp;

            }

        }

        }

    }

快速排序的基本思想:

         通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。

/**

     * 查找出中轴(默认是最低位low)的在numbers数组排序后所在位置

     * 

     * @param numbers 带查找数组

     * @param low   开始位置

     * @param high  结束位置

     * @return  中轴所在位置

     */

    public static int getMiddle(int[] numbers, int low,int high)

    {

        int temp = numbers[low]; //数组的第一个作为中轴

        while(low  high)

        {

        while(low  high  numbers[high]  temp)

        {

            high--;

        }

        numbers[low] = numbers[high];//比中轴小的记录移到低端

        while(low  high  numbers[low]  temp)

        {

            low++;

        }

        numbers[high] = numbers[low] ; //比中轴大的记录移到高端

        }

        numbers[low] = temp ; //中轴记录到尾

        return low ; // 返回中轴的位置

    }

    

    递归形式的分治排序算法:

    /**

     * 

     * @param numbers 带排序数组

     * @param low  开始位置

     * @param high 结束位置

     */

    public static void quickSort(int[] numbers,int low,int high)

    {

        if(low  high)

        {

        int middle = getMiddle(numbers,low,high); //将numbers数组进行一分为二

        quickSort(numbers, low, middle-1);   //对低字段表进行递归排序

        quickSort(numbers, middle+1, high); //对高字段表进行递归排序

        }

    

    }

关于java笔试排序和java面试排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-11,除非注明,否则均为首码项目网原创文章,转载请注明出处。