第 5 篇博客:Python开发岗笔试题(持续更新)
欢迎阅读第 5 篇博客,最近在面试Python开发岗的时候遇到了一些笔试题(闭卷),总结了一下,希望在看完题目时,自己先思考一下,起到查漏补缺的作用!
Python开发岗笔试题(持续更新)
一、基础概念题
1.1 请问什么是闭包函数?
概念:在双层嵌套函数的前提下,内部函数使用了外部函数的值,并且外部函数返回值内部函数,我们这个内部函数称为闭包;
优点:保护全局变量或目标函数原有的代码和功能不被篡改;
缺点:由于内部函数持续引用外部函数的值,所以会导致这部分内存无法释放。
1.2 请问什么是装饰器?
概念:装饰器是使用一个闭包函数,在闭包函数内调用目标函数;
优点:在不破坏目标函数原有的代码和功能的前提下,为目标函数增加新的功能;
缺点:由于内部函数持续引用目标函数的值,所以会导致这部分内存无法释放;
应用:在目标函数上方直接使用**@闭包函数**,那么闭包函数的功能就添加到了目标函数内,就像装饰品一样。
1.3 请问什么是lambda函数?
概念:lambda函数又叫匿名函数,即不使用函数名的函数;
语法:lambda 参数名: 函数体;
优点:简洁,一行搞定;
缺点:不可复用;
应用:在写Spark和Flink代码的时候经常能使用到。
1.4 请问使用with关键字有什么好处?
语法:with 目标 as 变量名:函数体;
优点:在对文件进行操作,可以在操作完成后自动关闭文件,避免遗忘掉close方法。
1.5 请问什么是抽象函数?
概念:含有抽象方法的函数叫抽象函数,抽象方法是方法体为空,只有含有pass关键字;
优点:抽象函数常用于顶层设计。
1.6 请问什么是构造函数?
概念:类中__init__()方法的称为构造函数;
优点:在实例化对象时,传入参数自动传递给__init__方法使用并会自动执行。
1.7 请问python常用内置模块有哪些?(至少5个)
re:正则表达式
json:处理Json数据
random:生成伪随机数
math:数学运算函数
time:处理时间和睡眠
os:操作系统相关功能,如文件操作
threading:多线程处理
urllib:用于 HTTP 请求
二、相似函数(方法)题
2.1 请问load和loads的区别?
load方法直接将硬盘中Json文件加载为python对象;
loads方是将已经读取到内存中的Json字符串加载为python对象。
2.2 请问readline和readliens的区别?
readline方法只读取文件中的首行,返回一个字符串;
readlines方法一次性读取整个文件,返回一个列表且列表中的元素与文件的行一一对应。
2.3 请问浅拷贝和深拷贝分别是什么且有什么区别?
浅拷贝是copy.copy方法,浅拷贝的对象和原对象是同一个对象,当改变其值,原对象的值也随之发生变化;
深拷贝是copy.deepcopy方法,深拷贝的对象和原对象不是同一个对象,当改变其值,原对象的值不会发生变化。
三、简单数学计算题
3.1 如何用一行代码实现n的阶乘(1*2*3*…*n)
方式①
1 | import math |
效果:n取值为5时,结果:120
方式②
1 | from functools import reduce |
效果:n取值为10时,结果:3628800
3.2 实现数学中斐波那契数列
1 | def fibonacci(n): |
效果:n取值为6时,结果为:13
四、手写代码题
4.1 请手写将一串英文字符串,大写字母转换为小写,小写字母转换为大写?
例如:输入:”Hello World!”,输出:”hELLO wORLD!”
方式①
1 | string = "Hello World!" |
方式②
1 | string = "Hello World!" |