Python面试十问

a9868a9756cb4d63a6674550c3b372aa.png

一、深浅拷贝的区别?

浅拷⻉: 拷⻉的是对象的引⽤,如果原对象改变,相应的拷⻉对象也会发⽣改变。

深拷⻉: 拷⻉对象中的每个元素,拷⻉对象和原有对象不在有关系,两个是独⽴的对象。

浅拷⻉(copy):拷⻉⽗对象,不会拷⻉对象的内部的⼦对象。

深拷⻉(deepcopy): copy 模块的 deepcopy ⽅法,完全拷⻉了⽗对象及其⼦对象。

二、装饰器及其应用场景?

装饰器(Decorator)是⼀种结构型设计模式,它可以动态地给⼀个对象添加额外的职责,同时⼜不改变其原有的接⼝和实现。通俗地说,就是通过组合的⽅式,为对象添加新的⾏为或特性。

  • ⽇志记录:可以定义⼀个装饰器函数,⽤于在函数调⽤时记录⽇志信息,如函数的参数、返回值等。
  • 性能分析:可以定义⼀个装饰器函数,⽤于在函数调⽤时计算函数的执⾏时间,以便进⾏性能优化。
import time
def time_it(func):def wrapper(*args, **kwargs):start_time = time.time()result = func(*args, **kwargs)end_time = time.time()print(f"函数 {func.__name__} 执⾏时间为:{end_time - start_time} 秒")return resultreturn wrapper
@time_it
def my_function():time.sleep(2)print("Hello, World!")
my_function()

我们定义了⼀个装饰器函数time_it,它接受⼀个函数作为参数,并返回⼀个新的函数
wrapper。wrapper函数可以记录函数执⾏前后的时间,并输出执⾏时间信息。在my_function函数前⾯加上@time_it装饰器,表示对my_function函数应⽤time_it装饰器。

当调用my_function函数时,实际上会调⽤被time_it装饰过的wrapper函数,从⽽记录函数的执⾏时间。

三、装饰器的实质是什么 

装饰器是要把原来的函数装饰成新的函数,并且返回这个函数本身的⾼阶函数。

四、Python迭代器及场景?

Python中的迭代器是一个可以记住遍历的位置的对象,它实现了两个方法:__iter__()__next__()__iter__() 方法返回迭代器对象本身,__next__() 方法返回容器中的下一个值。当没有更多的元素时,__next__() 方法会抛出 StopIteration 异常。

迭代器常⽤于遍历序列、集合、字典等容器类型数据。它的优点是可以惰性计算,只有在需要时才会计算,避免了⼀次性加载所有数据的开销,同时也可以节省内存空间。

例⼦:

my_list = [1, 2, 3, 4, 5]
my_iterator = iter(my_list)
while True:try:item = next(my_iterator)print(item)except StopIteration:break
# 我们通过 iter() 函数将列表 my_list 转化为⼀个迭代器对象 my_iterator

五、Python⽣成器是什么

在Python中,⽣成器(Generator)是⼀种特殊的迭代器,它使⽤⽣成器函数来⽣成序列中的元素,⽽不是在内存中⼀次性⽣成所有元素。

 ⽣成器函数是使⽤yield关键字定义的函数,每次调⽤⽣成器函数时,它会返回⼀个迭代器对象,调⽤next()⽅法时,它会从上次暂停的位置继续执⾏,直到遇到下⼀个yield语句,然后返回⼀个值,并再次暂停。 

def fibonacci():a, b = 0, 1while True:yield aa, b = b, a + bfib = fibonacci()
for i in range(10):print(next(fib))

六、Python多线程与多进程的区别

多线程中的多个线程共享同一个进程的内存空间,因此它们可以访问相同的变量和数据结构。这意味着线程之间的数据共享和通信比较容易,但也可能导致竞争条件和线程安全问题。相反,多进程中的每个进程有自己的独立内存空间,进程间的数据共享需要借助于进程间通信(IPC)机制,如管道、队列或共享内存等。创建和管理线程的开销通常小于进程,因为进程间的独立性使得它们需要更多的资源来维护。然而,由于线程之间共享内存,同步和协调线程的操作可能比在进程之间进行通信更复杂。

七、*args和**kwarg作⽤

*args代表位置参数,它会接收任意多个参数并把这些参数作为元组传递给函数。**kwargs代表的关键字参数,允许你使⽤没有事先定义的参数名。位置参数⼀定要放在关键字参数的前⾯

八、is和==的区别

