1.列举常见的关系型数据库和非关系型都有那些?

   关系型 : MySQL,SQL Server ,Oracle , Sybase, DB2
   非关系型 : Redis, MongodDB

2.MySQL常见数据库引擎及比较?

  InnoDB,MyISAM,NDB,Memory等

3.简述数据三大范式?

1.第一范式:确保每列保持原子性
2.第二范式:确保表中的每列都和主键相关
3.第三范式:确保表中每一列都和主键列直接相关,而不是间接相关.

4.什什么是事务?MySQL如何支持事务?

事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务

5.简述数据库设计中一对多和多对多的应用场景?

一对多 : 一个学校有多个老师.

多对多 : 一个老师可以带多个班级,一个班级有多个老师

6.如何基于数据库实现商城商品计数器?

  详情

7.常见SQL(必备)

  详情

8.简述触发器器、函数、视图、存储过程?

  详情

触发器: 在执行某种操作前后一些自定义的操作
函数: 处理参数,返回结果
视图: 把需要的数据存放在一张临时表中
存储过程: sql语句集,简化了一些操作.与函数不同,他可以返回一个结果集(查询结果)

9.MySQL索引种类

  详情

10.索引在什什么情况下遵循最左前缀的规则?

联合索引

11.主键和外键的区别?

主键 : 该表中此列唯一,非空

外键 : 该列中的值必须是关联表中关联的数据

12.MySQL常见的函数?

详情

13.列举 创建索引但是无法命中索引的8种情况。

详情

14.如何开启慢日志查询?

详情

15.数据库导入导出命令(结构+数据)?

  Mysqldump -h127.0.0.1 -P3306  -uroot -p密码 数据库名称>xx.sql

16.数据库优化方案?

详情

17.char和varchar的区别?

#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 及作用?

0-15,相当于不同的库

27.python操作redis的模块?

redis模块

28.如果redis中的某个列表中的数据量量非常大,如果实现循环显示每一个值?

def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in xrange(list_count):
yield r.lindex(name, index)

29.redis如何实现主从复制?以及数据同步机制?

在从服务器中配置 SLAVEOF 127.0.0.1 6380 # 主服务器IP,端口 

30.redis中的sentinel的作用?

监控主机状态,实现高可用

31.如何实现redis集群?

安装集群软件

32.redis中默认有多少个哈希槽?

16384

33.简述redis的有哪几种持久化策略略及比较?

---------rdb:快照形式是直接把内存中的数据保存到一个dump文件中,定时保存,保存策略

---------aof:把所有的对redis的服务器进行修改的命令都存到一个文件里,命令的集合

34.列列举redis支持的过期策略略。

  • voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
  • volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
  • volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
  • allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
  • allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
  • no-enviction(驱逐):禁止驱逐数据

35.MySQL 里里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据?

redis内存数据级上升到一定大小时,就会实行数据淘汰策略,从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

36.写代码,基于redis的列列表实现 先进先出、后进先出队列列、优先级队列列。

class Zhan:
def __init__(self,conn):
self.conn = conn
def push(self,val):
self.conn.rpush('aaa',val)
def pop(self):
return self.conn.rpop('aaa') class Dui:
def __init__(self,conn):
self.conn = conn
def push(self,val):
self.conn.rpush('bbb',val)
def get(self):
return self.conn.lpop('bbb') class Xu:
def __init__(self,conn):
self.conn = conn
def push(self,val,count):
self.conn.zadd('ccc',val,count)
def get(self):
a = self.conn.zrange('ccc', 0, 0)[0]
self.conn.zrem('ccc', a)
return a

37.如何基于redis实现消息队列列?

将列表维护成一个栈,设置获取数据的超时时间

38.如何基于redis实现发布和订阅?以及发布订阅和消息队列列的区别?

发送消息 : conn.publish(名称,消息)

接收消息 : conn.sunscribe(名称)

区别 :  消息队列,收到消息只会有一个处理者;发布订阅,所有的订阅者都会收到消息并进行处理

39.什么是codis及作用?

豌豆荚团队提供的一个分布式 Redis 解决方案

40.什么是twemproxy及作用?

Twemproxy 又称 nutcracker ,是一个memcache、redis协议的轻量级代理,一个用于sharding 的中间件。有了Twemproxy,客户端不直接访问Redis服务器,而是通过twemproxy 代理中间件间接访问。

作用 : 对redis数据分片处理

41.写代码实现redis事务操作。

import redis

pool = redis.ConnectionPool(host='10.211.55.4', port=6379)

conn = redis.Redis(connection_pool=pool)

# transaction默认为False,只可以完成批量提交的作用,节省网络延时
# 改为True后可以实现事务功能
# pipe = r.pipeline(transaction=False)
pipe = conn.pipeline(transaction=True)
# 开始事务
pipe.multi() pipe.set('name', 'alex')
pipe.set('role', 'sb')
pipe.lpush('roless', 'sb') # 提交
pipe.execute()

