zoukankan      html  css  js  c++  java
  • 来测试下你的JAVA编程能力

    上篇整理了下后面准备更系统化写的Java编程进阶的思路,如果仅看里面的词,很多同学会觉得都懂,但我真心觉得没有多少人是真懂的,所以简单的想了一些题目,感兴趣的同学们可以来做做看,看看自己的Java编程水平怎么样。

    懒得去做小程序了,所以大家就直接回复你的答案吧,我会来一一点评下,友情提醒下,有些题目有点坑。

    1. 基于BIO实现的Server端,当建立了100个连接时,会有多少个线程?如果基于NIO,又会是多少个线程? 为什么?

    2. 通常来说基于NIO实现的Server端,会用多少个线程去处理IO事件,为什么?

    3. 一个典型的客户端集群->LB->服务端集群这样的结构中,如客户端采用连接池,长连接的方式,这种设计你觉得可能会出现什么问题?如果客户端采用的是单个长连接的方式呢?如果有问题,你觉得应该怎么解决?

    4. cglib和Java的动态代理相比,具体有什么不同?

    5. 在基于Netty实现FrameDecoder时,下面两种代码的表现会有什么不同?

      第一种

      private void callDecode(...) {

             List<Object> results = new ArrayList<Object>();

             while (cumulation.readable()) { 

                   int oldReaderIndex = cumulation.readerIndex();

                   Object frame = decode(context, channel, cumulation); 

                   if (frame == null) { 

                        if (oldReaderIndex == cumulation.readerIndex())

                              break;

                        else

                             continue;

                  }

                 else if (oldReaderIndex == cumulation.readerIndex()) { 

                        throw new IllegalStateException( ".....");

                  }

                  results.add(frame);

           }

           if(results.size() > 0) 

               fireMessageReceived(context, remoteAddress, results);

      }

      第二种

      private void callDecode(...) {

             int oldReaderIndex = cumulation.readerIndex();

             Object frame = decode(context, channel, cumulation);

             if (frame != null)

                    fireMessageReceived(context, remoteAddress, frame);

      }

    6. 用Executors.newCachedThreadPool创建的线程池,在运行的过程中有可能产生的风险是?

    7. new ThreadPoolExecutor(10,100,10,TimeUnit.MILLISECONDS,new LinkedBlockingQueue(10));一个这样创建的线程池,当已经有10个任务在运行时,第11个任务提交到此线程池执行的时候会发生什么,为什么?

    8. 实现一个自定义的ThreadFactory的作用通常是?

    9. 除了用Object.wait和Object.notifyAll来实现线程间的交互外,你还会常用哪些来实现?

    10. 为什么ConcurrentHashMap可以在高并发的情况下比HashMap更为高效?

    11. AtomicInteger、AtomicBoolean这些类之所以在高并发时高效,共同的原因是?

    12. 请合理的使用Queue来实现一个高并发的生产/消费的场景,给些核心的代码片段。

    13. 请实现让10个任务同时并发启动,给些代码片段。

    14. 在Java程序运行阶段,可以用什么命令行工具来查看当前Java程序的一些启动参数值,例如Heap Size等。

    15. 用什么命令行工具可以查看运行的Java程序的GC状况,请具体写出命令行格式。

    16. 用什么工具,可以在Java程序运行的情况下跟踪某个方法的执行时间,请求参数信息等,并请解释下工具实现的原理。

    17. 当一个Java程序接收请求,很长时间都没响应的话,通常你会怎么去排查这种问题?

    18. Java进程突然消失了,你会怎么去排查这种问题?

    19. 以下这段代码思路,你觉得在运行时可能会产生的风险是,应该如何改进?

      public List<User> getUsers(String[] userIds){

             // 从数据库查找符合userIds的user记录

            //  将返回的记录组装为User对象,放入List并返回

      }

    20. 以下两种代码,在运行时有什么不同?为什么?

      第一种

      private static final boolean isLoggerDebugEnabled = log.isDebugEnabled();

      public void xx(User user){

           if(isLoggerDebugEnabled){

                log.debug("enter xx method, user id is: " + user.getId());

           }

      }

      第二种

      public void xx(User user){

           log.debug("enter xx method, user id is: " + user.getId());

      }

    21. Java程序为什么通常在刚启动的时候会执行的比较慢,而处理了一些请求后会变快,AOT能带来什么帮助?

    22. Parallel GC、CMS GC、ZGC、Azul Pauseless GC最主要的不同是?背后的原理也请简单描述下?

    23. 请写一段程序,让其运行时的表现为触发5次ygc,然后3次fgc,然后3次ygc,然后1次fgc,请给出代码以及启动参数。

    24. Go的Coroutine和Java的线程机制最主要的不同是?如果Java语言要透明的实现Coroutine,你觉得主要的难点是?

  • 相关阅读:
    [置顶] windows player,wzplayerV2 for windows
    wzplayer 近期将会支持BlackBerry和WinPhone8
    wzplayerEx for android(真正硬解接口,支持加密的 player)
    ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持
    ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持
    编译cegcc 0.59.1
    wzplayer 近期将会支持BlackBerry和WinPhone8
    wzplayerEx for android(真正硬解接口,支持加密的 player)
    windows player,wzplayerV2 for windows(20140416)更新
    编译cegcc 0.59.1
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/10430546.html
Copyright © 2011-2022 走看看