面试题整理 2017

1. 在A,B,C字段上建了组合索引,查询时只用了字段A,或字段B,或字段A,B,这样会不会用到索引,能不能解释一下?

可以

2.Spring aop: 配置切面记录test方法的出入日志 demo如下:

public class test{

public void a()
{ b(); } public void b(){} public void c(){} }  

当调用 方法a(); 会记录 方法b的 方法的出入日志?

不会。

3.10亿 数字排序,space 100m  code ?

4. 类的加载顺序?

	public static void main(String[] args) {
		ClassLoader loader = Thread.currentThread().getContextClassLoader();
		System.out.println("current loader:"+loader);
		System.out.println("parent loader:"+loader.getParent());
		System.out.println("grandparent loader:"+loader.getParent(). getParent());
	}	     

结果如下:

current loader:sun.misc.Launcher$AppClassLoader@47858e
parent loader:sun.misc.Launcher$ExtClassLoader@19134f4
grandparent loader:null

  

简介如下:

(1)加载器介绍 
1)BootstrapClassLoader(启动类加载器) 
  负责加载$JAVA_HOME中jre/lib/rt.jar里所有的class,加载System.getProperty(“sun.boot.class.path”)所指定的路径或jar。 
2)ExtensionClassLoader(标准扩展类加载器) 
  负责加载java平台中扩展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目录下的jar包。载System.getProperty(“java.ext.dirs”)所指定的路径或jar。 
3)AppClassLoader(系统类加载器) 
  负责记载classpath中指定的jar包及目录中class 
4)CustomClassLoader(自定义加载器) 
  属于应用程序根据自身需要自定义的ClassLoader,如tomcat、jboss都会根据j2ee规范自行实现。

(2)类加载器的顺序 
1)加载过程中会先检查类是否被已加载,检查顺序是自底向上,从Custom ClassLoader到BootStrap ClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有ClassLoader加载一次。而加载的顺序是自顶向下,也就是由上层来逐层尝试加载此类。 
2)在加载类时,每个类加载器会将加载任务上交给其父,如果其父找不到,再由自己去加载。 
3)Bootstrap Loader(启动类加载器)是最顶级的类加载器了,其父加载器为null。

demo

public class Parent
{

    static
    {
        System.out.println("static Parent");
    }

    {
        System.out.println("common Parent");
    }
    
    public Parent()
    {
        System.out.println("Parent");
    }
    
    public static void test()
    {
        System.out.println("Parent test");
    }
    
    public Parent(String name)
    {
       System.out.println("apple " + name);
    }

}

  

public class Child extends Parent
{
    static
    {
        System.out.println("static Child");
    }

    {
        System.out.println("common Child");
    }
    public Child()
    {
        System.out.println("Child");
    }

    public Child(String name)
    {
        System.out.println("Child " + name);
        System.out.println();
        new Parent(name);
    }

    public static void test()
    {
        System.out.println("Child test");
    }
    public static void main(String[] args)
    {
       new Child("test");
    }
    
}

 结果:

static Parent
static Child
common Parent
Parent
common Child
Child test

common Parent
apple test

http://www.cnblogs.com/guoyuqiangf8/archive/2012/10/31/2748909.html

原文地址:https://www.cnblogs.com/xue88ming/p/7263491.html