• python面试题


    1. 面试总结

    先把这个看了,总结的很全面
    https://www.cnblogs.com/JetpropelledSnake/p/9396511.html

    3. 零碎

    1. 类继承的super()原理
        Python中每一个类都有一个MRO列表,他代表了类的继承顺序,super会返回当前类index+1的类,然后按照此顺序分别去执行他们的方法,知道最后的base类
    2. 单例模式
      线程锁+__new__来实现
      __new__(cls,*args,**kwargs)中判断当前类是否有实例(cls.instance是否为真),没有就开线程锁,然后创建,有的话,就返回当前实例
    3. 类的常用方法及解释
      __dict__  以字典的格式返回实例的属性
      __call__ 使实例可以像函数一样加括号被调用,也可以传参数
      __new__ # 创建类时,先执行此方法,返回一个实例,再执行__init__
      __getitem__ 实例动态的获取属性的值
      __setitem__ 实例可以动态的添加属性
      __delitem__ 删除值
      __enter__ # 上下文管理,见4
      __exit__ # 上下文管理,见4
      __setattr__ 用于注册实例的属性,即
      __str__ print时会调用
      示例:
        __setitem__(self,key,value):
        __new__(cls,*args,**kwargs)

    4. 上下文管理实现机制
      调用__enter__返回一个文件对象
      执行完成之后自动调用__exit__,关闭文件
    5. Python2,3的区别
      主要区别,
      1. 编码问题:2是ascii编码,3是utf8编码。
      2. 整数除法问题:2的整数相除得到整数,3得到浮点数

    6. 垃圾回收机制与GRL锁
      垃圾回收机制:
      引用计数:
       变量值每被引用1次,计数加一,当引用计数为0时,变量值就会被解释器清除
       循环引用(引用计数存在的缺陷):两个列表相互引用,引用计数永远不为0
      标记清除:
       当内存达到一定程度时,Python程序停止运行,启动标记清除算法。
       先确定一个肯定不会被清除的变量,然后能够被他直接或间接访问到的标记为存活对象(不会被删除的变量,继续对其扫描),然后依次扫描,将不是存活对象的都清除掉
      分代回收:
       在经历多次扫描的情况下,都没有被回收的变量,认为它是常用变量,对其的扫描频率降低
       新生代:新定义的变量, 假设每5分钟扫描一次
      青春代:从新生代过来的变量, 假设10分钟扫描一次
      老年代:从青春代过来的变量,假设30分钟扫描一次

      GIL全局锁:
      GIL锁仅针对CPython解释器
        每个进程中的线程必须获得这个锁才能获得cpu等资源,然后执行,这导致了python同一进程下的线程不能使用多核同时执行

    8. 常用模块
    1. 爬虫相关:requests, BS4,selenium,
    2. 图片处理:pillow  
    3. 日历calendar,chinesecalendar
    4. 连接数据库:pymysql
    5. 数据分析包:numpy, pandas, matplotlib

    9. 对于Python的理解

    Python 是一种面向对象、解释型语言
    代码简洁,写起来很快,很多第三方包
    速度很慢

    10. 进程,线程,协程

    1. 线程锁
        python中有两种线程锁,Lock和Rlock,Lock不能多层嵌套,获取到一次,必须释放一次才能获取下一次锁。但是Rlock可以连续获取多次锁,然后只需多次释放锁即可
      单例模式,加线程锁
    2. 进程
      多进程时:windows中启动方式是spawn,系统会新开一个解释器,然后从主进程复制必要的资源(能够让进程启动的资源),主进程与子进程管理各自的资源,互不干扰。
          在linux中,开启一个子进程,子进程会复制几乎所有的主进程的资源
    ,主进程与子进程管理各自的资源,互不干扰

    11. 迭代器与生成器

    12. 数据结构

    13. 架构设计

    https://github.com/xitu/system-design-primer#additional-system-design-interview-questions

    14. mysql与pg的主要区别

    pg对于数据的准确性,一致性执行较好。
    mysql因为缺少上面的校验,性能较好
    pg是多进程,mysql是多线程
    pg支持json格式的存储
  • 相关阅读:
    TQ2440之DMA+IIS
    ST公司三轴加速度计LIS3DH应用
    TQ2440之PMW
    WinForm操作SQL Server数据库笔记
    DataRelation Learning
    SQL中join,left join,right join
    C#使用异步方式调用同步方法
    .Net Framework中的委托与事件转载
    Android site link
    【java】jdk时间差问题
  • 原文地址:https://www.cnblogs.com/JackShi/p/15902049.html
Copyright © 2020-2023  润新知