python面试100讲(51-82)

51~82

'''
51
1.请简要买哦书装饰器的作用
2.如何自定义装饰器

总结:
装饰器本身就是一个函数,主要用于为函数添加额外功能。如插入日志、性能测试。

52
1.如何区分调用的是函数还是方法

总结:
通过isinstance函数可以判断调用的是函数还是方法,如果是函数,
类型是FunctionType,如果是方法,类型是MethodType

53
1.请解释@staticmethod和@classmethod的用法和区别

总结:
用@staticmethod修饰的方法不需要任何额外的参数,而用@classmethod修饰的方法
需要一个参数用于传入当前类本身。

54
1.什么是元类,请用代码解释如何使用元类

总结:
元类就是类的模板,可以自由控制创建类实例的过程。

55
1.请用代码说明hasattr、getattr和setattr的作用

总结:
hasattr用于判断对象中是否包含属性、getattr可以获取属性值,setattr可以设置属性值。

56
1.请阐述什么事lambda表达式,并用代码描述lambda表达式的应用场景

总结:
lambda表达式就是一个匿名函数,一般可以作为函数或方法的参数值使用。

57
1.请描述一下浅拷贝(copy)和深拷贝(deepcopy)的区别,请用代码举例说明如何使用copy和deepcopy

总结:
copy只赋值深层对象的引用,而deepcopy会复制深层对象本身。

58
1.编写一个生成器,将二维列表转换为一维列表

总结:
生成器与函数的定义方法类似,只是需要使用yield关键字处理每一个需要迭代的值。

59
1.请编写一个生成器,将任意多维的列表转换为一维列表

总结:
递归生成器的编写方法与递归函数类似,只是需要处理元素值的时候需要使用yield个关键字。

60
1.如何分别获取当前日期的年月日以及是一年中的第几天

总结:
通过localtime函数处理后的时间可以直接获取更详细的信息。

61
1.用Python创建2个进程,在这两个进程之间如何通信呢?

总结:
掌握进程间通信的方法

62
1.当运行一个线程函数时,如何为该函数传递参数

总结:
可以通过Thread类的args参数为线程函数传递参数值。

63
1.如何创建和使用在线程内部用的全局对象

总结:
local类用于创建一个全局对象,不过该对象只能在线程内部使用,
也就是说,全局是针对一个线程而言的。

64
1.请描述一下什么是协程,请举例说明
2.协程中哪两个运行任务的函数,如何使用

总结:
协程,又称微线程,使用async修饰要运行的函数,在运行协程函数时,需要使用await。

65
1.请解释什么是线程锁,举例说明如何使用线程锁。

总结:
使用Lock函数创建线程锁,使用lock.acquire方法加锁,使用lock.release方法解锁。
在加锁后,任何代码执行acquire方法,都会被阻塞,知道将该锁释放。

66
1.描述一下什么是信号量,如何使用信号量,请举例说明

总结:
信号量是一个计数器,用于记录资源的消耗情况。当资源消耗时递减,当资源释放时递增。
可以认为信号量代表资源是否可用。

67
1.在urls.txt文件中包含了若干个图像Url,一行一个Url,请使用多线程下载这些图像文件,
并按Url出现的顺序保存为0.jpg、1.jpg、2.jpg,以此类推。

总结:
1.多线程的使用
2.网络库的使用
3.文件操作

68
1.请用代码描述如何定义异常类、抛出异常类以及捕捉异常类

总结:
1.定义异常类
2.抛出异常类
3.捕捉异常类

69
1.Python是否支持多继承,请举例说明
2.如果Python类的多个父类存在相同的成员,按着什么规则处理

总结:
1.Python多继承
2.成员冲突如何处理

70
1.请通过代码说明try...except...else中的else子句的作用

总结:
try...except...else语句中的expect子句中的代码会在发生异常时执行,
而else子句中的代码会在try...except之间的代码正常执行完后执行,也就是带代码执行正确时执行。

71
1.静态路由和动态路由有什么区别
2.如何使用Flask实现动态路由

总结:
静态路由就是一个Url对应唯一的路由函数,而动态路由多个Url对应同一个路由函数。
动态路由通过<...>指定动态传递的参数。

72
1.请解释什么事转发与重定向,它们有什么区别
2.在Flask中如何转发和重定向资源

总结:
转发是读取指定资源的内容,然后发送给客户端,浏览器的Url是不变的。
而重定向会导致浏览器的Url发生变化,也就是让浏览器重新访问另一个Url。

73
1.如何在Jinja2模板中使用复杂数据,如Python列表

总结:
在Jinja2模板中可以向Python语言一样直接使用列表、字典等类型的值,如mylist[0]、mydict['type']等。

74
1.如何在Jinja2模板中进行条件控制

总结:
在Jinja2模板支持很多控制指令,例如,{%f...%}可以用来进行条件控制,
{%f...%}是循环指令。

75
1.请解释Session的概念,以及如何在Django中读写Session

总结:
通过request的session对象可以访问Session,就像读写字典一样读写Session。

76
1.如何在Django模板中使用循环指令,请举例说明

总结:
Djanjo模板的循环指令时{%for...%}{%endfo%}。

77
1.如何使用Beautiful Soup的节点选择器获取节点信息

总结:
节点选择器可以像使用对象属性一样获取节点信息,如soup.title.name用于获取title节点的名字。

78
1.如何使用Beautiful Soup的CSS选择器获取节点信息

79
1.如何使用requests从网络上下载一个图像文件

80
1.如果通过selenium控制Web页面,并模拟单机按钮的动作

总结:
模拟单机按钮的动作,关键是先找到要单机的按钮,然后之间调用click方法即可。

81
1.解释什么事伪类选择器,以及如何使用伪类选择器

总结:
伪类选择器是CSS选择器的一类重要的功能,这也是CSS选择器之索引强大的主要原因。

82
1.使用自己熟悉的网络库和分析库,实现住区豆瓣音乐Top250排行榜的数据,
并将数据保存在CSV文件中。
'''

你可能感兴趣的:(csdn笔记)