PHP面试题3次握手的请求头 php面试题( 三 )


array_intersect_assoc(array1,array2,array3...); 函数用于比较两个(或更多个)数组的键名和键值 , 并返回交集 。该函数比较两个(或更多个)数组的键名和键值 , 并返回一个交集数组 , 该数组包括了所有在被比较的数组(array1)中 , 同时也在任何其他参数数组(array2 或 array3 等等)中的键名和键值 。
七 , 数值的排序
array_multisort():对多个数组或多维数组进行排序
sort(): 以升序对数组排序
rsort(): 以降序对数组排序
asort(): 根据值 , 以升序对关联数组进行排序
ksort(): 根据键 , 以升序对关联数组进行排序
arsort(): 根据值 , 以降序对关联数组进行排序
krsort(): 根据键 , 以降序对关联数组进行排序
资料参考:

PHP面试题3次握手的请求头 php面试题

文章插图
PHP中高级面试题 – 第三天一、简述一下MongoDB的应用场景
mongodb 支持副本集、索引、自动分片 , 可以保证较高的性能和可用性 。
更高的写入负载
默认情况下 , MongoDB 更侧重高数据写入性能 , 而非事务安全 , MongoDB 很适合业务系统中有大量 “低价值” 数据的场景 。但是应当避免在高事务安全性的系统中使用 MongoDB , 除非能从架构设计上保证事务安全 。
高可用性
MongoDB 的复副集 (Master-Slave) 配置非常简洁方便 , 此外 , MongoDB 可以快速响应的处理单节点故障 , 自动、安全地完成故障转移 。这些特性使得 MongoDB 能在一个相对不稳定(如云主机)的环境中 , 保持高可用性 。
数据量很大或者未来会变得很大
依赖数据库 (MySQL) 自身的特性 , 完成数据的扩展是较困难的事 , 在 MySQL 中 , 当一个单达表到 5-10GB 时会出现明显的性能降级 , 此时需要通过数据的水平和垂直拆分、库的拆分完成扩展 , 使用 MySQL 通常需要借助驱动层或代理层完成这类需求 。而 MongoDB 内建了多种数据分片的特性 , 可以很好地适应大数据量的需求 。
基于位置的数据查询
MongoDB 支持二维空间索引 , 因此可以快速及精确地从指定位置获取数据 。
表结构不明确
在一些传统 RDBMS 中 , 增加一个字段会锁住整个数据库 / 表 , 或者在执行一个重负载的请求时会明显造成其它请求的性能降级 。通常发生在数据表大于 1G 的时候(当大于 1TB 时更甚) 。因 MongoDB 是文档型数据库 , 为非结构货的文档增加一个新字段是很快速的操作 , 并且不会影响到已有数据 。另外一个好处当业务数据发生变化时 , 是将不再需要由 DBA 修改表结构 。
二、数据库设计经验 , 为什么进行分表?分库?一般多少数据量开始分表?分库?分库分表的目的?
1、为什么要分表
当一张表的数据达到几百万时 , 你查询一次所花的时间会变多 , 如果有联合查询的话 , 有可能会死在那儿了 。分表的目的就在于此 , 减小数据库的负担 , 缩短查询时间 。日常开发中我们经常会遇到大表的情况 , 所谓的大表是指存储了百万级乃至千万级条记录的表 。这样的表过于庞大 , 导致数据库在查询和插入的时候耗时太长 , 性能低下 , 如果涉及联合查询的情况 , 性能会更加糟糕 。
分表和表分区的目的就是减少数据库的负担 , 提高数据库的效率 , 通常点来讲就是提高表的增删改查效率 。数据库中的数据量不一定是可控的 , 在未进行分库分表的情况下 , 随着时间和业务的发展 , 库中的表会越来越多 , 表中的数据量也会越来越大 , 相应地 , 数据操作 , 增删改查的开销也会越来越大;另外 , 由于无法进行分布式式部署 , 而一台服务器的资源(CPU、磁盘、内存、IO 等)是有限的 , 最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈 。
2、分表的方案
做 mysql 集群 , 有人会问 mysql 集群 , 根分表有什么关系吗?虽然它不是实际意义上的分表 , 但是它启到了分表的作用 , 做集群的意义是什么呢?为一个数据库减轻负担 , 说白了就是减少 sql 排队队列中的 sql 的数量 , 举个例子:有 10 个 sql 请求 , 如果放在一个数据库服务器的排队队列中 , 他要等很长时间 , 如果把这 10 个 sql 请求 , 分配到 5 个数据库服务器的排队队列中 , 一个数据库服务器的队列中只有 2 个 , 这样等待时间是不是大大的缩短了呢?

秒懂生活扩展阅读