python的基本知识与面试问题的汇总1

news2024/11/24 19:15:38

大家好,我是微学AI,今天给大家介绍一下python的基本知识与面试问题的汇总,看完之后会对python巩固有很大的帮助哦。
在这里插入图片描述

  1. Python中的多线程:

多线程是指在一个程序中同时运行多个线程以提高程序的执行效率。Python中的threading模块提供了多线程支持。线程是操作系统中最小的执行单元,它们共享进程的内存空间,但拥有各自的栈空间。

  1. Python互斥锁与死锁:

互斥锁(Mutex)是一种同步原语,用于保护共享资源的访问,防止多个线程同时访问。死锁是指两个或多个线程在等待对方释放资源,导致无法继续执行的情况。

  1. Python中的Lambda:

Lambda是Python中的一种匿名函数,它能够简化代码并使其更加易读。Lambda函数的语法非常简单,只需要使用lambda关键字定义即可。下面是几个Lambda函数的例子:
计算两个数的和并返回结果

add = lambda x, y: x + y
print(add(2, 3)) # 输出 5

这个Lambda函数接受两个参数x和y,计算它们的和,并返回结果。

  1. Python的深拷贝与浅拷贝:

浅拷贝是指创建一个新对象,但只复制原对象的引用。深拷贝是指创建一个新对象,并递归地复制原对象的所有元素及其子元素。copy模块提供了copy()(浅拷贝)和deepcopy()(深拷贝)方法。

  1. Python多线程是否能用多个CPU:

Python多线程不能充分利用多个CPU,因为全局解释器锁(GIL)限制了同一时间只能有一个线程执行。要充分利用多核CPU,可以使用multiprocessing模块实现多进程。

  1. Python垃圾回收机制:

Python使用引用计数和循环垃圾收集器(cyclic garbage collector)来管理内存。当一个对象的引用计数为0时,它会被回收。循环垃圾收集器用于检测并回收引用循环中的对象。

  1. Python里的生成器:

生成器是一种特殊的迭代器,使用yield关键字返回值。生成器函数在每次调用时返回一个新值,同时保留函数的执行状态,以便下次调用时从上次停止的地方继续执行。

  1. 迭代器与生成器的区别:

迭代器是一个实现了__iter__()__next__()方法的对象,用于遍历容器中的元素。生成器是一种特殊的迭代器,使用yield关键字返回值,具有更简洁的语法和更高的内存效率。

  1. Python列表的del, remove和pop等用法和区别:

del是一个语句,用于删除列表中的元素或切片;remove()方法用于删除列表中第一个匹配的元素;pop()方法用于删除并返回指定索引的元素(默认为最后一个元素)。

  1. Python中什么是闭包:

闭包是一个嵌套函数,它可以捕获并记住外部函数的局部变量的值,即使外部函数已经退出。

  1. Python的装饰器:

装饰器的本质是一个Python函数或类,它可以用于包装其他函数或类,并使其具有特定的行为,例如修改其输入和输出、检查其错误、添加日志记录、缓存调用结果等。装饰器定义的过程通常需要使用@符号将其应用到目标函数或类上,在调用目标函数或类时,装饰器就会自动生效。

  1. Python中yield和return的区别:

return用于从函数中返回一个值并终止函数的执行;yield用于从生成器函数中返回一个值,同时保留函数的执行状态,以便下次调用时从上次停止的地方继续执行。

  1. Python中set的底层实现:

Python中的set是基于哈希表实现的。哈希表是一种数据结构,它使用哈希函数将键映射到存储桶。set中的元素必须是可哈希的。

  1. Python中字典与set区别:

字典是一个键值对的集合,键必须是唯一的;set是一个无序的、不重复的元素集合。它们的底层实现都是基于哈希表。

  1. Python中init和new和call的区别:

__init__()是类的初始化方法,用于设置对象的属性;__new__()是类的构造方法,用于创建并返回一个新的对象实例;__call__()是类的可调用方法,使得类的实例可以像函数一样被调用。

  1. Python内存管理:
    Python内存管理包括内存分配、引用计数、垃圾回收等。内存分配器负责分配和释放内存;引用计数用于跟踪对象的引用数量;垃圾回收器负责回收不再使用的对象。

  2. Python中类方法和静态方法的区别:
    类方法是一个使用@classmethod装饰器的方法,它的第一个参数是类本身(通常命名为cls);静态方法是一个使用@staticmethod装饰器的方法,它不接受特殊的第一个参数(即没有selfcls参数)。类方法可以被子类覆盖,而静态方法不可以。

  3. 遍历字典的方法:
    可以使用items()keys()values()方法遍历字典的键值对、键和值。

