zoukankan      html  css  js  c++  java
  • 从面试官的角度看Java基础

          如题,今天刚刚面了几个开发,有工作5年的,有工作7年的。原以为Java基础会很扎实,结果大失所望,基础的线程知识都不甚了解。其实,对于中高级开发,java基础要求也是有的,起码得答个百分之九十。下面是一串关于多线程的面试问题,仅供参考:

          1、java创建多线程的方式?三种方式

          2、在项目中如何使用多线程?记住,不能回答上面的三种方式,会让人知道在项目中没有真正使用多线程。应该回答使用线程池。

          3、线程池都有哪几种创建方式?项目中使用哪种?

    有四种,应该清楚的回答出来。但是,要注意,项目中哪种都不使用

    a、newFixedThreadPool(int nThreads):创建一个固定长度的线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程规模将不再变化,当线程发生未预期的错误而结束时,线程池会补充一个新的线程。

    b、newCachedThreadPool():创建一个可缓存的线程池,如果线程池的规模超过了处理需求,将自动回收空闲线程,而当需求增加时,则可以自动添加新线程,线程池的规模不存在任何限制。

    c、newSingleThreadExecutor():这是一个单线程的 Executor,它创建单个工作线程来执行任务,如果这个线程异常结束,会创建一个新的来替代它;它的特点是能确保依照任务在队列中的顺序来串行执行。

    d、newScheduledThreadPool(int corePoolSize):创建一个固定长度的线程池,而且以延迟或定时的方式来执行任务。

           4、线程池的状态有哪几种?

           5、线程池的核心线程数目如何确定?为什么?

           上面这些问题只是冰山一角,如果对java基础一知半解,很容易掉入面试的陷阱中。当然,通过这种方式筛选面试者能不能胜任工作也很方便。

  • 相关阅读:
    MySQL体系结构
    Java线程池ThreadPoolExecuter:execute()原理
    Java Thread 如何处理未捕获的异常?
    SSL/TSL握手过程详解
    LockSupport HotSpot里park/unpark的实现
    JAVA 对象内存结构
    JAVA 线程状态转换
    Spring源码解析(四)Bean的实例化和依赖注入
    Spring源码解析(五)循环依赖问题
    Spring源码解析(三)BeanDefinition的载入、解析和注册
  • 原文地址:https://www.cnblogs.com/lizhaoE/p/14838867.html
Copyright © 2011-2022 走看看