记录Python面试常被问到的基础问题。
1.Python中内置的数据结构有几种?
a. 整型 int
、浮点型 float
、复数 complex
b. 字符串 str
、列表 list
、元祖 tuple
c. 字典 dict
、集合 set
2、Python可变类型和不可变类型
a. 可变类型有列表list
,字典dict
。不可变类型有字符串str
,数字number
,元组tuple
。
b. 当进行修改操作时,可变类型传递的是内存中的地址,也就是说,直接修改内存中的值,并没有开辟新的内存。
c. 不可变类型被改变时,并没有改变原内存地址中的值,而是开辟一块新的内存,将原地址中的值复制过去,对这块新开辟的内存中的值进行操作。
3、Python中is和==有什么区别?
a. is
比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象。是否指向同一个内存地址。
b. ==
比较的两个对象的内容/值是否相等。
a = [1, 2, 3] |
a = [1, 2, 3] |
4、列举几个Python的标准库,分别说明是做什么的?
a. os
:提供了和操作系统相关联的函数。
b. sys
:
c. re
:
d. math
:
e. datetime
:
f. collections
:
5、Python操作Mysql数据库
6、抽象类和接口类的区别和联系
抽象类:规定了一系列的方法,并规定了必须由继承类实现的方法。由于有抽象方法的存在,所以抽象类不能实例化。可以将抽象类理解为毛胚房,门窗,墙面的样式由你自己来定,所以抽象类作为基类的普通类的区别在于约束性更强。
接口类:与抽象类很相似,表现在接口中定义的方法,必须由引用类实现,但他与抽象类的根本区别在于用途;与不同个体间沟通的规则,你要进宿舍需要有钥匙,这个钥匙就是你与宿舍的接口,你的舍友也有这个接口,所以他也能进入宿舍,你用手机童话,那么手机就是你与他人交流的接口。
区别和关联:
(1)接口是抽象类的变体,接口中所有的方法都是抽象的,而抽象类中可以有非抽象方法,抽象类是声明方法的存在而不去实现他的类。
(2)接口可以继承,抽象类不行
(3)接口可以定义方法,没有实现的代码,而抽象类可以实现部分方法
(4)接口中基本数据类型为static而抽象类不是
7、编写函数的四个原则
函数设计要尽量短小
函数声明要做到合理、简单、易于使用
函数参数设计应该考虑向下兼容
一个函数只做一件事情,尽量保证函数语句粒度的一致性
8、什么是lambda函数?有什么好处?
lambda 参数: 表达式 |
lambda函数是一个可以接受任意多个参数(包括可选参数)并且返回单个表达式值的函数。
(1)lambda函数比较轻便,即用即扔,很适合需要完成一项功能,但是此功能只在此一处使用,连名字都很随意的情况下
(2)匿名函数,一般用来给filter,map这样的函数时编程服务。
(3)作为回调函数,传递给某些应用,比如消息处理。
9、赋值、浅拷贝和深拷贝的区别
(1)赋值
a = [1,2,[3,4]] |
a和b指向相同的引用,地址相同。
(2)浅拷贝
import copy |
浅拷贝只改变第一层对象的引用,嵌套的列表的引用不变。
(3)深拷贝
import copy |
拷贝了对象的所有元素,包括多层嵌套的元素。
10、Python生成随机数
import random |
11、什么是Python?
Python 是一种编程语言,它有对象、模块、线程、异常处理和自动内存管理,可以加入其他语言的对比。
Python 是一种解释型语言,Python在代码运行之前不需要解释。
Python 是动态类型语言,在声明变量时,不需要说明变量的类型。
Python 适合面向对象的编程,因为它支持通过组合与继承的方式定义类。
在 Python语言中,函数是第一类对象。
Python 代码编写快,但是运行速度比编译型语言通常要慢。
Python 用途广泛,常被用走”胶水语言”,可帮助其他语言和组件改善运行状况。使用Python,程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。
12、Python是强语言类型还是弱语言类型?
Python是强类型的动态脚本语言。
强类型:不允许不同类型相加
动态:不使用显示数据类型声明,且确定一个变量的类型是在第一次给他赋值的时候。
脚本语言:一般也是解释型语言,运行代码只需要一个解释器,不需要编译。
13、什么是解释性语言,什么是编译性语言?
计算机不能直接理解高级语言,智能直接理解机器语言,所以必须把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
解释性语言在运行程序时才进行翻译。
编译型余韵写的程序在执行之前,需要一个专门的编译过程,把程序编译成机器语言(可执行文件)。
14、什么是可变不可变类型?
可变不可变指的是内存中的值是否可以被改变,不可变类型指的是对象所在的内存块李米娜的值不可改变,有数值、字符串、元组;可变类型则可以改变,主要有列表、字典。
15、常用的Python标准库有哪些?
16、Python中的整数缓存机制
请解释在执行的代码的以下结果:
a = 256 |
解答:这是因为Python中的整数缓存机制。为了节省时间和内存成本,Python总是预先加载[-5,256]范围内的小整数。
因此,[-5,256]中的所有整数都已经保存在内存中。当声明此范围内的新整数变量时,Python只是将缓存的整数引用到它,不会创建任何新对象。