CMDB项目要点之技术点(面试题)

1.单例模式

日志对象用单例模式
django admin中注册类是,用到单例模式

为什么要用单例模式

  • 同一个对象操作
  • 维护全局变量 + 对全局变量做一些操作
# __new__
import threading
class Singleton(object):
    instance = None
    def __init__(self, name):
        self,name = name
    lock = threading.Rlock()
    def __new__(cls, *args, **kwargs):
        if cls.instance:
            return cls.instance
        with lock:
            if not cls.instance:
                cls.instance = object.__new__(cls)
            return cls.instance
def task(i):
    s1 = Singleton(i)
    print(s1)
if __name__ == "__main__":
    for i in range(2):
        print(i)
        t1 = threading.Thread(traget=task, args=(i,))
        t1.start()

2.带参数的装饰器

def delay(sec):
    def wrapper(func):
        def inner(*args, **kwargs):
            time.sleep(sec)
            ret = func(*args, **kwargs)
            print("delay %d seconds to call %s" % (sec, func.__name__))
            return ret
        return inner
    return wrapper
@decorator(2)
def add(a, b):
    return a + b
add(1, 2)

out: delay 2 second to call add

3.为什么要做CMDB项目

1.CMDB是运维自动化项目,它可以减少人工干预,降低人员成本。
功能:自动装机、实时监控、自动化部署软件,建立在它们的基础上是资产信息变更记录(资产管控自动进行汇报)
2.
1)中控机
获取未采集资产信息的服务器(服务器主机名,密码),依赖于Paramiko(py模块)通过SSH方式去获取
优点:无Agent 缺点:速度慢
如果在服务器较少的情况下,可应用此方法
2)API
API提供相关处理的接口
3)后台管理
管理平台为用户提供可视化操作
3.
基于类的继承实现约束,开发程序设计为可插拔机制。(好处:扩展性强,基于工厂模式和反射实现)、线程池提高并发能力

4.进程线程协程的区别

进程,计算机中资源分配的最小单元
线程,计算机cpu调度的最小单位。
协程,又称“微线程”,在计算机中不是真实存在,而是程序员通过代码伪造出来的。
一个进程中可以有多个线程,一个线程中又可以创建多个协程,在cPython中还有一个GIL,全局解释器锁(同时刻一个进程中只有一个线程可以被cpu调度),由于GIL的存在,导致Python中:计算密集型用进程、IO密集型用线程(协程)

5.什么是HTTP?

超文本传输协议。
基于TCP协议之上创建一个协议,此协议为无状态的短连接,http可以通过两方面来解释:

  • 短连接,一次请求一次响应之后断开连接。
  • 数据传输格式:请求头和请求体之间通过两个\r\n分割,请求头和请求头之间通过一个\r\n分割
    浏览器输入url:wwwbai.com/index/
    socket.send("POST /index/ http1.1\r\n host:baidu.com\r\n\r\nuser="lucas"&age=18")
    浏览器接收到的数据
    “200 OK\r\n响应头\r\n\r\n响应体...”
    默认:80端口;明文传输。

6.什么是HTTPS?

对称加密,双方秘钥相同
非对称加密,公钥和私钥
三个阶段:
第一个阶段:对称秘钥
第二个阶段:公钥私钥
第三阶段:证书(阿里云免费)

posted @ 2021-02-03 15:02  kingdoms  阅读(222)  评论(0)    收藏  举报