d = {'a': 1, 'b': 2, 'c': 3}
for key, value in d.items():
    print(key, value)
for key in d.keys():
    print(key)
for value in d.values():
    print(value)
  1. Python中错误和异常处理:错误是编程时的问题,如语法错误;异常是程序运行时的问题,如除以零。异常处理使用tryexcept语句捕获和处理异常。

  2. Python中try else与finally区别:
    else子句在try块没有抛出异常时执行;finally子句无论try块是否抛出异常都会执行。

  3. Python中的is和==区别:
    is比较两个对象的身份(内存地址),==比较两个对象的值。

  4. gbk和utf8的区别:
    GBK是一种简体中文字符编码,它包含全部的汉字;UTF-8是一种通用的字符编码,它包含世界上几乎所有的字符。

  5. 反转列表的方法:
    可以使用reverse()方法或切片操作。

lst = [1, 2, 3, 4, 5]
lst.reverse()
print(lst)
lst = [1, 2, 3, 4, 5]
lst = lst[::-1]
print(lst)
  1. 元组转为字典的方法:
    可以使用dict()函数将包含键值对的元组列表转换为字典。
tuples = [('a', 1), ('b', 2), ('c', 3)]
d = dict(tuples)
print(d)

25.函数调用参数的传递方式:
Python中的参数传递是通过对象引用传递的。

  1. __init__.py文件的作用以及意义:__init__.py文件表示一个目录是Python包,它可以包含包的初始化代码或定义__all__变量来控制from package import *的行为。

  2. 列表去重的几种方式:可以使用集合、列表推导式或collections.OrderedDict

#方法1
lst = [1, 2, 2, 3, 3, 4, 4, 5]
unique_lst = list(set(lst))
unique_lst = [x for i, x in enumerate(lst) if x not in lst[:i]]
#方法2
from collections import OrderedDict
unique_lst = list(OrderedDict.fromkeys(lst).keys())
  1. Python常见的列表推导式:
    列表推导式是一种简洁的创建列表的方法,如[x**2 for x in range(10) if x % 2 == 0]

  2. map与reduce函数:
    map()函数将一个函数应用于一个序列的所有元素;reduce()函数将一个函数应用于一个序列的元素,从左到右,以便将序列缩减为单个值。

  3. except的作用和用法:
    except子句用于捕获和处理try块中抛出的异常。

try:
    1 / 0
except ZeroDivisionError:
    print("Cannot divide by zero")
  1. Python中什么是断言:
    断言是一种调试辅助工具,它用于检查程序的某个条件是否为真。如果条件为假,assert语句将抛出AssertionError异常。

  2. 如何理解Python中字符串中的字符:
    Python中的字符串是由Unicode字符组成的不可变序列。

  3. Python是如何进行类型转换的:
    Python提供了内置函数(如int()float()str()等)进行类型转换。

34.提高Python运行效率的方法:
使用内置函数和标准库、避免全局变量、使用局部变量、使用列表推导式、使用生成器、使用多线程或多进程、使用C扩展等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB基础实战:CRUD

1 缘起 后台项目使用的数据库是MongoDB, 在一次测试联调过程中,测试同事在测试数据的准确性时, 问我这些数据该怎么查,如何计算验证数据的结果, 我当时,对MongoDB数据操作不熟悉,请教了其他有经…

2. 两数相加解题思路

文章目录 题目解题思路 题目 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&am…

C++11之异常处理

文章目录 一、异常处理的概念二、异常编写的步骤(来自图论教育)三、栈展开和异常捕获四、C11中noexcep关键字 一、异常处理的概念 异常是程序可能检测到的,运行时不正常的情况,如存储空间耗尽,数组越界,被…

PG提示could not determine data type of parameter $4

目录 场景: 现象: 版本: 分析: 解决方式: 场景: 今天遇到现场环境连接Postgre数据库,日志提示could not determine data type of parameter $4,通过日志复制出完整sql&#xff…

SpringCloudAlibaba:分布式事务之Seata学习

目录 一、分布式事务基础 (一)事务 (二)本地事务 (三)分布式事务 二、Seata概述 1.Seata 的架构包含: 2.其工作原理为: 3.如果需要在 Spring Boot 应用中使用 Seata 进行分布式事务管理,主要步骤为…

Android Jetpack Compose实现轮播图效果

