1.查看僵尸进程
ps aux|grep Z
查看一下进程stat的参数有哪些,仅查看一下前十条的结果。
详细介绍一下STAT参数的含义
S休眠状态进程
s主进程包含子进程
<优先级高的进程
N优先级较低的进程
l多进程的
2.php中有哪些错误类型
注意错误(notice)
警告错误(warning)
致命错误(fatal)
语法错误(error)
3.精度计算例题(推荐使用高精度计算函数bcmul,bcdiv,bcadd,bcmode等)
$a = '137.20';
$b = intval($a * 100);
$c = intval(strval('137.89') * 100);
$d = intval(bcmul('137.20', 100, 0));
echo $b.','.$c.','.$d;
输出结果:
13719,13788,13720
关键在于浮点数的小数计算时需要转成二进制,会产生除不尽的情况导致就丢了精度。
十进制转二进制,整数部分是除二取整倒排序,小数部分是乘二取整正排序
3.科学计算法参与计算
if ('1e3' == '1000') echo 'OK';
判断结果成立,输出OK
4.对字符串进行自增操作,字符串会增加(如果不是自增,而且“12abc”与与数值相加则为“12”);null支持自增,但不支持自减。
5.switch例题的陷阱
$a = 0;
switch ($a) {
case $a == 0:
echo 0;
break;
case $a >= 10:
echo 1;
break;
default:
echo 2;
break;
}
输出结果是1
陷阱在于,需要用case的结果去跟switche中的值是比较,比较相同才输出。
5.emtpy和魔术方法__isset的先后执行顺序的问题
class Test{
public function __get($str){
echo 'access__get::'.$str.'-->';
return ['fd'=>'hy'];
}
}
$b = new Test();
//var_dump($b->member); //打印出['fd'=>'hy'];
var_dump(empty($b->member));
正常的思路是输出结果是false,其实不然,输出结果为true
是因为empty最终是执行了isset方法,我增加了isset的魔术方法进行测试。如下:
class Test{
public function __get($str){
echo 'access__get::'.$str.'-->';
return ['fd'=>'hy'];
}
public function __isset($str){
echo 'access__isset::'.$str.'-->';
return ['hellow'=>'hy'];
}
}
$b = new Test();
//var_dump($b->member); //打印出['fd'=>'hy'];
var_dump(empty($b->member));
die;
根据结果图就能看到,先执行的__isset魔术方法,然后是__get魔术方法,所以输出是true。
6.错误的eoc格式
$str = >>>EOD
I saw a dog yesterday.
EOD;
echo $str;
输出结果报错,应该是<<<EOD
7.php函数和方法的区别(摘自php中文网)
函数是单独存在的,也就是面向过程部分定义的。
方法是依赖于类存在的,也就是面向对象中定义的。
函数,你可以当做一个算法的实现。
方法,则可以当做一个业务逻辑的实现。
类的方法可以设定访问权限,需要通过对象或者类来调用;函数是公共的,都可以使用。
8.script标签在使用中加入src属性,则标签内的脚本不会执行,哪怕引入的文件是错误的也不会执行。
9.当script标签内使用alert多个数组,并且数组内多个元素,会弹出的第一个数组的最后一个元素的值
10.form表单中变量名里面含义的实心点、空格、加号会被转成下划线
https://www.php.net/manual/zh/language.variables.external.php