面试题总结2

来源:互联网 发布:网络配置出现问题 编辑:程序博客网 时间:2024/05/19 21:15

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

    插入排序(直接插入排序)

    交换排序(快速排序,冒泡排序)

    选择排序(直接选择排序)

    归并排序

    分配排序(箱排序,基数排序)

    下面是冒泡排序的示例:

  

public class Sort {

public static void main(String[] args) {
  int x[] = { 10, 51, 4, 65, 23, 8 };
  int temp;
  for (int i = 0; i < x.length; i++) {
   for (int j = i+1; j < x.length; j++) {
    if (x[i] < x[j]) {
     temp = x[i];
     x[i] = x[j];
     x[j] = temp;
    }
   }
   System.out.print(x[i] + " ");
  }
}
}

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

   Override是方法的重写,子类覆盖父类的方法,子类与父类含义同样的方法时,调用时会调用子类重写后的方法。

   Overload是方法的重载,一个类含的多个方法,方法名称相同,参数的个数与类型不同的称呼。

    重写和重载都是java多态性的不同表现形式。方法重载时可以改变方法的返回类型,这个不会影响到是否重载。

3.被final修饰的类有什么特点?

    属性被修饰====常量

    方法被修饰====无法重写,就无法是抽象方法。

    类被修饰======此类就不能被继承。

4.JAVA  类实现序列化的方法( 二 种) ?

   a.是相应的对象实现了序列化接口Serializable,这个使用的比较多。

    b.实现序列化的第二种方式为实现接口Externalizable.

    来源于博客:http://blog.csdn.net/lzwglory/article/details/49181919

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

     比较要实现 Comparable 接口和 Comparator 接口.

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

    代码:

   

 

public class spilt {

public static void main(String[] args) throws Exception {
   
   spite("我abc",3);
}
public static void spite(String source,int num) throws Exception {
  int k=0;
  String temp="";
  for(int i=0;i<source.length();i++){
   byte [] b=(source.charAt(i)+"").getBytes();

   k=k+b.length;
      //System.out.println(source.charAt(0));
   if(k>num){
    break;
   }
   temp=temp+source.charAt(i);
  }
      System.out.println(temp); 
}
}

7.Java  编程, 打印昨天 的当前时刻:

    代码:

 

public class PrintTime {

public static void main(String[] args) {
  Calendar cal = Calendar.getInstance();
  // 是获取一个Calendar对象并可以进行时间的计算,时区的指定
  cal.add(Calendar.DATE, -1);
  // 给对象设置属性参数
  System.out.println(cal.getTime());
  // 从一个 Calendar 对象中获取 Date 对象,并打印;设置 Date对象,使用calendar.setTime(date);
}
}

 

8. 文件 读 写, 实现一个计数器?

  关于io的总结:可以参考这篇博客:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html

 

9. 如何 格式 化 日期?

   Import java.text. SimpleDateFormat;
SimpleDateFormat sdf=new SimpleDateFormat("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”);

 

 

10. 如何 取得年月日 , 小 时 分秒 ?

   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));

 

11. 如何 取得从 1970  年到 现在的?

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

 

12..编 码转换 , 怎样 实现将 将 GB2312  编 码 的为 字符串转换为 ISO-8859-1  编 码 的
字符串 ?

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

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

13.String s = new String("xyz"); 创建了个 几个 String Object?

    New 了一个,”XYZ”本来又是一个,所以是两个。

 

14.float 型 型 float f=3.4  是否 正确?

    报错,应当是 float f=3.4f
     如果是 float f=3(整数)正确 。

15. 说 出一 些常 用的类,包, 接口 ,请 各举 举 5 个?

     常用的类:BufferedReader   ,BufferedWriter  ,FileReader   ,FileWriter  ,Integer  ,String 

    常用的包:java.lang    java.awt    java.io     java.util     java.sql     java.xml        javax.servelet     javax.ejb     java.net      javax.faces

    常用的接口:List   Map   Document   NodeList    EjbObject    EjbHome   SessionBean   EntityBean 

 

16.java  中 会 存 在内 存泄漏吗 ,请 简单描述?

public class CountNum {

 public static void main(String[] args) throws Exception {
  System.out.println(count());
 }
 public static int count(){
  int i1,i2;
  i1=2147483647;
  i2=-2147483648;
  return i1-i2;
 }
}   代码运行的结果是-1.

 

17.java  中实现多 态 的机制是什么?

   a.静态的多态:方法名相同,参数个数或类型不相同。(overloading)

   b.动态的多态:子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法  ;

                          实现接口的实例传与接口的引用调用的实现类的方法。

18. 垃圾回收 器 的 基本原理 是什么?垃圾回收 器 可以 马上 回收内 存吗 ?有什么
      办 法 主动通知虚拟 机 进 行垃圾回收?

    动态内存:  存放类实例     静态内存:类本身 

    垃圾回收主要针对的是动态内存,一般当内存不够用时会进行垃圾回收。

    或者通过System,gc()手动收集,但不一定保证执行。

 

19.静态变量与实例变量的区别?

    

Java类的成员变量有俩种:
一种是被static关键字修饰的变量,叫类变量或者静态变量
另一种没有static修饰,为实例变量

类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。

而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。

public class Temp {
int t; //实例变量
public static void main(String args[]){
int t=1; //局部变量
System.out.println(t); //打印局部变量
Temp a= new Temp(); //创建实例
System.out.println(a.t); //通过实例访问实例变量
}
}


结果为:
1
0

变换格式:

public class Temp {
static int t; //类变量
public static void main(String args[]){
System.out.println(t); //打印类变量
int t=1; //局部变量
System.out.println(t); //打印局部变量
Temp a= new Temp(); //创建实例
System.out.println(a.t); //通过实例访问实例变量
}
}


结果则为
0
1
0

  参考博客地址:http://sumdwang.blog.163.com/blog/static/79296950200911611109779/ 

 

20. 是否可以 从 一个 static  方法内部 发 出非 对非 static  方法的 调 用?

   不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,
*         才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以
*    直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例
*    对象,如果从一个static方法中发出对非static方法的调用,那个非static
*    方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部

*    发出对非static方法的调用。

 

 

0 0
原创粉丝点击