Python常见面试题(总结自网络)

目 录

1. Python的特点和优点: 2

2. Python和C语言的区别: 2

3. Python2和Pyhton3的区别 2

4. Python的深拷贝和浅拷贝 2

5. Python三元表达式: 3

6. Python中如何实现多线程 3

7. 解释继承 3

8. 5个常用的网页开发框架 3

9. Python如何管理内存:对象和数据都保存在私有堆空间,使用内置的垃圾回收机制管理 4

10. Python中的dir函数和help函数 4

11. Python退出时是否释放所有内存分配 4

12. Python中的*args和**kwargs 4

13. 随机打乱列表中的元素,并不引用额外的内存空间 4

14. Python中的join()和split()函数 4

15. Python是区分大小写的语言 4

16. Python标识符命名规则 4

17. 分别使用lstrip()和rstrip函数去除前置空格和后置空格 4

18. 关于字符串的大小写 5

19. Python中pass、break、return、continue、exit的用法和区别 5

20. Python闭包 5

21. Python运算符 6

22. Python使用多进制数字: 6

23. 获取字典中的所有键:keys() 7

24. 不建议使用下划线做标识符开头,标识符下划线表示私有变量 7

25. Python的解封装:将元组中的值取出来,分别赋值给各个变量 7

26. Python的GIL(全局解释器锁) 7

27. 装饰器与类的区别 8

28. Python中list列表删除元素的方式 8

29. Python中dict字典增删元素的方法 8

30. 面向对象和面向过程的区别 8


1. Python的特点和优点:

A. 解释性:用自己定义的解释器,解释并执行有自己定义的语法结构生成的程序代码

B. 动态特性:程序在运行时可以修改(与其解释性有关)

C. 面向对象:类是用来具有相同属性和方法的对象的集合。

D. 语法简洁

E. 开源

2. Python和C语言的区别:

A. C语言是编译语言,Python是脚本语言。说是C语言会比Python快

B. C是静态语言,在变量在使用前进行声明,而Python是动态语言,在使用的时候可以直接使用,不需要声明

C. C里面没有对象,而Python里面是有对象

D. 脚本语言是读一行执行一行、而无需关注下一行的语言,非脚本语言则是必须读取整个源程序内容、建立完执行环境后执行的语言。

3. Python2和Pyhton3的区别

A. py3使用utf-8编码;py2使用ascill编码

B. py3中去除了py2中的不等于<>,改用!=

C. py3将py2中的print语句改成print()函数实现;将exec语句改成exec()函数

D. py3将py2中的raw_input()函数改成input()

E. py2中的long整型和int整型;py3中只有int整型

F. py3中/不再是整除,整除需要使用//

4. Python的深拷贝和浅拷贝

A. copy模块:import copy;浅拷贝:copy.copy;深拷贝:copy.deepcopy;

B. 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部子对象;

C. 深拷贝(deepcopy):拷贝父对象,同时开辟空间,逐层拷贝内部子对象

D. b=a.copy(),浅拷贝

E. b=a.deepcopy(),深拷贝

5. Python三元表达式:

[on true ] if [expression] else [on false]

如果expression 为真,则[on true]部分被执行;否则[on false]部分被执行

6. Python中如何实现多线程

A. 线程是轻量级的进程,Python是一个多线程语言,允许一次执行多个线程

B. GIL(全局解释器锁)确保一次执行单个线程。

C. 创建线程的方法

i. Python2使用thread模块中的start_new_thread()函数产生线程

ii. Python3使用threading模块创建新的线程:1、threading.thread;2、通过继承threading.Thread定义子类创建多线程

D. 多线程实现同步的4种方式

i. 锁机制:使用threading的lock类,类中acquire实现加锁,realease进行解锁

ii. 信号量

iii. 条件判断

iv. 同步队列

E. 线程池

i. 使用线程池可减少创建、销毁线程的时间,提高运行效率

7. 解释继承

A. 一个类继承另外一个类时可获取继承类的所有成员(属性和方法)

B. 继承利用重用代码,方便创建和维护代码

C. Python支持以下类:

i. 单继承

ii. 多重继承

iii. 多级继承

iv. 分层继承

v. 混合继承

8. 5个常用的网页开发框架

A. Django

B. CherryPy

C. TurboGears

D. Flaskl:轻量级框架,简单易学

i. WSGI工具箱采用Werkzeug,模板引擎采用Jinja2

E. Pyramid

9. Python如何管理内存:对象和数据都保存在私有堆空间,使用内置的垃圾回收机制管理

A. 垃圾回收的启动条件

i. 引用次数为0的对象与引用次数不为0的对象间减值达到一定阈值时,开户垃圾回收

B. 垃圾回收的目标

i. 对象引用次数变为0时,会成为对象

C. 分代回收

i. 每代对象经过一次回收后仍然存在,并归入下一代当中

10. Python中的dir函数和help函数

A. dir()函数:用来查询一个类或者对象的所有属性

B. help()函数用来模块、类型、对象、方法、属性的详细信息(帮助文档和参数说明)

11. Python退出时是否释放所有内存分配

不是的,当循环引用其他对象或者引用来自全局命令空间的对象模块,Python退出时并非完全释放。另外,C库保留的内存部分也不会释放。

