首页 > 其他分享 >面试题

面试题

时间:2023-04-01 17:15:29浏览次数:34  
标签:__ 面试题 http 请求 对象 数据库 拷贝

目录

可变类型与不可变类型
可变类型:列表,字典,集合
不可变类型:字符串,元组,整型,浮点型
常用的魔法方法
python中的魔法方法,定义在类中的一些__开头的方法,在某种情况下会自动触发

__init__:类加括号产生对象,对对象进行初始化的时候触发
    
__new__:类加括号产生对象,调用元类中的__new__产生一个空对象,这个方法有返回值,再触发__init__对对象进行初始化
    
__call__:对象加括号的时候自动触发
    
__getattr__:对象点一个不存在的属性的时候自动触发
    
__setattr__:对象点属性等于一个值的时候自动触发
 
__getitem__:对象['属性'],属性不存在的时候自动触发
 
__setitem__:对象['属性']=值的时候自动触发
 
上下文管理器:只要重写了__enter__和__exit__方法,就具备这个能力
    with 对象 as xx:
        1.写了一行行代码,这个时候就自动触发__enter__
    2.上下文结束,这里写了一行代码,触发__exit__,做一些资源清理工作
类中的装饰器
-classmethod:绑定给类的方法,类调用的时候会直接将类作为第一个参数传入,对象也可以调用,对象在调用的时候会将产生对象的类,作为第一个参数传入
 
-staticmethod:类中定义的静态方法,类或者对象调用的时候有几个参数传几个参数
 
-没有写装饰器的方法,是绑定给对象的方法,对象在调用的时候会把对象作为第一个参数传入

-propty:把方法伪装成属性,这样调用这个方法的时候直接调名字就可以,不用加括号
  
-类中隐藏方法或者属性:__属性,__方法,但是大家统一默认隐藏写一个_就可以了

双写一致性

出现原因:因为有些接口访问的次数比较频繁,如果每次方法接口都要查询数据库,那么对资源来说是一种浪费也比较占用数据库资源,特别是当并发比较高的时候会造成数据库的崩溃,所以这些接口访问的资源我们可以放到redis缓存数据库中,每次访问这个接口资源直接去redis缓存数据库中拿就可以啦,但是这样如果我们对mysql数据库进行数据的新增或者删除,而接口访问的是redis数据库,这样就会有一个数据的误差
  
解决办法:
    1.定时更新redis缓存数据库
    2.修改数据后,删除缓存数据
    3.修改数据,更新缓存
 
我们使用的是使用celery开启一个定时任务来进行数据的更新,虽然会有一定的延迟性,但是对于图片的接口影响不会太大
断点续传
上传途中如果中断会在本地生成一个保存中断位置的文件,下次上传的时候直接读取中断位置文件基于该位置继续上传
内网穿透
内网穿透,即内网映射,内网ip端口映射到公网,让外网访问内网的实现
可以采取的办法:
  开源的:frp,ngrok
  收费的:花生壳,神卓互联
缓存击穿
http与https
-ssl认证
    	-http和https的区别
        	-https=http+ssl
       -http版本区别:
        -0.9:底层基于tcp,每次http请求,都是建立一个tcp连接,三次卧室,请求结束需要4次挥手
        -1.1:请求头中有个参数Keep-alive,可以保证多个http请求共用一个TCP连接
        -2.x:多路复用,多个请求使用同一个数据包
 
     -http请求头:x-forword-for,user-agent,cookie,referer,contenType
     -http:
        -请求协议
        	-请求首行:请求头地址,请求方式,http的版本
           -请求头:key-value,x-forword-for,user-agent,cookie,referer,contenType
           -请求体
        -响应协议:
            -响应首行:响应状态码,响应字符串描述
            -响应头:key-value,响应状态码,cookie
            -响应体

数据库如何处理的?

-云数据库:阿里云数据库,花钱买服务---获取账号密码---》公司不需要自己配置
    -mysql
    -redis
    -mongodb
 
-自己的数据库,部署在云服务器上的数据库,是自己的

用过什么云产品

-阿里云的ecs,也就是阿里云的服务器
-阿里云的oss,对象存储
-阿里云的云短信
-七牛云,文件存储

看看数据库

-配置文件dev.py  连接的是本地的127.0.0.1
-上线只是给一个地址,端口,用户名和密码
-上线的数据库服务和项目服务,是在同一台机器

celery

-异步任务
-定时任务
-延迟任务

多线程

-怎么用的,两种方式?

	-在爬虫的时候使用,类实例化得到对象Thread类,传入target任务函数,对象.start
    -写一个类,继承Thread,重新run方法,写任务,类实例化得到对象
    
   
