美文网首页
面试宝典

面试宝典

作者: phpdi | 来源:发表于2019-02-12 20:37 被阅读0次

    1.引用变量考点

    • 引用变量定义:用不同的名字访问同一个变量内容
    • cow机制
    • 遍历时的引用处理
    • unset 只会取消引用,不会销毁内存空间
    • php中对象默认是引用传递,若需要复制,则需要使用clone

    2.常量及数据类型

    • define,const;php5.6以用const定义常量不支持表达式;
    • 7种false情况:0,0.0,'','0',[],null,false;
    • 精度丢失;
    • 获取客户端,服务端ip;
    • 与app交互$_POST失效,需要使用file_get_content(php://input)来获取源输入;

    3.运算符

    • 递增,递减不影响布尔值;
    • 递减null没有效果;
    • 运算符优先级:递增递减>!>算数运算符>大小比较>(不)等运算符>逻辑与>逻辑或>三目>赋值;
    • 短路作用

    4.流程控制

    • for循环 #只能遍历索引数组
    • foreach循环 #遍历索引数组和关联数组
    • while,list(),each() 组合循环 #遍历索引数组和关联数组
    • while,list ,each 不会reset(),重置指针,foreach遍历会对数组进行reset操作
    • switch case #和if else 不同的是switch后面的控制表达式的数据类型只能是整形,浮点类型,或者字符串
    • continue语句作用到switch的作用类似于break
    • 跳出switch外的循环,可以使用continue2
    • 效率:如果条件比一个简单的比较要复杂的多或则在一个很多次的循环中,那么switch语句会快一些,因为switch case会建立跳转表,不会一个一个去判定

    5.自定义函数,及内部函数

    • 静态变量定义:仅在局部函数中存在,但当程序执行离开此作用域的时候,其值不会消失。
    • 静态变量特性
      1. 仅初始化一次
      2. 初始化的时候需要赋值,不赋值,则为null
      3. 每次执行函数该值会保留
      4. static 变量作用域是局部的,仅在函数内部有效
      5. 可以用来记录函数调用次数,某些情况下可以用来终止递归
    • 系统内置函数
      • 时间日期函数:date(),strtotime(),mktime(),time(),microtime(),date_default_timezone_set()
      • ip处理函数:ip2long(),long2ip();
      • 打印处理:print(),printf(),print_r(),echo,sprintf(),var_dump(),var_export()
      • 序列化和反序列化函数:serialize(),unserialize()
      • 字符串处理函数:implode(),explode(),strrev(),trim(),strstr(),number_format()
      • 数组处理函数:array_keys(),array_values(),array_diff(),array_intersect(),array_merage(),array_shift(),array_unshift(),array_pop(),array_push(),array_rand(),sort()
    • 例题
    <?php
    
    $var1 = 5;
    $var2 = 10;
    function foo(&$my_var)
    {
        global $var1;
        $var1 += 2;
        $var2 = 4;
        $my_var += 3;
        return $var2;
    }
    
    $my_var = 5;
    echo foo($my_var) . "\n";
    echo $my_var . "\n";
    echo $var1;
    echo $var2;
    $bar = 'foo';
    $my_var = 10;
    echo $bar($my_var) . "\n";
    
    //答案:4 8 7 10 4
    

    6.外部文件的引入

    • include 和 require的区别
    • include 和 include_once的区别是重复引入文件的时候include_once的返回值为true

    7.正则表达式

    • 正则表达式的作用:分割,查找,匹配, 替换
    • 分割符:/,#,~
    • 通用原子
      • \d #[0-9],\D #[^0-9]
      • \w #[数字字母下划线],\W #[^\w]
      • \s #[空白符],\S #[^\s]
      • \b #匹配一个单词的开头或结尾
    • 元字符:. * ? ^ $ + {n} {n,} {n,m} [] () [^] | [-] #元字符的作用是用来修饰原子的
    • 模式修正符
      • i #不区分大小写
      • m #多行匹配,当字符串中含有\n ,仍然可以进行匹配
      • e #php7,已经移除
      • s #将字符串视为单行,换行符作为普通字符;
      • U #取消贪婪模式, 只匹配最近的一个字符串;不重复匹配;
      • x #将模式中的空白忽略;
      • A #以这个模式开头
      • D #如果使用$限制结尾字符,则不允许结尾有换行;
      • u #表示待匹配的串是一个符合unicode编码规则的串,比如utf-8编码的串在u修饰符下,一个汉字被当做一个字符被处理。\w有原来的[_0-9A-Za-z]扩展到汉字
    • 后向引用
    • 贪婪模式,取消贪婪模式的方式
      • 匹配规则中使用?
      • 使用模式修正符U
    • 常见的preg函数
      • preg_match #匹配
      • preg_match_all #匹配
      • preg_replace #替换
      • preg_split #分割
    • 匹配utf8 中文:'/[\x{4e00}-\x{9fa5}]+/u'

    文件及目录处理

    • file_get_contents()
    • file_put_contents()

    会话控制

    • cookie #数据存储在客户端
      • setcookie #设置cookie,在下一次请求时才会有值
      • $_COOKIE # 获取cookie
      • setcookie(name,'',time()-1) #清除cookie
      • 存储在客户端不会占用服务端空间,节约了资源
      • 会暴露数据,客户端可以禁止使用cookie
    • session #数据存储在服务端,session是基于cookie的,使用sessionid来区分是那个客户端,理论上sessionid是可能重复的
    • session.cookie_lifetime #这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废

    网络协议

    • http工作原理:客户端发送请求给服务器,创建一个tcp连接,指定端口,默认为80,连接到服务器,服务器监听到客户端请求,分析请求类型后,向客户端返回状态信息和处理内容
    • http常见的请求/响应头
      • Content-Type #
      • Accept
      • Origin
      • Cookie
      • Cache-Control
      • User-Agent
      • Referrer
      • X-Forwarded-For
      • Access-Control-Allow-Origin
      • Last-Modified
    • http协议常见的请求方法
      • GET #数据的读取
      • POST #修改现有的资源或者创建新的资源,主要用于创建资源
      • HEAD #服务器不会回传数据内容部分,只会回传HEAD部分,一般用户客户端查看服务器的性能
      • OPTIONS #返回http所支持的所有请求的方法,可以用来测试服务器功能是否正常
      • PUT #修改资源
      • DELETE #删除资源
      • TRACE #请求服务器回显请求信息,主要用于测试
    • http协议中GET和POST请求方法的区别
      • get在后退或者刷新的时候数据不会发生变化,而post则会将数据重新提交
      • get可以收藏为书签,post不能被收藏为书签
      • get请求可以被浏览器缓存,而post则不能
      • get请求有长度限制,post没有长度限制
      • get的参数会保留在历史记录中,而post则不能
    • https协议的工作原理
      • https是一种基于ssl/tls的http协议,所有的http数据都是在SSL/TLS协议封装之上传输的
      • https协议在http协议的基础上,添加了SSL/TLS握手以及数据加密协议,也属于应用层协议
    • 常见网络协议含义及端口
      • FTP #文件传输协议 默认端口21
      • Telnet #远程登录协议 默认端口23
      • SMTP #简单邮件传输协议 默认端口25
      • POP3 #用于接收邮件 默认端口110
      • http #超文本传输协议 默认端口80
      • DNS #域名解析服务 默认端口53

    后端处理请求的过程 lnmp架构

    • PHP-FPM 包含一个master进程和多个woker进程,master负责监听http请求,每个woker进程中嵌入一个zend引擎,用来解析php
    • nginx和php-fpm 是怎么配合处理请求的
    • php的执行过程,即woker进程解析部分
      1. scanning #将php代码转换为语言片段(token)
      2. parsing #将token 转换为简单而有意义的表达式
      3. compilation # 将表达式编译成opcode,
      4. execution #顺序执行opcodes,从而实现php脚本的功能

    linux 操作

    • 软件编译安装
    • php扩展安装
    • 计划任务
      • crontab -e #循环执行
      • at #一次执行
    • sed 配合awk的使用截取文本数据

    相关文章

      网友评论

          本文标题:面试宝典

          本文链接:https://www.haomeiwen.com/subject/phfleqtx.html