美团点评2020校招运维方向笔试题(附答案)

文章目录

    • TCP为什么需要第三次握手?第三次握手失败了会怎么样
    • 请简述ssrf的原理、有哪些攻击方式及防御方法
    • OSPF(Open Shortest Path First)路由协议建立邻居的过程有那几个状态?
    • 假设现在只有三台笔记本,分别为PC1、PC2和PC3,其中每台笔记本都有1块有线网卡和一块无线网卡,在仅有1根网线的情况下,如何将三台笔记本电脑组到一个局域网中?请给出解题思路步骤。
    • 请简述操作系统分页式内存管理机制,并介绍下进程fork时对内存的copy on write实现原理
    • 编程
      • 无重复字符的最长子串
      • LRU缓存机制

TCP为什么需要第三次握手?第三次握手失败了会怎么样

https://blog.csdn.net/qq_40993864/article/details/89179156

为了防止已过期的链接再次传到被链接的主机,通俗的说就是两次握手不可靠。
第三次握手失败,会周期性超时重传.

请简述ssrf的原理、有哪些攻击方式及防御方法

原理:服务端请求伪造,就是说伪造服务端发起的请求从而获取客户端不能得到的数据.
攻击方式,防御方法:https://www.freebuf.com/articles/web/135342.html

OSPF(Open Shortest Path First)路由协议建立邻居的过程有那几个状态?

https://blog.csdn.net/qq_40993864/article/details/86546323

1、down state
2、init state
3、two-way state
4、exstart state
5、exchange state
6、loading state
7、full state

假设现在只有三台笔记本,分别为PC1、PC2和PC3,其中每台笔记本都有1块有线网卡和一块无线网卡,在仅有1根网线的情况下,如何将三台笔记本电脑组到一个局域网中?请给出解题思路步骤。

第一步:将其中一台笔记本(如PC2)的有线网卡和无线网卡做桥接;
第二步:PC1和PC2通过网线将有线网卡互联,PC2和PC3通过无线网卡互联;
第三步:将三台PC配置在同一个网段(比如192.168.1.0/24)。

请简述操作系统分页式内存管理机制,并介绍下进程fork时对内存的copy on write实现原理

https://www.cnblogs.com/edisonchou/p/5094066.html
将虚拟内存空间和物理内存空间皆划分为大小相同的页面,并以页面作为内存空间的最小分配单位,一个程序的一个页面可以存放在任意一个物理页面里。

简单来说,在复制一个对象时并不是真的在内存中把原来对象的数据复制一份到另外一个地址,而是在新对象的内存映射表中指向同原对象相同的位置,并且把那块 内存的 Copy-On-Write 位设为 1。在对这个对象执行读操作的时候,内存数据没有变动,直接执行就可以。在写的时候,才真正将原始对象复制一份到新的地址,修改新对象的内存映射表到这个 新的位置,然后往这里写。
fork 之后一般会跟一个 exec,将进程空间完全替换。因此在 fork 上采用 Copy-On-Write,会省去一次不必要的进程空间复制。

编程

无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

用一个map存储每一个数的次序+1,方便如果出现重复的数,则start从map对应的数值开始,时间复杂度O(n)~ 
#include
using namespace std;
int main(){
    string A;
    while(cin >> A){
        int size = A.length();
        int res = 0;
        unordered_map, int> map;
        for(int start = 0, end = 0; end < size; end++){
            if(map.count(A[end])){
                start = max(start, map[A[end]]);
            }
            map[A[end]] = end+1;
            res = max(res, end - start + 1);
        }
        cout << res << endl;
    }
    return 0;
}

LRU缓存机制

设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。

获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。
写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。

你可能感兴趣的:(运维)