武汉ios培训
达内武汉中心

15827352908

热门课程

java项目经验

  • 时间:2018-01-30 19:55
  • 发布:达内
  • 来源:互联网

    项目经验
    面试官在一开始会让你进行自我介绍,主要是想让你介绍一下自己做过的一些项目,看看你对这些项目的了解程度,因为很多人简历上写的项目并非都是从头到尾都参与的,有些只是参与并实现了其中的一些模块而已,或是接手维护别人的项目,所以在你简历上所写的和面试过程中所说的项目经验,你自己必须能够了解来龙去脉,因为面试官肯定会根据你的项目描述,对项目中的实现原理,或为什么要这样实现进行提问,这时不至于木讷住而不知如何作答,如此局面只会大大降低面试分。
    场景对话:
    面试官:(拿着简历)讲讲你最近做的这个项目
    我:&……%$#*&$@%$!,说了一大通(不知道面试官听进去多少,面试官会挑他会的进行提问)
    面试官:你说这个项目中用到了netty,能大概讲讲netty的线程模型么?

    我:(幸好我看过netty的源码)netty通过Reactor模型基于多路复用器接收并处理用户请求(能讲就多讲一点),内部实现了两个线程池,boss线程池和work线程池,其中boss线程池的线程负责处理请求的accept事件,当接收到accept事件的请求时,把对应的socket封装到一个NioSocketChannel中,并交给work线程池,其中work线程池负责请求的read和write事件(通过口述加画图的方式,把请求的执行过程大概描述了一遍,时间有限,也不可能把所有的细节都说完,挑重点讲,挑记忆深刻的讲)

武汉iOS培训

    面试官:嗯,理解的还挺深入的…那你在做这个项目时有没有遇到什么困难,或者是觉得有挑战的地方?
    我:(这时面试官想让你自己出题自己回答了,所以一定要回答,不回答就突显不出你这个项目了,要是这个问题没有准备过,只能临时发挥了,当然我就是属于临时发挥的)稍微想一下,因为之前确实碰到了这个问题,当时做这个项目时,对netty的不过熟悉,把请求的业务逻辑放在work线程池的线程中进行处理,进行压测的时候,发现qps总是上不去,后来看了源码之后才发现,由于业务逻辑的处理比较耗时,完全占用了work线程池的资源,导致新的请求一直处于等待状态。
    面试官:那最后是如何解决的?
    我:最后把处理业务的逻辑封装成一个task提交给一个新建的业务线程池中执行,执行完之后由work线程池执行请求的write事件。
    面试官:好的,你知道nio中selector可能触发bug么?
    我:嗯,对的,selector的select方法,因为底层的epoll函数可能会发生空转,从而导致cpu100%.
    面试官:那如何解决该问题?
    我:这个问题在netty已经解决了,通过&^%&$^(把netty的解决方案说一遍)
    面试官:嗯,对了,你们这个项目有给自己定指标么?
    我:有的,&&……$$##@,把自己项目的指标说了一通,如何进行AB实验,如何迭代优化指标
    面试官:嗯,好的 ,项目的问题先到这里,我们来考察一下java的基本点吧。

    如上只是本人所做的一个项目,当然了,具体项目具体分析,也不是每个面试官问的点都一样,如果面试官不懂netty,自然会挑别的问题进行提问,不过你也可以尝试着把问题往自己熟悉的方向去靠。

更多武汉iOS培训相关资讯,请扫描下方二维码

武汉iOS培训

上一篇:Jenkins安装和启动
下一篇:从黑莓手机(Blackberry)衰退中得到的借鉴

通过Facebook的Infer来改善你的Java开发工作流程

Java I/O 操作

Java新手问题集锦

在MacBook Pro上设置Java开发环境

选择城市和中心
贵州省

广西省

海南省