MES面试问题整理

C#、Oracle、MES


一、当多个Client同时发送信息时,Server怎么保证信息不出错?Socket处理信息的方式?

1、进程同步和异步
同步

两个通信应用服务之间必须要进行同步且两个服务之间必须都是正常运行的。发送程序和接收程序都必须一直处于运行状态,并且随时做好相互通信的准备。发送程序首先向接收程序发起一个请求,称之为发送信息,发送程序紧接着就会堵塞当前自身的进程,不与其他应用进行任何的通信以及交互,等待接收程序的响应,待发送消息得到接收程序的返回消息之后会继续向下运行,进行下一步的业务处理,也就是说事情必须一件一件做,前一件做完了才能做下一件

异步

两个通信应用之间可以不用同时在线等待,任何一方只需各自处理自己的业务,比如发送消息以后不用等待接收方的响应,可以接着处理其他的任务。也就是说发送方和接收方都是相互独立存在的,发送方只管发送,接收方只能接收,不用等待对方的响应。

2、同步和异步传输
同步

同步传输通常以数据块为单位,每个数据块的开头和结尾都要附加一个特殊的字符或比特序列来标记一个数据块的开始和结束,一般还要附加一个校验序列(比如16或32位的CRC校验码),以便对数据块进行差错控制,同步传输指数据块和数据块之间的时间间隔是固定的,必须严格规定它们的时间关系。

异步

同步传输是以字符为传输单位,每个字符都要附加1位起始位和1位停止位,以标记一个字符的开始和结束,异步传输字符与字符之间的时间间隔是可变的,并不需要严格的限制它们的时间关系。异步传输又称为起止式异步通信方式,优点是简单、可靠,适用于面向字符的,低速的异步通信场合,但是它传输速度慢,开销也大。

3、同步阻塞和异步阻塞

同步是阻塞模式:发送方发出数据后,等待接收方发出响应后再发送下一个数据包的通信方式。
异步是非阻塞模式:发送方发出数据后,不等接收方发出响应,接着发送下个数据包的通信方式。

二、数据量很大,怎么优化查询卡的问题?

1、优化SQL语句,尽量避免全表扫描
首先应考虑在where和order by涉及的列上添加索引。
2、任何地方都不要使用select * from table
用具体的字段列表代替 “*”,不要返回用不到的任何字段。