Python面试数据库
1.列举常见的关系型数据库和非关系型都有那些?
关系型 : MySQL,SQL Server ,Oracle , Sybase, DB2 非关系型 : Redis, MongodDB
2.MySQL常见数据库引擎及比较?
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的模块?
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面试数据库的更多相关文章
- Python面试 【315+道题】
Python面试 [315+道题] 第一部分 Python基础篇(80题) 为什么学习Python? 因为看到python的发展趋势,觉得需要与时俱进,第一点,python开发速度极快,能快速完成一个 ...
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- Python面试简介及并行并发
今天的分享内容大体如下: 一. 面试 1. 什么是面试 2. 优秀的面试 二. Python综述 1. Python设计哲学及版本变迁 2. Python发展现状及其他语言使用场景 3. GIL 4. ...
- 我的python面试简历
分享前一段我的python面试简历,自我介绍这些根据你自己的来写就行,这里着重分享下我的项目经验.公司职责情况(时间倒序),不一定对每个人适用,但是有适合你的点可以借鉴 我的真实经验:(14年毕业,化 ...
- 【16】进大厂必须掌握的面试题-100个python面试
我们整理了Python面试的主要问题清单,分为7个部分: 基本面试问题 OOPS面试问题 基本的Python程序 Python库面试问题 数据分析面试题 选择题(MCQ) 基本的Python面试问题 ...
- python操作数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
- python+mysql数据库的简单操作
最近接了一个任务,测试某项类似于收益情况报表的功能,因计算公式复杂,单纯手算过于复杂,所以想到写成脚本 根据python的分治原则,先整了几个函数用于实现计算逻辑,后发现数据输入过于繁琐,所以决定使用 ...
- python 从数据库表生成model
python 从数据库表生成model 找了很久才找到这个,我是新手... 现在已有建好的数据库,需要基于原有数据做数据分析的web应用,我选择python+Tornado ,由于不想写SQL语句,就 ...
- 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库
运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...
随机推荐
- PostgreSQL分布式架构之——PL/Proxy
1. PL/Proxy的介绍 1.1 PL/Proxy概述 PL/Proxy是一款能在PostgreSQL数据库实现数据库水平拆分的软件:可以理解分布式架构(shared nothing);但是不是真 ...
- Create maintenance backup plan in SQL Server 2008 R2 using the wizard
You will need to identify how you want your maintenance plan to be setup. In this example the mainte ...
- osg内置shader变量
uniform int osg_FrameNumber:当前OSG程序运行的帧数: uniform float osg_FrameTime:当前OSG程序的运行总时间: uniform float o ...
- S3C6410裸奔之旅——RVDS2.2编译、仿真、调试过程 LED流水灯---转的
S3C6410裸奔之旅——RVDS2.2编译.仿真.调试过程 LED流水灯 (2012-10-13 23:56:30) 转载▼ 标签: s3c6410裸奔 ok6410 rvds2.2 rvds2.2 ...
- flask文件上传
#coding=utf-8 import os from flask import Flask from flask import request from flask import redirect ...
- PyQt4简单的窗口程序
下面的程序显示了一个简单的小窗口. #!/usr/bin/python # -*- coding:utf-8 -*- import sys from PyQt4 import QtGui app = ...
- Java中遍历字符串toCharArray()和charAt()效率比较
public static void test() { String s = "a"; for(int i = 0; i < 100000; i++) { s += &quo ...
- Hibernate系列之基本配置
一.概述 Hibernate是一个开放源码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使我们可以使用对象的编程思维来操作数据库. 二.配置准备 IDE:Eclipse 下载Jar包: ...
- it 删除远程分支
一不小心把本地的临时分支push到server上去了,想要删除.一开始用git branch -r -d origin/branch-name不成功,发现只是删除的本地对该远程分支的track,正 ...
- matplotlib包画基本的图
画直线图 1.最简单的用法: import matplotlib.pyplot as plt import numpy as np x=np.linspace(-3,3,50) #在(-1,1)范围内 ...