• 常见的python与爬虫面试题准备好了


     

    我们在这里也为正在找工作的同学精心准备了一套面试题,包含python以及爬虫等相关内容。更多python面试题后台发送python面试获取。

    一、python常见面试题

    1、简述any()和all()方法

    any()只要迭代器中有一个元素为真就为真

    all()迭代器中所有判断项返回都为真,结果才为真

    (python中什么元素为假:0,空字符串、空列表、空字典、空元组、None、False)

    2、python中copy()和deepcopy()区别

    (1) 复制不可变数据类型,不管copy还是deepcopy,都是同一个地址当浅复制的值是不可变对象(数值,字符串,元组)时和=“赋值”的情况一样,对象的id值与浅复制原来的值相同。

    (2) 复制的值是可变对象(列表和字典)

    浅拷贝copy有两种情况:第一种情况:复制的 对象中无 复杂 子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。第二种情况:复制的对象中有 复杂 子对象(例如列表中的一个子元素是一个列表), 改变原来的值 中的复杂子对象的值 ,会影响浅复制的值。

    深拷贝deepcopy:完全复制独立,包括内层列表和字典。

    3、列出几种魔法方法并简要介绍用途

    init:对象初始化方法

    new:创建对象时候执行的方法,单列模式会用到

    str:当使用print输出对象的时候,只要自己定义了str(self)方法,那么就会打印从在这个方法中return的数据

    del:删除对象执行的方法

    4、python内建数据类型有哪些

    整型--int

    布尔型--bool

    字符串--str

    列表--list

    元组--tuple

    字典--dict

    5、可变类型和不可变类型

    可变类型有list,dict.不可变类型有string,number,tuple. 当进行修改操作时,可变类型传递的是内存中的地址,也就是说,直接修改内存中的值,并没有开辟 新的内存。不可变类型被改变时,并没有改变原内存地址中的值,而是开辟一块新的内存,将原地址中的值复制 过去,对这块新开辟的内存中的值进行操作。

    6、is和==有什么区别?

    is:比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象。是否指向同一个内 存地址 == :比较的两个对象的内容/值是否相等,默认会调用对象的eq()方法

    7、Python中类方法、类实例方法、静态方法有何区别?

    类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象, 类对象和实例对象都可调用 类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身; 静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法 实际上跟该类没有太大关系

    8、内存泄露是什么?如何避免?

    内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消 失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控 制,从而造成了内存的浪费。有 _del_() 函数的对象间的循环引用是导致内存泄露的主凶。不使用一个对象时使用: del object 来 删除一个对象的引用计数就可以有效防止内存泄露问题。通过Python扩展模块gc 来查看不能回收的对象的详细信息。可以通过 sys.getrefcount(obj) 来获取对象的引用计数,并根据返回值是否为0来判断是否内存泄露

    9、python常见的列表推导式?

    [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]

    10、简述read、readline、readlines的区别?

    read 读取整个文件 readline 读取下一行 readlines 读取整个文件到一个迭代器以供我们遍历

    11、什么是Hash(散列函数)?

    散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字 “指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数 将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的 指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表

    12、函数调用参数的传递方式是值传递还是引用传递?

    Python的参数传递有:位置参数、默认参数、可变参数、关键字参数。函数的传值到底是值传递还是引用传递、要分情况:不可变参数用值传递:像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都 不可能在原处改变不可变对象。可变参数是引用传递:比如像列表,字典这样的对象是通过引用传递、和C语言里面的用指针传递数组 很相似,可变对象能在函数内部改变。

    13、为什么函数名字可以当做参数用?

    Python中一切皆对象,函数名是函数在内存中的空间,也是一个对象

    14、Python中pass语句的作用是什么?

    在编写代码时只写框架思路,具体实现还未编写就可以用pass进行占位,是程序不报错,不会进行任何 操作。

    15、什么是lambda函数?有什么好处?

    lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数 1.lambda函数比较轻便,即用即仍,很适合需要完成一项功能,但是此功能只在此一处使用,连名字 都很随意的情况下 2.匿名函数,一般用来给filter,map这样的函数式编程服务 3.作为回调函数,传递给某些应用,比如消息处理

  • 相关阅读:
    windows上 adb devices有设备 wsl上没有
    MMDetection 使用示例:从入门到出门
    SQL创建-----表
    【Recommend System】----CTR 建模
    Sectigo https证书
    element-plus文档地址,防止官网打不开
    Vue---组件的自定义事件和原生事件
    Rust 限流算法crate调研
    比超级计算机快千万倍!我国在两种物理体系实现“量子计算优越性”
    【闲聊杂谈】源码追踪Spring的JDK和CGLib动态代理
  • 原文地址:https://blog.csdn.net/m0_72444380/article/details/126952528