【精讲】2022年PHP中高级面试题

1.进程,线程及通信方式
https://www.php.cn/php-ask-453612.html 
进程和线程有点主从关系一样的,线程共享进程的资源
进程间通信方式:

1. 管道 
2. 信号 
3. 消息队列 Posix 消息队列
4. 共享内存 
5. 套接口

2.Php 查看扩展路径

php -i | grep -i extension_dir 
或者 phpinfo 来看一下 
或者 echo ini_get('extension_dir');

3. Php 底层数组实现方式
linked list + hashtable 双向链表是中间映射表,用来存放索引和具体存储位置,然后 具体存储位置对应的具体值在 hashtable 中

4.写时复制:
如果两个变量是相同的值,则共享同一块内存,而那块内存的 is_ref =1 refcount = 1 后者被引用一次 +1,为 0 的时候被销毁,相当于资源延迟分配。
垃圾回收:
不会立即回收,会放入缓冲区(一个双向链表),然后默认到了 10000 个开始回收,先 将 refcount -1 , =0 则进行回收

5.解决内存溢出:

     1、要增加PHP可用内存大小
     2、对数组进行分批处理,将用过的变量及时销毁;
    3、尽可能减少静态变量的使用;
    4、数据库操作完成后,要马上关闭连接。
    5、可以使用 memory_get_usage () 函数,获取当前占用内存 根据当前使用的内存来 调整程序
引申:

  • unset () 函数只能在变量值占用内存空间超过 256 字节时才会释放内存空间

  • 有当指向该变量的所有变量(如引用变量)都被销毁后,才会释放内存

  • unset 被引用的变量只会解除引用关系,不会销毁该变量

6.Php7 新特性

https://www.php.net/manual/zh/migration70.new-features.php 

简要总结就是:

标量类型声明、返回值类型声明、通过 define() 定义常量数组、匿名类、相同命名空间 类一次性导入

7.Php7 底层优化:

  1. ZVAL 结构体优化,占用由24字节降低为16字节

  2. 内部类型 zend_string,结构体成员变量采用 char 数组,不是用 char*

  3. PHP 数组实现由 hashtable 变为 zend array

  4. 函数调用机制,改进函数调用机制,通过优化参数传递环节,减少了一些指令

8.Php 排序二维数组 array_multisort + array_column 就行

<?php
  $user_list = [
    ['name' => '张三''age' => 28],
    ['name' => '赵六''age' => 21],
    ['name' => '王五''age' => 20],
    ['name' => '李四''age' => 21]
 ];

 array_multisort(array_column($user_list, 'age'),SORT_ASC,$user_list);
 var_dump($user_list);

9.缓存的应用场景:

  • 数据不需要强一致性

  • 读多写少,并且读取得数据重复性较高

10.Php 异步执行脚本:

  1. popen 调用脚本,缺点是无法跨越,不能传参,会产生进程,高并发了会创建大量 进程

  2. curl 方式,最小响应超时时间是 1s,也受限

  3. fsockopen 打开一个网络连接或者 unix 套接字连接,原理和 http 一致,支持毫秒 级超时处理

  4. 引入 swoole   https://www.php.cn/php-weizijiaocheng-469392.html

11.常见状态码

    一二三四五原则:(即一:消息系列;二:成功系列; 三:重定向系列;四:请求错误系 列;五:服务器端错误系列。
301 状态码是永久移动
302 是临时移动

304 如果请求头中带有 If-None-Match 或 If-Modified-Since,则会到源服务器进行有效性校验,如果源服务器资源没有变化,则会返回304,同时不返回内容;如果有变 化,则返回200;

500 代码 文件权限 资源有问题
501 请求方法服务器不支持

502 网关错误,例如得到了一个无效响应一类的就会出现这种错误
503 超载或者维护模式
504 网关超时,即在指定时间内没有正确的响应
499 客户端关闭请求,例如客户端请求 1s 内结束,php 未返回结果,或者找不到要请 求的地址,会返回 499 错误

往期推荐

腾讯PHP/GO工程师面试经历

2021年12月PHP面试题总结

稳了!学会这些PHP面试题成功拿下offer

2021年最新资源列表【建议收藏并分享】

浅谈面试经验(面试官角度)

盘点2021年PHP开发工程师遇到的面试题

posted @   码农编程进阶笔记  阅读(706)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2021-10-20 Centos 根据端口查看占用进程 根据进程查看占用端口
2021-10-20 Elasticsearch 之Mapping设置
2021-10-20 实战!聊聊PHP如何使用 ElasticSearch 做搜索
2018-10-20 最完美解决Nginx部署ThinkPHP项目的办法
2018-10-20 最完美解决Nginx部署ThinkPHP项目的办法
2018-10-20 nginx 80端口重定向到443端口
2018-10-20 nginx 80端口重定向到443端口
返回顶部 有事您Q我

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示