面试:python相关基础知识

个人博客,欢迎来撩 fangzengye.com

  • 列表list与数组tuple区别

区别对象Listtuple
重编辑不可
速度
语法中括号

小括号 

 

  • python与c的区别

python是解释性语言、面向对象、动态语言

c是过程性语言、面向过程、静态语言

pep是什么

是一组python的语法规则、作用是保持代码的最大可读性

  • 如何在python管理内存

python有私有堆空间,程序员无法管理,需要核心api才能管理,python解释器富足管理此问题。

  • python path是什么

导入库的环境,检查程序员导入库是否存在。

  • 什么事导入块,常用有哪些

.py文件。内置有sys,random,math,datatime,jjson

 

  • python是否区分大小写

是的

  • 常见的类型转化

int()

float()

Str()

dict()

Tuple()

List()

set()

Ord()

Hex()

  • Python 需要缩进
  • 什么事__init__

是python的结构或方法,每个类都有,目的是为其分配内存

  • 什么事lambda

匿名函数,作用减少单行函数的存在,使代码更加简洁。但不会因此执行效率提高

- python的self是什么

指实例、对象

 

  • [::-1]代表翻转列表{::-1}代表翻转字典
  • 怎么随机列表

可以使用shuffle函数进行随机列表元素

  • 什么是迭代器

可以遍历、迭代的对象

  • 如何生成随机对象

random.random()

random.uniform(a,b)随机返回浮点数

random.range(a,b)随机返回整数

random.normalvariate(mean,sigma)返回正态分布

  • range与xfrange区别

range返回静态列表

xrange返回一个生成器,大列表优先考虑这个函数

  • pickling与unpickling区别

将任何类型转为字符串为pickling,将字符串解析到原始类型为unpicking

  • capitalize()将首字母转为大写
  • lower()全部转为小写
  • 操作符is,in,not:判断元素是否一样,存在,不存在列表、元组、集合
  • Help()查看函数的信息、属性,dir()查看函数定义
  • 退出时是否释放所有内存

否,循环引用其他对象或全局对象的不会全部释放,另外饮用c语言也不会释放

  • 字典:

由键与键值构成的一对一的关系

  • 三元运算

[on_true] if [expression] else [on_false] x

  • args,*args,**args区别

args:确定个数变量

*args:不确定变量传入函数,将其打包成元组

**args:不确定个数变量传入函数,将其打包成字典

 

  • split():正则分割字符串到列表
  • sub():正则匹配子字符串,用新的字符串代替
  • subn():正则匹配子字符串并返回新字符串
  • 负指数:代表倒数第几个
  • 删除文件:os.remove()
  • 内置类型有哪些

int,float,str,boolean

  • numpy优点

可以进行矩阵运算,速度快,FFT,线性代数,基本的统计,直方图

  • 如何添加数组的元素

append(),insert(index,i),extend()

  • 删除数组的元素

pop(),remove()

 

  • 浅拷贝:只拷贝对象的地址,深拷贝:拷贝对象的地址,如果还有父对象,则拷贝父对象存储到另外一个地址。
  • 手动实现深拷贝
def deepCopy(src):
    if isinstance(src, dict):
        dst = {}
        for k,v in src.items():
            dst[k] = deepCopy(v)
        return dst
elif isinstance(src, list or tuple):
    dst = []
    for i in src:
        dst.append(deepCopy(i))
    return dst
else:
    return src</code></pre> 

 

 

  • new与init区别

new创建实例,继承父对象,需要返回值,至少有一个参数cls

init初始化实例,不需要返回值,至少有一个参数self

 

  • 编码:将字节变成01的码位,解码:将01的码位转成字节
  • 装饰器:

 

将很少改动的函数打包成一个装饰器,供其他函数使用。

  • 多进程与多线程区别

多进程:

  多进程优点:

  1、互相独立,子进程崩溃没关系;

  2、通过增加CPU,扩充性能;

  3、可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;

  4、每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大。

  多进程缺点:

  1、逻辑控制复杂,需要和主程序交互;

  2、需要跨进程边界,多进程调度开销比较大;

  3、最好是多进程和多线程结合

  多线程:

  多线程的优点:

  1、无需跨进程边界;

  2、程序逻辑和控制方式简单;

  3、共享内存和变量

  多线程缺点:

  1、每个线程与主程序共用地址空间,受限于2GB地址空间;

  2、线程之间协调麻烦;

  3、线程之间有耦合性;

  4、到达一定的线程数程度后,即使再增加CPU也无法提高性能

  5、线程能够提高的总性能有限。

 

  • CPU密集型 vs IO密集型
    我们可以把任务分为计算密集型和IO密集型。

    计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-12-05 20:55  开源的Boy  阅读(97)  评论(0)    收藏  举报