java笔试涉及编程题

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;
    }
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值