返回顶部

常见面试题

1  谈谈对 python GIL锁,对多线程有什么影响

  GIL使得同一时刻只有一个线程在一个CPU上执行,无法将多个线程映射到多个CPU上执行。
并不是多线程在GIL下,我们的数据就是安全的了,因为线程中的数据是共享的,一个线程不是从执行开始到结束一致占有GIL,它会在执行的过程中释放,另一个线程获得锁执行,可能会修改数据。

2 谈谈你对同步,异步,阻塞非阻塞理解

  同步:是指代码调用IO操作时,必须等待IO操作完成才返回的调用方式

  异步:是指代码调用IO操作时,不必等待IO操作完成就返回的调用方式

  阻塞:是指调用函数时候当前线程被挂起

  非阻塞:是指调用函数时候当前线程不会被挂起,而是立即返回

3 什么是协程?

  协成类似于一个可以暂停的函数(可以向暂停的地方传入值),可以在一个线程中进行来回切换

4 使用协程写一个斐波那契数列

复制代码
def fib(n):
    index = 0
    a, b = 1, 0

    while 1:
        if index >n:
            break

        yield a
        a,b = a+b,a

        index +=1

if __name__ == '__main__':
    f= fib(5)
    print next(f)
    print next(f)
    # next()或者遍历都可以取值
    # for item in f:
    #     print item
复制代码

 

5 装饰器功能?

  在不改变原有代码的情况下,增加功能

6 使用装饰器写一个每调用一次函数加1的功能

1
2
3
4
5
6
7
8
9
10
11
12
13
index = 0
 
def Total(func):
    def wraper():
        func()
        global index
        index +=1
        print('调用了',index)
    return wraper
 
@Total
def aTest1():
    pass

  

7 __new__ 方法 ,写一个单例

 

8 django的生命周期和 简述Django对http请求的执行流程是一个问题

  用户输入url 进行nginx进行转发,经过uwsgi(封装用户请求的信息),经过中间健,django的handler处理器进行路由映射,

业务逻辑处理(如果让你说的复杂一些,把权限,认证,节流都说一下),返回数据给浏览器

9 tcp和udp的却别

  tcp是面向连接的(数据传输时需要建立3次握手),udp是面向数据报的(不建立连接,直接发送数据)

  tcp 安全不容易丢包,因为要建立连接传输速度相对udp慢一些

  udp 传输速度快,容易丢包

10 3次握手

 

11 osi七层模型

 

12 以下3个函数的用法

  1 map函数(根据提供的函数对指定序列做映射),

  2 filter函数会对指定序列执行过滤操作,reduce函数,

  3 reduce函数会对参数序列中元素进行累积

 

13 正则表达式贪婪和费贪婪的区别,写一个匹配Ip地址的正则

1
re.match(r'\d+\.\d+\.\d+\.\d+\.',ip)

  

14 linux中查看文件权限的命令?修改权限的命令?查看内存的命令,实时查看进程的命令

  ls -a 查看文件权限

  chomx 修改权限

  df du 查看内存

   top 实时查看进程 

  

15 介绍下restfuiAPI

 

16 什么是csrf攻击

 

17  *args 和**kwargs 使用方法?

 

18 django中间键?介绍下有什么作用

   django 中间键  是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出

   作用 :记录日志,登录认证权限

 

19 python类的特性?什么是封装?什么是继承?什么是多态?

  封装:封装相关的方法和数据

  继承:继承公共基类

  多态:同样的方法被不同的对象调用会有不同的特性,如str+str(拼接字符串),1+1求和

 

20  @classmethod @staticmethod @property区别

  

21 new 和 init的区别

  new创建对象

  init初始化一个对象

 

22 迭代器和可迭代对象的区别 ?

  迭代器: 可以被next()函数调用,并不断返回下一个值的对象称为迭代器 。它内部有 next 方法和 iter 方法

  生成器:在python中一边循环一边计算的机制,称为生成器。特点:只有在调用时才会产生相应的数据。

 

23 进程,线程和协程的区别

  进程时进行资源管理的,不能共享数据

  线程是cpu最小的执行单元,各个线程内的数据是共享的

  协程是由程序员在线程内调度的,又称微线程

 

24 python 中的反射

  python

中反射是利用字符串的形式去对象中操作

 hasattr(obj,str), getattr(obj,str) setattr(obj,str) delattr(obj,str)

 

25 什么是PEP8

26  django rest framework 中的功能,如权限管理,认证管理,序列化,访问频率控制

 

26 什么是队列,什么是栈,用类写一个

  队列先进先出

  栈先进后出

  写法就是在类__init__中定义一个列表,在定义相应的方法对其进行操作

 

27 json.dump 和json.dumps的区别

   json.dump 把json数据写入文件中

   json.dumps把把数据转换成json格式

 

数据库 .mongo (了解即可)

  1 主要看查询

  2 事务

  3 外键(一对一,一对多,多对多)

  

 

posted @   Crazymagic  阅读(219)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示