嗯 – 已更新 – 有错望请指正.
刚才我女朋友还说…我可以去开直播讲怎么写代码了…不过首先 – 自己很渣,每次抽的题目都好简单 – 估计你们都是一道难题一道简单题,或者两道难题…然而我每次都是两道简单题,哈哈哈。然后面试碰到的面试官人也好好…
能AC全靠运气 —— 就是这句话:我靠!程序能跑已经是运气不错了好么,有点小BUG不影响使用可以的好么,不知道改一个BUG会出现两个新BUG吗!
嗯 – 还是靠多刷题吧…
这里记录了几个选择题 – 然后还有编程题。先看题目吧:
ping命令的最大数据包大小 – 65500
PCB进程环境块 – 不解释
DNS用到的传输层协议 – 当客户端发出DNS查询请求,从服务器收到的响应报文中的TC(删减标志)比特被置为1时,表示应答总长度超过512字节,只返回前512个字节,这时DNS就需要使用TCP重发原来的查询请求。因为在UDP的应用程序中,其应用程序被限制在512个字节或更小,因此DNS报文穿数据流只能有512字节,而TCP能将用户的数据流分为一些报文段,因此TCP就能用多个报文段去传超过512字节的数据流或是任意长度的数据流。
dns可能属于tcp或udp,那么它采用的传输层的协议号可能是6或17,要具体分析
trace route的工作原理——这是一个简单的追踪路由程序,利用它可以测定从本机到目标主机,到底经过了多少路由器的中转,每个路由器的IP地址是多少,网络连接的传输速度和响应时间等信息.并且提供了图表功能,可以直观地了解IP转发情况.一旦网络连接出现故障,你就能用它快速诊断出故障究竟在什么位置.
中缀表达式A+5*(6-C)/D的后缀表达式 – A56C-*D/+
一个数组A[1…5][1…6] ,起始地址1000,元素大小3,问A[3][4]的地址 – 1045
拓扑排序:<a,b><a,c><b,c><c,e><d,e>求它的拓扑序列…这个画图即可
然后1,2,3…n进栈,输出X1,X2,X3…Xn,如果X1 = n,问Xi的值… Xi = n-i+1
这些题目都很基础的…
有一道选择题纠结至今…题目如下:
下列函数的功能是找出p所指向的含有n个元素的数组中的最大值,请为横线处选择合适的程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int f(int *p, int n) { int t = *p; int *q = p + 1; for( ; q < p+n; ) { if(______ > t) { t = *q; } } return (t); } |
A: *q
B: *(++q)
C: q
D: *q++
反正我不知道哪个是对的,于是就把题目抄下来了。
第一个第三个肯定是错的 – 第二个第四个存在的问题就是,漏判了数据呀…
两张图 – 不同的地方就是填空哪里,我应该没敲错的…很明显结果不对。这题就没有正确答案。
还有这道题 – 我学长下来跟我讨论的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int a[] = {3, 4}, b[] = {5, 6}; struct st { int num; int *p; }s[2] = {100, b, 200, a}, *q = s; int main() { printf("%d,%d,%d",*q->p, ++q->num, (q++)->num); } |
A: 6201200
B:5200200
C:5101100
D:6101100
我表示 – 无言以对….这题我真不会做呀
然后是编程题:
奇虎360 2017校园招聘 技术综合I 在线考试
编程题 | 30分 1/2
密码锁
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
作为一名新手特工,小B接受了大量的秘密间谍训练。
检验她学业成就的时刻到了,她被派到一个基地去执行一项秘密任务,窃取该基地中一个尖端工艺的设计流程。
经过一系列惊险的过程,小B已经成功的抵达了目标区域。
遗憾的是,目标区域高墙围挡,墙上还有电网和红外安保机制,她发现只能通过大门进入。
好在她已经成功的接近了大门,成功正在向她招手。
大门是无人值守的,由电子密码组合锁控制。
几分钟前,她发现一名工作人员在终端上输入过密码,并打开了门进入其中。
电子密码锁是一个方形的3×3数字键盘,上面有从1到9的数字按键。
小B推测密码是由不同的字符构成,且是沿按键中心对称的。
她的热传感器能够探测上次按键的余温。
她希望验证一下密码是否是沿按键中心对称,这样就可以极大的减少她尝试的次数,你能帮她吗?
输入
输入中有多组测试数据。
每组测试数据由3×3的矩阵构成,其中“X”表示按下的按键,“.” 表示未按下的按键。
矩阵中可能不包含“X”,也可能没有“.”。
输出
对每组测试数据,在单独的行中输出结果,
若密码是沿中心对称的,输出YES,否则输出NO。
样例输入
XX.
…
.XX
X.X
X..
…
样例输出
YES
NO
SoEazy…
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include <iostream> using namespace std; char str[4][4]; int Pan() { if(str[0][0] != str[2][2])return 0; if(str[0][1] != str[2][1])return 0; if(str[0][2] != str[2][0])return 0; if(str[1][0] != str[1][2])return 0; return 1; } int main() { //freopen("input.txt", "r", stdin); while(cin >> str[0]) { cin >> str[1]; cin >> str[2]; if(Pan()) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; } |
奇虎360 2017校园招聘 技术综合I 在线考试
编程题 | 40分 2/2
病毒
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
小B最近对破解和程序攻击产生了兴趣,她迷上了病毒,然后可怕的事情就发生了。
不知道什么原因,可能是小B的技术水平还不够高,小B编写的病毒程序在攻击一个服务器时出现了问题。
尽管成功的侵入了服务器,但并没有按照期望的方式发挥作用。
小B的目的很简单:控制服务器的内存区域,试图在内存中装入从1到n之间的n个自然数,以覆盖内存区域。
可能是小B对编程理解上的问题,病毒似乎没有完全成功。
可能是由于保护机制的原因,内存写入只接受二进制的形式,所以十进制表达中除0和1之外的其他值都没有成功写入内存。
小B希望知道,究竟有多少数成功的写入了服务器的内存!
输入
输入中有多组测试数据。每组测试数据在单独的一行中,为整数n(1<=n <=10^9)。
输出
对每组测试数据,在单独的行中输出问题的答案。
样例输入
10
20
样例输出
2
3
Hint
对应n=10,成功写入的值为1和10。
思路如下:我采用的是生成类似雷格码的数据-然后排序:
1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | …… |
最前面加上0,是不是和格雷码很像。注意-最后是要排序的….
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include <iostream> #include <vector> #include <algorithm> using namespace std; typedef long long LL; vector <LL> vi; void Add(LL begin) { LL num = begin*10; if(num < 1e9) { vi.push_back(num+0); vi.push_back(num+1); Add(num+0); Add(num+1); } } int main() { vi.clear(); vi.push_back(1); Add(1); vi.push_back(1e9); sort(vi.begin(),vi.end()); LL n; while(cin >> n) { int count = 0; for(LL i=0; i < vi.size() && vi[i] <= n; i++) { count++; } cout << count << endl; } return 0; } |
如有问题 – 可以给我留言,如果有错误,请指正。