有关于中通公司需要提交的面试题答案

有关于中通公司需要提交的面试题答案

1、如何构建自己的事件机制?
(1)编写事件处理类(事件监听者)
(2)根据需求给事件处理类实现监听接口
(3)在事件处理类中重写(实现),其事件处理函数
(4)在事件源类中指定该事件的监听器(响应者)是谁,即注册监听。
剩下的事情就是如何注册这些事件以及测试他们了。

2、Tomcat的工作原理?
假设来自客户的请求:http://localhost:8080/XXX/XXX_index.jsp,请求被发送到本机端口8080,被在那里侦听的 HTTP/1.1 Connector获得;
Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应。
Engine获得请求localhost/xxx/xxx_index.jsp,匹配它所拥有的所有虚拟主机Host,Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)。
localhost Host获得请求/xxx/xxxx_index.jsp,匹配它所拥有的所有Context,Host匹配到路径为/xxx的Context(如果匹配不到就把该请求交给路径名为"“的Context去处理)。
path=”/xxx"的Context获得请求/xxxx_index.jsp,在它的mapping table中寻找对应的servlet,Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类。
构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法,Context把执行完了之后的HttpServletResponse对象返回给Host;
Host把HttpServletResponse对象返回给Engine,Engine把HttpServletResponse对象返回给Connector,Connector把HttpServletResponse对象返回给客户browser。

3、对非Http通信协议或私有协议,一般解析的思路?
从报文的构成方式上讲,只有两种:
(1).基于文本的,例如xml和json;
(2).基于二进制的,常见的结构化的协议,例如protobuf生成的协议就是这种.
比如我们写的好多串口通信,比如485窜口通信,满足modbus协议取解析数据,一般都是
头+数据长度+数据正文+校验,比如:AA 44 05 01 02 03 04 05 EA
这里我假设的一条数据,协议如下:
数据头: AA 44
数据长度: 05
数据正文: 01 02 03 04 05
校验: EA
一般数据的校验,都会采用常用的方式,CRC16,CRC32,Xor。
有的数据安全要求高的,不允许丢包的,可能还要加入重发机制或是加入数据恢复算法,比如音视频控制协议RTCP,在校验后根据前面数据添加恢复字节流以恢复数据。我这里采用的是简单的异或校验,包含数据头的所有字节,依次异或得到的。按照分片分段的逐条协议处理。
一般的分步骤:
(1).按照队列缓存收到的部分数据。
(2).找到一条完整数据。比如首先在缓存的数据中找AA 44,当我们找到后,探测后面的字节,发现是05,然后看缓存剩下的数据是否足够,不足够就不用判断,减少时间消耗,如果剩余数据>=6个(包含1个字节的校验),我们就算一个校验,看和最后的校验是否一致。
(3).分析数据。把连续的字节(和变量长度一样)读取并转换为对应的变量。c++下使用memcpy,或直接类型转换后进行值拷贝。
(4).回调界面通知,比如利用kafka作为消息的发布和订阅处理。

4、Netty与SpringBoot的集成方式?
(1)在pom.xml中添加Netty依赖
(2)让SpringBoot的启动类实现CommandLineRunner接口并重写run方法
(3)创建Netty的相关类,配置类等
(4)application.yml文件中对于netty的一个配置。

5、Activiti工作流中,如果要实现根据工作负荷来安排任务,有什么思路?
我以前的公司用到了Activiti工作流,一般的话,把工作负荷分成N个组任务,比如工作8个小时,为A组,工作12个小时分为B组,工作16个小时为C组,按照组任务进行分配,有三种方式:
(1)、通过流程设计器直接给组任务创建任务人 但是这样分配组任务的办理人不够灵活,因为项目开发中任务的办理人不要放置XML文件中。
(2)、在任务节点使用流程变量来分配组任务处理。
(3)、设置任务监听,将组任务分配个人任务(认领任务)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值