-
<p>arr.nbytes是NumPy数组实际占用的内存字节数,准确反映数据区大小;而arr.itemsize是单个元素字节大小,二者满足arr.nbytes==arr.size*arr.itemsize(仅对连续数组成立)。</p>
-
用requests获取HTTP状态码比ping更靠谱,因ping仅检测ICMP连通性,而宕机常发生在Web服务层;需设timeout、禁重定向、检查200–299范围、处理各类异常并记录日志。
-
asyncio.Task忘记cancel会导致内存泄漏,因悬停任务持续持有协程帧和变量引用;asyncwith/for异常跳出、滥用__del__/weakref、忽略第三方库私有缓冲区等亦是常见原因。
-
阻塞IO调用时线程挂起等待数据就绪,非阻塞IO立即返回并抛出BlockingIOError;实际高并发中需结合IO多路复用(如select/epoll)与非阻塞IO协同工作,asyncio即基于此机制封装。
-
args接收任意位置参数并打包为tuple,kwargs接收任意关键字参数并打包为dict;二者顺序固定为必选参数→args→kwargs,且支持解包调用。
-
Python面试重点涵盖内存模型(引用计数、GC、循环引用)、异步编程(事件循环、上下文隔离、资源安全)、元编程(dataclass、__init_subclass__、装饰器规范)、性能调优(cProfile、Cython、多进程)四大维度。
-
Python函数返回多个值本质上是返回一个元组,属语法糖;returna,b等价于return(a,b),调用时通过解包机制实现多变量赋值。
-
Python并发任务拆分与负载均衡的核心是保持工作进程/线程忙碌、减少空等和争抢,关键在于任务粒度适配、执行者能力感知及去中心化调度;应按可并行性而非数量均分任务,I/O密集用线程或异步,CPU密集用多进程,优先采用队列驱动的动态分发与反馈式负载均衡。
-
list不可哈希,因它是可变类型,不满足哈希要求:生命周期内哈希值不变且等值对象哈希值相同;字典key必须可哈希才能正确寻址;常见可哈希类型包括int、str、tuple(元素皆可哈希)、frozenset等;可用tuple(my_list)等方式转换list为可哈希形式。
-
提升正则可读性需用命名组、re.VERBOSE注释模式、逻辑拆分;预编译、分段组合、变量复用、单元测试、文档示例及re.DEBUG调试。
-
应使用ThreadPoolExecutor(max_workers=10–20)控制并发,避免直接创建大量线程;优先选用ipapi.co或ipinfo.io等稳定API并设置timeout和重试;CSV导出采用流式写入并规范编码与空值处理。
-
Python协程由事件循环驱动,通过await挂起与恢复实现协作式多任务;当协程执行await时让出控制权,事件循环调度其他任务运行,确保并发执行不阻塞I/O操作。
-
推荐按环境拆分settings文件:base.py抽公共配置,development.py和production.py各覆差异项;通过DJANGO_SETTINGS_MODULE指定,敏感配置(如SECRET_KEY)必须从环境变量或secretsbackend读取,严禁硬编码。
-
多线程文件读写需注意线程安全与资源管理。1.使用Lock保证写操作原子性,避免多线程同时写同一文件导致数据交错;2.推荐线程写独立临时文件后由主线程合并,或通过Queue集中处理写请求;3.各线程应独立使用withopen()打开关闭文件,防止句柄泄漏;4.GIL在I/O操作中释放,适合I/O密集型任务,CPU密集型应选多进程。正确控制访问方式可确保高效安全。
-
GIL是CPython的全局解释器锁,确保同一时刻仅一个线程执行字节码;源于引用计数内存管理与C扩展兼容需求,虽经多次优化(如3.7时间切片、3.12子解释器),仍限制多核CPU密集型并发,需用multiprocessing、nogil扩展或替代解释器应对。