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基础一知半解,很容易掉入面试的陷阱中。当然,通过这种方式筛选面试者能不能胜任工作也很方便。

  • 相关阅读:
    bzoj 1176 cdq分治套树状数组
    Codeforces 669E cdq分治
    Codeforces 1101D 点分治
    Codeforces 1100E 拓扑排序
    Codeforces 1188D Make Equal DP
    Codeforces 1188A 构造
    Codeforces 1188B 式子转化
    Codeforces 1188C DP 鸽巢原理
    Codeforces 1179D 树形DP 斜率优化
    git commit -m "XX"报错 pre -commit hook failed (add --no-verify to bypass)问题
  • 原文地址:https://www.cnblogs.com/lizhaoE/p/14838867.html
Copyright © 2011-2022 走看看