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

★ 前言

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

★ 数据库

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

♘① mysql 知识点

  • MySQL 性能调优的10个方法
  • MySQL 大表优化方案
  • 将IP以整型的形式存储到数据库中
  • MyISAM和InnoDB的主要区别和应用场景
  • mysql联合索引
  • 关于IP在MySQL中的存储 || 论IP地址在数据库中应该用何种形式存储

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

♘② nosql

  • Redis和Memcache的区别分析
  • 天下无难试之Redis面试刁难大全
  • 对Memcached使用的总结和使用场景
  • 用Redis实现分布式锁 与 实现任务队列

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

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

★ 秒杀系统

  • 秒杀系统架构分析与实战
  • 如何设计一个秒杀系统

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

PHP备战面试知识参考(备忘)_第1张图片

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

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

PHP备战面试知识参考(备忘)_第2张图片

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

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

PHP备战面试知识参考(备忘)_第3张图片

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

♘ 算法

  • 杨辉三角
  • 无限级函数

♘ 内置函数介绍

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

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

♘ 减少资源浪费

  • 滚动加载图片(懒加载)实现原理
  • php页面静态化实现思路

♘ 正则表达式

  • IP地址的正则表达式写法

♘ JWT

  • JWT 超详细分析

你可能感兴趣的:(PHP)