php2020面试题MySQL_PHP面试题-2020

1 数据库篇

1.1 事务

1.2 优化

1.2.1 SQL语句优化

避免硬删除,硬删除会导致索引改变

SQL语句最左原则,写where语句时,压缩量最大的查询条件放左边

避免在where语句中使用!=或者<>操作符,会导致引擎放弃索引,全表查询

用关联语句代替 in 或者not in语句

对于连续的数值能用between就不用in

模糊查询,尽量避免使用%abc%,会导致全表扫描

不要使用select * from table, 用具体字段值代替

用union all替代union,因为union去重代价高,尽量放到程序中去重

如果想校验表里是否有某条记录,用exist比count(1)>0效率高

1.2.2 表结构优化

尽可能的用varchar代替char,因为变长字段存储空间小,查询效率高

尽量可能用not null填充数据库,因为对于char(100)字段来说,null也会占100字节空间

1.2.3 索引优化

ORDER BY + LIMIT组合的索引优化

WHERE + ORDER BY + LIMIT组合的索引优化

WHERE + IN + ORDER BY + LIMIT组合的索引优化

1.3 锁

1.4 MySQL索引

二级索引

联合索引

原则

最左前缀原则,一个联合索引有(a,b,c),如果有一个查询条件有a,有b则会用到此联合索引,如果查询条件是b,c则不会走索引

使用唯一索引,具有多个重复值的列,其索引效果最差,如sex列,对性能提升不高

不要过度索引,占磁盘空间,并降低写操作的性能

索引列不能参与计算,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2014-05-29’)

主键推荐用自增id,而不是uuid

区别

普通索引是最基本的索引类型,没有任何限制,值可以为空,仅加速查询。普通索引是可以重复的,一个表中可以有多个普通索引。主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;索引列的所有值都只能出现一次,即必须唯一。

1.5 MySQL缓存

原理

MySQL的查询缓存实质上是缓存SQL的hash值和该SQL的查询结果,如果执行相同的查询SQL,服务器直接从缓存中取结果,而不用执行去解析,优化等操作,大大提升了查询速度.

缺点

如果表的数据有一条变化,缓存结果不再有效,所以对于频繁更新数据的表不适用

缓存结果是通过对SQL的hash,得出的值key,查询结果为value存放的,这就意味着SQL必须完完全全一样,不能有大小写的差异

1.5 引擎区别

1.6 其他

MySQL主从复制

回表

2 计算机基础

2.1 协议

http

https

https与http区别

tcp/ip

tcpudp协议

tcp具体原理

tcp索引

udpselect poll epoll区别

2.2 线程与进程

定义

进程:程序的一次执行

线程:CPU的基本调度单位

进程和线程都是描述CPU工作的时间段,线程是更细小的时间段。

进程process:进程就是时间总和=执行环境切换时间+程序执行时间—>CPU加载执行环境->CPU执行程序->CPU保存执行环境

线程thread:线程也是时间总和=执行环境切换时间(共享进程的)+程序模块执行时间—>CPU加载执行环境(共享进程的)->CPU执行程序摸块->CPU保存执行环境(共享进程的)

线程与进程的区别

管道进程间通信

2.3 堆和栈

定义

区别

2.4 session与cookie

session

cookie

session 与 cookie 区别

3 缓存篇

3.1 redis 与 memcached

redis缓存

redis集群

redis持久化

redis复制过程手写算法

redis底层结构

3.2 区别

4 PHP 篇

PHP原理

PHP底层内核实现

PHP7与5的区别

如何传递变参

函数里如何访问全局变量

引用及指针的区别

yaf特性

5 框架篇

5.1 laravel框架

5.2 yii2 框架

5.3 tp框架

tp有哪些组件

6 Linux和nginx

linux命令

搜索文件前十行awk

top

nginx负载均衡

CDN加速

7 数据结构

7.1 设计模式

7.2 进程与线程

7 数据结构篇

7.1 二叉树

二叉树镜像

二叉树遍历

广度遍历二叉树

平衡二叉树与满二叉树的区别

7.2 设计模式

单利模式

反转链表

7.3 数据结构

线性表

定义:零个活多个数据元素的有限序列

性质:数据元素可以为空;数据元素有限;数据元素类型相同;数据元素之间是线性结构,也就是一对一的关系

定义

斐波那契数列

7.4 排序

快速排序

冒泡排序

7.5 其他

递归

hash

8 实战

实时统计论坛在线人数

一次请求从用户发起到服务器都经历了哪些过程

手写代码遍历文件夹下的文件

读取文件做一个什么处理,如果文件很大怎么处理

手写建堆相关

手写单利模式

判断有环链表,有环链表如何判断开始的节点,有没有更高效的方法

手写sql语句

海量数据存储

9 补充

喜欢做饭的PHP开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值