==是python标准操作符中的⽐较操作符,⽤来⽐较判断两个对象的value(值)是否相等(布尔计算);

is:用于判断两个变量是否引用自相同的对象,即它们在内存中的地址是否相同。当使用 is 进行比较时,只有当两个变量指向同一个内存地址时,结果才为 True

九、Python垃圾回收机制

  • 每个对象都有一个引用计数,当引用计数变为0时,对象会被立即回收。
  • 对于一组对象互相引用形成闭环的情况,Python会定期检查并回收这些无法通过简单引用计数回收的对象。
  • Python对每一代采用不同的回收策略,通常年轻代的对象更频繁地进行垃圾回收。

十、TCP和UDP的特点及区别

☆ TCP采用发送应答机制:

通过TCP这种方式发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传送成功

☆ 超时重传

发送端发送一个报文之后就会启动定时器,如果指定时间内没有得到应答就会重新发送这个报文段

☆ 错误校验

TCP用一个校验和函数来校验数据是否有错误,在发送和接收时都要计算校验和

☆ 流量控制和阻塞管理

流量控制用来避免发送端发送过快而使得接收方来不及接收

UDP协议(不可靠传输协议):

UDP不可靠协议(只能保证速度,但是没办法保证数据传输质量,发送5M => 接收3.75M)

有些情况下,我们对数据的质量没有要求,可以考虑使用UDP,如视频通话。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/318183.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java从入门到精通】Java 正则表达式

目录 正则表达式实例 🍉java.util.regex 包 🍉实例 🍉捕获组 🍉实例 🍉RegexMatches.java 文件代码: 🍉正则表达式语法 🍉Matcher 类的方法 🍉索引方法 &#…

K8S哲学 - 资源调度 DaemonSet

应用场景 日志收集 引出: 正常情况下,每个服务都会进行 各自的日志收集、但是因为他们不在 同一台 Node 上,导致一旦查日志就需要 调动各个 机器进行切换,不方便也不高效 低级做法: 在每个需要收集日志的机器上部…

SpringCloud系列(16)--将服务提供者Provider注册进Zookeeper

前言:在上一章节中我们说明了一些关于Eureka自我保护模式,而且自上一章节起关于Eureka的知识已经讲的差不多了,不过因为Eureka已经停更了,为了安全考虑,我们要用还在更新维护的注册中心来取代Eureka,而本章…

2024-05-02 商业分析-杭州小万科技-商业模式分析

摘要: 对杭州小万科技的商业模式进行分析,以对其做出客观的评估。 杭州小万科技的资料: 杭州小万科技有限公司 - 企知道 (qizhidao.com) 杭州小万科技有限公司网站备案查询 - 天眼查 (tianyancha.com) 杭州小万科技有限公司 - 爱企查 (baidu.com) ​ 2023年年报:

【Jenkins】持续集成与交付 (三):有关报错解决(Jenkins (2.387.3) or higher required)

🟣【Jenkins】持续集成与交付 (三):有关报错解决Jenkins (2.387.3) or higher required 一、Jenkins主页报错二、安装Jenkins插件报错三、解决过程(解压替换jenkins.war)四、重新访问登录💖The Begin💖点点关注,收藏不迷路💖 一、Jenkins主页报错 New version …

【51单片机LCD1602显示矩阵键盘原始键值】2023-6-1

缘由https://ask.csdn.net/questions/7955623 #include "reg52.h" sbit LCD1602_RS P3^5;//RS端数据命令选择(H/L) sbit LCD1602_RW P3^6;//RW端读写选择(H/L) sbit LCD1602_EN P3^7;//EN端使能信号上升沿25ns void PanDuan1602(/*LCD1602忙判断*/) { LCD1602…

一周零碎时间练习微服务(nacos,rq,springcloud,es等)内容

目录 1 总览1.1 技术架构1.2 其他1.2.1 数据库1.2.2 后端部分1.2.2.1 复习feign1.2.2.2 复习下网关网关的核心功能特性:网关路由的流程断言工厂过滤器工厂全局过滤器 过滤器执行顺序解决跨域问题 1.2.2.3 es部分复习 1.2.3 前端部分 2 day1 配置网关2.1 任务2.2 网关…

常用SQL命令

应用经常需要处理用户的数据,并将用户的数据保存到指定位置,数据库是常用的数据存储工具,数据库是结构化信息或数据的有序集合,几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据,进行数据访问控制&…

CSS优惠券、卡券样式绘制

