PHP面试题汇总及相应解析

11 篇文章 0 订阅
4 篇文章 0 订阅

1. redis和memcached的区别和使用场景

https://blog.csdn.net/u010398838/article/details/79995636
区别
1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;
2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;
3、虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;
4、过期策略–memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10;
5、分布式–设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从;
6、存储数据安全–memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);
7、灾难恢复–memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;
8、Redis支持数据的备份,即master-slave模式的数据备份;
9、应用场景不一样:Redis出来作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等。

使用场景
1、如果有持久方面的需求或对数据类型和处理有要求的应该选择redis。 
2、如果简单的key/value 存储应该选择memcached。

2. 秒杀的难点和注意事项,会不会出现超卖的情况

	https://blog.csdn.net/maxchenBug/article/details/88153660
	秒杀业务的特点就是多个人读一个数据,难点就是读写冲突,锁情况特别的严重。 所以我们尽量不要让请求落在数据库上去,让请求拦截在系统的上游。解决思路:

1、限流:屏蔽掉无用的流量,允许少部分流量流向后端。

2、削峰:瞬时大流量峰值容易压垮系统。常用的消峰方法有异步处理、缓存和消息中间件等技术

异步处理:秒杀系统是一个高并发系统,采用异步处理模式可以极大地提高系统并发量,其实异步处理就是削峰的一种实现方式。
缓存:秒杀系统本身是一个典型的读多写少的应用场景【一趟火车其实只有2000张票,200w个人来买,最多2000个人下单成功,其他人都是查询库存,写比例只有0.1%,读比例占99.9%】,非常适合使用缓存。
消息队列:消息队列可以削峰,将拦截大量并发请求,这也是一个异步处理过程,后台业务根据自己的处理能力,从消息队列中主动的拉取请求消息进行业务处理。
前端优化

1、前端静态资源缓存,页面静态化和使用cdn缓存或redis缓存

2、限流:1使用验证码防止机器人爬虫脚本自动提交2禁止重复提交,用户提交后按钮置灰

后端优化

1、利用负载均衡,使用多个机器处理并发请求

2、秒杀开始前,前台不能得到秒杀地址,防止提前得到秒杀地址,模拟秒杀请求

3、限制同一个用户id访问频率

4、限制同一时间请求次数,达到请求上限时,随机拒绝部分请求来保证服务可用

5、业务分离,将秒杀系统和其它业务分离,单独放在高配机器上,防止影响其它业务系统

6、将秒杀请求放入到消息队列队列,后台订阅消息减库存,检测消息队列长度,达到最大库存不加消息队列,直接返回秒杀失败的消息

7、利用缓存应对读请求,利用缓存减轻数据库压力

8、利用缓存应对写请求,将数据库的库存数据转到redis里面,所有减库存操作都在redis里面进行,然后通过后台进程把redis里面的用户秒杀请求同步到数据库

3. php7的新特性

https://www.cnblogs.com/stj123/p/11120974.html
https://www.runoob.com/php/php7-new-features.html
https://www.cnblogs.com/wanglijun/p/10908848.html

4. 一个url从输入到展示页面的过程

https://blog.csdn.net/qq_24147051/article/details/81115806

5. 从数据表中随机取10条id连续的数据展示到页面上

$start = rand(1,'表的总行数'-10);
->limit $start,10;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值