-io密集型用多线程,计算密集型使用多进程---》只针对cpython

mysql

唯一索引和联系索引:

1千万w,性别字段(男女),查询时候,这个字段要不要加索引

因为他就两种状态,联机索引是没有用的,即便建立索引,也不会走

实现踢下线

session机制---》表中把它那条记录删除

-token机制
	-下线人id---》放个位置
	-进入到认证类中---》

实现黑名单功能

-建立个黑名单表
-id,用户id,ip,时间

深浅拷贝是什么

深浅拷贝是对数据进行复制

对于不可变类型来说深浅拷贝都是一样的重新拷贝一份数据

对于可变类型来说如果内部嵌套的还有可变类型

浅拷贝只拷贝第一层,嵌套的拷贝的是内存地址

深拷贝是完全再复制一份出来

魔法方法new和init有什么区别

__new__产生一个空对象,有返回值,返回值是空对象
__init__给new产生的对象设置初始值,独有的属性

python的可变和不可变数据类型是什么?

值改变内存地址不变是可变类型:列表,集合,字典,文件对象
值改变内存地址改变是不可变类型:整型,浮点型,字符串,元组,布尔

什么是生成器,有什么应用场景

当函数体代码有yeild关键字的时候,函数名加括号不会执行函数体代码,而会变成一个生成器,生成器对象点__next__执行

应用场景:比如说在进行文件操作时,如果文件过大,一次性打开会占用过多的内存空间可能会造成内存溢出,使用生成器用多少拿多少,减少内存消耗

标签:__,面试题,http,请求,对象,数据库,拷贝
From: https://www.cnblogs.com/clever-cat/p/17278905.html

相关文章

  • 测试面试题
    软件测试1、软件的定义?软件是一系列按特定顺序组织的计算机数据和指令的集合,包括与计算机系统操作有关的程序、规程、规则、文件、文档和数据。软件被划分为系统软件、应用软件和中间件。软件不仅包括电脑程序,还包括与这些程序相关的文档,可简单地理解为程序和文档的集合。2、......
  • 阶段小结:批量删除的时候使用 this.id的详解、jquery里面的$(this)和this的区别、面试
    this.id指的是当前对象的id比如我点击了button那么此button按钮的id就可以用this.id文章目录this.id指的是当前对象的id比如我点击了button那么此button按钮的id就可以用this.id我们先看项目里面方式1:利用样式,可以隐藏,但是不推荐方式二主角this.id方式:给点击删除的时候......
  • 渡一教育_每日一练:对象的加载、对象的创建相关知识面试题
    系列文章目录文章目录系列文章目录题目一:对象的加载、对象的创建相关知识面试题题目答案和解析题目一:对象的加载、对象的创建相关知识面试题题目答案和解析用内存图来做就很简单所以我们从上图可以看出,跟类加载机制有关系传参传参完毕之后,就开始执行那个方法了=最终的答案是D......
  • 总结的面试题、数组下标为什么从0开始、数组名中存储的是什么、数组的元素如何存储
    系列文章目录文章目录系列文章目录第一题第二题第一题详细解答链接:https://mp.weixin.qq.com/s/N1Mj3DLbFkZeT5hVR05eNA第二题数组的存储:1、数组下标为什么从0开始?下标表示的是这个元素的位置距离首地址的偏移量2、数组名中存储的是什么数组名中存储的是数组在堆中一整块区域......
  • C++面试必备:常见C++面试题汇总及详细解析
    C++作为一门重要的编程语言,其在面试中常常是热门的考察对象。本文将会介绍一些常见的C++面试题,帮助C++面试者避免很多不必要的困惑和迷惑。每个问题都有相对应的答案,以便各位同学快速查阅。C++和C的区别是什么?C++是C的超集,也就是说,C++包括了C的所有基础特性,并且还增加了一些新的......
  • 「高频必考」Docker&K8S面试题和答案
    先送福利:Go如何自动解压缩包?|文末送书Docker如何在Docker容器内部访问主机上的服务?可以通过设置主机网络模式,使用--net=host参数来访问主机上的服务。这样,容器和主机将共享一个网络命名空间,容器将可以直接访问主机上的服务。如何在Docker容器中运行多个进程?Docker推荐每个容......
  • unity3d面试题及答案
    unity3d面试题及答案1.请描述游戏动画有哪几种,以及其原理。答:主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。    关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2中使用了这种动画;   单一网......
  • MySQL数据库面试题
    数据库三大范式是什么第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理......
  • 力扣---面试题 01.09. 字符串轮转
    字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1:输入:s1="waterbottle",s2="erbottlewat"......
  • #yyds干货盘点# LeetCode面试题:不同路径
    1.简述:一个机器人位于一个mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Fin......