面试总结-Python篇

面试总结-Python篇

公众号:志趣分享


1、对解释性语言和编译性语言的认识?

解释性语言: 运行时解释器逐行解释源代码并立即执行的语言,边解释(翻译),边执行文件,不需要事先编译。
特点:(1)效率低逐行解释)(2)跨平台性好(只需解释器,就可以不同平台运行源代码)。
编译性语言: 程序执行前需要将源代码转换成机器语言,编译后的程序可以在没有编译器的情况下独立运行。
特点:(1)执行效率高(不需要每次运行时翻译);(2)跨平台性差(不同平台机器语言或许不同)。
eg:
解释性语言:Python、JavaScript、Ruby、Perl、Shell、MATLAB等。
编译性语言:C、C++、Pascal/Object Pascal(Delphi)、Golang、汇编语言等。


2、Python的运行过程?

Python在解释器上执行分为两个过程:
编译 >> 执行

  1. 编译:首先将源代码编译(翻译)成字节码(Bytecode),与平台无关,然后根据本地权限将字节码写成 .pyc 文件,如果源代码无修改,每次均会直接加载该文件,有改写则编译更新该文件。
  2. 执行:首先将字节码发送到Python虚拟机(PVM)上执行,PVM是一个迭代运行字节码的大循环。
    注意: Python的编译是动态的、按需进行的,并且编译结果(字节码)是中间代码而非机器代码。

3、Python的作用域?

Python中作用域包含四种:
3. Local:在函数中定义的变量;
4. enclosing:父级函数的局部作用域;
5. global:全局变量,定义与函数之外,所有函数均可访问;
6. built-in:内建模块/函数中的变量,如:int, len()等


4、Python中的数据结构?

python中的绝大部分数据结构可以被分解为三种类型:集合(Set),序列(Sequence),映射(Mapping)。

  1. 集合不同于标量、序列、映射,它支持数学理论的各种集合的运算。它的使用使得程序代码实现数学计算更方便。
  2. 序列是Python中最为基础的内建类型。它分为七种类型:列表、字符串、元组、字符串、数组、缓冲区、Xrange对象。常用的是:List、String、Tuple。
  3. 映射在Python的实现是通过数据结构字典。作为第三种基本单元,具有良好的扩展性,被广泛使用。

5、Python中可变与不可变类型?

可变类型不可变类型
列表、集合、字典字符串、元组、数字

注意:列表适合存储有序的数据集合,集合适合存储无序且唯一的元素,字符串则用于处理文本数据。


6、进程和线程的区别?

进程:一个运行的程序(源代码)就是一个进程,进程是系统资源分配的最小单位,进程拥有自己独立的内存空间,所有进程间数据不共享,开销大。
线程:CPU调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程存在,一个进程至少有一个线程,即:主线程,而多个线程共享内存(包括:全局变量,内存数据),从而极大地提高了程序的运行效率。
注意:线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侥幸烟酒生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值