美文网首页
面试题1

面试题1

作者: 鲸随浪起 | 来源:发表于2018-11-13 11:33 被阅读0次

    数据库:

    数据库优化

    1.符合三范式
    2.建立索引,单表不超过五个
    3.sql优化
    4.加缓存
    5.历史数据迁移,把长期不用的数据放到mongodb中
    6.读写分离
    7.分库分表
    8.分布式

    sql优化

    1.查询中不要使用*
    2.尽量使用关联查询代替子查询
    3.先查大表在查小表
    4.减少使用in,lnot,in,or,!=,<>
    5.update语句,如果只跟新一两个字段,不要update全部字段,否则频繁调用会引起频繁的性能消耗,也会产生大量日志信息

    关系型数据库和非关系型数据库

    常用的:
    关系型:MySQL,SQL Server ,Oracle
    非关系型:Redis,MongoDB
    关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
    关系型
    优点:
    1.易于维护,都使用表结构,格式一致
    2.使用方便,sql语句通用
    3.支持复杂查询
    缺点:
    1.读写性能查,尤其是海量数据的高效读写
    2.表结构固定,灵活性欠缺
    3.高并发读写时,硬盘I/O是很大的瓶颈

    非关系型
    非关系型数据库严格上不是一种数据库,是数据结构化存储方法的集合,可以是文档或键值对
    优点:
    1.格式灵活:可以使键值对,文档,图片等
    2.速度快:可以使用硬盘使用硬盘或随机存储器作为载体,关系型数据库只能使用硬盘
    3.高扩展性
    4.基本都是开源软件,成本低
    缺点:
    1.不提供sql支持,学习和使用成本较高
    2.无事务处理
    3.数据结构相对复杂,复杂查询方面稍欠

    mongodb和redis的区别

    1.内存管理:
    redis数据全部存在内存,定期写入磁盘
    mongodb数据存在内存,当内存不够是,只将主要数据放入内存,其他数据存在磁盘
    2.支持数据结构:
    redis支持的数据结构丰富,包括hash,set,list等
    mongodb数据存在内存,当内存不够时,只将主要数据放入内存,其他数据存在磁盘
    3.事务:
    redis事务支持比较弱,只能保证事务中的每个操作连续执行
    mongoDB不支持事务
    5.使用场景:
    redis:秒杀,缓存,热门搜索,二级菜单
    mongoDB:日志,通知,推送(数据不是很重要,或表结构变化频繁,或数据量大时)

    MySQL如何支持事务?

    用begin,rollback,commit来实现
    begin开始一个事务
    rollback事务回滚
    commit 事务确认

    orm框架

    通过对象和数据库之间的映射,将二者联系起来,使面向对象与关系数据库互相匹配

    MySQL索引类型:

    1.普通索引
    2.唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一
    3.主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引
    4.全文索引

    常用的mysql引擎有哪些?各引擎间有什么区别?

    主要MyISAM与InnoDB两个引擎,其主要区别如下:
    1.InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要那个出错还可以回滚还原,而MyISAM就不可以了
    2.InnoDB支持外键,MyISAM不支持
    3.MyISAM是默认引擎,InnoDB需要指定

    解决高并发

    1.页面静态化
    2.前端拦截,ip限制
    3.图片服务器分离
    4.缓存
    5.数据库集群

    爬虫

    scrapy数据流是由执行的核心引擎控制的,流程如下:
    1.爬虫引擎或缺初始请求开始抓取
    2.爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取
    3.爬虫调度器返回下一个请求给爬虫引擎
    4.引擎将请求发送给下载器,下载器中间件下载网络数据
    5.一旦下载器完成页面下载,将下载结果返回给引擎
    6.引擎将下载器的响应通过中间件返回给爬虫进行处理
    7.爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎
    8.引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取
    9.重复该过程,直到爬取完所有的url请求

    相关文章

      网友评论

          本文标题:面试题1

          本文链接:https://www.haomeiwen.com/subject/dgdkfqtx.html