以下内容由原面试题 PDF 整理为网页存档,题目本身未附答案。
0x00|个人简历
请准备一份个人简历。
0x01|程序分析
分析以下程序:
#include <stdio.h>
int main()
{
unsigned int a, b, c, d, e, f;
a = 876543210;
b = 876543210;
c = 876543210;
d = 876543210;
e = 876543210;
f = a + b + c + d + e;
printf("a + b + c + d + e = %u", f);
return 0;
}
0x02|程序分析
分析以下程序:
#include <stdio.h>
int main()
{
char a = 0b01010101;
char b = 0b10101010;
char c;
c = a ^ b + 0b10000101;
printf("a ^ b = %c\n", c);
printf("a ^ b = %d\n", c);
return 0;
}
0x03|变异水仙花数
编写一个程序:
- 实现一个子函数,用来判断输入的数是否是变异水仙花数。
- 在主函数中输入数字
n,调用子函数判断并输出1至n(包括1和n)内的所有变异水仙花数。n最大为 10 亿。
0x04|十进制转二进制
使用 C 语言编写程序,实现将任意十进制数 n 转换为二进制,n 为 int 型数据。
输入输出示例:
输入:10
输出:1010
0x05|程序分析
分析以下程序:
#include <stdio.h>
#include <stdbool.h>
int main()
{
int a = 2;
int b = 3;
bool c = ((a - 1) && b--) + a;
if (c == 3)
printf("Hello\n");
else
printf("ZYPC\n");
return 0;
}
0x06|输出 Congratulate
分析以下程序,并设法使其输出 Congratulate。此程序需要在 Linux 环境下编译运行。
#include <stdio.h>
#include <string.h>
int main()
{
char a[0x8] = {0};
char b[0x8] = {0};
const char s[] = "hahaha";
printf(
"hello,there is a gift for you:\n"
"a = %p\n"
"b = %p\n"
"Now,do what you want to do:\n",
a,
b
);
gets(a);
if (!strncmp(b, s, 6))
printf("Congratulate\n");
return 0;
}
0x07|修改字符串
在源码中修改 s2,使程序运行后输出 Congradulate!。
#include <stdio.h>
#include <string.h>
int main()
{
char s1[50] = "hahaha";
char s2[50] = ""; // example: char s2[50] = "abcdef";
char s3[2] = "h";
int i, a, b;
for (i = 0; i < strlen(s2); i++)
{
a = s2[i];
b = s3[0];
if (a == b)
return printf("Sorry");
}
if (!strncmp(s2, s1, i))
printf("Congradulate!");
else
printf("Sorry\n");
return 0;
}
0x08|变量变化
分析以下程序,判断变量 i 的变化:
#include <stdio.h>
int main()
{
int n = 2, i = 9999;
while (1)
switch (n--)
{
case 0:
printf("emmm...\n");
return 0;
case 1:
i /= 10;
break;
case 2:
if (i == 9999)
n += 2;
break;
case 3:
n = 1;
case 4:
i = i >> 8;
}
return 0;
}
0x09|选择题
分析以下程序,选择正确的选项:
#include <stdio.h>
int main()
{
char s1[20] = "abcdefghijk";
char *s2 = &s1[5];
char *s3 = NULL;
char *s4 = "x";
char *temp = NULL;
s2++;
s3 = ++s2;
*s3 = *s4;
temp = s2 + 1;
*(s2 + 1) = *(s2 - 1);
*(s2 - 1) = *(temp);
puts(s2 - 4);
return 0;
}
- A.
defgxijk - B.
cdefgxij - C.
defixgjk - D.
defgxgjk - E.
cdefixgj - F.
cdefghij
0x0A|主观题
请从下面的问题中任选五道作答:
- 浅谈一下你对网络安全的理解。
- 浅谈一下你对 CTF、渗透测试的认识。
- 什么是编译型语言,什么是解释型语言,两者有何区别,C 语言是何种语言?
- 你还了解什么语言,它们有什么特点?
- 日常生活中有哪些现象与网络安全相关,它们分别和哪方面有关?
- 假设你遇到网络安全相关问题,你将如何辨别以及应对?
- 什么是白盒,什么是黑盒,什么是灰盒,什么是沙盒?
- 第 7 题中的四种情况分别对应什么场景?
- 浅谈一下 Web 安全和二进制安全。
- 说说你目前了解的网络安全漏洞或计算机病毒,并浅谈其原理。
