面试5
1 简要说明视图的作用
在Django框架中视图是:定义完成各类对象所需功能的函数,接收请求,处理业务逻辑,返回结果
在MySQL数据中视图是:查询语句执行后返回的结果集,是对若干张基本表的引用,一张续表,查询语句执行的结果,不存储数据,方便操作,增强可读性,更加安全
2 deepcopy 和 copy的区别
deepcopy:包含对象里面的子对象的拷贝,原始对象的改变不会造成拷贝里的任何改变
copy:浅拷贝,只拷贝顶层元素,没有拷贝子对象,原始数据改变,拷贝后的对象也会改变
3 每天早上6点到12点每隔2小时执行一次 /usr/bin/httpd.sh 怎么实现
crontab -e
6-12/2 * * * /usr/bin/httpd.sh restart
4 介绍python中的with方法
with还可以很好的处理上下文环境产生的异常,基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。
紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,
这个方法的返回值将被赋值给as后面的变量。
当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法,
自动将文件关闭退出
5介绍下@classmethod @staticmethod @property区别
@classmethod:类方法装饰器,调用类中的方法装饰目标对象
@staticmethod:静态方法装饰器,是跟类对象没有多大联系的一个函数,被定义后可以被类对象调用
@property:将方法变成对象的一个属性,可以直接访问类对象的属性
6 介绍下python函数参数传递的类型
python中函数参数传递为传引用
对于不可变类型(如数值、字符串、元组等),由于值不可改变,传过去的效果类似C语言里面的传值
对于可变类型(如列表),值可以被修改,实现的效果类似C语言中的传引用
7 new 和 init的区别
__new__是在创建对象前调用,创建实例对象并返回实例对象
__init__在实例对象创建完成后调用,并对该对象初始化
8 介绍python中yield的用法
yeild具有阻塞函数输出结果,并记录本次执行所有数据(寄存器、时间片等)的功能,在next()或__next__函数作用下逐个输出所有数据
yield用在函数中,函数就是一个生成器,返回可迭代对象在for循环和next()函数配合下可以遍历所有对象
在线程中使用yield可以实现协程
9简述Django对http请求的执行流程
在接受一个Http请求之前的准备
启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器。
当一个http请求到达服务器的时候
服务器根据WSGI协议从Http请求中提取出必要的参数组成一个字典(environ)并传入Handler中进行处理。
在Handler中对已经符合WSGI协议标准规定的http请求进行分析,比如加载Django提供的中间件,路由分配,调用路由匹配的视图等。
返回一个可以被浏览器解析的符合Http协议的HttpResponse。
10 .List1 = [2, 3, 8, 4, 9, 5, 6] 使用for循环从大到小排序
11 Python如何实现单例模式
12 Inspect模块有什么用
该inspect模块提供了几个有用的功能来帮助获取有关活动对象的信息,如模块,类,方法,函数,回溯,框架对象和代码对象。例如,它可以帮助您检查类的内容,检索方法的源代码,提取并格式化函数的参数列表,或获取显示详细回溯所需的所有信息。
这个模块提供了四种主要的服务:类型检查,获取源代码,检查类和函数,检查解释器堆栈。
13什么是lambda函数?它有什么好处?
匿名函数,比较轻便,省去函数命名,常用于简单的逻辑运算,也常搭配filter和map函数等高级内建函数使用
14 Python如何捕获异常
使用try-except代码块,一般是为了让代码更加健壮,将有可能的代码放到try里,如果出现异常except就会自动捕获到,然后做出对应的处理
15 在Python中,list, tuple, dict, set有什么区别,主要应用在什么场景
List : 列表,有序,查找和插入的时间随着元素的增加而增加,占用内存少
Tuple:元组,用法类似列表,唯一不同是不可变(增,减元素)
Dict:字典,key-value键值对,无序,查找,插入速度快,但是耗内存
Set:集合,只有key的无序的,不重复的字典
这几个都是常用的啦,没有什么特定的场景,凭感觉都知道什么时候用哪种数据结构
16.请用自己的算法,合并如下两个list, 并去除重复的元素:
List1 = [2, 3, 8, 4, 9, 5, 6]
List2 = [5, 6, 10, 17, 11, 2]
17.GET和POST的区别(口述)
post安全,将信息封装到请求体内,get不安全,发送请求时会将信息暴露在url上
post和get都能发送或接收数据,但是语义上一般是post发送,get是从服务器获取
18.列举您使用过的Python中的编码方式(熟悉的在前)
Utf-8编码:在Unicode编码上进行了优化,节约内存
Unicode编码: 将所有语言统一到一套编码中,缺点是占用内存大
Ascll编码:不支持中文
gb2312编码:是中国规定的汉字编码,也可以说是简体中文的字符集编码
GBK:是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名
Base64网络上最常见的用于传输8Bit字节代码的编码方式,具有不可读性,可用作简单的加密方式
19 Python3.5语言中enumerate的作用是什么?
Enumerate是python的内置函数常用于遍历序列中的元素及下标,一般搭配for语句一起使用
20如何给一个类方法传参?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理