总结下面试题,都是大厂

操作系统

  • IO多路复用是什么?有哪些api?
  • select和epoll的区别?水平触发和边缘触发的区别是啥?使用的时候需要注意什么?
  • epoll储存描述符的数据结构是什么?
  • select有描述符限制吗?是多少?
  • 进程/线程/协程区别?go和swoole的协程实现有啥区别?

PHP

  • 描述一下cli模式下的几个生命周期?
  • php-fpm运行机制?
  • php-fpm模式下,kill -9 master-pid,会怎么样?kill matser-pid呢?
  • 内存分配流程?为什么要这么设计?
  • GC的出现是为了解决什么问题?什么时候会触发GC?说下大概流程
  • nginx和php-fpm的通信机制
  • fast-cgi和cgi区别
  • php-fpm创建worker进程的规则是什么?不同场景下怎么选择?
  • php和mysql的通信机制?长链接和短链接啥区别?怎么实现的?连接池要怎么实现?
  • swoole协程的原理?

mysql

  • innodb的数据组织方式?
  • B+树的结构和插入细节?为什么主键一般都要自增?和B树什么区别?为什么索引要使用B+树不是B树也不是其他的平衡树?为什么redis可以用跳表?
  • 常见的优化(这里我就不展开了,主要考察覆盖索引查询和最左匹配)
  • redolog/undolog/binlog的区别?binlog的几种格式?说下两阶段提交?
  • 事务隔离级别和不同级别会出现的问题,innodb默认哪个级别?MVCC怎么实现的?快照读和当前读有啥区别?幻读的问题怎么解决?
  • 死锁什么时候会出现?应用层应该怎么做避免死锁?mysql是怎么处理死锁的呢?
  • int占多少字节?int(3)和int(11)有区别吗?可以往int(3)里存1亿吗?varchar最长多少?
  • sql的执行流程

redis

  • sds的结构是什么?为什么要存长度?跟c里的字符串有什么区别?
  • hash怎么实现的?怎么解决hash冲突?除了hashTable还有别的吗?
  • zset怎么实现的?跳表是怎么插入的?为什么选择跳表不用其他平衡二叉树?除了跳表还有别的吗?
  • rehash过程?会主动rehash吗?
  • 用redis可以实现队列吗?有什么优点和缺点?
  • 用redis怎么实现一个延时队列?
  • rdb和aof过程?rdb为什么可以用创建子进程的方式进行?(这里考察一个cow)这两种持久化方式会丢数据吗?
  • redis为什么快?(主要考察一个IO多路复用和单线程不加锁)
  • 一致性哈希是什么?节点较少时数据分布不均匀怎么办?
  • 简单说下几种key的淘汰策略,redis里的lru算法,什么时候会触发?实现细节是什么?怎么保证淘汰合理的key?
  • lua脚本的作用是什么?
  • 缓存击穿/穿透/雪崩的处理策略

nginx

  • LVS和Nginx分别作用在osi哪一层?
  • 负载均衡算法

数据结构

  • 布隆过滤器,什么时候用?优点是什么?

算法

  • leetcode easy级别的题目,具体我就不写了,难度比较低

你可能感兴趣的:(php)