不吹不擂,你想要的Python面试都在这里了315+道题+精心整理的解答
Posted 天晴天朗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不吹不擂,你想要的Python面试都在这里了315+道题+精心整理的解答相关的知识,希望对你有一定的参考价值。
-
Part01-Py基础篇(80)
-
Part02-网络编程和并发(34)
-
Part03-数据库和缓存(46)
-
Part04-前端框架和其他(155)
Part01-Py基础篇(80)
1、为什么学习Python?
2、通过什么途径学习的Python?
3、Python和Java、php、C、C++、C#等其他语言的对比?
4、简述‘解释型’和‘编译型’语言;
5、Python解释器的种类及特点;
6、‘位’和‘字节’的关系;
7、b、B、KB、MB、GB的关系;
8、请至少列举5个PEP8规范(越多越好);
9、通过代码实现如下转换:
10、编写一个函数,实现将IP地址转换成一个整数;
11、Python递归的最大层数;
12、求结果;
13、ASCII、unicode、UTF-8、GBK的区别;
14、字节码和机器码的区别;
15、三元运算规则以及应用场景;
16、列举Python3与Python2的区别;
17、用一行代码实现数值交换;
18、Python3和Python2中int和long的区别;
19、xrange和range的区别;
20、列举布尔值为False的常见值;
21、文件操作时候,xreadlines和readline的区别;
22、字符串、列表、元组、字典每个常用的5个方法;
23、lambda表达式格式以及应用场景;
24、pass的作用;
25、*args和**kwargs的作用;
25、*args和**kwargs的作用;
Part02-网络编程和并发(34)
Part03-数据库和缓存(46)
1、列举常见的关系型数据库和非关系型数据库都有哪些?
1.1 关系型数据库:Oracle、mysql、DB2、Microsoft SQL Server、PostgreSQL、Microsoft Access、SQLite、Hive;
1.2 非关系型数据库(NoSQL):MongoDB、Redis、Elasticsearch、Cassandra、HBase
详情见权威的数据库排行榜:https://db-engines.com/en/ranking
1.3 关系型与非关系型数据库的区别:
-
关系型数据库
1、特点:
2、优点:
3、缺点:
- 数据读写必须经过sql解析,大量数据、高并发下读写性能不足;
- 为保证数据一致性,需要加锁,影响并发操作;
- 无法适应非结构化的存储;
- 大量数据集中到一台服务区处理,使服务器不堪重负;
- “阻抗失谐”,即数据库中存储的对象与实际的对象实体有一定的差别;
- 扩展困难;
- 数据库庞大,价格昂贵;
-
NOSql数据库
1、特点:
- 非结构化的存储;
- 基于多维关系模型;
- 部署容易,开源免费,成本低;
2、优点:
- 处理高并发、大批量数据的能力强;
- 支持分布式集群,负载均衡,性能高;
- 解决“阻抗失谐”问题;
- 内存级数据库,查询速度快;
- 存储格式多,支持key-value形式、文档形式、图片形式;
- 没有多表连接查询机制的限制,扩展性高;
3、缺点:
- 技术起步晚,维护工具以及技术资料有限;
- 不支持sql工业标准;
- 没有join等复杂的连接操作;
- 事务处理能力弱;
- 没有完整性约束,对于复杂业务场景支持较差;
2、MySQL常见数据库存储引擎及比较?
数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。MySQL的核心就是存储引擎。
2.1 常见存储引擎;
MySQL提供了多个不同的存储引擎,包括处理事务安全表的引擎和非事务安全表的引擎。在MySQL中,不需要在整个服务器中使用同一存储引擎,针对具体的要求,可对每一张表使用不同的存储引擎。MySQL5.7 支持的存储引擎有:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE等。使用show engines语句来进行查看。
-
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL5.5.5之后,InnoDB作为默认的存储引擎。
-
MyISAM基于ISAM的存储引擎,并对其进行扩展。它是在Web、数据库存储和其他应用环境下最常使用的存储引擎之一,MyISAM拥有较高的插入、查询速度,但是不支持事务。MySQL5.5.5之前的版本中,是默认的存储引擎;
-
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问;
2.2 如何选择?
功能 | MyISAM | Memory | InnoDB | Archive |
存储限制 | 256TB | RAM | 64TB | None |
支持事务 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持数索引 | No | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes | No |
如果要提供提交、回滚和崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是个良好的选择。如果数据表用来插入和查询记录,则MyISAM引擎能够提供较高的处理效率;如果只是临时存储数据,数据量不大,并且不需要较高的数据安全性,Memory,MySQL中使用该引擎作为临时表,存放查询的中间结果;如果只有INSERT 和SELECT操作,可以选择Archive引擎。Archive引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive引擎非常适合存储归档类数据,如记录日志的信息可以使用Archive引擎。
3、简述数据三大范式?
4、什么是事务?MySQL如何支持事务?
5、简述数据库设计中一对多和多对多的应用场景?
6、如何基于数据库实现商品计数器?
7、常见SQL(必备)
8、简述触发器、函数、视图以及存储过程?
9、MySQL索引分类
10、索引在什么情况下遵循最左前缀的规则?
11、主键和外键的区别?
12、MySQL常见的函数?
13、列举创建索引但是无法命中索引的8种情况?
14、如何开启慢查询日志?
15、数据库导入导出命令(结构+数据)
16、数据库优化方案?
17、char和varchar的区别?
18、简述MySQL的执行计划?
19、在对name做了唯一索引的前提下,简述以下区别?
select * from tb where name = ‘Oldboy-Wupeiqi’ select * from tb where name = ‘Oldboy-Wupeiqi’ limit 1
20、1000w条数据,使用limit offset分页时候,为什么越往后翻越慢?如何解决?
21、什么是索引合并?
22、什么是覆盖索引?
23、简述数据库读写分离?
24、简述数据库分库分表?(水平、垂直)
25、Redis和memcached的比较
26、Redis中数据库默认是多少个db及作用
27、Python操作Redis的模块?
28、如果Redis总某个列表的数据量非常大,如何实现循环显示每一个值?
29、Redis如何实现主从复制?以及数据同步机制?
30、Redis中的sentine的作用?
31、如何实现Redis集群?
32、Redis中默认有多少个哈希槽?
33、简述Redis有哪几种持久化的策略及比较?
34、列举Redis支持的过期策略?
35、MySQL里有2000w的数据,redis中只存20w数据,如何保证Redis中都是热点数据?
36、写代码,基于Redis的列表实现先进先出,后进先出队列,优先级队列?
37、如何基于Redis实现消息队列?
38、如何基于Redis实现发布和订阅?以及发布订阅和消息队列的区别?
39、什么是codis及其作用?
40、什么是twemproxy及其作用?
41、写代码实现Redis事务操作?
42、Redis中的watch的命令的作用?
43、基于Redis如何实现商城商品数量计数器?
44、简述Redis分布式锁和redlock的实现机制?
45、什么是一致性哈希?Python中是否有相应模块?
46、如何高效低找到Redis中所有以oldboy开头的key?
Part04-前端框架和其他(155)
1、谈谈你对http协议的认知
2、谈谈你对websocket协议的认知
3、什么是magic string?
4、如何创建响应式布局
以上是关于不吹不擂,你想要的Python面试都在这里了315+道题+精心整理的解答的主要内容,如果未能解决你的问题,请参考以下文章