python基础面试题

Python常见面试问题
1.代码中要修改不可变数据会出现什么问题? 抛出什么异常?
代码不会正常运行,抛出 TypeError 异常。2.4G 内存怎么读取一个 5G 的数据?
3、read、readline 和 readlines 的区别?
read一次性读取全部数据
readline 每次读一行
readlines 一次性用行的形式读 返回一个列表
4.在一个函数值中,如果在except中return后还会不会执行finally中的代码?怎么抛出自定义异常
会继续处理 finally 中的代码;用 raise 方法可以抛出自定义异常
5.介绍一下 except 的作用和用法?
except: #捕获所有异常
except: <异常名>: #捕获指定异常
except:<异常名 1, 异常名 2> : 捕获异常 1 或者异常 2 except:<异常名>,<数据>:捕获指定异常及其附加的数据
except:<异常名 1,异常名 2>:<数据>:捕获异常名 1 或者异常名 2,及附加的数据
6. 常用的 Python 标准库都有哪些
os 操作系统,time 时间,random 随机,pymysql 连接数据库,threading 线程,multiprocessing
进程,queue 队列。
7. 赋值、浅拷贝和深拷贝的区别
赋值:对象的引用
浅拷贝:复制引用
深拷贝:递归复制数据
8. init 和 new 的区别
init:实例化对象是自动调用,添加属性
new:在init前执行 分配内存
9. 模块和包是什么
模块:包含python代码的文件
包:将相同类型的模块放在一个文件夹 这个文件夹叫做包

  1. Python 是如何进行类型转换的
    类型转换函数
    11.Python 中的作用域
    LEGB
    Local局部作用域
    Enclosing闭包
    Global 全局作用域
    Bulit 内建作用域
    12.什么是 Python 的命名空间
    保存程序中的变量和值
    内建 局部 全局
    13.python中的可变、不可变类型
    int float str tuple 不可变
    set dict list可变
    修改数据 内存地址变化 可变
    修改数据 内存地址不变 不可变

  2. 字典的特性
    无序 增删查改操作

  3. Python 中类方法、类实例方法、静态方法有何区别
    类方法:无需实例化 可通过类直接调用 ,第一个类必须是类本身
    类实例方法:类中的普通方法,通过实例化才能调用第一个参数是self
    静态方法:与类对象 实例对象无关的代码 可以有参数没有参数

  4. 任意说出几个反射函数
    hasattr () getattr(获取属性 方法)

  5. 简述内存管理中的引用计数机制
    python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时

  6. Python 函数调用的时候参数的传递方式是值传递还是引用传递
    不可变类型值传递 可变类型引用传递

  7. 内建函数之map的用法
    第一个参数是函数 第二个参数是可迭代内容
    函数会依次作用在可迭代内容的每一个元素上进行计算,然后返回一个新的可迭 代内容。

  8. 对装饰器的理解
    装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。

  9. 解释一下什么是闭包
    1.闭包函数必须有内嵌函数。
    2.内嵌函数必须要引用外层函的变量。
    3.闭包函数返回内嵌函数的地址(函数名称)
    22.Iterable与Iterator的区别
    Iterable判断是否能迭代
    Iterator 判断是不是迭代器
    23.Python 中 is 和==的区别
    is比较两个对象的id值是否相等,是否指向同一个内存地址;
    ==比较的是两个对象的内容是否相等,即内存地址可以不一样,内容一样就可以了

  10. 什么Python 的魔法方法
    new del call repr str hash

  11. 面向对象中怎么实现只读属性
    将对象私有化,通过共有方法提供一个读取数据的接口。

  12. 谈谈你对面向对象的理解
    面向对象是相对于面向过程而言的。面向过程语言是一种基于功能分析的、以算法为中心的程序设计方法;而面向对象是一种基于结构分析的、以数据为中心的程序设计思想。在面向对象语言中有一个有很重要东西,叫做类。
    面向对象有三大特性:封装、继承、多态。

  13. 简述你对进程的理解
    一个运行的程序(代码)就是一个进程,没有运行的代码叫程序,进程是系统资源分 配的最小单位,进程拥有自己独立的内存空间,所以进程间数据不共享,开销大。

  14. 简述你对线程的理解
    调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程存在一个进程至少有一个线程,叫主线程,而多个线程共享内存(数据共享,共享全局变
    量),从而极大地提高了程序的运行效率

  15. 为什么说Python中的多线程是伪多线程,怎么理解? GIL 锁 全局解释器锁(只在 cpython 里才有)
    作用:限制多线程同时执行,保证同一时间只有一个线程执行,所以cpython 里的多线程其实是伪多线程!

  16. 简述你对互斥锁的理解
    一个锁资源同时只能由一个线程获取,其他线程只能阻塞等待,进而保证同一时间点,只能有一个线程访问共享资源,进而保证数据同步
    确保了某段关键代码(共享数据资源)只能由一个线程从头到尾完整地执行能解决多线程资源竞争下的原子操作问题。

  17. 如何理解死锁
    若干子线程在系统资源竞争时,都在等待对方对某部分资源解除占用状态,结果是谁也不愿先解锁,
    互相干等着,程序无法执行下去,这就是死锁。

  18. 简述进程生命周期中的几种状态
    创建(出生)-就绪-阻塞-运行-退出(死亡) 33.线程是并发还是并行,进程是并发还是并行
    线程是并发,进程是并行;
    进程之间相互独立,是系统分配资源的最小单位,同一个线程中的所有线程共享资源。

  19. 同步与异步
    同步:多个任务之间有先后顺序执行,一个执行完下个才能执行。异步:多个任务之间没有先后顺序,可以同时执行

  20. 并行(parallel)和并发(concurrency)
    并行:同一时间碎片 同时进行
    并发:同一时间碎片 交替进行
    36.阻塞与非阻塞
    阻塞:如果卡住了调用者,调用者不能继续往下执行,就是说调用者阻塞了。
    非阻塞:如果不会卡住,可以继续执行,就是说非阻塞的。阻塞非阻塞相对于代码执行而言。

  21. 怎么理解守护线程
    如果一个线程被设置成守护线程,其执行完的时间会受主线程影响,主线程执行完毕,守护线程代码是否执行完毕,都会关闭

  22. Python 中的进程与线程的使用场景
    多进程适合在 CPU 密集型操作(cpu 操作指令比较多,如位数多的浮点运算)。
    多线程适合在 IO 密集型操作(读写数据操作较多的,比如爬虫)。39.UDP发送/接收数据的步骤

  23. 创建客户端套接字

  24. 发送/接收数据

  25. 关闭套接字

  26. 字符串与字节进行编解码的方法str -->bytes: encode 编 码bytes–> str: decode()解码

  27. TCP客户端连接服务器的过程1.创建 TCP 的 socket 套接字2.连接服务器

  28. 发送数据给服务器端

  29. 接收服务器端发送来的消息

  30. 关闭套接字

  31. TCP服务端的创建流程

  32. 创建套接字

  33. 绑定地址,端口3.listen

  34. accept

  35. recv/send 接收和发送消息6.关闭套接字

  36. 简述 TCP 和 UDP 的区别以及优缺点
    UDP 是面向无连接的通讯协议,UDP 数据包括目的端口号和源端口号信息。
    优点:UDP 速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送
    缺点:UDP 传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号, 发送端不知道数 据是否会正确接收,也不重复发送,不可靠。
    TCP 是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手优点:TCP 在数据传递时,有确认、窗口、重传、阻塞等控制机制,能保证
    数据正确性,较为可靠。
    缺点:TCP 相对于 UDP 速度慢一点,要求系统资源较多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值