Skip to content

Latest commit

 

History

History
220 lines (165 loc) · 5.29 KB

levelH2.md

File metadata and controls

220 lines (165 loc) · 5.29 KB

3 年经验 PHP 准备面试

1、引用变量

&,指向一个变量的指针

2、unset

unset 只会取消引用,不会销毁值

3、对象赋值采用引用方式,不会写时复制,需要使用 clone 进行复制

4、栗子1

$data = ['a', 'b', 'c'];
foreach ($data as $key=>$val)
{
    $val = &$data[$key];
    var_dump($data);
}

var_dump($data); // [b,c,c]

5、单引号和双引号

  • 双引号会解析变量 Heredoc
  • 单引号效率更高,Nowdoc

6、数据类型

  • 整数 integer

  • 浮点数 float、double 计算使用 bcmath 库,mysql 使用 decimal 字段

  • 字符串 string

  • 布尔 boolean

  • 数组 array

  • 对象 object

  • 回调 callback

  • 资源 resource

  • 空 null 赋值 null、未定义的变量、unset 销毁的变量

7、超全局数组

  • $SERVER['SERVER_ADDR']
  • $SERVER['REMOTE_ADDR']

8、预定义变量

  • FILE

9、@错误控制符,==和===,++$a和$a++

10、栗子2

# 运算符优先级问题,++、>、||、=
$a = 0;
$b = 0;

if ($a = 3 > 0 || $b = 3 > 0)
{
    $a++;
    $b++;
    echo $a. "\n"; // 1
    echo $b. "\n"; // 1
}

11、foreach 会 reset 重置指针,switch...case 有一个跳转表的概念

12、栗子3

# static只会初始化一次,是局部的,会记录值
$count = 5;
function get_count()
{
    static $count;
    return $count++;
}

echo $count; // 5
++$count;

echo get_count(); // null
echo get_count(); // 1

13、include 加载警告、require 加载致命错误

14、正则表达式

# 后向引用 \\1
$str = '<b>abc</b>';
$pattern = '/<b>(.*)<\/b>/';
preg_replace(pattern, '\\1', $str);

# 贪婪模式 ?是取消贪婪
$str = '<b>abc</b><b>efg</b>';
$pattern = '/<b>.*?<\/b>/';
preg_match_all(pattern, '\\1', $str);

# 实例:139开头的手机号码
$pattern = '/^139\d{8}$/';
# 实例:取出html中img标签的所有src值
$pattern = '/<img.*?src="(.*?)".*?\/?>/i'

15、文件

# 对文本开头进行写内容
function writeContent($file)
{
    $handle = fopen(file, 'r');
    $content = fread(handle, filesize(file));
    $content = 'xxx'.$content;
    fclose($handle);

    $handle = fopen(file, 'w');
    fwrite($handle, $content);
    fclose($handle);
}

# 对目录进行遍历
function loopDir($dir)
{
    $handle = opendir($dir);
    while(false !== ($file = readdir($handle)))
    {
        if($file != '.' && $file != '..')
        {
            if(filetype($dir.'/'.file) == 'dir')
            {
                loopDir($dir.'/'.file);
            }
        }
    }
}

16、http状态码

  • 499 客户端关闭了连接,nginx错误
  • 502 bad Gateway 请求过多,比如php-fpm处理不过来,导致无法正常响应
  • 504 Gateway time-out nginx超时

17、OSI 7层

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层 tcp、udp
  5. 会话层
  6. 表示层
  7. 应用层 http、ftp、dns

17、get与post区别

  • get可以存浏览器书签
  • get可以被缓存
  • get有数据长度限制,2048字符
  • get用于数据读取,幂等的
  • post用于修改数据,是非幂等的
  • post更安全
  • get只允许ASCII字符,post无限制

18、nginx、fastcgi、php-fpm

nginx通过fastcgi协议与php-fpm通信

19、linux命令

ps/top/kill/pstree

分 时 日 月 周


20、mysql慢查询

set profile=1;
show profiles;
show profile for query 1;

explain