乐趣区

关于面试:百万Java-面试题整理10

Java 面试题整顿
Java 面向对象

  1. super()与 this()的区别?
    This():以后类的对象,super 父类对象。
    Super():在子类拜访父类的成员和行为, 必须受类继承规定的束缚而 this 他代表以后对象, 当然所有的资源都能够拜访.
    在构造函数中, 如果第一行没有写 super(), 编译器会主动插入. 然而如果父类没有不带参数
    的构造函数, 或这个函数被私有化了 (用 private 润饰). 此时你必须退出对父类的实例化结构. 而 this 就没有这个要求, 因为它自身就进行实例化的结构.
    而在办法中 super 和 this 应用的办法就差不多了. 只不过 super 要思考是否能拜访其父类的资源.
  2. 作用域 public,protected,private, 以及不写时的区别?
    Public: 不同包、同一包、类内都可用
    Private:类内
    Protected: 不同包的子类、同一包、类内都可用
    不写时: 同一包内、类内
  3. 编程输入如下图形?


    • *
  4. *
    *
    代码如下:
    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();
    }
    }
    }
  5. JAVA 的事件委托机制和垃圾回收机制
    java 事件委托机制的概念, 一个源产生一个事件并将它送到一个或多个监听器那里。在这种计划中,监听器简略的期待,直到它收到一个事件。一旦事件被承受,监听器将解决这个事件,而后返回。
    垃圾回收机制 垃圾收集是将调配给对象但不再应用的内存回收或开释的过程。如果一个对象没有指向它的援用或者其赋值为 null, 则次对象适宜进行垃圾回收
  6. 在 JAVA 中,如何跳出以后的多重嵌套循环?
    用 break; return 办法。
  7. 什么是 java 序列化,如何实现 java 序列化?(写一个实例)
    序列化:
    能够将一个对象保留到一个文件,所以能够通过流的形式在网络上传输,能够将文件的内容读取,转化为一个对象。
    解决对象流的机制,所谓对象流也就是将对象的内容进行流化。能够对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
    序列化的实现:
    将须要被序列化的类实现 Serializable 接口,该接口没有须要实现的办法,implements Serializable 只是为了标注该对象是可被序列化的,而后应用一个输入流 (如:FileOutputStream) 来结构一个 ObjectOutputStream(对象流)对象,接着,应用 ObjectOutputStream 对象的 writeObject(Object obj)办法就能够将参数为 obj 的对象写出(即保留其状态),要复原的话则用输出流。
  8. 一个 ”.java” 源文件中是否能够包含多个类(不是外部类)?有什么限度?
    能够。如果这个类的修饰符是 public,其类名与文件名必须雷同。
  9. 排序都有哪几种办法?请列举。用 JAVA 实现一个疾速排序?
    排序的办法有:插入排序(间接插入排序、希尔排序),替换排序(冒泡排序、疾速排序),抉择排序(间接抉择排序、堆排序),归并排序,调配排序(箱排序、基数排序)疾速排序的伪代码。
  10. Overload 和 Override 的区别。Overloaded 的办法是否能够扭转返回值的类型?
    办法的
    重写 Override,子类笼罩父类的办法,将子类传与父类的援用调用的还是子类的办法。
    重载 Overloading 一个类多个办法,名称雷同,参数个数类型不同。
    两者都是 Java 多态性的不同体现。Overloaded 的办法是能够扭转返回值的类型。
    1,public class Ctest()
    {
    Public static void main()
    {
    System.out.prinln(8+8+”88”+8+8);
    }
    }
    168888
  11. Final 类有什么特点?
    属性常量
    办法不能够 overridding
    类不能够继承
  12. 继承时候类的执行程序问题,个别都是选择题,问你将会打印出什么.
    答 : 父 类:
    package test;
    public class FatherClass
    {
    public FatherClass()
    {
    System.out.println(“FatherClass Create”);
    }
    }
    子类:
    package test;
    import test.FatherClass;
    public class ChildClass extends FatherClass
    {
    public ChildClass()
    {
    System.out.println(“ChildClass Create”);
    }
    public static void main(String[] args)
    {
    FatherClass fc = new FatherClass();
    ChildClass cc = new ChildClass();
    }
    }
    输入后果:
    C:>java test.ChildClass FatherClass Create FatherClass Create ChildClass Create
  13. 外部类的实现形式?
    答:示例代码如下:
    package test;
    public class OuterClass
    {
    private class InterClass
    {
    Public Interlass()
    {
    System.out.println(“InterClass Create”);
    }
    }
    public OuterClass()
    {
    InterClass ic = new InterClass(); System.out.println(“OuterClass Create”);
    }
    public static void main(String[] args)
    {
    OuterClass oc = new OuterClass();
    }
    }
    输入后果:
    C:>java test/OuterClass
    InterClass Create
    OuterClass Create
    13. 用 JAVA 实现一种排序,JAVA 类实现序列化的办法(二种)?
  14. 如在 COLLECTION 框架中,实现比拟要实现什么样的接口?
    Collection 框架中实现比拟要实现 Comparable 接口和 Comparator 接口
  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 Sort Before:”); for (int i=0;i<num ;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;i<al.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;j<MaxSize ;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 Sort After:”); for(int i=0;i<al.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 接口
  16. 编程:编写一个截取字符串的函数,输出为一个字符串和字节数,输入为按字节截取的字符串。然而要保障汉字不被截半个,如 ” 我 ABC”4,应该截为 ” 我 AB”,输出 ” 我 ABC 汉 DEF”,6,应该输入为 ” 我 ABC” 而不是 ” 我 ABC+ 汉的半个 ”。
    public static void split(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;
    if(k>num)
    {
    break;
    }
    temp=temp+source.charAt(i);
    }
    System.out.println(temp);
    }
    17.Java 编程,打印昨天的以后时刻
    public class
    YesterdayCurrent{public void
    main(String[] args){
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -1); System.out.println(cal.getTime());
    }
    }
    18. 文件读写,实现一个计数器
    public int getNum(){ int i = -1;
    try{
    String stri=””;
    BufferedReader in = new BufferedReader(new FileReader(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(new BufferedWriter(new FileWriter(f,false))); out.write(String.valueOf(i)); // 可能是编码的起因,如果间接写入 int 的话,将呈现 java 编码和 windows 编码的凌乱,因而此处写入的是 String
    out.close() ;
    }catch(Exception
    e){e.printStackTrac
    e();
    }
    19. 指出上面程序的运行后果。
    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 代码段, 能够看作是类首次加载 (被虚拟机加载) 执行的代码, 而对于类的加载, 首先要执行其基类的结构, 再执行其自身的结构 extends (2)接口只有定义, 抽象类能够有定义和实现
    (3) 接口的字段定义默认为:public static final, 抽象类字段默认是 ”friendly”(本包可见)
    20. 抽象类和接口的区别?
    (1)接口能够被多重 implements, 抽象类只能被繁多 extends (2)接口只有定义, 抽象类能够有定义和实现
    (3) 接口的字段定义默认为:public static final, 抽象类字段默认是 ”friendly”(本包可见)
    当性能须要累积时用抽象类,不须要累积时用接口。
    21. 什么是类的反射机制?
    通过类 (Class 对象),能够得出以后类的 fields、method、construtor、interface、superClass、modified 等,同是能够通过类实例化一个实例、设置属性、唤醒办法。Spring 中一切都是返射、struts、hibernate 都是通过类的返射进行开发的。
    22. 类的反射机制中的包及外围类?
    u java.lang.Class
    u java.lang.refrection.Method
    u java.lang.refrection.Field
    u java.lang.refrection.Constructor
    u java.lang.refrection.Modifier
    u java.lang.refrection.Interface
    23. 失去 Class 的三个过程是什么?
    对象.getClass()
    类.class 或 Integer.type(int) Integer.class(java.lang.Integer) Class.forName();
    24. 如何唤起类中的一个办法?
    产生一个 Class 数组,阐明办法的参数
    通过 Class 对象及办法参数失去 Method
    通过 method.invoke(实例, 参数值数组)唤醒办法
    25. 如何将数值型字符转换为数字(Integer,Double)?
    Integer.parseInt(“1234”)
    Double.parseDouble(“123.2”)
    26. 如何将数字转换为字符?
    1+””
    1.0+””
    27. 如何取小数点前两位,并四舍五入。
    double d=1256.22d;
    d=d/100;
    System.out.println(Math.round(d)*100);

    有须要全副文件的麻烦关注点赞私信我
退出移动版