12. Python中的*args和**kwargs

A. 定义函数时,当不知道可能传入多少个参数时,比如需要传入列表时,可以使用*args来收集

B. 定义函数时,当不知道可能传入多少个关键字参数时,可以使用**kwargs来收集关键字参数。

C. *args要在**kwargs之前使用

13. 随机打乱列表中的元素,并不引用额外的内存空间

A. 使用random包中的shuffle()[ˈʃʌfl]函数;打乱序列里面的元素并随机排列

14. Python中的join()和split()函数

A. join()函数将指定的字符添加到字符串/列表/字典/集合当中;或者将列表转成字符串

list1 = ['1','2','3','4'] 

s = "-"

s = s.join(list1)

print(s): 1-2-3-4

B. split()函数使用指定的字符分割字符串

string = www.gziscas.com.cn

print(string.split('.'))

['www', 'gziscas', 'com', 'cn']

15. Python是区分大小写的语言

16. Python标识符命名规则

A. 下划线或者大小写字母开头

B. 区分大小写

C. 关键字不能做标识符

17. 分别使用lstrip()和rstrip函数去除前置空格和后置空格


面试进阶题

18. 关于字符串的大小写

A. 检查字符串是否全为大写:isupper()

B. 检查字符串是否全为小写:islower()

C. 字符串转换为小写:lower()

D. 字符串转换为大写upper()

19. Python中pass、break、return、continue、exit的用法和区别

A. pass:用作占位符。当没想好写什么代码是可用pass代替

B. return:结束函数,返回参数

C. break:跳出最近一层的循环(当循环仅一层时,终止循环),程序继续

D. continue:跳出本次循环(循环不中止),程序继续

E. exit():退出整个循环,终止程序

20. Python闭包

https://blog.csdn.net/sc_lilei/article/details/80464645

A. 概念:一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行

B. 必要条件:

i. 闭包函数必须返回一个函数对象

ii. 闭包函数返回的函数对象必须引用外部变量(一般不为全局变量);被返回函数内部不一定要return

C. 使用:

21. Python运算符

A. 算术运算符

i. //:向下取整

ii. %:取余

iii. **:幂次方

B. 位运算符

i. ^:异或

ii. ~:取反

C. 逻辑运算符

i. and:布尔“与“

ii. or :布尔“或“

iii. not:布尔“非“

D. 比较运算符:== !=  >  <  。。。

E. 赋值运算符 =  +=  。。。

F. 成员运算符  in  not in

G. 身份运算符  is  is not

22. Python使用多进制数字:

A. 2进制

i. 0b开头

ii. bin()函数将数字转换为二进制

B. 8进制:0o开头

C. 16进制 0x开头

23. 获取字典中的所有键:keys()

24. 不建议使用下划线做标识符开头,标识符下划线表示私有变量

25. Python的解封装:将元组中的值取出来,分别赋值给各个变量

26. Python的GIL(全局解释器锁)

A. 并发和并行的解释

i. 并发:1个CPU,交替执行多个任务

ii. 并行:多个CPU,同时执行多个任务

B. GIL锁(全局解释器锁)

每个线程在执行时需要先获取GIL,保证同一时刻只有一个线程在执行代码。即同一时刻只用一个线程在使用CPU,并发处理方式。

C. 什么时候会释放GIL锁

i. I/O操作时,造成CPU闲置的情况会释放GIL锁

ii. 纯计算操作时(没有I/O操作),解释器会每隔100次(数值可设置)操作后释放GIL锁

D. 互斥锁和GIL锁的关系

i. 互斥锁:多线程时,保证修改共享数据时有序的修改,不会产生数据修改混乱

ii. GIL锁:保证同一时刻只有一个线程能使用到CPU

E. 如何解决GIL锁的问题

i. 使用多进程完成多线程的任务

ii. 在使用多线程时,可以利用C语言去实现

iii. 更换Cpython为Jpython(不建议)

27. 装饰器与类的区别

集合字符串列表等基础知识

28. Python中list列表删除元素的方式

A. 根据索引值删除元素:del listname[index]、listname.pop(index)

B. 根据元素值进行删除:listname.remove()

C. 删除列表所有元素:listname.clear()

29. Python中dict字典增删元素的方法

A. 增加元素:dictname.update()

B. 删除元素:dictname.pop()、del dictname[key]

30. 面向对象和面向过程的区别

面向过程:注重对事件的处理过程,处理过程

https://www.nowcoder.com/discuss/20611

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    伊森H阅读 3,032评论 0 15
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,668评论 0 5
  • 青城 我回来了 飞过太平洋 飞过滚滚长江 飞过维多利亚港 我回来了 吸了口 夹杂土腥味的青城气息 它憋了我整整一个...
    回眸丽影阅读 335评论 2 13
  • 由于这几天的心理变化想到一句话:不在其位不谋其政。还有就是,实力至上。 作为一个首发队员,因为一场...
    辞故迎新阅读 61评论 0 0
  • 说来惭愧,昨晚居然失眠了,难以入睡,大脑皮层神经元一遍又一遍重放着上台的场景,无限循环,虽早已过平常入睡时间...
    自律让我幸福阅读 206评论 1 2