PHP备战面试知识参考(备忘)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/79497787

★ 前言

  • 如果你是一个已经拥有 3-5年开发经验的PHPer了,那么所需要的技能掌握就格外重要,理论上讲应向着管理层方向迈进,同事所掌握的知识点就不能仅仅在于代码上了
  • 下面,只是我在面试中着重整理的重要点,仅供参考…

★ 数据库

数据库知识包含面比较广,涉及到 常用的 MySQL,NoSql,Redis,Memcache

♘① mysql 知识点

记住:永远不要在MySQL中使用"utf8",请使用"utf8mb4"

♘② nosql

【是否使用过Redis集群,集群的原理是什么?】

  1. Redis Sentinal 着眼于高可用,在m aster 宕机时会自动将 slave 提升为master,继续提供服务。
  2. Redis Cluster 着眼于扩展性,在单个 redis 内存不足时,使用 Cluster 进行分片存储

★ 秒杀系统

①. 秒杀系统设计中的业务性思考

秒杀系统只允许接受同一个账户的1个请求,其他请求统统过滤掉。在程序入口加锁,同一个账户,同一时刻只有一个线程在被处理。不仅解决了同一个账号,发送多个请求的问题,还保证了后续的逻辑流程的安全,确保了只有一个线程能更新账户的状态。

②.谈谈秒杀系统的落地方案

  • 秒杀系统要解决的技术挑战
  1. 短时间内的超高访问量对后台服务的冲击。秒杀期间,来自外部请求产生的QPS会是平时的10~100倍。
  2. 数据库的读写压力陡增。大量的并发写,会造成数据库的行锁处于无法释放的状态,大量的线程排队进而造成服务请求超时失败。
  3. 网络带宽资源会因为秒杀被大量占据掉。假设秒杀页面的大小为150K,如果最大并发连接数为20000,那么应用服务器至少需要支持的带宽>3G。

③.秒杀系统设计中的数据处理

  1. 通过CDN,把大量静态不需要检验的数据放在系统之外的地方;减少不必要的流量到服务器端。
  2. 预加载用户静态信息,在前端读系统中检验一些基本信息,如用户是否具有秒杀资格、商品状态是否正常、秒杀是否已经结束等;过滤大量无效请求。
  3. 在写数据系统中再校验一些如是否是非法请求,写的数据一致性如检查库存是否充足等;
  4. 最后在数据库层保证数据最终准确性,避免超卖。

♘ 算法

♘ 内置函数介绍

array_merge()函数用于将一个或者多个数组的单元合并起来,返回结果为数组。
//①如果合并的数组中有相同的字符串键名,则后面的值覆盖前面的值,键名不变
//②如果合并的数组中有相同的数字键名,则后面的值不覆盖前面的值,而是依次附加到后面
//③如果只有一个数组,并且该数组是数字索引的,则键名会以连续方式重新索引。

array+array是数组的联合运算
//①如果合并的数组中有相同的字符串键名,则取最先出现的值而把后面拥有相同键名的那些值“抛弃”
//②如果合并的数组中有相同的数字键名,则取最先出现的值而把后面拥有相同键名的那些值“抛弃”
//③如果只有一个数组,并且该数组是数字索引的,则键名会以连续方式重新索引。

♘ 减少资源浪费

♘ 正则表达式

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券