Android Jetpack Compose实现轮播图效果 在最近思索如何使用Compose方式改进我的开源TMDB电影列表应用程序的主屏幕时,一个激动人心的概念浮现在我的脑海中——为什么不整合一个吸引人的轮播图来展示即将上映的电影呢?在本文中,我将分享我的开…

旧改快讯--星河操刀,龙华稳健工业园项目专规获批

龙华街道稳健工业园城市更新单元原列入《2019年深圳市龙华区城市更新单元计划第五批计划》,现已列入《2022年深圳市龙华区城市更新单元计划第三批计划》,现该更新单元规划已经深圳市城市规划委员会法定图则委员会2023年第16次会议审议并获原则通过&#…

python环境安装

测试电脑环境有无安装python: winR,输入cmd,打开窗口,输入pyhton,查看是否有版本号,没有则是没有安装python环境 找到python-3.7.0-amd64的安装包,直接双击启动。上面是快速安装,我…

【Linux驱动】字符设备驱动相关宏 / 函数介绍(module_init、register_chrdev)

驱动运行有两种方式: 方式一:直接编译到内核,Linux内核启动时自动运行驱动程序方式二:编译成模块,使用 insmod 命令加载驱动模块 我们在调试的时候,采用第二种方式是最合适的,每次修改驱动只需…

八大排序之图文详解

前言 在数据结构中,排序是非常重要的内容,也是未来面试和笔试的重点。 本文代码是Java 目录 前言 一、插入排序 (一)直接插入排序 (二)希尔排序 二、选择排序 (一)选择排序 …

【CSS3系列】第六章 · 2D和3D变换

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

通义千问预体验,如何让 AI 模型应用“奔跑”在函数计算上?

立即体验基于函数计算部署通义千问预体验: https://developer.aliyun.com/topic/aigc_fc AIGC 浪潮已来,从文字生成到图片生成,AIGC 的创造力让人惊叹,更多人开始探索如何使用 AI 提高生产效率,激发更多创作潜能&…

android jetpack Room的基本使用(java)

数据库的基本使用 添加依赖 //roomdef room_version "2.5.0"implementation "androidx.room:room-runtime:$room_version"annotationProcessor "androidx.room:room-compiler:$room_version"创建表 Entity表示根据实体类创建数据表&#xff0c…

Linux基础篇 Ubuntu 22.04的环境安装-02

目录 一、资料的获取 二、安装虚拟机 三、安装Ubuntu过程 四、注意事项 一、资料的获取 1.通过官方网站下载 Ubuntu系统下载 | Ubuntuhttps://cn.ubuntu.com/download2.下载桌面板即可 3.选择下载的版本 二、安装虚拟机 1.创建新的虚拟机 2.选择自定义安装 3.硬件兼容性选…

Zinx框架学习 - 请求与路由模块实现

Zinx - V0.3 请求与路由模块实现 在zinxV0.2中链接只封装了套接字,而请求是封装了链接和用户传输的数据,后续通过请求来识别具体要实现什么功能,然后通过路由来完成对应的功能处理。conn链接的业务处理HandleFunc是固定写死的,接…

【YOLO系列】YOLO v4(网络结构图+代码)

文章目录 how to compile on Linux(using cmake)yolo v4 测试 网络结构route 和shotcutNeckHead Loss参考 YOLO v4是YOLO系列的第三篇,YOLO v4融合了大量的检测小技巧,为了能够更快地理解YOLO v4,可先查看前两篇文章。 【YOLO系列】YOLO v3&a…

K8s架构(五)

K8s的物理架构是master/node模式: K8s集群至少需要一个主节点(Master)和多个工作节点(Worker),Master节点是集群的控制节点,负责整个集群的管理和控制,主节点主要用于暴露API,调度部署和节点的管理。工作节点主要是运…

【Spring学习】Bean对象的作用域和生命周期,了解了这些你就真正熟悉spring框架了.

前言: 大家好,我是良辰丫,我们已经学会了Spring的存取,今天我们将一起来学习Bean对象的作用域和生命周期.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语…

单源最短路的综合应用

1.新年好(dfs最短路) 信息学奥赛一本通(C版)在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/statusx.php?runidx17472125 先两两求一遍最短路,求一个地方到另一个地方的最短路,在枚举5个拜访的顺序…

Vue3 小兔鲜:Layout-静态模版结构搭建

Vue3 小兔鲜4&#xff1a;Layout-静态模版结构搭建 Date: May 31, 2023 目标效果&#xff1a; 分成Nav、Heade、二级路由出口、Footer区域 组件结构快速搭建 Nav <script setup></script><template><nav class"app-topnav"><div clas…