面试题及心得

今天参加了一家大公司的面试,进去先做了一套笔试题,分享给大家:

1、写出public,protected,private以及默认的(default)的作用范围

  

2、写出&和&&的区别

  &:是按位运算符,没有短路效应,结果是0或1

  &&:是逻辑运算符,有短路效应,结果是true或者false

3、

4、

5、轻易效率最高的方法得出2乘以8的答案

6、抽象类和接口的异同点

7、问下列程序的输出结果是:

public class A {
    static{
        System.out.println(1);
    }
    public A(){
        System.out.println(2);
    }
}

class B extends A{
    static{
        System.out.println("a");
  }

   public B(){
    System.out.println(
"b");
  }
}
//测试
    public static void main(String[] args) {
        A ab = new B();
        ab = new B();
    }


 

我记得我的答案是:1a2b,结果回来问了一下朋友他说是1a2b2b

解析:(1)初始化父类的静态成员变量和静态代码块

   (2)初始化子类的静态成员变量和静态代码块

   (3)初始化父类的普通成员变量和构造代码块(按次序),再执行父类的构造方法

   (4)初始化子类的普通成员变量和构造代码块(按次序),再执行父类的构造方法

 所以在类加载时,执行父类的静态代码块,输出1,接下来执行子类的静态代码块,输出a,

  ①执行main函数中的第一句话:new B(); 此时需要注意在new子类之前先要去new父类,所以先执行父类的的构造代码块,输出2,再执行子类的构造代码块输出b

   第一句话执行完输出1a2b

  ②执行main函数中第二句话,值有new B();, 此时同第一步,先执行父类的构造器再执行子类的构造器,输出2b

  所以最终结果是1a2b2b

8、把编码为GB2312的字符串转成编码为ISO8859-1

 

 String name = "lala"

String str = new String(name.getBytes("GB2312"),"ISO8859-1");

9、怎么实现对象的克隆

  ①反射

  ②Object提供了clone()方法

10、写一个线程安全高效的单例模式

  懒汉式:

public class Test {
    public static void main(String[] args) {
        A.getA();
    }
}


class A{
    private static A a = null;
    static Object o = new Object();
    //私有化方法
    private A(){
        
    }
    //得到实例化对象的方法(此方法必须是静态的,因为不能new对象所以需要直接点方法出来)
    public static A getA(){
        //先判断对象是否为空
        if(a==null){
            synchronized(o){
                //二次判断是否为空,为了避免有漏网之鱼
                if(a==null){
                    a = new A();
                }
            }
        }
        return a;
    }
    
    
}

答案是懒汉式,补充一下饿汉式:

  

public class Test {
    public static void main(String[] args) {
        A.getA();
    }
}

class A{
    //先实例化唯一的对象,之后他的值就不能再变了,所以定义成final
    private final static A a = new A();
    private A(){
        
    }
    public static A getA(){
        return a;
    }
}

11、怎么优化sql

  ①创建必要索引

  ②使用PLSQL(可一次性执行多条sql语句)

  ③使用预编译查询

  ④

12、String和StringBuilder,StringBuffer的区别

  

原文地址:https://www.cnblogs.com/rgever/p/8545732.html