Python后端的那些面试题-网络资料整理版

1.TCP协议的实现过程,三次握手?

TCP作为一种可靠传输控制协议
核心思想:保证数据可靠传输,提高传输效率
三次握手建立连接
第一次握手,客户端发送数据包给服务端:证明了客户端有发送的能力
第二次握手,服务端接收到之后,再发送数据包给客户端:证明了服务端有发送和接收的能力
第三次握手,客户端接收到服务端的数据包,再发送数据包给服务端:证明了客户端有接收的能力
所以每一次的握手都是去完成对应的功能,只能确认客户端和服务端都有发送和接受的能力,才能保证整个TCP链接的可靠性在这里插入图片描述
参考的详细链接 TCP协议的三次握手过程

2.tornado框架是如何处理http请求?

参考的详细链接 Tornado源码分析之http服务器篇

3.浏览器是如何实现客户端缓存图片的?

对Apache服务器上的WordPress博客/网站,可以通过编辑根目录下的.htaccess文件来激活图片缓存功能。 浏览器能够简单读取htaccess 文件的缓存控制头,而缓存头会要求浏览器将图片或其它任何媒体保留2周时间(或者更久),这样浏览器就能够随时调用 图片,直到图片过期。 两周后浏览器重新将过期的图片存入缓存。 万一浏览器缓存被清空,浏览器会从缓存中重新加载图片或其它媒体。
参考的详细链接 浏览器如何实现图片缓存

4.Python 内存管理机制和垃圾回收机制

Python内存管理机制,主要有以下两个方面要讲,引用计数以及垃圾回收,要想理解的再彻底一些,那就要涉及到Python内存池机制
Python的GC模块主要运用了引用计数来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”解决容器对象可能产生的循环引用的问题。通过分代回收以空间换取时间进一步提高垃圾回收的效率。
参考的详细链接 Python“内存管理机制”之我见
参考的详细链接 Python 内存管理机制和垃圾回收机制

5.讲一下快速排序算法过程?时间复杂度

每次都取数组的第一个元素作为比较标准(哨兵元素),凡是大于这个哨兵元素的都放在它的右边,凡是小于这个哨兵元素的都放在它的左边;
快速排序的平均时间复杂度也是:O(nlogn)
快速排序最差的情况下时间复杂度为:O( n^2 )
快速排序最优的情况下时间复杂度为:O( nlogn )
最优的情况下空间复杂度为:O(logn) ;每一次都平分数组的情况
最差的情况下空间复杂度为:O( n ) ;退化为冒泡排序的情况
参考的详细链接 排序算法之 快速排序 及其时间复杂度和空间复杂度

6.说一下计算机系统里面的线程,进程,协程?

进程就是一个程序在一个数据集上的一次动态执行过程(数据集是程序在执行过程中所需要使用的资源)。
线程也叫轻量级进程,它是一个基本的 CPU 执行单元,是比进程更小的能独立运行的基本单位。
协程是一种用户级的轻量级线程。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。
参考的详细链接 计算机中多进程、多线程、协程

7.说说tornado框架的特点?

1、作为Web框架,是一个轻量级的Web框架,类似于另一个Python web框架Web.py,其拥有异步非阻塞IO的处理方式。
2、作为Web服务器,Tornado有较为出色的抗负载能力,官方用nginx反向代理的方式部署Tornado和其它Python web应用框架进行对比,结果最大浏览量超过第二名近40%
参考的详细链接 Tornado框架简介

8.使用过redis吗?说说对redis的理解?

在这里插入图片描述
Redis是一种基于键值对的NoSQL数据库(非关系型数据库);是一个key-value存储系统
Redis有两个特点:高能性 可靠性
高能性:Redis将所有数据都存储在内存中,所有读写性特别高
可靠性:Redis将内存中的数据利用RDB和AOF的形式保存到硬盘中,这样就可以避免发生断点或机器故障时内存数据丢失的问题
参考的详细链接 请你谈谈对Redis的认识?记住这些来有条有理的装逼

9. tornado是如何实现高并发的?

异步非阻塞io
底层是基于epoll事件循环
协程提高了代码的可读性

10. gevent的实现原理?

参考的详细链接 python——总结协程实现原理(gevent
参考的详细链接 python3协程的工作原理

11. 如何查看mysql语句是否使用索引?

使用explain关键词就可以查看sql语句是否使用索引,也提高我们sql优化
参考的详细链接 mysql 查看sql是否使用索引

12. mysql慢查询怎么查看?

show variables like 'log_slow_queries'; #查看慢SQL是否启用
set global log_slow_queries = on; # 开启慢查询命令
set global long_query_time =1; #设置时间为1秒
show global variables like 'long_query_time'; #查看设置的时间
show variables like 'slow_query_log_file'; #查看慢查询存放日志
参考的详细链接 mysql查看慢查询、分析执行SQL的效率

13. TCP协议如何解决拥塞?

参考的详细链接 TCP之拥塞处理详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值