超细面试(妖魔鬼怪无处遁形,面试用时一个半小时)

梦想的初衷 提交于 2019-12-05 17:39:07
  • 请画出线程的生命周期,并列出创建线程的方式

    线程的5种状态:新建(New),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)
    
    创建方式:继承Thread  实现Runnable   实现Callable  使用Executors问题来了:  1. sleep结束后进入什么状态?  2. Runnable和Callable的区别?  3. FutureTask是什么  4. Executors创建的几种线程池? ThreadPoolExecutor的参数?  

     

  • 请描述Synchuronized关键字,列出他常用锁。 请描叙一下Volatile和Synchronized的区别。
      Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现
    
      ReentrantLock   区别:
    • volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
    • volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的
    • volatile仅能实现变量的修改可见性,不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性
    • volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
    • volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化

     

      问题延伸:

       ReentrantLock 和 Synchuronized有什么区别?

     

     

  • spring中bean的生命周期和作用域
        Spring Bean 生命周期比较复杂,可以分为创建和销毁两个过程,详情自行百度。

  

 

 

  •   spring注解@Autowired,@Resource,@Qualifier
    @Autowired采取的策略为按照类型注入(ByType)。
      public class UserService {
        @Autowired
        private UserDao userDao; 
    }
    当一个类型有多个bean值的时候,会造成无法选择具体注入哪一个的情况,这个时候我们需要配合着@Qualifier使用。@Qualifier告诉spring具体去装配哪个对象。
    public class UserService {
        @Autowired
        @Qualifier(name="userDao1")    
        private UserDao userDao; 
    }
    @Resource默认按照ByName自动注入。
    public class UserService {
        @Resource  
        private UserDao userDao; 
        @Resource(name="studentDao")  
        private StudentDao studentDao; 
        @Resource(type="TeacherDao")  
        private TeacherDao teacherDao; 
        @Resource(name="manDao",type="ManDao")  
        private ManDao manDao; 
    } 

      ①如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。

      ②如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。

      ③如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。

      ④如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。

    
    

     

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!