Python-1
1 说说你对编译型、解释型语言的理解?
编译型语言:编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言(二进制代码,即0和1)。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
解释型语言:解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。
--------------------------------------------
2 python 可以跨平台吗?为什么?
可以
有个OS模块,可以实现不依赖平台
--------------------------------------------
3 如何把字符串列表['haha','hehe','heihei’] 转成 “haha_hehe_heihei” ?
"_".join(['haha','hehe','heihei'])
--------------------------------------------
4 请用if 语句实现 找到两个数中最大的数?
max=a if a>b else b
--------------------------------------------
5 range的用法?
range(开始值,结束值,步长)
range(开始值,结束值) 默认步长为1
range(结束值) 默认开始值为0,步长为1
包含开始值不含结束值
--------------------------------------------
6 说说你对 函数中 默认参数、关键参数的理解?
默认参数:用于形参中,给形参指定默认参数值,默认参数只能从参数列表右边开始用
关键参数:实参,调用时使用格式:变量名=值
--------------------------------------------
7 有个目录:/tmp/app,如何将这个目录加入到python的环境中?
import sys
sys.path.append("/tmp/app")
--------------------------------------------
8 在字符串操作中,说说你对 find() 与 index()的区别?
find() 查不到包含子串时返回 -1
index() 查不到包含子串时抛异常
--------------------------------------------
9 说说你对 _name, __name, __name__ 的理解?
_name: 弱“内部使用”标识,如:”from ... import *”,将不导入所有以下划线开头的对象,包括包、模块、成员;
__name:私有方法
__name__:系统变量,在本模块使用返回__main__,在其他模块使用,返回自己的包名.模块名
--------------------------------------------
10 说说 你对 list、tuple、dict、set 的理解?
list:列表,有序,可修改,可重复
tuple:元组,不可变的列表
dict:字典,类似java的map,键值对形式,无序,key不能重复
set :集合,无序,不能重复
--------------------------------------------
11 说说你对深拷贝和浅拷贝的理解?
浅拷贝:
集合内的基本类型--拷贝;
集合内的对象类型--引用指向;
深拷贝:
集合内的基本类型--拷贝;
集合内的对象类型--创建对象,拷贝数据;
--------------------------------------------
12 对象初始化的过程?
1)先通过元类(type)创建类实例cls
2) 通过__new__() 创建对象实例self
3) 通过__init__() 给对象实例初始化数据
__init__ 和 __new__ 最主要的区别:
1)__init__ 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。
2)__new__ 通常用于控制生成一个新实例的过程。它是类级别的方法。
--------------------------------------------
13 说说类变量和对象变量的理解?
类变量在类中直接创建,属于类,对象都可以访问到
对象变量,定义在__init__()中,只要对象本身可用
--------------------------------------------
14 python方法和函数的区别?
类中声明的叫方法,参数第一个为(self)
函数定义在class外部,没有self参数
--------------------------------------------
15 python 中 pickle序列化和 json序列化有什么区别?
pickle:是python 自身的序列化,别的语言不能识别
json:序列化按照键值对的形式,别的语言可以识别
json需要先将对象字典化才能序列/反序列化,p1.__dict__
16 说说你对python 异常处理?
捕捉异常可以使用 try/except 语句。
try/except 语句用来检测 try 语句块中的错误,从而让 except 语句捕获异常信息并处理。
--------------------------------------------
17 python 中 pickle序列化和 json序列化有什么区别?
pickle:是python自身序列化,别的语言不能识别
json:序列化按照键值对的形式,别的语言都可以识别
json需要先将对象字典化才能序列/反序列化,p1.__dict__
--------------------------------------------
18 当执行python 内置的del() 时,会调用底层的什么方法?
len() 时,会调用底层的什么方法?
del() --> __del__()
len() --> __len__()
--------------------------------------------
19 说说你对函数中 形参是 *value **value的理解?
形参列表末尾有个带*的变量,实参传过来的多余数据会变成元组
形参列表末尾有个带**的变量,实参传过来的多余数据会变成字典
--------------------------------------------
20说你对观察者模式、发布订阅模式的理解?
观察者模式:当对象间存在一对多关系时,使用观察者模式。当一个对象被修改时,则会自动通知依赖它的对象。
发布订阅模式:订阅者需要关注队列时间,当队列发生变化时,订阅者会拿取关注的事件,进行消费
--------------------------------------------
21 基于我们写的多线程并发框架,如何接入新的业务,比如西瓜
定义西瓜的ProducerAction类,通过 queue_items() 实现生产西瓜的ConsumerAction对象实例列表;
定义西瓜的ConsumerAction类,通过 action() 实现具体的消费逻辑。