zoukankan      html  css  js  c++  java
  • python面试总结复习(一)

    复习题链接:https://www.cnblogs.com/yzxing/p/10637270.html

    1.说说项目都用到了什么技术?

    熟悉自己简历写的项目涉及的知识点,做到能拓展

    2.mysql索引的种类

    从数据结构方面来说:
    hash索引,B+树索引
    
    从功能逻辑来说:
    主键索引(非空且唯一),
    唯一索引(数据唯一),
    普通索引(只是为了加快查询速度),
    全文索引(现在很少用,默认只支持英文检索,一般都是使用ES)
    
    从物理存储方面来说:
    聚集索引   (聚集索引的叶子节点存放的是索引和真实数据)
    非聚集索引   (非聚集索引的叶子节点存放的不是真实的数据,而是指向实际数据的指针)

    3.索引建多有什么不好?

    1.在更新表数据的时候会降低更新速度,因为在更新数据的同时,还需要去操作索引文件。
    2.创建索引的时候也会创建索引文件,占用过多磁盘空间

    4.mysql的引擎有什么(可以说一下存储引擎的索引实现)

    1.MySQL5.5版本之后默认的存储引擎是InnoDB
    2.MySQL5.5版本之前默认的存储引擎是MyISAM
    3.MEMORY存储引擎  数据是保存在内存中

    5.redis是单线程还是多线程的?

    是单线程
    原因:因为redis核心就是数据都是在内存中操作,使用单线程去操作效率就高。多线程是通过CPU去模拟出多个线程的情况,这样就存在上下文切换,效率会降低。
    
    https://www.cnblogs.com/blogtech/p/11742057.html 什么时候使用多线程呢? 处理一些慢速设备:磁盘等 处理方法:使用异步,将请求和处理的线程不绑定在一起,请求的线程将所有请求都放在一个地方,等请求快满了,处理请求的线程再去处理这些请求。统一的写入磁盘,或者读磁盘。

    https://blog.csdn.net/lch_2016/article/details/81078243
    为什么Redis执行速度快?
    1.因为绝大多数请求都是内存操作
    2.采用单线程,避免了不必要的上下文切换
    3.非阻塞IO-IO多路复用

    6.redis的持久化机制

    1.RDB
    2.AOF

    7.mongdb的数据存储结构是什么

    8.python 中的类是由什么创建的   (元类)

    9.怎么做并发编程

    10. python 的常量池是什么(小整数池)

    为了避免因创建相同的值而重复申请内存空间所带来的效率问题,python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象会被重复使用。

    11.Python 中的内存地址怎么不一样

    https://www.cnblogs.com/zhaoganggang/p/11309200.html

    12.django知识点

    13.python垃圾回收机制

    引用计数:当内存中的数据没有任何的变量名与其有绑定关系,那么就会被自动回收
    标记清除:当内存快要被某个应用程序占满的时候,会自动触发
    分代回收:根据值的存活时间的不同,化为不同的等级,等级越高的垃圾回收机制扫描的频率越低

    14.django的请求生命周期

    当用户在浏览器中输入url时,url先经过wsgi,再经过中间件,最后url到路由映射表进行匹配,匹配成功就执行对应的view视图函数。
    视图函数中利用ORM去操作数据库取出需要的数据,然后返回给视图函数,并且把取出的数据传递给Template模板,模板就是html文件,最后渲染给用户展示。

    15.GIL全局解释器锁

    在Cpython解释器才有GIL的概念,不是python的特点。
    python在设计的时候,还没有多核的概念。因此,为了设计方便与线程安全,直接设计了一个锁:GIL锁 在一个进程下,一次只能有一个线程执行,以此来保证数据的安全性。
    从这也可以看出,为多线程分配多个CPU,多个CPU也不会起作用,因为每次只能执行一个线程。所以python中的线程只能实现并发,不能实现真正的并行。

    互斥锁、死锁

    互斥锁:是一种简单的加锁方式来控制对共享资源的访问,用来保证每次只有一个线程访问资源,互斥锁只有两种状态,即上锁和解锁。
    死锁:指两个或两个以上进程或线程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力作用,他们都无法进行下去
    解决死锁方法使用递归锁:RLock,RLock可以被第一个抢到锁的人连续的加锁和释放锁,每加一次锁,锁计数加1,每释放一次锁,锁计数减1,只要锁的计数不为0,其他线程都只能等待

    16.docker和虚拟机的区别

    虚拟机是在硬件级别上进行虚拟化,而Docker是在操作系统的层面虚拟化;虚拟机通过开辟一块硬盘来搭建操作系统,而Docker则是复用操作系统;
    虚拟机实现了操作系统之间的隔离,Docker只是进程之间的隔离,所以虚拟机隔离级别更高、安全性方面也更强,但是Docker的运行速度很快。

    19.数据库的主从复制基于什么  (主从复制原理)

    1.主库将数据变动记录在日志文件中
    2.主库通过I/O线程将日志文件发送到从库中
    3.从库通过I/O线程把主库发送过来的日志拷贝到自己的日志文件中
    4.从库通过SQL线程,按照日志文件处理从库的数据
  • 相关阅读:
    前端性能优化-全链路质量监控体系建设
    前端性能优化-研发开发流程优化
    一次VLAN标签引发的网络事件的处置
    2001
    SpringBoot定时任务
    在el-dialog中使用ref找不到元素?
    el-table使用checkbox时,获取选中数据的id?
    SpringBoot邮件发送
    表单中el-select和el-input的长度不一致?
    element-ui如何修改el-dialog的样式?
  • 原文地址:https://www.cnblogs.com/wangcuican/p/12671508.html
Copyright © 2011-2022 走看看