1、re.match和re.search
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到第一个匹配。
2、is和= =的区别:
id相同,判断a就是b对象
= =判断a对象的值是否和b对象的值相等,是通过value判断的。
3、python的自省
是指面向对象的语言所写的程序在运行时,所能知道对象的类型。就是指在运行时能够获得对象的类型。比如type/dir/getattr()/hasattr()/isinstance
4、python装饰器
python装饰器,本身是一个python函数。它可以额外增加一个函数的功能,装饰器返回值也是一个函数对象,它经常用于有切面需求的场景。比如:插入日志、性能测试、事务处理、缓存、权限校验等。
5、函数的作用域以及查找顺序:
legb的顺序:
local :函数内部作用域。
enclosing:函数内部与内嵌函数之间
globle:全局作用域
build-in:内置作用域
6、python 中dict的实现方式(哈希)?怎么处理冲突?
python中,字典是通过哈希表实现的。也就是说,字典是一个数组,而数组的索引是键经过哈希函数处理得到的。哈希函数的目的是使键均匀地分布在数组中。
7、提升爬虫效率的方式:
1)、多线程(多进程、协程)
2)、分布式
3)、提高网络性能
4)、提高机器性能
8、常用的协程库:
gevent、asyncio asyhttp
9、简单介绍下模拟登陆。
1、索引优缺点:
优点:
(1)、加快查询速度
(2)、加速表与表之间的连接。在实现数据的参考完整性方法具有特别的意义。
缺点:
(1)、增加物理空间
(2)、对表中的数据进行增加、删除、修改的时候,索引也要进行动态的维护
2、事务的性质:acid
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
3、事务隔离的四个级别
事务隔离性的四个级别:
未提交读、已提交读、可重复读、可串行化
Read uncommitted(未提交读):读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。(脏读)
Read committed:读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。(可以解决脏读问题,但是不可重复读出现了一个事务范围内两个相同的查询却返回了不同数据,这就是不可重复读。)
Repeatable read:事务开启,不允许其他事务的UPDATE修改操作。不可重复读对应的是修改,即UPDATE操作。但是可能还会有幻读问题。因为幻读问题对应的是插入INSERT操作,而不是UPDATE操作。
Serializable 序列化:Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别是Repeatable read。
4、mysql锁有几种,死锁是怎么产生的?
MySQL有三种锁的级别:页级、表级、行级。
使用mysql数据库,在并发加锁的时候不注意,如锁A和锁B,出现锁A等待锁B,锁B又等待锁A的情况,这个时候会引发死锁。
1、基本命令