码迷,mamicode.com
首页 > 其他好文 > 详细

面试题

时间:2020-04-06 20:57:12      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:元组   nal   文件的   list   code   标记   https   线程   异步编程   

python基础

  • 常见数据结构
    • 线性结构:list/tuple,array/collections.namedtuple

    • 链式结构:-----------,collections.deque(双端队列)-

    • 字典结构:dict,collections.Counter/OrderedDict

    • 集合结构:set/frozenset,-----------

    • 排序算法:sorted,----------

    • 二分算法:-----------,bisect

    • 堆算法:--------,heapq

    • 缓存算法:-----------,functools.lru_cache(左边代表内置,右边代表第三方)

  • 内置结构常用方法
  • python内置数据类型注意点:
    • 元组不可变指的是保存的数据引用不可变,比如列表套元组,列表可以改变
    • 字典底层是hash表实现,复杂度是O(1)
  • python内存管理
    • 引用计数:引用数为0时,清除
    • 标记清除,是解决循环引用,从根对象可以到达的每个对象,不可达到的就清除
    • 分代回收:对象生命周期分为0,1,2代 ,每隔一段时间对从第代开始进行标记清除
  • python常用标准库?
    • 综合:re,json,pickle,math,hmac,hashlib,random,logging,pytest
    • 异步编程:threading,multiprocessing,gevent,asyncio
    • 网络:urllib,socket,http,aiohttp,request
    • 文件,系统:os,sys,io
    • 函数式编程:itertools,functools
  • 第三方库?
  • GIL(全局解释器锁)
    • 是由于cpython解释器造成的
    • 每个线程在执行过程中都需要先获取GIL,保证同一时刻只有一个线程执行代码
    • 什么情况会释放锁:在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL
  • 深浅拷贝
    • 深拷贝(copy.deepcopy):对于一个对象递归拷贝,只有所有嵌套层全为不可变数据类型才指向,否则一律拷贝
    • 浅拷贝:对于可变数据类型,顶层拷贝,内部指向;对于不可变数据类型,全部指向;切片和赋值都属于浅拷贝
  •  with打开文件的时候帮我们做了什么?
    • with是一种上下文管理协议,帮我们实现了try,except,finally和资源释放的代码,简化处理流程
    • 上下文管理器就是实现来__enter__和__exit__两个魔法方法的对象都可以叫上下文管理器,还可以用contextlib中的contextmanager来实现
    • from contextlib import contextmanager
      
      @contextmanager
      def my_open(path, mode):
          f = open(path, mode)
          yield f
          f.close()
  • os模块常用方法?

  • sys模块常用方法?

  • python解释器种类以及相关特点?

  • 什么是PEP8?

  • python之禅?

  • 了解docstring吗?

  • 了解类型注解吗?

  • python命名规范?更多规范可以参考(https://www.cnblogs.com/kilometerwine/p/9650154.html

    • 由数字字母下划线组成

    • 不能以数字开头,最好别以下划线开头(因为有可能和关键字重复)

  • python代码规范工具:

  • 简述 any()和 all()方法
  • 什么是猴子补丁?
  • 当退出 Python 时是否释放所有内存分配?
  • 三元运算写法和应用场景?
  • 了解 enumerate 么?
  • pathlib 的用法举例
  • 什么是断言?应用场景?
  • dir()是干什么用的?
  • 代码中经常遇到的*args, **kwargs 含义及用法。
  • 私有化
  • 讲讲 Python 中的位运算符
  • 怎样一次声明多个变量并赋值?
  • sorted和sort区别?
  • python中逻辑运算符,位运算符,赋值运算符?
  • python中使用多进制数字?
  • 定义函数参数顺序?
    • 位置参数,可变参数,默认参数,关键词参数
  • 匿名函数?
    • 定义 lambda 形参:返回值
    • 定义并调用:(lambda 形参:返回值)(实参)
    • 应用场景:比如用于map,reduce函数中
  • python函数怎么传参?
    • 共享传参(看起来是可变参数引用传递,不可变参数值传递):实际上是共享传参,就是函数形参获得实参各个副本的引用
    • 默认参数为可变参数时,只计算一次
  • 函数递归调用停止条件?
    • 默认为1000,可以调整
    • 或者设置递归条件停止
  • map,reduce,filter函数
  • functools模块
  • 函数装饰器有什么作用?请列举说明?
  • 类中_getattr__如果init方法里面有该属性,就用,没有就用_getattr__的
  • __dict__方法 ,对于对象是获取对象init的属性,对于类是获取类变量,类方法,各种方法,内置属性的
  • 魔法函数 __call__怎么使用?
  • metaclass 作用?以及应用场景?
  • 请列举你知道的 Python 的魔法方法及用途。
  • 什么是面向对象的 mro

面试题

标签:元组   nal   文件的   list   code   标记   https   线程   异步编程   

原文地址:https://www.cnblogs.com/ycg-blog/p/12643071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!