PHP面试题3次握手的请求头 php面试题

PHP中高级面试题 – 第一天一、写一个函数 , 获取一篇文章内容中的全部图片 , 并下载
二、什么是 CSRF 攻击?XSS 攻击?如何防范?
CSRF:跨站请求伪造 , 可以通过通过判断来源和加 Token 的方式来防范 。
XSS:跨站脚本攻击 , 可以通过对内容转义和过滤来防范 , 还有 CSP
三、应用中我们经常会遇到在 user 表随机调取 10 条数据来展示的情况 , 简述你如何实现该功能 。
【PHP面试题3次握手的请求头 php面试题】四、MYSQL 中主键与唯一索引的区别
主键:绝对不能有空值 。唯一索引:可以有空值
五、http 与 https 的主要区别
关键是 S 上 。简而言之 , https 建立连接后要先把 SSL 的证书发下去 , 有了公钥和私钥 , 就可以解密了 。
六、两台 mysql 服务器 , 其中一台挂了 , 怎么让业务端无感切换 , 并保证正常情况下讲台服务器的数据是一致的
不是核心业务的话 , 先停写 , 把备机拉起来 , 查看两台机器的日志 , 进行数据补偿 , 开写 。
如果是核心业务的话 , 现在所有的操作都在正常的状态机器上 。把好的这台机器的备机拉起来 , 当主机 。
以上全是应急操作 。实际上数据库的容灾设计要复杂得多 。
面试官要是问你 , 备机的数据不一致怎么办 , 你要勇敢怼回去 , 你们每秒多少写入操作 。按照百万级表 , 每秒 1000 的写入效率 , 正常的设计是 , 分布在 2 台机器上每台 500 。这个级别的数据同步 , 出现差异的概率 可以忽略不计的 。有一台出现问题 , 另一台也可以抗住 。
(正常的操作 , 还是先停写 , 等数据一致 , 切换 , 开写 。我们公司搞这些切换都是在凌晨 4.00 左右 , 核心业务的每秒写操作 , 只有十几个 。前后耽搁不到 20 秒) 。
七、10 瓶水 , 其中一瓶有毒 , 小白鼠喝完有毒的水之后 , 会在 24 小时后死亡 , 问:最少用几只小白鼠可以在 24 小时后找到具体是哪一瓶水有毒 。
答案:四只
二进制问题 。薛定谔的老鼠 。
一只老鼠有两个状态 , 死活 , 对应 01 。假设老鼠的个数为 A , 则有 2^A=10; A=4;
思路很简单 , 十瓶药编号:0,1,10,11….1001;
0 不喝 。第一只老鼠喝所有个位是 1 的:13579 , 第二只喝十位是 1 的 , 第三只和百位是 1 的 , 第四只喝千位是 1 的 。
24 小时后 , 看下死了的是 1 , 活着的是 0 。按老鼠的顺序乖乖站好…… 假如第一只和第三只死了 , 那就是 0101 , 就是 5 有问题 。
PHP面试题2--常用的数组函数一 , 数组操作的基本函数
1. 数组的键名与值
array_values($arr);获得数组的值
array_keys($arr); 获得数组的键名
array_flip($arr); 数组的值与键名互换(如果有重复前面的会被后面的覆盖)
in_array("apple",$arr); 在数组中检索apple
array_search("apple",$arr); 在数组中检索apple , 如果存在返回键名
array_key_exists("apple",$arr); 检索给定的键名是否存在数组中
isset($arr["apple"]); 检索给定的键名是否存在数组中
array_unique() 删除数组中的重复值
2. 数组的内部指针
current($arr); 返回数组中的当前单元
pos($arr); 返回数组中的当前单元
key($arr); 返回数组中的当前单元的键名
prev($arr); 将数组中的内部指针倒回一位
next($arr); 将数组中的内部指针向前移动一位
end($arr);将数组中的内部指针指向最后一单元
reset($arr); 将数组中的内部指针指向第一单元
each($arr); 将返回数组当前元素的一个键/值的构造数组 , 并使数组指针向前移动一位
list($key,$value) = each($arr); 获得数组当前元素的键名和值
3. 数组和变量之间的转换
extract(array,extract_rules,prefix); 函数从数组中将变量导入到当前符号表 。该函数使用数组键名作为变量名 , 使用数组键值作为变量值 。针对数组中的每个元素 , 将在当前符号表中创建对应的一个变量 。
compact(var1,var2...); 创建一个包含变量名和它们的值的数组 。任何没有变量名与之对应的字符串都被略过 。

秒懂生活扩展阅读