python常见面试题以及相关知识要点

本文深入探讨Python的可变与不可变类型、浅拷贝与深拷贝的区别,解析*args与**kwargs的用法,阐述静态方法与类方法的功能,以及进程、线程与协程的工作机制。同时,对比Cookie与Session的使用场景,概览Django请求的生命周期,解析平衡点算法,对比机器码与字节码的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考别人的,一边记录一边记忆。后面整理

https://www.cnblogs.com/iyouyue/p/9099228.html?tdsourcetag=s_pctim_aiomsg

个人博客

github

github.io

上面链接原文总结的很全:

python的可变类型和不可变类型:

在Python中不可变对象指:一旦创建就不可修改的对象,包括字符串,元组,数字

在Python中可变对象是指:可以修改的对象,包括:列表、字典

range和xrange:

和range 的用法完全相同,但是返回的是一个生成器。

1python自带的数据类型:python中主要六个

    数字,字符串,列表,元组,集合(set),字典

2浅拷贝和深拷贝:

直接赋值是对对象的引用,相当于给对象取别名

浅拷贝  
        --对于可变对象而言是创建一个具有相同的类型,相同的值但id不同的对象
            如果有子对象,这些对象和原始对象的子对象是同一个引用,修改会影响原对象。
        --对于不可变对象而言,浅拷贝只拷贝引用。
深拷贝将对象本身复制给另一个对象,开辟新的内存空间,包括子对象,对副本进行修改时不会影响原对象。

3 ==和is:

  ==比较值是否相同,is比较id即内存地址是否一样,是否为同一个对象

4*args和**kwargs:

   *args接收n个位置参数,转化成tuple

   **kwargs接收n个关键字参数,转化成dict

5@staticmethod和classmethod:

 

6进场,线程,协程:

进程 是操作系统进行资源分配和调度的基本单位,是操作系统的结构基础。每个进程都独享系统的一部分资源。
线程是进程的一个执行单元,是CPU调度的最小单位,每个进程至少有一个线程。一个进程下多个线程共享进程所有资源。
协程 一个线程可以开多个协程,一个进程也可以单独拥有多个协程。
进程和线程都是同步机制,协程是异步机制。协程可以保留上一次的执行状态,
每次过程重入时,相当于进入上一次调用状态,协程只有在I/O密集型操作才会提高效率.

7简述Cookie和Session:

Cookie是采取在客户端保持状态的方法,是为了解决http无状态的缺陷

Session采用的是一种在客户端和服务端之间保持状态的方案,由于采用服务器端,保持状态的方式在客户端也要保存标识

而session也要借助与cookie达到目的

 

8:简述django的请求的生命周期。

#wsgi------>process_request------>process_view------>process_excption------>process_template------>process_responce------>wsgi

9:平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点

要求:返回任何一个平衡点

10:

机器码 机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。 通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。现在,除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。 机器语言是微处理器理解和使用的,用于控制它的操作二进制代码。 8086到Pentium的机器语言指令长度可以从1字节到13字节。 尽管机器语言好像是很复杂的,然而它是有规律的。 存在着多至100000种机器语言的指令。这意味着不能把这些种类全部列出来。 总结:机器码是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写,一般从业人员接触不到。 字节码 字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。 通常情况下它是已经经过编译,但与特定机器码无关。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。 字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。字节码的典型应用为Java bytecode。 字节码在运行时通过JVM(JAVA虚拟机)做一次转换生成机器指令,因此能够更好的跨平台运行。 总结:字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值