最近社区里有一篇文章最受程序员关注。下面跟大家分享一下Laravel和PHPer面试中可能遇到的问题。难倒了,也难住了一些问题(其实有很多),趁着周末空闲时间,又总结整理了一遍,顺便回答了一波问题。由于个人技术水平有限,回答可能有失偏颇,欢迎指正。PHP7和PHP5在PHP模块上的区别,具体有哪些新特性?性能提升两倍组合比较运算符(<=>)标量类型声明返回类型声明try...catch添加多条件判断,更多的Error错误可以通过匿名类进行异常处理,现在支持实例化匿名类通过新的类,它可以用来替换一些完整的类定义,即“用完就烧”……要了解更多信息,请参阅文章底部的链接PHP7新特性为什么PHP7比PHP5改进了性能?减少变量存储字节,减少内存占用,提高变量运算速度,改进数组结构。数组元素和哈希映射表分配在同一块内存中,减少了内存占用,提高了CPU缓存效率。改进了函数的调用机制,通过优化参数传递环节,减少了部分指令,提高了执行效率。什么是laravel模块服务提供者?服务提供者是所有Laravel应用引导的中心,Laravel的核心服务器,注册服务容器绑定,事件监听器,中间件,路由注册,我们的应用都是由服务提供者引导的。什么是IoC容器?IoC(InversionofControl)译为“控制反转”,也称为“依赖注入”(DI)。什么是“控制反转”?对象A的功能依赖于对象B,但是控制权被对象A控制,控制权被颠倒了,所以叫做“控制反转”,而“依赖注入”就是实现IoC的方法,IoC容器在运行时动态地将某些依赖项注入到对象中。简单来说,它的作用就是利用依赖注入,将复杂的应用程序分解成相互协作的对象,从而降低问题解决的复杂度,实现应用程序代码的低耦合和高扩展性。Laravel中的服务容器是管理类依赖和进行依赖注入的工具。什么是门面?Facades(一种设计模式,通常翻译为外观模式)提供了一个“静态”(static)的接口来访问注册在IoC容器中的类。提供简单易记的语法,无需记住必须手动注入或配置的长类名。此外,由于PHP动态方法的独特使用,非常容易测试。什么是合约?契约(contract)是laravel定义框架提供的核心服务的接口。Contract和Facades没有本质的区别,它的作用就是让接口的耦合度更低,更简单。依赖注入的原理?我不会解释这个。这是理解IoC容器的前提。什么是Composer,它是如何工作的?Composer是PHP的依赖管理工具。工作原理是从packagist.orgcomposer仓库下载开发好的扩展包到我们的应用中,声明依赖和版本控制。缓存Redis和Memecached有什么区别?Redis支持更丰富的数据存储类型,String、Hash、List、Set和SortedSet。Memcached只支持简单的键值结构。Memcachedkey-value存储比Redis使用hash结构进行key-value存储,内存利用率更高。Redis提供了事务功能,可以保证一系列命令的原子性。Redis支持数据持久化,可以将内存中的数据保存在磁盘上。Redis只使用单核,而Memcached可以使用多核,所以平均每核Redis在存储小数据时比Memcached有更高的性能。Redis是如何实现持久化的?RDB持久化将redis在内存中的状态保存到硬盘中,相当于备份了数据库的状态。AOF持久化(Append-Only-File),AOF持久化通过保存Redis服务器锁执行的写状态来记录数据库。相当于备份数据库接收到的命令,所有写入AOF的命令都以redis协议格式保存。数据库什么是索引,它的作用是什么?常见的索引类型有哪些?Mysql索引的原理?索引是一个特殊的文件,包含指向数据表中所有记录的引用指针,相当于一本书的目录。它的作用是加快数据的检索效率。常见的索引类型有主键、***索引、复合索引、全文索引。索引创建原则最左前缀原则选择差异化程度高的列作为索引尽量扩展索引,不要创建新索引如何处理高并发?使用缓存优化数据库,提高数据库使用效率。但是SOLID设计原则是每个PHPer都必须掌握的。其他问题遗留,补充一些常见的PHPer面试题,供高手解答。如何设计分库分表如何处理MySQL死锁?谈谈你对闭包的理解PHP内存回收机制是如何解决PHP内存溢出问题的数据库优化方法Laravel运行原理简述Laravel路由实现原理它保存在服务器的什么位置?服务器如何获取客户端的cookie?服务器集群搭建、负载均衡、反向代理服务器常用命令PS:PHPer面试只看一部分技术实力,一部分会看你的内驱力、思维能力和表达能力。答案在GitHub上,欢迎大家统计和PR。传送门:https://github.com/todayqq/ca...
