阿里巴巴java高级工程师面试题

1. java中 hashcode相同, equal一定相同嘛

    答: 不一定,因为hashcode,equal方法可以重写

          

2 . 理解spring么,它的AOP实现是基于什么原理,bean的初始化过程是那些(涉及具体的源代码),在bean factory初始化前 ,运行中,初始化后想做些事情。该怎么做? 
     答: spring的AOP基于cglib,对代码做混淆。 bean初始化的时候,首先读取XML配置文件,解析完成Bean的组装,由BeanFactory组装生成Bean, 可以指定是单例或者new instance, 具体可以参看我以前的博文

      http://blog.csdn.net/nanjingjiangbiao/article/details/7173098

 

3 struts1和strus2的区别,strust2关于 ThredLocal是什么,strus2初始化部分的原理是什么。 
    答: 1是基于sevlert的MVC,2是基于filter。1中Action,Form分离, 2中合并在Action中。 1中Action是单例,非线程安全。 2中Action每个http request thread一个new instance.

         ThreadLocal是线程变量, 将该变量副本存入当前线程的栈中,从语法级实现线程隔离。


4. 多线程用过么?

     答: 不如问线程如何同步或者协同。 Java的异步包中提供, 同步阀。 线程之间通信, 一般可以通过共享变量做到。 如果大型的话, 可以用消费者生产者模式。 线程池, Java的异步包也提供API, 只需要将线程包装成FutureTask就可。


5关于jvm,它是什么样的结构?,他的Gc算法是什么,什么情况下会 out of memory? 

      答: 基于栈的编译器实现。 GC算法一般来说是回溯引用树,然后找到没有引用的节点,将其移入old gen, 这是 young GC, 在old gen已经全满的情况, 执行full gc。 out of memory发生在没有空间开辟内存, 不光出现在heap中, 方法区中也会。

6.连接池原理,连接池commit 后连接是否关闭。 

         答: JDBC协议本身定义了 con pool, WebApp初期化之后, 代码底层, 在当前JVM上创立一个ObjectMap, 每个Object中包装了对数据库的tcp连接,帐号密码等。

                 con pool一开始是空的, 当有新con 要求的时候, 才会在conn pool中增加object。 conn pool中的conn不会被关闭, 但过一段时间会进入休眠状态, 即钝化。

你可能感兴趣的:(阿里巴巴java高级工程师面试题)