p5面试题

本文涵盖了Python内存管理、类方法、闭包和装饰器等基础,深入讨论了Git的用途和初始化仓库,以及Python多线程与并发的概念。此外,还介绍了Django的请求处理流程、开发模式、静态和动态页面。文章还涉及了JWT的身份验证、Redis的优缺点、持久化机制和内存淘汰策略,以及数据库事务的四大特性。通过对这些面试常见问题的解答,帮助读者全面掌握相关知识。
摘要由CSDN通过智能技术生成

面试题

1. python 的内存管理

引用计数,变量的赋值只是对对象的引用,删除一个变量就减少了一个引用。
垃圾回收,当对象的引用计数为0时,对象会被垃圾回收,释放内存。自动的垃圾回收是需要一定的阈值条件,垃圾对象达到一定的数量,才会触发;主动触发gc.collect ()
内存池机制,python申请的1-256k的小块内存,由malloc进行分配,垃圾回收后,内存不会释放,而是由内存池进行管理,便于下次使用。

2. 类方法与实例方法、静态方法

类方法

  • 使用@classmethod装饰的方法,第一个参数为当前类cls, 可以被类对象、实例对象引用

实例方法

  • 在类中定义的普通方法,第一个参数为当前实例对象self, 可以被类对象、实例对象引用

静态方法

  • 使用@staticmethod装饰的方法,参数不需要传cls或者self,可以自行决定传递的参数,就相当于将一个普通的方法放入类中。 可以被类对象、实例对象引用

3. python的闭包与装饰器

闭包,定义函数时,在其内部又定义了一个函数,内部函数的内部作用域引用了外部函数的局部变量,外部函数返回内部函数,这种函数嵌套的方式就是闭包。

装饰器,它是闭包的一种应用形式,可以在不改变源码的情况下扩展函数的功能。使用**@高阶函数**去装饰另一个函数,进行功能扩展。

4. 什么是git? 有什么作用? 如何初始化一个本地仓库

git, 分布式版本控制工具
可以实现软件的版本控制,在多个版本之间切换;
可以实现多分支开发,提高开发效率;
可以实现历史记录,历史状态的恢复;
团队内部实现权限管理等。

初始化本地仓库: git init

5. 什么是并行?什么是并发? Python的多线程属于哪种,为什么?

并发,两个或两个以上的程序,在同一时间内执行。
并行,同时执行,异步独立
python的多线程属于并发,在python解释器内部有一个GIL,所有线程必须申请到该锁才可以解释执行。

  • python 是弱类型的语言,由python解释器边解释边执行。 源码—解释 为01001–交给CPU执行
  • Java C 强类型语言, 源代码需要编译,得到字节码文件 —CPU执行
  • python解释器 ----开一个进程, 在这个进程里有一个GIL(Global Interpreter Lock)全局解释器锁
  • 在一个进程里开的所有的线程,必须申请这个GIL, 然后才可以执行。其他线程必须等待。
  • 所以python的多线程是属于并发。

6. Django对请求的处理流程

  1. 处理请求的中间件,在进入路由匹配之前对请求做一些预处理或者直接返回响应
  2. 主路由及分布式路由的匹配
  3. 处理视图的中间件,在请求进入视图之前,做一些预处理
  4. 在视图中接收请求、处理请求、返回响应;视图中发生异常时,还可以使用异常处理中间件进行处理。
  5. 处理响应的中间件,对响应做一些预处理

7. 开发模式有哪些?

前后端不分离,页面结构和数据由后端服务器渲染,然后返回给浏览器,由浏览器展示即可。缺点是既要做后端接口,又要做模板页面;服务器计算压力大。
前后端分离,将页面结构、数据分离开,前端服务器返回页面结构,后端服务器返回数据。 由客户端浏览器最终渲染整体页面。可以实现并行开发、充分利用客户端的资源,降低服务器的压力。

8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值