实现左右凹陷中间有虚线效果 效果图 实现思路 从效果图可以看到这个优惠券是左右两边凹陷,中间还有一条虚线,为了封装后插槽使用方便,把优惠券以虚线为准分了两部分。这样布局的好处是上部分内容和下部分都可以自定义,不受内容限…

面试:Mybatis(MyBatis执行流程、延迟加载、MyBatis的缓存)

目录 一、MyBatis执行流程 二、MyBatis是否支持延迟加载? 1、什么是延迟加载? 2、延迟加载的原理 三、MyBatis的缓存 1、一级缓存 2、二级缓存 3、注意事项 一、MyBatis执行流程 读取MyBatis配置文件: mybatis-config.xml加载运行环境和映射文件构…

Adobe推出AI视频超分辨率工具VideoGigaGAN

🦉 AI新闻 🚀 Adobe推出AI视频超分辨率工具VideoGigaGAN 摘要:Adobe公司最新推出的AI工具VideoGigaGAN,利用上采样技术将视频分辨率从128128提升至10241024。这一工具基于GigaGAN模型开发,专注于生成视频超分辨率&am…

Vitis HLS 学习笔记--MAXI手动控制突发传输

目录 1. 简介 2. MAXI 突发传输详解 2.1 突发传输的前置条件 2.2 hls::burst_maxi 详解 2.2.1 基本知识 2.2.2 hls::burst_maxi 构造函数 2.2.3 hls::burst_maxi 读取方法 2.2.4 hls::burst_maxi 写入方法 2.3 示例一 2.4 示例二 3. 总结 1. 简介 这篇文章探讨了在…

提示词工程入门-使用文心一言4.0-通义千问-GPT4-Claude3通用提示技巧测试

提示词工程基础🚀 在了解完了大语模型的基本知识,例如API的使用多轮对话,流式输出,微调,知识向量库等知识之后,接下来需要进一步补足的一个大块就是提示词工程,学习和了解提示词工程除了基本的提…

分享自己一篇在亚马逊云科技AWS官网发的Blog技术文章

小李哥在亚马逊AWS官网,作为第一作者发了自己的第一篇AWS Blog文章,也是自己今年在AWS官网的第11篇文章。文章主要内容是描述为出海的金融企业,搭建满足PCI-DSS合规、FIPS 140-2 Level 3安全标准的传输中数据加密云端方案,主要用于…

34.Docker基本操作

镜像相关的命令 镜像名称分为两部分组成:[repository]:[tag],tag就是镜像的版本。如果tag没有指定默认就是latest,表示最新版本的镜像。 查看docker命令的帮助信息 docker --help 具体某条命令的帮助信息 docker images --help 案例一:从DockerHub中…

无人机+飞行汽车:低空经济新引擎,有望爆发式增长

无人机和飞行汽车作为低空经济的新引擎,正在引领一场全新的交通革命。随着技术的不断进步和政策的支持,低空经济有望成为未来经济发展的重要领域,实现爆发式增长。 首先,无人机和飞行汽车具有独特的优势和应用场景。无人机可以在…

iOS ------ Method Swizzling (动态方法交换)

一,Method Swizzling 简介 Method(方法)对应的是objc_method结构体;而objc_method结构体中包含了SEL method_name(方法名),IMP method_imp(方法实现) // objc_method 结构体 typed…

自动化测试 selenium基础

前言 我们都知道测试开发工程师的任务是根据用户需求测试用例的同时,害的开发自动化工具来减轻测试压力且提高测试的效率以及质量,这一节我们就来简单谈谈开发简单的自动化工具基础 什么是自动化测试呢?就是将我们需要做的测试交给机器去做,也就是使用代码来模拟人对于机器的行…

Midjourney之绘画背景的选择

hello 小伙伴们,我是你们的老朋友——树下,今天分享Midjourney提示词中绘画背景的选择,话不多说,直接开始~ 对于背景的选择,Midjourney中主要体现在年代和所处的环境对绘画产生不同的影响 科技的发展,我们…

[软件工具]批量根据文件名查找PDF文件复制到指定的地方,如何批量查找文件复制,多个文件一起查找复制

多个文件目录下有多个PDF, 如何根据文件名一个清单,一次性查找多个PDF复制保存 如图所示下面有7个文件夹,每个文件夹里面有几百上千PDF文件 如何从上千个PDF文件中一次性快速找到我们要的文件呢 ? 我们需要找到文件名是这样的PDF&#xff0…