一、系统相关

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、进程之间的通信方式?

  1. 管道:半双工通信,只在父子进程中使用,存放数据少
  2. 消息队列:解耦,存放数据量比管道多
  3. 信号量:计数器,主要作为同一进程不同线程的同步手段
  4. 信号:用于通知/接收进程某个事件发生
  5. 共享内存:最快的通信方式,共享内存由一个进程创建,多个进程可以访问,与信号量配合使用
  6. 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进程调度中有哪些常见的算法及策略?

  1. 先来先服务和短作业优先调度算法
  2. 高优先权优先调度算法

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的区别?

  1. HTTP需要申请证书
  2. HTTP是超文本传输协议,属于应用层传输,HTTPS是具有SSL加密安全性传输协议,可以对数据加密
  3. 完全不同的连接方式,HTTP端口是80,HTTPS是443
  4. 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哪些情况下索引会失效?

  1. 条件中有or
  2. like查询以%开头
  3. 多列索引的情况不是第一列

【待更新】

Python后端开发面试题汇总相关推荐

  1. python后端开发面试题

    目录 一:简述你对Restful风格的理解: 1: 协议 : 2:域名: 3:版本: 4:路径: 5:请求方式(6种): 6: 请求参数: 7: 状态码: 二:概述python的内存管理机制: 三: ...

  2. python后端开发流程_2019 Python后端开发面经总结

    原标题:2019 Python后端开发面经总结 本人技术栈为Python后端开发,面经如下: python基础部分: 1. 迭代器生成器 生成器是如何实现迭代的 2. list实现 3. import ...

  3. C++后端开发面试题精选

    后端开发面试题 =================== #后端开发面试知识点大纲: ##语言类(C++): ###关键字作用解释: volatile作用 Volatile关键词的第一个特性:易变性.所 ...

  4. c++后端开发面试题

    后端开发面试题 #后端开发面试知识点大纲: ##语言类(C++): ###关键字作用解释: volatile作用 Volatile关键词的第一个特性:易变性.所谓的易变性,在汇编层面反映出来,就是两条 ...

  5. 吊打面试官系列之:常见测试开发面试题汇总,在面试的路上,总要先下手为强。

    测试开发面试题汇总 1.引言 2.热身题 3.理论基础 4.管理技能 5.服务端 7.移动APP 7.1 理论 7.2 实践 8.自动化测试 9.工具使用 10.算法 11.SQL 12.Linux ...

  6. 后端怎么接收map_史上最全,C++后端开发面试题与知识点汇总

    以下汇总C++后台开发面试题与知识点,还有其他岗位的相关题库和资料,想要什么岗位的可以留言哦~ 附面试题目: 一.基础知识 1.基本语言 说一下C++和C的区别 说一下C++中static关键字的作用 ...

  7. python后端面经_2019 Python后端开发面经总结:网易、滴滴、老虎证券

    本人技术栈为Python后端开发,面经如下: 老虎证券(挂) 一面 python基础部分: 1.   迭代器生成器 生成器是如何实现迭代的 2.   list实现 3.   import一个包时过程是 ...

  8. 各大公司Java后端开发面试题总结

    ThreadLocal(线程变量副本) Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量. 采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一 ...

  9. array 前端面试题_web前端开发面试题汇总

    前端面试题汇总 第一部分HTML&CSS 1. 浏览器分类 浏览器:IE,Chrome,FireFox,Safari,Opera. 内核:Trident,Gecko,Presto,Webkit ...

最新文章

  1. 登顶CLUE榜单,腾讯云小微与腾讯AI Lab联合团队提出基于知识的中文预训练模型...
  2. 杭电 hdu 1003
  3. 【呆子化雨】浅谈Discuz插件开发-邮件验证提醒插件
  4. MVC 3.0错误 HTTP 404您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。...
  5. 织梦 详情页 php,织梦DEDECMS列表页与详情页调用图集多张图片的方法
  6. SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号
  7. 收不到oracle邮件,dovecot不能够收邮件
  8. 10大Go语言开源项目推荐
  9. linux删除第二列为空_Linux系列第二谈(开机关机、Linux中的文件、目录管理、基本属性)...
  10. 数据库系统的并发控制的两种实现模型
  11. 如龙0pc端与计算机王玩游戏卡住,如龙0游戏停止工作怎么办_游戏未响应闪退解决方法_3DM单机...
  12. 风车im即时通讯源码支持打包app/H5/php开源版正常搭建无报错版,带搭建教程
  13. Anaconda3安装及opencv配置
  14. 图像处理——空间域和频率域部分图像增强学习
  15. (二)Jointly Optimizing Diversity and Relevance in Neural Response Generation
  16. lableme json转化为图片常用的脚本
  17. 【nginx 扩容及常用模块扩展】
  18. 视频压缩编码问答--转载
  19. 功率单位dBm及其换算
  20. C++ 小游戏-球球飞车

热门文章

  1. pcm 降采样_图像降采样和升采样
  2. 2021新版本idea中文乱码问题解决方案
  3. killall与killall-9区别
  4. java发展如何_java的发展前景如何
  5. 3DSlicer编译
  6. 第23讲 时序电路设计1
  7. HTML元素的隐藏方式
  8. 谈谈中间件开发,给想从事中间件开发的同学
  9. SpringBoot 中间件设计和开发
  10. TCP/IP协议之网络管理协议