每天一套面试题-Day41-八股高频(22)
101.谈谈 SQL 注入及防范
允许攻击者将恶意的 SQL 代码插入到输入字段中,以操纵数据库。 核心原因:程序将用户输入的数据未经充分检查或处理,直接拼接到SQL语句中。
预编译(参数化查询),用户输入始终视为 字符串/数字,而非可执行代码。 MyBatis:务必使用 #{} 语法(参数化查询),禁止使用 ${}(字符串替换,等同于拼接)。
最小权限原则 应用程序连接数据库的账户不应使用root或管理员账号。 根据操作需求,授予该账户最小必要的权限(例如,只读应用就只给 SELECT 权限)。这样即使被注入,损害也有限。
102.说说线程的生命周期和状态?
103.流量控制和拥塞控制的步骤?流量控制和拥塞控制的步骤?
流量控制保护接收方,拥塞控制保护网络;
流量控制靠 接收窗口(rwnd),拥塞控制靠 (cwnd)拥塞窗口 及其四阶段算法 最终的发送窗口 = min(rwnd, cwnd)
接收端在三次握手或每次 ACK 中,将当前可用缓冲大小 (rwnd) 通知发送端。发送端计算可用窗口:min(rwnd, cwnd),只要已发送但还未收到ACK确认字节数 < (Win)当前发送窗口,就可继续发送。发送端发完报文后,将其置入'已发送未ACK队列。接收端收到数据后,释放缓冲并更新 rwnd = BufferSize - 已占用,发送端收到新ACK,滑动发送窗口,继续发送。
一个典型Reno流程如下: 连接开始: cwnd = 1, ssthresh 为一个较大值(如65535字节)。 慢启动: cwnd 指数增长。
达到阈值: 当 cwnd >= ssthresh(慢启动阈值),进入拥塞避免,cwnd 线性增长。
检测到拥塞(包丢失): 情况A(超时): 网络拥塞严重。ssthresh = cwnd/2, cwnd = 1,回到第2步(慢启动)。
情况B(3个重复ACK): 触发快重传和快恢复。三个重复ACK意味着网络还有一定的传输能力(至少还能传送重复的ACK),所以网络并不完全拥塞,只是个别报文段丢失。 ssthresh = cwnd / 2 cwnd = ssthresh + 3 重传丢失的包。 收到新数据的ACK后,cwnd = ssthresh,进入第3步(拥塞避免)。 ———————————————— 版权声明:本文为CSDN博主「Arva .」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/2301_80096362/article/details/154695792
记录刷过的面试真题


