IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 面试必问-Python篇(一) -> 正文阅读

[Python知识库]面试必问-Python篇(一)

一、前言

本专栏将会对近年高频测试相关面试题做详细解答,结合自己多年工作经验,以及同行大佬指导总结出来的。旨在帮助测试、python方面的同学,顺利通过面试,拿到自己满意的offer。

每篇的内容一般为8道题左右,题量虽然不多,但完全消化掉也是需要时间的。务必不用着急心切,揠苗助长,只有多多练习,反复温习,掌握理解清楚了,才不会遗忘,这样才能应对各种情况的面试。

让我们一起卷起来吧!



二、 试题详解

1)Python元组和列表的区别

答:列表可变,元组不可变。


如果只能回答上面的答案在大厂面试中一定会挂,下面进行详细解答:

元组(tuple)不可变是指它的内存地址不可变,如果元组内的元素是可变类型的值(例如:dict),那其中的元素是可以改变的。
例如:

a = (1, {'key': 1})
a[1]['key'] = 2
print('改变之后的a的值', a)

输出结果

改变之后的a的值 (1, {'key': 2})

除此之外,元组占用的内存空间更小:

a = [1, 2, 3, 4, 5, 6]
print('列表的空间大小为:', a.__sizeof__())
b = (1, 2, 3, 4, 5, 6)
print('元组的空间大小为:', b.__sizeof__())

输出结果

列表的空间大小为: 136
元组的空间大小为: 72

元组可以作为字典的key,而列表不能:

列表作为字典的key时会报错!

a = {['a']:1}

输出结果

TypeError: unhashable type: 'list'

元组作为字典的key时则不会报错

a = {('a',):1}

另外,元组的元素必须用逗号分隔,哪怕只有一个元素:

('a',)

元组和列表的区别总结如下:

  1. 元组内存地址不可变,列表内存地址可变;
  2. 元组占用空间比列表更少;
  3. 元组是不可变参数,所以可以作为字段的key,而列表(可变参数)不能;
  4. 元组的元素必须用逗号分隔,哪怕只有一个元素;

2)如何在一个函数内部修改全局变量

可以使用global修改:

a = 1

def test():
    globals()['a'] = 2
    
print('原来的a值:', a)
test()
print('修改后的a值:', a)

输出结果

原来的a值: 1
修改后的a值: 2

函数也可以改成这样:

def test():
    global a
    a=2

3)解释一下Python的GIL

GlL是 python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占 python解释器(加了一把锁即GIL),使该进程內的其他线程无法运行,等该线程运行完后其他线程才能运行。
如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
多进程中因为每个进程都能被系统分配资源,相当于每个进程有了ー个 python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大。


4)Python列表去重

  1. 通过集合的方式去重:
a = [1, 2, 2, 3, 3, 6]
a = set(a)  # 先转为集合进行去重
a = list(a)  # 然后再转换为列表
print('去重后的列表', a)

  1. 手写去重代码:
a = [1, 2, 2, 4, 4, 6, 7]
b = []
for i in a:
    if i not in b:
        b.append(i)

print('去重后的列表', b)

5)列出 python中可变数据类型和不可变数据类型,并简述原理

不可变数据类型:数值型(int)、字符串型(str)和元组(tuple)不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址):

a = 3
b = 3
print('a的内存地址为', id(a))
print('b的内存地址为', id(b))

输出结果

a的内存地址为 1658574891376
b的内存地址为 1658574891376

可变数据类型:列表(list)和字典(dict),允许变量的值发生变化,即如果对变量进行 append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象:

a = [1,2]
b = [1,2]
print('a的内存地址为', id(a))
print('b的内存地址为', id(b))

输出结果

a的内存地址为 2122512488768
b的内存地址为 2122512662720

6)python2和 python3区别

  1. Python3使用 print必须要以小括号包裹打印内容,而在Python2既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容:
print("hello world") #pyton3和python2都可

print "hello world" #python2

  1. python2 range(1,10)返回列表, python3中返回迭代器,节约内存;
  2. python2中使用asci编码, python中使用utf-8编码;
  3. python2中 unicode表示字符串序列,str表示字节序列python3中st表示字符串序列,byte表示字节序列 ;
  4. python2中为正常显示中文,引入 coding声明, python3中不需要;
  5. python2中是 raw input0函数, python3中是 Input0函数;

7)python中内置的数据结构有几种

  1. 整型 int、 长整型 long、浮点型 float、 复数 complex
  2. 字符串 str、 列表 list、 元祖 tuple
  3. 字典 dict 、 集合 set
  4. Python3 中没有 long,只有无限精度的 int

8)下面代码的输出结果将是什么

a = [1,2]
print(a[3:])

代码将输出[],不会产生IndexError错误,就像所期望的那样,尝试用超出成员的个数的index来获取某个列表的成员。
例如,尝试获取list[10]和之后的成员,会导致IndexError。然而,尝试获取列表的切片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。这成为特别让人恶心的疑难杂症,因为运行的时候没有错误产生,导致Bug很难被追踪到。

三、总结

该篇内容都比较基础,有理论也有实战代码。理论看了理解不了没关系,直接背就行,关于代码的就得多加练习才行。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 19:00:59  更:2022-06-08 19:02:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 12:25:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码