Python后端开发面试题汇总
一、系统相关
1、并发编程?
为什么需要并发编程?
提高程序的运行速度
Python对并发编程的支持?
多进程(multiprocessing):利用多核cpu的能力并行执行任务
多线程(threading):利用cpu和io同时执行的原理,让cpu不会干巴巴的等待io完成
异步io(asyncio):在单线程利用cpu和io同时执行的原理实现函数异步执行
多进程、多线程、多协程的应用场景?
多进程:cpu密集型计算
优点:利用多核cpu并行计算
缺点:占用资源最多,可启动数目少
多线程:io密集型计算,同时执行的任务不多
优点:相比进程更轻量级,占用资源少
缺点:相比进程,多线程只能并发执行,不能利用多cpu
相比协程,启动数目有限,占用内存资源
多协程:io密集型,需要超多任务执行
优点:内存开销最少,启动数量最多
缺点:支持的库有限(支持aiohttp,不支持requests),代码实现复杂
2、GIL(全局解释锁)?
只允许同一时间一个线程执行,保证数据的完整性
3、线程安全问题?
使用Lock锁
4、进程切换开销为什么比线程大?
进程切换时需要将当前执行的程序保存到寄存器,包括cpu的切换
5、进程之间的通信方式?
- 管道:半双工通信,只在父子进程中使用,存放数据少
- 消息队列:解耦,存放数据量比管道多
- 信号量:计数器,主要作为同一进程不同线程的同步手段
- 信号:用于通知/接收进程某个事件发生
- 共享内存:最快的通信方式,共享内存由一个进程创建,多个进程可以访问,与信号量配合使用
- socket:可用于不同机器的进程通信
6、简述socket中的select、poll和epoll的使用场景以及区别?
都是io多路复用的
- select需要不断轮询数据,时间复杂度低,文件描述符有限制(1024),常见的服务器软件Apache用的就是select
- select和poll的区别在于文件描述符,poll无限制
- epoll只会注册一个监听事件,当数据有变化时才通知,Nginx底层用的epoll,能处理高并发
在连接数少的情况下,select和poll的性能可能比epoll好,毕竟epoll的通知机制需要很多函数回调
7、epoll中水平触发和边缘触发的区别?
当监听事件的文件描述符有发生可读写事件,但是这一次没有把数据读取完,水平触发下次调用时还会通知你,如果一直没有操作完,它会一直通知直到完成操作,而边缘触发只会通知一次
8、Linux进程调度中有哪些常见的算法及策略?
- 先来先服务和短作业优先调度算法
- 高优先权优先调度算法
9、进程的状态有哪几种?
- 就绪状态:可以运行,但其他进程正在运行而暂时停止
- 阻塞状态:不可运行,除非某种外部事件的发送
- 运行状态:该进程实际占用cpu
10、简述LRU算法及实现方式?
一种缓存淘汰机制,从内存中找到最久未使用的数据置换出来,衡量指标是使用时间和次数,合理性在于优先筛选最近使用最多的数据
利用双向链表实现
11、线程间的通信方式?
共享变量、共享内存、共享数据库、消息队列
12、简述同步与异步,阻塞与非阻塞的区别?
- 同步:执行一个操作后等待结果,收到结果才继续执行
- 异步:执行一个操作后可以去执行其他操作,然后等待通知再回来执行
- 阻塞:进程给cpu传达一个任务后,一直等待cpu处理完,再执行后面操作
- 非阻塞:进程给cpu传达一个任务后,继续处理后续操作,隔一段时间在询问其操作是否完成,也叫轮询
同步异步关注的“方式”,阻塞非阻塞关注的“结果”
13、简述Linux的io模型?
同步io、异步io、阻塞io、非阻塞io、多路复用io
二、网络协议相关
1、简述tcp的三次握手和四次挥手的流程及为什么需要?
三次握手:建立连接
四次挥手:断开连接,释放内存
2、RestFul与RPC的区别及RestFul的优点?
RPC:远程过程调用(在本地调的函数可能存在远端)
RPC是面向过程,RestFul是面向资源,并且使用了http动词
RestFul风格的URL在表述的精简性和可读性更好
3、HTTP和HTTPS的区别?
- HTTP需要申请证书
- HTTP是超文本传输协议,属于应用层传输,HTTPS是具有SSL加密安全性传输协议,可以对数据加密
- 完全不同的连接方式,HTTP端口是80,HTTPS是443
- HTTP连接是无状态的,HTTPS是由SSL+HTTP构建,可进行加密传输,身份认证的网络协议相对于说更安全
4、一次HTTP请求过程发生了什么?
输入网址,回车—>域名解析—>发起tcp的三次握手—>建立连接后发起HTTP请求—>服务器响应HTTP请求—>浏览器得到HTML代码—>浏览器解析HTML代码并请求HTML中的资源—>浏览器对页面进行渲染呈现给用户
5、tcp和udp在网络协议中的哪一层,有什么区别?
传输层
tcp面向连接,udp无连接
6、tcp中常见的拥塞算法?
慢开始
发送一段时间后调整cwnd的值,翻倍,此时是网络拥塞
7、tcp怎么保证可靠性?
应答机制、超时重传、连接管理、序列号
8、HTTP1.0、1.1、2.0的主要区别?
HTTP1.0:无状态、无连接
HTTP1.1:支持长连接,缓存处理,断点传输
HTTP2.0:二进制分帧,多路复用,头部压缩,服务器推送
三、数据库相关
1、数据库的事务隔离级别有哪些?及其优缺点?
Read uncommitted(读,未提交):脏读,不可重复读,幻读
Read committed(读,提交):不可重复读,幻读
Repeatable read(可重复读):幻读 MySQL默认
Serializable(序列化)
脏读:事务B查看了事务A未提交的事务
不可重复读:第一次和第二次看到的数据不一致
2、悲观锁和乐观锁?
读取频繁使用乐观锁,写入频繁使用悲观锁
3、MySQL哪些情况下索引会失效?
- 条件中有or
- like查询以%开头
- 多列索引的情况不是第一列
【待更新】
Python后端开发面试题汇总相关推荐
- python后端开发面试题
目录 一:简述你对Restful风格的理解: 1: 协议 : 2:域名: 3:版本: 4:路径: 5:请求方式(6种): 6: 请求参数: 7: 状态码: 二:概述python的内存管理机制: 三: ...
- python后端开发流程_2019 Python后端开发面经总结
原标题:2019 Python后端开发面经总结 本人技术栈为Python后端开发,面经如下: python基础部分: 1. 迭代器生成器 生成器是如何实现迭代的 2. list实现 3. import ...
- C++后端开发面试题精选
后端开发面试题 =================== #后端开发面试知识点大纲: ##语言类(C++): ###关键字作用解释: volatile作用 Volatile关键词的第一个特性:易变性.所 ...
- c++后端开发面试题
后端开发面试题 #后端开发面试知识点大纲: ##语言类(C++): ###关键字作用解释: volatile作用 Volatile关键词的第一个特性:易变性.所谓的易变性,在汇编层面反映出来,就是两条 ...
- 吊打面试官系列之:常见测试开发面试题汇总,在面试的路上,总要先下手为强。
测试开发面试题汇总 1.引言 2.热身题 3.理论基础 4.管理技能 5.服务端 7.移动APP 7.1 理论 7.2 实践 8.自动化测试 9.工具使用 10.算法 11.SQL 12.Linux ...
- 后端怎么接收map_史上最全,C++后端开发面试题与知识点汇总
以下汇总C++后台开发面试题与知识点,还有其他岗位的相关题库和资料,想要什么岗位的可以留言哦~ 附面试题目: 一.基础知识 1.基本语言 说一下C++和C的区别 说一下C++中static关键字的作用 ...
- python后端面经_2019 Python后端开发面经总结:网易、滴滴、老虎证券
本人技术栈为Python后端开发,面经如下: 老虎证券(挂) 一面 python基础部分: 1. 迭代器生成器 生成器是如何实现迭代的 2. list实现 3. import一个包时过程是 ...
- 各大公司Java后端开发面试题总结
ThreadLocal(线程变量副本) Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量. 采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一 ...
- array 前端面试题_web前端开发面试题汇总
前端面试题汇总 第一部分HTML&CSS 1. 浏览器分类 浏览器:IE,Chrome,FireFox,Safari,Opera. 内核:Trident,Gecko,Presto,Webkit ...
最新文章
- 登顶CLUE榜单,腾讯云小微与腾讯AI Lab联合团队提出基于知识的中文预训练模型...
- 杭电 hdu 1003
- 【呆子化雨】浅谈Discuz插件开发-邮件验证提醒插件
- MVC 3.0错误 HTTP 404您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。...
- 织梦 详情页 php,织梦DEDECMS列表页与详情页调用图集多张图片的方法
- SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号
- 收不到oracle邮件,dovecot不能够收邮件
- 10大Go语言开源项目推荐
- linux删除第二列为空_Linux系列第二谈(开机关机、Linux中的文件、目录管理、基本属性)...
- 数据库系统的并发控制的两种实现模型
- 如龙0pc端与计算机王玩游戏卡住,如龙0游戏停止工作怎么办_游戏未响应闪退解决方法_3DM单机...
- 风车im即时通讯源码支持打包app/H5/php开源版正常搭建无报错版,带搭建教程
- Anaconda3安装及opencv配置
- 图像处理——空间域和频率域部分图像增强学习
- (二)Jointly Optimizing Diversity and Relevance in Neural Response Generation
- lableme json转化为图片常用的脚本
- 【nginx 扩容及常用模块扩展】
- 视频压缩编码问答--转载
- 功率单位dBm及其换算
- C++ 小游戏-球球飞车