网易2016研发工程师笔试题(二)
1.设有两个事务T1,T2,其并发操作如下所示,下面评价正确的是( 该操作丢失修改 )
步骤 T1 T2
1 读A=100
2 读A=100
3. A=A+10写回
4. A=A-10写回
解析:
不可重复读
不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:
事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。
事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。
事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。(这也叫做幻影读)
读"脏"数据
读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。
产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。
2.以下哪个不是与Mysql服务器相互作用的通讯协议(B) UDP
MySQL实现了四种通信协议
- TCP/IP协议,通常我们通过来连接MySQL,各种主要编程语言都是根据这个协议实现了连接模块
- Unix Socket协议,这个通常我们登入MySQL服务器中使用这个协议,因为要使用这个协议连接MySQL需要一个物理文件,文件的存放位置在配置文件中有定义,值得一提的是,这是所有协议中最高效的一个。
- Share Memory协议,这个协议一般人不知道,肯定也没用过,因为这个只有windows可以使用,使用这个协议需要在配置文件中在启动的时候使用–shared-memory参数,注意的是,使用此协议,一个host上只能有一个server,所以这个东西一般没啥用的,除非你怀疑其他协议不能正常工作,实际上微软的SQL Sever也支持这个协议
- Named Pipes协议,这个协议也是只有windows才可以用,同shared memory一样,使用此协议,一个host上依然只能有一个server,即使是使用不同的端口也不行,Named Pipes 是为局域网而开发的协议。内存的一部分被某个进程用来向另一个进程传递信息,因此一个进程的输出就是另一个进程的输入。第二个进程可以是本地的(与第一个进程位于同一台计算机上),也可以是远程的(位于联网的计算机上)。正因为如此,假如你的环境中没有或者禁用TCP/IP环境,而且是windows服务器,那么好歹你的数据库还能工作。使用这个协议需要在启动的时候添加–enable-named-pipe选项
3.
下面重载乘法运算符的函数原型声明中正确的是:
MyClass operator *(double ,MyClass);
MyClass operator *(MyClass ,MyClass);
MyClass operator *(double ,double);
MyClass operator *(MyClass ,double);
解析:c++中规定,重载运算符必须和用户定义的自定义类型的对象一起使用。
对于一个运算符函数来说,它或者是类的成员,或者至少包含一个类类型的参数;
操作符重载允许将标准C++操作符用于类对象;
操作符重载允许将标准C++操作符用于类对象;
4.
互联网的网络地址分为A~E五类,其中
A类地址:0.0.0.0 ~ 127.255.255.255
主机号是后24位
B类地址:128.0.0.0 ~ 191.255.255.255
主机号是后16位
C类地址:192.0.0.0 ~ 223.255.255.255
主机号是后8位
D类地址:224.0.0.0 ~ 239.255.255.255
后28位为多播组号
E类地址:240.0.0.0 ~ 255.255.255.255
后27位待用
所以,A错。
主机号全为0的时候,表示一个网段
主机号全为1的时候,是一个指向网络的广播。关于广播的具体分类请看TCP/IP卷一的第12章。
所以B代表一个网段。
C的话,参照TCP/IP详解卷一第三章 IP:网际协议的图3-3,代表了一个直接相连的网络。
D作为一个A类地址,是可以分配给一台计算机的。