PHP中高级面试的时候总是会问到这些问题(总结)

近期体验了一下面试,发现是有很多的不足,我们都知道一个小企业肯定用不到很多高级技术的东西,但是嘛,面试总是一种套路,php整个领域的知识你必须要掌握到位。这样面试官问啥你答啥,基本就谈不上紧张与胆怯了。

这里重要的一点还是要在表达上清晰明了,不然也是不好拿到offer哦!

对于基础不好,掌握不到位的同学,那就要多多加把劲了,多看与多记一些面试题(这是一种方法)你可以关注 《程序员面试题A卷》公众号,这里分享了各种各样的php面试题。


下面小编来给大家总结近期面试遇到的问题,都是很实在的
纵观所有公司,面试官基本都会问:MySQL的性能你是如何优化的?遇到这种问题,你会想到的是查询优化,索引优化

1 查询优化
又问:比如一个页面响应很久,或者一个sql查询了好久,你该如何去分析问题呢?

这里给大家总结了,详细的可以看这篇文章:你开发的PHP网站访问很慢,你如何找原因

分析sql,我们都知道会用到慢查询日志,会用到explain去分析,那你又是如何知道一张表里没有用索引或者是多余的字段。。。具体问题具体分析,附上EXPLAIN语句

使用方法,在要执行的查询语句前面加EXPLAIN

EXPLAIN SELECT  * FROM user;

得到形如下图的结果:
在这里插入图片描述

下面是对每一项的解释:

id 查询语句的id,简单查询无意义,多重查询时可以看出执行查询的顺序
select-type 执行的查询语句的类型,对应多重查询,有simple/primary/union等。
tabel 查询语句查询的数据表
type 获得数据的类型 常见的类型效率从高到低为 null>const>eq_ref>ref>range>index>all
possible-keys:可能使用到的索引
key 使用到的索引
key_len索引长度
ref 使用哪个列与索引一起从表中选择。
rows 查找到数据要扫描的大概行数,可看出索引的优劣
extra 常见的有
using filesort 查询到数据后进行文件排序,较慢,需要优化索引
using where 读取整行数据后进行判断过滤,是否符合where条件
using index 索引覆盖,即在牵引中已经有这存储了目标数据,直接读取索引,很快。

MySQL查询,面试官会再引发的问题:
一张百万数据的大表,你是如何用分页来查询数据的,具体的问题对应的内容小编也给大家总结过,具体可以看这篇文章: MySQL百万数据,你如何用分页来查询数据

这里再附上几篇查询优化的文章,点击可查看

1 看看大神是如何对900W+的数据表的SQL 查询优化分析的

2 30个mysql千万级大数据SQL查询优化技巧详解

3 往mysql中插入10万数据,你是如何实现,又如何优化



从上面的分析sql后会接着问索引优化又是如何优化的。

2 索引优化
索引优化这个是比较重要的,sql的性能大多和索引有关的。以下总结了近期面试,面试官提过的问题,点击标题可查看详细内容

1 你知道MySQL索引为什么要选择B+树呢

2 你知道导致MySQL索引失效的原因有哪些

3 为什么MySQL添加索引后就可以提高查询速度

4 给一个线上环境的大数据表,如何给它加索引

上面的问题基本都是要掌握的,这些问题回答好了,基本没啥问题了,最多会再来几个索引的比较的问题。

这里再附上一些索引基础问题的文章:

1 MySQL索引详解与索引的优化

2 MySQL索引,你知道有几种类型呢

3 mysql性能优化之索引优化

4 mysql_建立索引的优缺点

5 mysql 表索引的一些要点

除了上面两大问题外,其他的个人觉得都是一些零零散散的咯,面试官也会根据自己公司项目的要求,会问你一些问题,比如电商的
如sku的设计:商品SKU系统,你如何设计?


高并发的问题,肯定会涉及到锁:
1 MySQL的各种锁(表锁,行锁,悲观锁,乐观锁,间隙锁,死锁)

2 针对业务场景的需要,合理的使用MySQL乐观锁与悲观锁

3 Redis实现分布式锁与任务队列的思路与源码

4 高并发遇到死锁不知道怎么解决,看这篇足矣!


关于PHP方面的,面试官问的都离不开php的基础,主要有(点击标题可查看)
1 字符串的使用:PHP字符串函数的梳理与总结

2 数组的使用:PHP数组函数的梳理与总结

3 正则表达式,特别要是email这条:php正则表达式基本知识与应用详解

4 session与cookie:带你了解session和cookie作用原理区别和用法

5 设计模式的应用:PHP常见的设计模式,我觉得你还是要搞懂!

6 restful的api设计:RESTful Api的设计与风格,你该学一下咯

7 PHP安全问题:常见的PHP 安全性攻击有哪些呢 ?


基础全面总结可以从面试题查看:

1 2019PHP面试题大全【PHP基础部分】

2 2019PHP面试题大全【数据库部分】

3 2019PHP面试题大全【面向对象部分】

4 为PHP面试而准备的算法题总结


面试官问完MySQL性能,也会问你redis,我们基本都会用redis做缓存,它还有更全面的一些功能与应用,比如做消息队列,发布消息订阅,分布式锁等。总结的文章可点击标题查看

1 Redis能做什么?不能做什么?

2 吃透了这些Redis知识点,面试官一定觉得你很厉害

3 Redis为什么是单线程,高并发快由哪些因素决定?

4 Redis持久化机制,优缺点,如何选择合适方式

5 如何解决Redis缓存和MySQL数据一致性的问题?

6 Redis的并发竞争问题,你用哪些方案来解决?

7 Redis的内存过期与淘汰策略是如何工作的?

8 使用过redis做异步队列么,你是怎么用的?有什么缺点?

9 吃透了这些Redis知识点,面试官一定觉得你很厉害


框架我用laravel,所以面试官会根据你所认识的框架知识来考你,这里总结了laravel的一些知识,点击查看
1 Laravel框架的这些你都懂的话,它核心架构基本就懂了

2 一些实用的 Laravel 小技巧

3 Laravel 核心技术:基于 JWT 实现 Laravel API 认证

4 用了这么久的Laravel框架,你分析过核心架构了没

5 Laravel为什么会成为最优雅的PHP框架

本作品采用《CC 协议》,转载必须注明作者和本文链接
php自学中心
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!