先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
目录
19计算机院机试真题
计算机院的机试题真难,没有4A的,第四题的题目看了一下,好像是矩阵的,题目记不清了,如果你考计算机院也不建议你准备第四题。18年的第四题是动态规划,也是0A。今年网研的机试题比较简单,有不少4A的。
Problem A 二进制
题目描述
32位二进制数 X ,对其进行X+1,X+3操作,并输出。注意不能忽略前导0。
输入
第一行,一个整数 T ,代表测试数据组数。接着 T 行,输入32为二进制数输出对每组测试数据。
输出
两行,第一行为X+1,第二行为X+3.
测试样例
输入
2
00000000000000000000000000000000
00000000000000000000000000000001
输出
00000000000000000000000000000001
00000000000000000000000000000011
00000000000000000000000000000010
00000000000000000000000000000100
分析
这个比较容易,我就直接用的数组,模拟手算。还可以有更多方式,可以参考我的另一篇博客
c/c++进制转换方法汇总(含全部代码)
代码
#include<bits/stdc++.h>
using namespace std;
int ans[32];
string s1="00000000000000000000000000000001";
string s2="00000000000000000000000000000011";
//输出结果函数
void Print()
{
for(int i=0;i<32;i++)
{
cout<<ans[i];
}
cout<<endl;
}
//二进制加法函数
void Add(string a, string b)
{
int carry = 0;//进位
memset(ans,0,sizeof(ans));
for(int i = 31;i>=0;i--)
{
ans[i] = a[i]-'0'+b[i]-'0'+carry;
if(ans[i]>1)//需要进位
{
ans[i] = 0;
carry = 1;
}
else
carry = 0;
}
Print();
}
//主函数
int main()
{
int T;
string s;
cin>>T;
while(T--)
{
cin>>s;
Add(s,s1);
Add(s,s2);
}
return 0;
}
结果截图
Problem B 二叉树
题目描述
对二叉树,计算任意两个结点的最短路径长度。
输入
第一行输入测试数据组数 T
第二行输入 n , m 。 n 代表结点的个数, m 代表要查询的数据组数。
接下来 n 行,每行输入两个数,代表1~ n 结点的孩子结点,如果没有孩子结点则输入-1,根节点为1。
接下来 m 行,每行输入两个数,代表要查询的两个结点。
输出
每组测试数据输出 m 行,代表查询的两个结点之间的最短路径长度。
测试样例
输入
1
8 4
2 3
4 5
6 -1
-1 -1
-1 7
-1 -1
8 -1
-1 -1
1 6
4 6
4 5
8 1
输出
2
4
2
4
分析
第一感觉,最近公共祖先,可以用双亲表示法。后来想想,可以用图。
代码1(树)
/*
双亲表示法,记录父节点
记录高度
同等高度一起爬找祖先,相等即为最近公共祖先
*/
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e+5;
int high[maxn];//当前结点高度
int fa[maxn];//记录父节点
//初始化函数
void init()
{
fa[1]=0;//
memset(high,0,sizeof(high));
}
//打印
void print(int n)
{
cout<<"结点号"<<"\t"<<"父节点"<<"\t"<<"高度"<<endl;
for(int i=1;i<=n;i++)
{
cout<<i<<"\t"<<fa[i]<<"\t"<<high[i]<<endl;
}
}
//返回最短路径长度
int minlen(int x,int y)
{
int len=0;
int max,min;//记录深浅的两个结点
max = high[x]>high[y]? x:y;
min = high[x]>high[y]? y:x;
//深的结点回到与浅的结点同一高度
while(high[max]!=high[min])
{
max=fa[max];
++len;
}
//同时向上爬
while(max!=min)
{
len+=2;
max=fa[max];
min=fa[min];
}
return len;
}
//主函数
int main()
{
int T;
int n,m;
int x,y;
scanf("%d",&T);
while(T--)
{
init(); //初始化
scanf("%d %d",&n,&m); //读入结点数与查询数
for(int i=1;i<=n;i++) //建树
{
scanf("%d %d",&x,&y);
if(x!=-1)
{
fa[x]=i;
}
if(y!=-1)
{
fa[y]=i;
}
}
for(int i=1;i<=n;i++) //计算高度
{
int cur_node = i;
while(fa[cur_node]!=0)
{
high[i]++;
cur_node=fa[cur_node];
}
}
//print(n); //调试用
for(int i=0;i<m;i++) //读入查询
{
scanf("%d %d",&x,&y);
printf("%d\n",minlen(x,y));
}
}
return 0;
}
用例图
结点双亲表
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-FBZlGJGZ-1713288391772)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!