42.redis中的watch的命令的作用?

加锁

43.基于redis如何实现商城商品数量计数器?

字符串的decr可以实现自减操作

44.简述redis分布式锁?

为redis集群设计的锁,防止多个任务同时修改数据库,其本质就是为集群中的每个主机设置一个会超时的字符串,当集群中有一半多的机器设置成功后就认为加锁成功,直至锁过期或解锁不会有第二个任务加锁成功

45.什么是一致性哈希?Python中是否有相应模块?

详情

46.如何高效的找到redis中所有以oldboy开头的key?

# 命令模式
KEYS * # *代表通配符 # redis模块
import redis
con = redis.Redis()
con.keys(pattern='celery*') # *代表通配符

Python面试数据库的更多相关文章

  1. Python面试 【315+道题】

    Python面试 [315+道题] 第一部分 Python基础篇(80题) 为什么学习Python? 因为看到python的发展趋势,觉得需要与时俱进,第一点,python开发速度极快,能快速完成一个 ...

  2. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  3. Python面试简介及并行并发

    今天的分享内容大体如下: 一. 面试 1. 什么是面试 2. 优秀的面试 二. Python综述 1. Python设计哲学及版本变迁 2. Python发展现状及其他语言使用场景 3. GIL 4. ...

  4. 我的python面试简历

    分享前一段我的python面试简历,自我介绍这些根据你自己的来写就行,这里着重分享下我的项目经验.公司职责情况(时间倒序),不一定对每个人适用,但是有适合你的点可以借鉴 我的真实经验:(14年毕业,化 ...

  5. 【16】进大厂必须掌握的面试题-100个python面试

    我们整理了Python面试的主要问题清单,分为7个部分: 基本面试问题 OOPS面试问题 基本的Python程序 Python库面试问题 数据分析面试题 选择题(MCQ) 基本的Python面试问题 ...

  6. python操作数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

  7. python+mysql数据库的简单操作

    最近接了一个任务,测试某项类似于收益情况报表的功能,因计算公式复杂,单纯手算过于复杂,所以想到写成脚本 根据python的分治原则,先整了几个函数用于实现计算逻辑,后发现数据输入过于繁琐,所以决定使用 ...

  8. python 从数据库表生成model

    python 从数据库表生成model 找了很久才找到这个,我是新手... 现在已有建好的数据库,需要基于原有数据做数据分析的web应用,我选择python+Tornado ,由于不想写SQL语句,就 ...

  9. 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...

随机推荐

  1. 配置Django框架为生产环境的注意事项(DEBUG=False)

    问题描述: Django1.10版本中框架中settings.py配置文件 配置文件settings.py配置了下面两项: DEBUG= False ALLOWED_HOSTS = ['*'] #这样 ...

  2. U3D之Editor扩展学习

    Unity3D提供了强大的编辑器扩展机制,在项目开发中,如果可以将一些繁琐的工作放在编辑器扩展中进行,则会大大提高效率.本文对编辑器扩展进行了一些总结,希望对有兴趣编写编辑器扩展的开发人员有所帮助.当 ...

  3. 常见C语言编译错误解析【转】

    C语言编译错误信息及说明1. 在函数 ‘transform’ 中:7: 错误:expected ‘;’ before ‘{’ token    解释:‘{’之前的某个语句缺少分号‘;’: 2. 在函数 ...

  4. iOS使用TFHpple解析html

    iOS 开发中解析html 网上有很多写好的解析框架 今天就来讲一下如何用框架TFHpple来解析html 使用TFHpple解析html github地址:https://github.com/to ...

  5. session超时跃出iframe并跳到登陆页面(转载)

    session超时跳出iframe并跳到登陆页面 在网页编程时,我们经常需要处理,当session过期时,我们要跳到登陆页面让用户登陆,由于我们可能用到IFrame框架,所以我们我登陆页面需要显示在整 ...

  6. <转>13个实用的Linux find命令示例

    注:本文摘自青崖白鹿,翻译的妈咪,我找到了! -- 15个实用的Linux find命令示例, 感谢翻译的好文. 除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作, ...

  7. 【读书笔记-数据挖掘概念与技术】数据仓库与联机分析处理(OLAP)

    之前看了认识数据以及数据的预处理,那么,处理之后的数据放在哪儿呢?就放在一个叫“数据仓库”的地方. 数据仓库的基本概念: 数据仓库的定义——面向主题的.集成的.时变的.非易失的 操作数据库系统VS数据 ...

  8. Shell xargs

    from here 简介之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如: 这个命令是错误的find /sbin -perm + ...

  9. EXPLAIN 具体含义 ( type possible_key key key_len ref )

  10. Mavan学习之pom聚合

    所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块,multi-module)相互关联.那么,为什么要这么做呢?我们明明在开发一 ...