php面试题

目录

    • 说一下thinkphp的架构运行流程
    • 怎么防止大批量请求 导致502 503
    • redis的应用场景
    • redis实时数据存储更新
    • Redis 数据类型
    • redis和Memcached的区别
    • 单线程为什么比多线程快
    • 商品超卖怎么设计 防止库存为负数
    • innodb和myisam区别
    • 说说mysql数据库锁怎么用的
    • swoole有没有了解过 说说
    • 数据库优化
    • 慢查询如何排查
    • 一般用户注册以后,都会收到一份验证邮件。为保证用户体验,我们希望立刻告知用户注册成功,不会因为等到邮件发送完成。请阐述你会怎么将用户注册和发送邮件分离?
    • git是如何部署的
    • 日活跃10万用户 最近出现时而打开缓慢的现象 有时候出现504网关超时 阐述分析问题的方法和步骤

说一下thinkphp的架构运行流程

入口文件和引导文件
注册自动加载和错误处理机制
应用初始化
路由检测
分发请求
响应输出和应用结束

怎么防止大批量请求 导致502 503

限制请求ip
负载均衡
cdn缓存
前后分离

redis的应用场景

验证码
排行榜
session
单点登录
秒杀

redis实时数据存储更新

zadd 有序集合 存储时间

Redis 数据类型

哈希
字符串
集合
列表
有序集合

redis和Memcached的区别

redis热数据 单线程 可选类型较多
Memcached冷数据 多线程 单一

单线程为什么比多线程快

纯内存操作
核心是基于非阻塞的IO多路复用机制
单线程反而避免了多线程的频繁上下文切换问题

商品超卖怎么设计 防止库存为负数

mysql悲观锁 锁索引(行锁)
redis分布式锁
设置数据库字段类型不能为负

innodb和myisam区别

innodb支持事务 支持外键 支持表锁 行锁
myisam不支持事务 不支持外键 支持表锁 查询速度更快

说说mysql数据库锁怎么用的

乐观锁
悲观锁(共享锁 排他锁)

swoole有没有了解过 说说

多线程异步网络通信引擎
可做微服务协程框架

数据库优化

建立索引(单一或联合索引)
查询时加上字段名
根据业务分表分库
少用联合查询

慢查询如何排查

explain

一般用户注册以后,都会收到一份验证邮件。为保证用户体验,我们希望立刻告知用户注册成功,不会因为等到邮件发送完成。请阐述你会怎么将用户注册和发送邮件分离?

redis消息队列
php协程

git是如何部署的

git自动化部署
walle
jenkins
gitlab-runner

日活跃10万用户 最近出现时而打开缓慢的现象 有时候出现504网关超时 阐述分析问题的方法和步骤

ng 超时配置
宽带 上限
cdn 加速
程序 健壮
数据库 优化

查ng日志 查mysql日志

你可能感兴趣的:(redis,mysql,php,分布式,面试题)