还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
mysql>
**设置全局事务隔离级别**
set global transaction isolation level 四种隔离; – 服务器只要不关闭一直有效
>
> **修改隔离级别后需要重启会话**
>
>
>
### 12.5 脏读
在并发情况下,一个事务读取到另一个事务没有提交的数据,**这个数据称之为脏数据,此次读取也称为脏读。**
只有`read uncommitted`(读未提交)的隔离级别才会引发脏读。
* 将MySQL的事务隔离级别设置为`read committed`(读已提交):
mysql> set global transaction isolation level read uncommitted;
Query OK, 0 rows affected (0.00 sec)
将数据还原:
![在这里插入图片描述](https://img-blog.csdnimg.cn/4afe46c06030420995a6b02aa7b44abf.png#pic_center)
#### 12.5.1 脏读演示
| session-01 | session-02 |
| --- | --- |
| begin; | |
| | begin; |
| select \* from account where name=‘a’; | |
| | update account set money=money-200 where name=‘a’; |
| select \* from account where name=‘a’; | |
| | rollback; |
观察变化:
![在这里插入图片描述](https://img-blog.csdnimg.cn/a83fac71eebe472d9ee543b05d43f1c4.png#pic_center)
#### 12.5.2 解决脏读
将全局的隔离级别进行提升
1. 打开命令行a,设置全局的隔离级别为read committed:
set global transaction isolation level read committed;
再次执行:
| session-01 | session-02 |
| --- | --- |
| begin; | |
| | begin; |
| select \* from account where name=‘a’; | |
| | update account set money=money-200 where name=‘a’; |
| select \* from account where name=‘a’; | |
| | rollback; |
观察变化:
![在这里插入图片描述](https://img-blog.csdnimg.cn/e07cddbd3bff474d922274511f673317.png#pic_center)
### 12.6 不可重复读
概念: 在同一个事务中的多次查询应该出现相同的结果,两次读取不能出现不同的结果。
#### 12.6.1 和脏读的区别:
**脏读是读取前一事务未提交的脏数据,不可重复读是重复读取了前一事务已提交的数据,但2次读取的结果不同。**
应用场景:比如银行程序需要将查询结果分别输出到电脑屏幕和写到文件中,结果在一个事务中针对输出的目的地,两次输出结果却不一致,导致文件和屏幕中的结果不同,银行工作人员就不知道以哪个为准了。
#### 12.6.2 不可重复读演示
1). 将数据进行恢复,并关闭窗口重新登录。
update account set money=1000;
| session-01 | session-02 |
| --- | --- |
| begin; | |
| | begin; |
| select \* from account where name=‘a’; | |
| | update account set money=money-200 where name=‘a’; |
| | commit; |
| select \* from account where name=‘a’; | |
观察变化:
![在这里插入图片描述](https://img-blog.csdnimg.cn/c8427d1b563e462fa9615c3ea350d0ad.png#pic_center)
>
> 两次查询输出的结果不同,到底哪次是对的?
>
>
>
#### 12.6.3 解决不可重复读
1)将数据进行恢复
update account set money=1000;
– 设置隔离级别为repeatable read
set global transaction isolation level repeatable read;
**记得要重启窗口**
| session-01 | session-02 |
| --- | --- |
| begin; | |
| | begin; |
| select \* from account where name=‘a’; | |
| | update account set money=money-200 where name=‘a’; |
| | commit; |
| select \* from account where name=‘a’; | |
观察变化:
![在这里插入图片描述](https://img-blog.csdnimg.cn/e6846618599a4ef395f204f0c4212949.png#pic_center)
结论:为了保存多次查询数据一致,必须使用`repeatable read`隔离级别
### 12.7 幻读
概念:一次事务多次读取到的条数不一致而引发的问题;
**在InnoDB(暂时理解是MySQL)中幻读在很多地方都得到了解决,但在一些特殊的情况下,还是会引发幻读问题;**
**为什么有的情况下能解决,有的情况下解决不了?因为一次事务多次读取到的条数不一致会导致有很多情况发生!**
#### 12.7.1 幻读解决情况1):
还原数据:
update account set money=1000;
– 设置隔离级别为repeatable read
set global transaction isolation level repeatable read;
>
> 记得重启客户端
>
>
>
| session-01 | session-02 |
| --- | --- |
| begin; | |
| | begin; |
| select \* from account; | |
| | insert into account values(3,‘c’,1000); |
| | commit; |
| select \* from account; | |
观察变化:
![在这里插入图片描述](https://img-blog.csdnimg.cn/b78cb50f19484a958545768229606eec.png#pic_center)
幻读问题得到解决
#### 12.7.2 幻读解决情况2):
还原数据
案例:
| session-01 | session-02 |
| --- | --- |
| begin; | |
| | begin; |
| select sum(money) from account; | |
| | insert into account values(3,‘c’,1000); |
| | commit; |
| select sum(money) from account; | |
观察变化:
![在这里插入图片描述](https://img-blog.csdnimg.cn/d831739768284e6396711fbc8feb479d.png#pic_center)
#### 12.7.3 幻读问题出现情况1):
还原数据
* 案例:
| session-01 | session-02 |
| --- | --- |
| begin; | |
| | begin; |
| select count(id) from account; | |
| | insert into account values(3,‘c’,1000); |
| | commit; |
| select count(id) from account; | |
| update account set money=0; | |
| select count(id) from account; | |
观察变化:
![在这里插入图片描述](https://img-blog.csdnimg.cn/ae8d99a21b5d4dddb9e2d0297a88d130.png#pic_center)
#### 12.7.3 特殊情况:
还原数据
* 案例:
| session-01 | session-02 |
| --- | --- |
| | begin; |
| begin; | |
| select \* from account; | |
| | select \* from account; |
| | insert into account values(3,“c”,1000); |
| | commit; |
| select \* from account; | |
| insert into account values(3,“c”,1000); | |
观察变化:
![在这里插入图片描述](https://img-blog.csdnimg.cn/59c1a709a6b144ada75f6c8fc8afd66e.png#pic_center)
>
> Tips:严格意义来说,上述案例是MySQL的**快照机制导致**的,不能算幻读;关于幻读我们理解概念就行,即:两次读取到的条数不一致!这就是幻读
>
>
>
### 12.9 串行化
#### 12.9.1 概念
想要彻底的解决幻读,那么我们必须再把隔离级别调高,数据库的最高隔离级别为串行化(serializable)
**串行化相当于锁表操作**,即一个事务如果操作了某张表(增加、删除、修改),那么就不允许其他任何事务操作此表,也不允许查询,等第一个事务提交或者回滚之后才可以操作,这样做效率及其低下,因此一般不会采用`serializable`隔离级别
* 示例图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200608094639284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JiMTUwNzAwNDc3NDg=,size_16,color_FFFFFF,t_70)
#### 12.9.2 串行化演示
1)开启一个银行窗口
– 还原数据
truncate account;
INSERT INTO account (name, money) VALUES (‘a’, 1000), (‘b’, 1000);
一、网安学习成长路线图
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网安视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
三、精品网安学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)
五、网络安全面试题
最后就是大家最关心的网络安全面试题板块
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!