数据库
- 如何理解数据库的事物.
- InnoDB如何设计和实现事物的?
- 一个事物提交的流程.
- 数据库脏读、不可重复读、幻读是什么?
网络
- socket recv()有几个返回值?你是如何处理的?各种返回情况?失败有什么原因?收发包的流程?
- tcp已经建立了连接, 拔掉网线在发送数据write报什么错? 这是一个什么样的失败? -1之后你怎么处理?tcp网线拔了再插上有什么问题(假设ip固定)?你的理由?那拔了过了很久再插上?
- tcp可靠性如何体现?
- tcp 四次挥手timewait出现在哪一方? 这个状态意味着什么?
- select epollo区别? select为什么是1024, 能不能改, 为什么?
- 系统(网络层)如何判断一个socket可读/可写?
- epollo事件触发有哪些模式?
- tcp缓存是如何设计的? 系统网卡方面.
Linux
- fork()返回值
- 父子进程的关系有什么特点? 他们共享哪些数据?
- 父进程不等待子进程退出发生什么?
- 如何避免产生僵尸进程(除了父进程等待, 主进程需要干活的情况)? 有没有一劳永逸的方法?
- 进程间通信方式有什么? 共享内存原理?两个进程怎么做同步互斥? 怎么加锁? 用什么锁? 不同进程锁在哪里? 进程级别的锁怎么写? 锁机制是什么? 除了锁还有其方式做同步互斥吗? 文件锁了解过吗?
- 文件系统如何通过文件名找到这个文件?
- open()返回的fd是什么含义? 如何通过fd找到文件?
答案:
数据库
-
如何理解数据库的事物.
事务的产生,其实是为了当应用程序访问数据库的时候,事务能够简化我们的编程模型,不需要我们去考虑各种各样的潜在错误和并发问题.可以想一下当我们使用事务时,要么提交,要么回滚,我们不会去考虑网络异常了,服务器宕机了,同时更改一个数据怎么办对吧?因此事务本质上是为了应用层服务的.而不是伴随着数据库系统天生就有的.
事物的特点: 原子性,一致性,隔离性,持久性 -
InnoDB如何实现事物的?
事务隔离性由锁实现,原子性、一致性和持久性由数据库的redo log和undo log。redo log称为重做日志,用来保证事务的原子性和持久性,恢复提交事务修改的页操作。 -
一个事物提交的流程.
然后: redolog, binlog… -
数据库脏读、不可重复读、幻读是什么?
【数据库】快速理解脏读、不可重复读、幻读
网络
-
socket recv()有几个返回值?
*重要: 深入理解socket中的recv函数和send函数
recv( )函数返回值说明
recv函数
socket的read和recv函数的区别 -
tcp已经建立了连接, 拔掉网线在发送数据send报什么错? 这是一个什么样的失败? -1之后你怎么处理?tcp网线拔了再插上有什么问题(假设ip固定)?你的理由?那拔了过了很久再插上?
send直接返回成功拷贝进内核发送缓冲区成功的字节大小.
网络断开send会返回SOCKET_ERROR错误. send()百度百科
TCP服务器如何判断客户端Socket断开连接
拔掉网线再插上没有影响. -
tcp可靠性如何体现?
校验和, 序列号, 确认应答, 超时重发, 拥塞控制… -
tcp 四次挥手timewait出现在哪一方? 这个状态意味着什么?
主动关闭方. 意味着需要等待最后的报文成功到达对端. -
select epollo区别? select为什么是1024, 能不能改, 为什么?
… , 内核决定, 不能轻易改. -
系统(网络层)如何判断一个socket可读/可写?
socket可读,可写的条件 -
epollo事件触发有哪些模式?
LT ET… -
tcp缓存是如何设计的? 系统网卡方面.
发送和接收各有一个缓冲区
Linux
-
fork()返回值
>0 , == 0, < 0 -
父子进程的关系有什么特点? 他们共享哪些数据?
共享虚拟地址空间 -
父进程不等待子进程退出发生什么?
子进程变为僵尸进程. -
如何避免产生僵尸进程(除了父进程等待, 主进程需要干活的情况)? 有没有一劳永逸的方法?
linux下避免僵尸进程的几种方法 -
进程间通信方式有什么? 共享内存原理?两个进程怎么做同步互斥? 怎么加锁? 用什么锁? 不同进程锁在哪里? 进程级别的锁怎么写? 锁机制是什么? 除了锁还有其方式做同步互斥吗? 文件锁了解过吗?
…; …; 使用pthread加锁; bilibili: Linux服务器开发二-系统编程 115;
文件锁: 文件锁的使用浅析 -
文件系统如何通过文件名找到这个文件?
-
open()返回的fd是什么含义? 如何通过fd找到文件?
彻底弄懂 Linux 下的文件描述符(fd)