版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python基础高频面试题(超详细接地气答案)说明:所有题目为企业真实高频基础面试题,答案摒弃机器话术,以开发日常口语、面试标准作答,适合应届生、初级开发面试复习。一、Python基础语法核心题1、简述Python的特点和优缺点参考答案:Python是一门解释型、动态类型、面向对象的高级脚本语言。优点:1、语法简单,可读性极强,入门门槛低,代码量少,开发效率高;2、跨平台,Windows、Linux、Mac都能运行,兼容性好;3、生态极其完善,第三方库非常多,爬虫、数据分析、后端、人工智能都有成熟框架;4、支持面向对象、函数式、过程式多种编程风格,灵活度高。缺点:1、解释型语言,运行速度比编译型的Java、C++慢;2、全局解释器锁GIL导致多线程无法利用多核CPU,并发性能有局限;3、动态类型,运行时才检查类型,代码量大后容易出现隐性类型报错;4、版本兼容性差,Python2和Python3语法不互通,项目迁移成本高。2、解释一下解释型语言和编译型语言的区别参考答案:核心区别就是是否需要提前整体编译成机器码。编译型语言(C、Java、Go):写完代码后,需要通过编译器整体编译成机器码文件,再运行,执行速度快,跨平台差。解释型语言(Python、JS):不需要提前编译,运行时由解释器逐行翻译、逐行执行,启动快、开发快,但执行效率低,跨平台好。3、Python中print和return的区别参考答案:很多新手容易搞混,两者完全不是一个作用:1、print是输出打印,单纯把内容展示在控制台,不会保存数据,也不参与程序逻辑;2、return是函数返回值,只能写在函数里,作用是把函数运算结果返回出去,供外部代码接收、调用、计算,同时会终止当前函数执行。简单说:print是给人看的,return是给程序用的。4、Python中的变量、常量是什么?Python有没有真正的常量?参考答案:变量就是可以随时修改值的内存地址标识,Python所有变量都是动态赋值的。Python没有真正意义上的常量。日常开发中我们会把全大写的变量当做常量(比如PI=3.14),只是约定俗成不修改,但语法上完全可以重新赋值,没有强制限制。不像Java有final关键字锁死数值。5、==和is的区别参考答案:核心:==比数值,is比内存地址1、==:判断两个变量的值是否相等,不关心内存地址;2、is:判断两个变量是否是同一个对象,也就是内存地址完全一致。补充小知识点:Python有小整数池,-5~256的整数会常驻内存,所以这个区间内的数字用is判断会返回True,超出区间就会False。二、数据类型高频面试题1、Python有哪些基础数据类型?哪些是可变、不可变?参考答案:常用基础类型:int、float、str、bool、list、tuple、dict、set不可变类型(值修改就新建内存地址):int、float、str、bool、tuple可变类型(原地修改,不新建地址):list、dict、set面试必背关键点:字符串和元组不可变,列表字典集合可变。2、字符串为什么不可变?有什么好处?参考答案:Python设计时就规定字符串不可变,一旦创建就不能修改内部字符。平时看到的字符串替换、截取,本质都是生成了新的字符串,原字符串不变。好处:1、字符串可作为字典的key、集合元素,稳定不重复;2、支持字符串驻留机制,节省内存,提升运行效率;3、多线程场景下不可变数据天然安全,不需要加锁。3、列表和元组的区别?日常开发怎么选择?参考答案:1、语法区别:列表[],元组();2、可变性:列表可变,可以增删改查;元组不可变,创建后不能修改;3、性能:元组占用内存更小、运行更快;4、用法:列表可以随意嵌套修改,元组更安全、可哈希。开发选择原则:数据需要频繁修改、增删的用list;数据固定、只读、不允许改动的用tuple。4、字典的底层原理?为什么字典查询速度快?参考答案:Python3.7及以上字典底层是哈希表(散列表)结构,且有序(插入有序)。查询快的原因:字典通过key的哈希值直接定位内存地址,查询时间复杂度是O(1);而列表是遍历查询,复杂度是O(n),数据量越大差距越明显。补充:字典的key必须是不可变、可哈希的数据类型,列表、字典不能当key。5、集合的特点和作用参考答案:特点:无序、不重复、元素必须可哈希、可变。日常开发核心作用就两个:1、快速去重,列表转集合直接自动去重;2、做交集、并集、差集等数据比对操作。三、函数与参数面试题1、Python函数的参数类型有哪些?参考答案:一共四种常用参数,面试高频:1、位置参数:按顺序传参,数量必须对应;2、关键字参数:指定参数名传参,顺序可以乱;3、默认参数:定义时给默认值,不传参就用默认;4、可变参数:*args接收任意位置参数(元组),**kwargs接收任意关键字参数(字典)。2、默认参数的坑是什么?(面试必考)参考答案:最大的坑:默认参数不能用可变对象(list、dict、set)。原因:默认参数只在函数定义时初始化一次,每次调用函数如果不传新参数,都会复用同一个可变对象,导致数据累加、错乱。正确写法:默认值设为None,函数内部再初始化可变对象。3、局部变量和全局变量的区别?global关键字作用参考答案:全局变量:定义在函数外部,整个文件都能访问;局部变量:定义在函数内部,只能当前函数使用,函数执行结束就销毁。如果想在函数内部修改全局变量,必须用global关键字声明,否则会默认创建一个同名局部变量,不会修改全局值。4、递归函数的优缺点和使用条件参考答案:递归就是函数自己调用自己,必须有终止条件,否则无限递归报错。优点:代码简洁,适合树结构、斐波那契、阶乘等层级、迭代类问题;缺点:递归深度有限制,默认最大1000左右,容易栈溢出;重复计算多,效率比循环低。四、列表、字典常用操作与坑点1、列表append和extend的区别参考答案:append:整体追加,把传入的内容当做一个元素加到列表末尾;extend:迭代追加,把传入的可迭代对象逐个拆分元素追加到列表。举例:a=[1,2],a.append([3,4])结果是[1,2,[3,4]];a.extend([3,4])结果是[1,2,3,4]。2、遍历列表时删除元素为什么会出问题?怎么解决?参考答案:问题原因:列表遍历是按索引顺序走的,删除元素后列表长度变短、元素前移,会导致跳过部分元素,删不干净。解决方案:1、倒序遍历删除(最常用);2、遍历原列表,操作新列表;3、用列表推导式筛选,简洁高效。3、字典遍历过程中新增/删除键值对会报错,怎么解决?参考答案:Python不允许遍历字典的同时修改字典结构,会触发迭代异常。解决方式:遍历字典的key列表(list(dict.keys())),相当于遍历快照,不影响原字典结构。五、高阶函数与推导式1、说说map、filter、reduce的作用参考答案:1、map:映射,对可迭代对象每个元素统一执行一个函数,返回新迭代器(批量处理数据);2、filter:过滤,根据函数返回的布尔值,筛选符合条件的元素;3、reduce:累积计算,从左到右依次对元素做叠加、累乘等聚合操作,需要导入functools。2、列表推导式、字典推导式的优势参考答案:相比普通for循环,推导式代码更简洁、执行效率更高,底层是C语言优化,比纯Python循环快很多。日常开发中优先用推导式处理简单的筛选、生成、映射逻辑。六、异常处理1、Python异常处理机制?try-except-finally执行顺序参考答案:基础结构:try捕获异常、except处理异常、else无异常执行、finally无论是否报错都会执行。执行顺序:try代码正常执行无报错→走else→走finally;try报错→中断try→走对应except→走finally。场景:finally常用于关闭文件、关闭数据库连接、释放资源等收尾操作。2、常见的Python异常有哪些?参考答案:1、SyntaxError:语法错误;2、IndexError:索引越界;3、KeyError:字典key不存在;4、TypeError:类型错误;5、ValueError:数值取值错误;6、AttributeError:对象没有对应属性。七、GIL、内存与深浅拷贝(基础高频)1、什么是GIL?有什么影响?参考答案:GIL就是Python全局解释器锁,是Cpython解释器的一把锁,同一时刻只有一个线程执行Python代码。影响:1、多线程在CPU密集型任务下无法利用多核,并发效率低;2、IO密集型任务(爬虫、接口请求、文件读写)不受影响,多线程依然高效;3、想要利用多核,只能用多进程。2、浅拷贝和深拷贝的区别?怎么实现?参考答案:1、浅拷贝:只拷贝顶层对象,内部嵌套的可变对象依然共用同一个内存地址,改原数据嵌套内容,拷贝后的数据会跟着变;2、深拷贝:完全拷贝所有层级对象,彻底独立,原数据修改不会影响拷贝后的数据。实现方式:浅拷贝:列表切片、copy.copy();深拷贝:copy.deepcopy()。八、文件操作基础1、open函数常见模式有哪些?参考答案:r:只读模式,文件不存在报错;w:清空写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广场硬质铺张施工方案(3篇)
- 凉山防火地坪施工方案(3篇)
- 海外工程用工应急预案(3篇)
- 打造高效衣橱活动策划方案(3篇)
- 2026年丹东市公益性岗位招聘笔试备考题库及答案解析
- 2026年黄山高速公路管理中心下半年收费岗见习人员招聘12名笔试模拟试题及答案解析
- 2026年水利管理行业发展研究报告及未来五至十年资本热度与投融资趋势
- 2027吉林省面向中国农业大学定向招录选调生笔试模拟试题及答案解析
- 2026年油气仓储行业洞察报告及未来五至十年发展趋势报告
- 理赔应急预案内容(3篇)
- 长期照护师技能操作考核试卷及答案
- 2026年成考专升本《政治》基础练习模拟题及答案
- 孤独症谱系障碍儿童干预康复指南(2026年版)
- 自考 14653 证券投资理论与实务重点精简版
- 热力管道腐蚀检测评估报告
- 2026秋改版人教版三年级上册道德与法治全册教案
- 腹腔镜胆囊切除术中胆管及血管损伤防范中国专家共识2024版解读
- 列代数式专项练习60题(有答案)
- 合同法与商事合同的实务案例解析与讨论
- 坐标纸(A4纸直接打印就可用)
- 物理化学第九章-胶体化学
评论
0/150
提交评论