笔试职位:web漏洞挖掘工程师
Ps:十几个岗位同一套试题(其实有A、B卷,但是只是题目顺序调换了一下而已),不知道360啥意思
笔试题目结构是40个选择题+两个主观题
题目涉及的知识面甚是宽广,包括逻辑推理(离散数学知识)、c++面向对象(继承、构造函数等)、操作系统(内存分页、进程线程等)、数据结构(根据任意两种遍历(先序、中序、后序)写出二叉树、完全二叉树叶子节点等)、计算机组层原理(有个什么数据线的题目,忘了)、网络协议基础(TCP连接分析),最后两个选择题一个是objective-c,另外一个是andriod数字签名~_~!!
主观题一、给了一段函数问有什么安全漏洞,怎么修复漏洞?
函数完整的记不起来了,ptr指向一个数组
...charbuf[120];gets(buf);strncpy(ptr,buf,8);...
看到这几句就明白了,属于内存溢出漏洞,对gets进来的buf未进行大小判断,便直接进行拷贝处理,容易超出ptr所指向数组所申请的地址大小,从而造成溢出。主观题二、给一个整数数组,求该数组中第二大的整数
/***Func:获取整数数组中第二大的整数*Date:-10-12**/#include<iostream>using namespace std;//定义个很小的数,int最小-32767const int MINNUMBER = -32767;int find_sec_max( int data[], int count){int maxnumber = data[0];int sec_max = MINNUMBER;for (int i = 1;i < count;i++){if ( data[i] > maxnumber ){sec_max = maxnumber;maxnumber = data[i];}else{if ( data[i] > sec_max )sec_max = data[i];}}return sec_max;}int main(){//测试int a[5]={1,2,3,8,5};int secNum;secNum = find_sec_max(a,5);cout << "第二大的整数为:" << secNum <<endl;return 0;}