• python面试学习


    题目来源于机器学习面试题目

    1. 函数式编程和面向对象区别?
      (1)面向对象利用对象、类、封装、继承、多态等概念来组织和实现代码程序,对象是指有特定属性和行为的实体,同一类的对象可以共享属性和方法,类定义了对象的通用属性和方法,因此可以方便地创建新的对象。通过“继承”和“封装”等机制,可以让代码更加简洁、易于维护和扩展。
      (2)函数式编程核心思想是把程序看作数学上的函数计算,其不同于面向对象,更加强调函数的透明化和形式化,避免了数据共享和可变状态,强调纯函数的使用。一个复杂的问题可以被分解为多个简单的函数,函数式编程通常更加容易实现模块化和代码重用,也更容易进行并行计算和测试。

    2. python list和tuple的区别
      列表是可变的,可以对它进行修改和删除元素的操作;
      元组是不可变的,一旦创建就不能改变。

    3. 说一下python里啥叫生成器
      生成器是一种特殊的函数,可以在执行时生成一系列值,而不是一次性把所有值都返回,这样的好处就是可以节省内存。

    4. python is ==的区别
      python中的is是比较两个对象地址是否相同,而==运算符是比较两个对象值是否相同的

    5. map的底层实现
      map(function,iterable)是对可迭代对象中的每个元素应用一个函数,并返回一个新的可迭代对象。
      map的底层实现是通过迭代器来完成的。它会创建一个新的迭代器对象,该对象对传入的序列进行遍历,将元素依次传递给函数进行处理,map函数将处理后的结果保存在列表中,该列表将作为迭代器返回。

    6. python方法解析顺序

    7. 如何判断两个dict是否一样
      (1)直接用==比较
      (2)比较键和值是否相同:

    # 判断两个字典是否相同
    dict1 = {'name': 'Alice', 'age': 20}
    dict2 = {'age': 20, 'name': 'Alice'}
    
    for key in dict1:
       if key not in dict2 or dict1[key] != dict2[key]:
           print("dict1和dict2不相同")
           break
    else:
       print("dict1和dict2相同")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (3)本来字典是无序的,转化为元组列表进行比较

    # 判断两个字典是否相同
    dict1 = {'name': 'Alice', 'age': 20}
    dict2 = {'age': 20, 'name': 'Alice'}
    
    #dict1.items()返回结果是列表里面嵌套元组
    tuple1 = sorted(dict1.items())
    tuple2 = sorted(dict2.items())
    
    if tuple1 == tuple2:
       print("dict1和dict2相同")
    else:
       print("dict1和dict2不相同")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 深浅拷贝
      使用浅拷贝时,会创建一个新的对象,该对象和原对象共享内存中的一部分数据甚至是全部数据,所以修改其中一个对象的值会影响另一个对象。
      深拷贝会创建一个新的对象,该对象递归的复制其包含的所有对象,这意味着新对象和原始对象之间没有任何的关联,修改其中一个对象的值不会影响另一个对象。

    2. python锁机制
      锁是用来保护共享资源的机制。当多个线程同时访问一个共享资源时,为了防止它们之间发生竞争条件(Race Condition),需要使用锁来确保同一时间只有一个线程可以访问该资源。

    3. 如何在list头上删元素

    #可删除列表的第一个元素
    list.pop(0)
    
    • 1
    • 2
    1. 一个python的dict,按照key-value存储,如何按照value排序
    my_dict = {'apple': 15, 'banana': 10, 'orange': 20, 'grape': 5}
    sorted_list = sorted(my_dict.items(), key=lambda x: x[1])
    print(sorted_list)
    
    • 1
    • 2
    • 3
    1. 字符串拼接(join)
      “连接符号”.join(序列),输出结果为一整个字符串
    2. 对一个列表删除所有为0的数字
      (1)利用列表推导式,其表示形式为:[新元素表达式 for 临时变量 in 可迭代对象 if 条件表达式]
    list = [0,1,2,3,4,0]
    list1 = [x for x in l if x!=0]
    
    • 1
    • 2

    (2)循环遍历,再用del删除列表元素

    my_list = [0, 1, 2, 0, 3, 0, 4]
    i = 0
    while i < len(my_list):
       if my_list[i] == 0:
           del my_list[i]
       else:
           i += 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 交换数字a,b
      (1)元组赋值
    a,b = b,a
    
    • 1

    (2)临时变量法
    15. 怎么定义一个类的成员变量
    16. list dict有什么区别
    (1)列表是有序的,可以通过索引访问元素,字典是无序的,由键值对构成的,可以通过键来访问相应的值。
    (2) 列表可以存储任意类型的对象;字典中的键必须是不可变对象,例如数字、字符串或元组,而值可以是任意类型的对象。

    1. key-value的数据结构
      key-value数据结构可以通过多种不同的方式实现:字典、哈希表、映射(map)
      其中,字典以哈希表的形式实现快速查找和插入操作;
      哈希表是一种使用哈希函数来确定键值对位置的数据结构。在哈希表中,每个键都被哈希成一个索引,然后将其映射到相应的值;
      映射是一种将键映射到值的抽象数据类型。

    2. list 底层怎么实现
      其底层实现主要依赖于C语言,在内存中以数组的形式进行存储。
      具体来说,Python的列表被实现为一个指针数组。每个元素都是一个指向对象的指针,而不是对象本身。这意味着列表可以容纳任何类型的对象,包括数字、字符串和其他复杂类型的对象。

    3. dict底层如何实现
      其底层实现主要依赖于哈希表。
      具体来说,Python的字典被实现为一个哈希表,其中每个元素都是一个键值对。当我们向字典添加一个元素时,Python会根据该元素的键来计算出一个哈希值,并将其作为索引存储到哈希表中。当我们需要查找某个键时,Python会重新计算出相应的哈希值,并从哈希表中查找该键对应的值。

    4. python中数组去重怎么做?具体代码?
      (1)利用集合

    a = [1, 2, 3, 3, 4, 4, 5]
    new_a = list(set(a))
    print(new_a) 
    
    • 1
    • 2
    • 3

    (2)利用列表推导式

    a = [1, 2, 3, 3, 4, 4, 5]
    new_a = []
    [new_a.append(i) for i in a if i not in new_a]
    print(new_a)
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    STN:不规则文本矫正网络的探索
    基于混合模型磁链观测器的异步电机矢量控制的学习
    Hive恢复误删数据表
    Linux ARM平台开发系列讲解(PCIE) 2.13.3 PCI设备的访问方法(桥设备)
    基于SVM+Webdriver的智能NBA常规赛与季后赛结果预测系统——机器学习算法应用(含python、ipynb工程源码)+所有数据集(四)
    电压源与电流源简介
    小白还不懂电脑图片转PDF格式怎么弄吗?这些方法你都试过吗?
    Java连接kubernates集群最优雅的两种方式
    笔试强训(七)
    Python Flask Web + PyQt 前后端分离的项目—学习成绩可视化分析系统
  • 原文地址:https://blog.csdn.net/weixin_43135165/article/details/131127124