面试题整理 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