java笔试涉及编程题

it2025-02-16  5

1、如何实现字符串的反转及替换?

当我们要将一个字符串翻转或者替换时,方法很多,可以自己写实现也可以使用String或StringBuffer/StringBuilder中的方法。有一道很常见的面试题是用递归实现字符串反转,代码如下所示:

public static String reverse(String originStr) { if(originStr == null || originStr.length() <= 1) return originStr; System.out.println(originStr); return reverse(originStr.substring(1)) + originStr.charAt(0)); }

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

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[] args) { A ab = new B(); ab = new B(); } }

答:执行结果:1a2b2b。创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。

3、怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 答案:

String s1 = "你好" ; String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");

4、利用java.text.DataFormat 的子类(如SimpleDateFormat类)中的format(Date)方法可将日期格式化

答案:

class DateFormatTest { public static void main(String[] args) { SimpleDateFormat oldFormatter = new SimpleDateFormat("yyyy/MM/dd" ); Date date1 = new Date(); System.out.println(oldFormatter.format(date1)); } }

5、类ExampleA继承Exception,类ExampleB继承ExampleA。 有如下代码片断:

try { throw new ExampleB( "b" ) } catch(ExampleA e){ System.out.println( "ExampleA"); } catch(Exception e){ System.out.println( "Exception" ); }

请问执行此段代码的输出是什么?

答:输出:ExampleA。(根据里氏代换原则[能使用父类型的地方一定能使用子类型],抓取ExampleA类型异常的catch块能够抓住try块中抛出的ExampleB类型的异常)

6、用Java写一个冒泡排序。

for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数       for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次         if(arr[j]>arr[j+1]){           int temp=arr[j];           arr[j]=arr[j+1];           arr[j+1]=temp;         }       }     }

7、用Java写一个二分查找。

非递归实现:

public static int biSearch(int []array,int a){ int lo=0; int hi=array.length-1; int mid; while(lo<=hi){ mid=(lo+hi)/2; if(array[mid]==a){ return mid+1; }else if(array[mid]<a){ lo=mid+1; }else{ hi=mid-1; } } return -1; }

递归实现:

public static int sort(int []array,int a,int lo,int hi){ if(lo<=hi){ int mid=(lo+hi)/2; if(a==array[mid]){ return mid+1; } else if(a>array[mid]){ return sort(array,a,mid+1,hi); }else{ return sort(array,a,lo,mid-1); } } return -1; }
最新回复(0)