资讯专栏INFORMATION COLUMN

PHPer面试指南-PHP 篇

stackvoid / 2383人阅读

摘要:本书的地址篇收集了一些常见的基础进阶面试题,基础的面试题不再作答。如何实现持久化持久化,将在内存中的的状态保存到硬盘中,相当于备份数据库状态。相当于备份数据库接收到的命令,所有被写入的命令都是以的协议格式来保存的。

本书的 GitHub 地址:https://github.com/todayqq/PH...

PHP 篇收集了一些常见的基础、进阶面试题,基础的面试题不再作答。

基础篇

Get 和 POST 的区别

Cookie 和 Session 的区别和关系

单引号和双引号的区别

isset 和 empty 的区别

echo、print_r、print、var_dump 之间的区别

什么是 MVC?

传值和传引用的区别?

进阶篇

简述 S.O.L.I.D 设计原则

SRP 单一职责原则 一个类有且只有一个更改的原因
OCP 开闭原则 能够不更改类而扩展类的行为
LSP 里氏替换原则 派生类可以替换基类使用
ISP 接口隔离原则 使用客户端特定的细粒度接口
DIP 依赖反转原则 依赖抽象而不是具体实现

PHP7 和 PHP5 的区别,具体多了哪些新特性?

性能提升了两倍

增加了结合比较运算符 (<=>)

增加了标量类型声明、返回类型声明

try...catch 增加多条件判断,更多 Error 错误可以进行异常处理

增加了匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义

为什么 PHP7 比 PHP5 性能提升了?

变量存储字节减小,减少内存占用,提升变量操作速度

改善数组结构,数组元素和 hash 映射表被分配在同一块内存里,降低了内存占用、提升了 cpu 缓存命中率

改进了函数的调用机制,通过优化参数传递的环节,减少了一些指令,提高执行效率

简述一下 PHP 垃圾回收机制(GC)

PHP 5.3 版本之前都是采用引用计数的方式管理内存,PHP 所有的变量存在一个叫 zval 的变量容器中,当变量被引用的时候,引用计数会+1,变量引用计数变为0时,PHP 将在内存中销毁这个变量。

但是引用计数中的循环引用,引用计数不会消减为 0,就会导致内存泄露。

在 5.3 版本之后,做了这些优化:

并不是每次引用计数减少时都进入回收周期,只有根缓冲区满额后在开始垃圾回收;

可以解决循环引用问题;

可以总将内存泄露保持在一个阈值以下。

了解更多可以查看 PHP 手册,垃圾回收机制。

如何解决 PHP 内存溢出问题

增大 PHP 脚本的内存分配

变量引用之后及时销毁

将数据分批处理

Redis、Memecached 这两者有什么区别?

Redis 支持更加丰富的数据存储类型,String、Hash、List、Set 和 Sorted Set。Memcached 仅支持简单的 key-value 结构。

Memcached key-value存储比 Redis 采用 hash 结构来做 key-value 存储的内存利用率更高。

Redis 提供了事务的功能,可以保证一系列命令的原子性

Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中

Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Memcached 性能更高。

Redis 如何实现持久化?

RDB 持久化,将 Redis 在内存中的的状态保存到硬盘中,相当于备份数据库状态。

AOF 持久化(Append-Only-File),AOF 持久化是通过保存 Redis 服务器锁执行的写状态来记录数据库的。相当于备份数据库接收到的命令,所有被写入 AOF 的命令都是以 Redis 的协议格式来保存的。

扩展阅读

3年PHPer的面试总结

垃圾回收机制

S.O.L.I.D 面向对象设计

浅谈IOC--说清楚IOC是什么

Redis和Memcached的区别

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28158.html

相关文章

  • PHPer面试指南-前言

    摘要:先说一下面试时的心态,刚入门的程序员,技术实力不高,又大多不善言谈,面试一旦遇到难题,很容易心态失衡惊慌失措语无伦次,最终丢掉了。其实大可不必,心态坦然,是面试必备的一点。 本书的 GitHub 地址:https://github.com/todayqq/PH... 作为一位程序员,面试过多次,也面试过很多人,最近又在找工作,总结一下面试经验和面试题,希望可以帮到正在找工作的小伙伴们...

    includecmath 评论0 收藏0
  • PHPer 面试指南-扩展阅读资源整理

    摘要:前端篇收集的前端面试题和答案前端开发面试题史上最全的前端面试题汇总及答案前端工程师手册协议工作原理协议运行机制的概述协议篇原理原理解析的工作原理与的区别理解后端篇年的面试总结垃圾回收机制面向对象设计浅谈说清楚是什么和的区别索引原理及慢查 前端篇 收集的前端面试题和答案 前端开发面试题 史上最全的web前端面试题汇总及答案 前端工程师手册 HTTP协议:工作原理 SSL/TLS协议运行...

    wemall 评论0 收藏0
  • PHPer面试指南-算法

    摘要:快速排序快速排序是对冒泡排序的一种改进。获取中间数两值相等,返回元素比目标大,查找左部元素比目标小,查找右部查找失败扩展阅读冒泡排序实现快速排序实现各种经典算法常见算法面试篇实现二分查找法 本书的 GitHub 地址:https://github.com/todayqq/PH... 算法可以说是大厂的必考题,对于算法,一定要理解其中的精髓、原理。 冒泡排序 冒泡排序的原理:一组数据,...

    SimpleTriangle 评论0 收藏0
  • PHPer面试指南-Laravel

    摘要:简述的生命周期采用了单一入口模式,应用的所有请求入口都是文件。分发请求一旦应用完成引导和所有服务提供者都注册完成,将会移交给路由进行分发。此外,由于对动态方法的独特用法,也使测试起来非常容易。 本书的 GitHub 地址:https://github.com/todayqq/PH... Laravel 作为现在最流行的 PHP 框架,其中的知识较多,所以单独拿出来写一篇。 简述 La...

    alaege 评论0 收藏0
  • PHPer面试指南-Web

    摘要:扩展阅读收集的前端面试题和答案前端开发面试题史上最全的前端面试题汇总及答案前端工程师手册协议工作原理协议运行机制的概述 本书的 GitHub 地址:https://github.com/todayqq/PH... 对于大公司,很少会有全栈工程师这个岗位,全栈是个花哨的词,对于现在比较热门的技术,不论是 Vue 还是 Laravel,只要智商不差,看着文档,都能写出一个 CURD 来,...

    cnio 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<