哈喽!大家好,我是小奇,一位酷爱分享的程序员
小奇打算以轻松风趣的对话形式来分享一些技术,如果你感觉通过小奇的文章学到了货色,那就给小奇一个赞吧
文章继续更新,能够微信搜寻【小奇JAVA面试】第一工夫浏览,回复【材料】更有我为大家筹备的福利哟!回复【我的项目】有我为大家筹备的一些我的项目源码。回复【简历模板】有我为大家筹备的简历模板。
@[TOC]
一、前言
书接上回,当初下着大雨看来是去不了镇上买熟食吃了,然而在家待着也没有意思,去找我表弟玩吧,看看他在家干啥呢?
表弟家离我家很近,走一条街再拐几个弯就到了,大中午的应该在家刚做完饭,正好蹭饭。
正要推开门发现门外面锁着呢,这大白天的锁着门干啥呢,敲了敲门。
我:有人在家吗?
表弟:谁呀?
我:我,你哥。
表弟:哦,那没有人在家,你回吧!
我:连忙给我开门,别墨迹。
我说怎么这小子不开门,躲家里啃鸡腿呢,就怕我饭点来。
表弟:哥你咋来了?
我:咋?我还不能来啊!
表弟:你不是去北京找工作去了吗,怎么这么快就回来了。
我:别提了,当初工作不好找。
表弟:那不行你就回来跟我一起养猪吧,我老是进来卖猪肉,家里猪下崽了我也不能及时发现,你在家就能给我看着了。
我:当初哪里还用人看着猪圈啊,都是摄像头了。
表弟:啥是摄像头呢,去哪里找呢?
我:走,我带你去村里看看墙上刚打的广告。
表弟:说的真对,我当初就买一个。
我:你买吧,我回家做饭去了,你这就一个鸡腿还让你啃成这样子了,我走了。
回到家中做一个大米汤吧,炒一个蒜苔鸡蛋,正炒着菜呢电话响了。
我:“喂您好”。
对面:“您好,请问是小奇吗”。
我:“是我,你是?”。
对面:“我是XXX公司的,我看到hr推给我你的简历,我感觉还不错,你什么时候不便来现场面试一下”。
我:“当初不不便现场面试了”。
对面:“好吧,那你当初不便吗?咱们当初线上面试一下吧”。
我:“好的”。
二、面试
面试官:我看你简历上写的精通Netty,那你能简略说一下Netty是什么吗?
我:Netty首先是一个java开源框架,他是一个提供了异步的、基于事件驱动的网络应用程序框架,所以说Netty就是一个网络应用框架,能够开发出高性能、高牢靠的网络服务器和客户端程序。
面试官:嗯。那Netty为什么可能开发出高性能、高牢靠的网络服务器呢,他为什么速度这么快呢?
我:这得益于Netty的线程模型的架构设计,使得Netty能够基于NIO的设计理念对线程模型基于改良,使得Netty在解决客户端申请连贯,和客户端申请数据处理的时候能够疾速的进行解决。
面试官:嗯。你能跟我剖析一下Netty的线程模型吗?
我:Netty模型中首先有这些属性概念。
BossGroup:相当于一个事件循环线程池,这个池中有多个事件循环线程。这个线程池是专门解决客户端的连贯事件的。
WorkerGroup:也是一个事件循环线程池,这个线程池是专门解决客户端的读写申请事件的。
NioEventLoop:这个就是事件循环线程,每一个事件循环线程都有一个selector用来监听事件。
NioSocketChannel:这个是在客户端与BossGroup中的一个事件循环线程建设连贯后生成的,将这个能够注册到WorkerGroup的一个事件循环线程上,让WorkerGroup的事件线程来解决后续的读写申请。
Pipeline:这个解决从WorkerGroup过去的数据,他蕴含很多ChannelHandler,这些是真正解决数据的。
ChannelHandler:真正用来解决数据的。
面试官:嗯。能够讲一下从客户端连贯到发送数据的整个流程吗?
1、客户端向BossGroup发动连贯申请,BossGroup中的NioEventLoop解决了连贯申请后生成一个NioSocketChannel。
2、BossGroup将NioSocketChannel注册到WorkerGroup中的一个NioEventLoop中的一个Selector上。至此BossGroup的工作实现,他接着解决其余客户端的连贯申请。
3、WorkerGroup循环监听注册在本人的Selector上的这些NioSocketChannel有没有读写的事件产生。
4、WorkerGroup监听到NioSocketChannel有读写事件产生就交给Pipeline解决。至此WorkerGroup工作实现,他持续解决其余客户端的读写事件。
5、Pipeline接管到WorkerGroup发送过去的数据,而后交给ChannelHandler进行解决。
面试官:嗯。那Netty为什么比传统的网络编程工具更放慢呢?
我:因为Netty将客户端的连贯申请和读写数据的申请离开用两个线程池来解决,这样大大提高了效率。
面试官:“小伙子不错呀,什么时候能回北京入职呢”
我:“额。。。等等吧,当初家里雨太大了,容易弄一身巧克力。”
面试官:“行,那你来了北京肯定来咱们公司下班啊”
我:“额。。。这个跟你承诺不了,万一还有别的好公司给我打电话呢”。
面试官:“来吧,条件好磋商”
我:“我思考思考吧”。
三、总结
这里的相干内容还没有整顿结束,文章前面继续更新,倡议珍藏。
文章中波及到的命令大家肯定要像我一样每个都敲几遍,只有在敲的过程中能力发现自己对命令是否真正的把握了。
如果感觉我的文章还不错的话就点个赞吧,另外能够微信搜寻【小奇JAVA面试】第一工夫浏览,回复【材料】更有我为大家筹备的福利哟!回复【我的项目】有我为大家筹备的一些我的项目源码。回复【简历模板】有我为大家筹备的简历模板。