python面试内容

多任务:

  多进程、进程池(重复利用固定数量的进程,减少关闭、开启的开销资源和节约内存)

    进程: 进程是操作系统资源分配的最小单位

    进程独立的空间,直接可以使用队列进行通信,也可以使用文件、内存、redis等进行共享通信

    比较稳定、可利用多核、开销大

  多线程、线程池(重复利用固定数量的进程,减少关闭、开启的开销资源和节约内存)

    线程:是CPU调度的基本单位,程序 执行最小单元,一个进程至少一个主线程,可以多线程

    线程共享内存空间,会出现资源竞争问题,有GIL锁导致无法利用多核并行(无法真正意义上的并发),代码资源紧张可以通过加互斥锁防止

    死锁原因:两个程序互相等待对方释放锁,双方都没有释放导致程序僵持无法继续往下运行

    死锁解决:给锁加上合适的过期时间

    没有进程稳定,但比进程轻量级,切换开销小,占用资源少,共享资源方便

  协程:

    相当于单线程中,可以挂起的函数。函数遇到IO自动挂起(底层可能是函数有yield关键字,挂起),切换到别的任务继续运行,实现任务交替运行,开销极小

  进程包含线程 线程包含协程

 

  

迭代器和生成器:

  可迭代对象实现了可迭代协议即 实现 __iter__魔法方法的对象,可以使用for进行遍历

  https://www.bilibili.com/video/BV1ME411r7Yi?p=45&spm_id_from=pageDriver&vd_source=49946cc787bbea39e6937c5a2fb0eb8b

   迭代器:用于节省内存空间,可以生产数据的一个对象

   生成器: 特殊的迭代器,特殊的实现迭代器功能的方式

    1.把列表推导式改为元组,它就是生成器

    2.一个函数里使用yield关键字,就是生成器

    

闭包:函数嵌套,内部函数使用了外部函数的变量,外部函数返回内部函数

装饰器:不改变原函数的基础上,增加其他逻辑或功能,可以使用装饰器

深浅拷贝:

  浅拷贝 是指将对象第一层进行拷贝,其元素的地址引用仍然是指向被拷贝的 拷贝对象元素的修改会相当于被拷贝的数据

  深拷贝 是指将对象的所有层级都重新拷贝出来,其地址指向不再指向被拷贝对象 数据隔离,修改不受影响
  https://www.bilibili.com/video/BV1jT4y1G7AN/?spm_id_from=333.337.search-card.all.click

udp :不可靠的,不建立连接,直接发,不在乎对方是否已收到

tcp:面向连接的,可靠的,超时重发

三次握手、四次挥手:

  为什么是三次、四次?

    握手的第二第三部可以简化成一次,挥手不能简化

    

     因为close并不是立即调用,所以先快速响应,等调用close的时候再发一次比较合理

短连接:每次收发数据,都重新创建连接,重新执行三次握手、四次挥手过程

长连接:只建立一次连接,重复使用该连接,只经历一次三次握手、四次挥手过程

mysql数据库:

  事务

  索引

redis数据库:

  数据类型

   持久化方式

  数据一致性

  缓存击穿

  缓存穿透

  缓存雪崩

 

django:

  中间件

  rest_api

  异步框架

posted @ 2023-12-19 20:14  tan_ai_kang  阅读(26)  评论(0)    收藏  举报