python后端面试面经经历

TCL集团

date: 2024/4/8

第一轮:

总时长:40min

1、自我介绍

2、问题

  1. Python中的 __new____init__ 的区别

    • __new__ 是在一个对象实例化的时候调用的第一个方法,它用于创建实例并返回该实例的引用,是一个类方法。
    • __init__ 是在对象实例化后调用的第一个方法,它用于对实例进行初始化操作,即初始化已经创建好的对象。
  2. Python多线程的使用场景

    • 多线程通常用于并行处理 I/O 密集型任务,如网络请求、文件读写等。
    • 在需要同时执行多个任务且任务之间相互独立时,可以考虑使用多线程。
    • 一般不推荐在 CPU 密集型任务中使用多线程,因为 Python 的全局解释锁(GIL)限制了多线程的并行性能。
  3. 如何保证Python多线程安全

    • 使用线程锁(Lock)来保护共享资源,确保在同一时刻只有一个线程可以访问该资源。
    • 使用线程安全的数据结构,如 queue.Queue
    • 尽量避免使用全局变量,减少共享资源的使用。
  4. 如何解决锁竞争的问题

    • 合理设计锁的粒度,尽量减少锁的持有时间。
    • 使用读写锁(RLock)来提高并发读取的性能。
    • 考虑使用无锁数据结构,如 queue.Queue
  5. Django的中间件的了解

    • Django 中间件是一个轻量级的插件系统,它可以介入 Django 的请求和响应处理过程。
    • 中间件可以用于处理请求前的预处理、请求后的后处理、异常处理等。
    • 中间件是一个类,需要实现 __init____call__ 方法。
  6. Django的生命周期

    • Django 应用的生命周期包括启动阶段、请求处理阶段和关闭阶段。
    • 在启动阶段,Django 加载设置、注册应用等。
    • 在请求处理阶段,Django 接收请求、执行视图函数、生成响应等。
    • 在关闭阶段,Django 执行清理工作,如关闭数据库连接等。
  7. Django的ORM如何调优

    • 使用 select_relatedprefetch_related 来减少数据库查询次数。
    • 使用 deferonly 来选择性加载字段。
    • 使用缓存来减少数据库查询压力。
    • 使用数据库索引来优化查询性能。
  8. SQL中的TRUNCATE和DELETE的区别

    • TRUNCATE 用于删除表中的所有数据,但保留表的结构。
    • DELETE 用于根据条件删除表中的数据,可以选择性地删除部分数据。
    • TRUNCATE 是 DDL(数据定义语言)命令,DELETE 是 DML(数据操作语言)命令。
  9. 解释Redis雪崩,解决方案

    • Redis 雪崩是指在缓存失效或者大量缓存同时失效时,所有的请求都会打到数据库,导致数据库压力过大,甚至宕机。
    • 解决方案包括合理设置缓存过期时间、使用分布式锁来避免缓存同时失效、使用热点数据预加载等。
  10. 蓝鲸PaaS平台相关的开发

    • 蓝鲸 PaaS 平台提供了丰富的开发接口和组件,可用于快速开发各种应用。
    • 开发人员可以通过蓝鲸的API来实现自动化部署、监控告警、日志查询等功能。
  11. 是否能够把PaaS平台中的ITSM独立部署

    • 可以,但是需要考虑到ITSM涉及到的依赖关系和集成情况,确保在独立部署时不会出现功能缺失或者依赖错误的情况。

3、算法题:字符串反转,要求空间复杂度O(1)

def reverse_string(s):
    # 将字符串转换为列表,因为字符串是不可变的,无法直接修改
    s = list(s)
    # 定义左右指针
    left, right = 0, len(s) - 1
    # 从两端向中间遍历并交换字符
    while left < right:
        s[left], s[right] = s[right], s[left]
        left += 1
        right -= 1
    # 将列表转换回字符串并返回
    return ''.join(s)

# 测试
original_str = "hello"
reversed_str = reverse_string(original_str)
print("Original string:", original_str)
print("Reversed string:", reversed_str)

第二轮

待更新。。。

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值