<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>面试题 on 清水泥沙</title>
    <link>https://869413421.github.io/categories/%E9%9D%A2%E8%AF%95%E9%A2%98/</link>
    <description>Recent content in 面试题 on 清水泥沙</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-zh</language>
    <lastBuildDate>Thu, 02 Feb 2023 14:57:24 +0800</lastBuildDate><atom:link href="https://869413421.github.io/categories/%E9%9D%A2%E8%AF%95%E9%A2%98/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PHP（基础面试题）</title>
      <link>https://869413421.github.io/post/php_mst/</link>
      <pubDate>Thu, 02 Feb 2023 14:57:24 +0800</pubDate>
      
      <guid>https://869413421.github.io/post/php_mst/</guid>
      <description>引用变量 (1) 引用变量的概念
引用变量指引用变量是指定义不同名称的对象，他们的指向同一个内存空间，不会开辟新的内存。是基于CopyAndWrite实现的。
(2) PHP变量的机制
PHP的变量是基于CopyAndWrite的机制进行实现的，比如定义了变量a,变量b=a,这个时候变量的的内存空间是一致的，b只是指向a的内存空间。只有修改了a的变量内容时，才会开辟一块新的空间重新存储变量a，而变量b的内存空间不变。
unset只会取消变量的引用，而不会去销毁变量空间。只有等GC进行清理的时候才会销毁占用的空间
Object类型本来就是基于引用实现的，两个对象修改值会彼此影响。需要复制对象时候使用clone
真题：
常量以及数据类型 (1) .PHP字符串的定义方式和各自区别
单引号:单引号不能解析变量，单引号不能解析转义字符，只能解析单引号和反斜杠本身，单引号效率更高
双引号：双引号可以解析变量可以解析转义字符，可以使用{}解析变量
Heredoc：类似双引号，用于处理大文本
Newdoc：类似单引号，用于处理大文本
(2) .PHP的数据类型
三大数据类型
标量：
浮点数Float(不能用于比较运算中)
整形
字符串
布尔类型
false的七种情况
0，0.0，’ ’，””，’0’，false，array()，null
复合
数组，对象
特殊
资源
NULL
(3)超全局变量
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
(3) Null
null的三种情况
直接赋值为NULL,未定义的变量，unset变量
(4) 常量
定义常量difine是函数，const是语言结构。
const可以定义类的常量，而difine不能定义，常量定义后不能修改不能删除
一定义常量
FILE
LINE
DIR
FUNCTION
CLASS
TRAIT
METHOD
NAMESPACE
真题
用PHP写出当前客户端的IP和服务端的ID？
__FILE__是什么？
当前的文件路径和文件名称
运算符 (1) foo()和@foo()之间的区别？
@是错误控制符，放置在一个PHP表达式之前，表达式产生的错误信息都会被忽略掉
(2) 运算符优先级</description>
    </item>
    
    <item>
      <title>PHP（高并发面试题）</title>
      <link>https://869413421.github.io/post/php_mst2/</link>
      <pubDate>Thu, 02 Feb 2023 14:57:24 +0800</pubDate>
      
      <guid>https://869413421.github.io/post/php_mst2/</guid>
      <description>web防盗链 判断referer 使用nginx模块的ngx_http_referer_module来阻挡非法域名的请求 判断签名 使用nginx第三方模块httpAccessKeyModule配置 减少页面HTTP请求 性能黄金法则
10%-20%花在响应用户接收请求的HTML文档上
80%是花在请求HTML所需要的所有组件
如何改善 减少请求组件数量 图片地图 将多个图片合并，根据点击图片位置解析超链接 Css精灵 合并脚本和样式 图片使用base64编码减少引用 浏览器缓存以及压缩技术 200 form cache 直接从本地读取
304 not modified 协商缓存，如果本地缓存失效，请求头发送一定校验数据到服务端，如果服务端数据没有改变，直接从本地缓存响应
200 ok 以上两种失败，没有使用缓存，服务器直接返回完整响应。
脚本压缩
js压缩 css压缩 图片压缩 可以修改nginx配置
CDN加速 建立独立图片服务器 动态语言静态化 原因
动态脚本需要计算和数据查询，访问量大，服务器压力就大
服务端 集群部署，负载均衡，减少单机的访问压力 缓存，浏览器缓存，CDN缓存，分布式缓存。设定缓存雪崩，缓存击穿，缓存穿透，双写一致等容灾方案 异步处理任务，次要操作通过多线程，异步队列，延时或者定时任务进行处理 优化数据库，分区，分库，分表，优化索引，可以使用全文搜索引擎来代替复杂查询 缓存预热 较少IO次数 减少IO传输大小 限流，通过前端页面限流，nginx设置阈值限流，服务端进行限流 各种池技术，连接池，进程池 优化代码的流程逻辑 锁选择，尽量避免使用悲观锁 并发处理，可以开启多线程，多携程等方式对业务进行处理 </description>
    </item>
    
  </channel>
</rss>
