zoukankan      html  css  js  c++  java
  • PHP面试题目整理(持续更新)

    整理遇到过的PHP面试题目:

    1、HTML中的块状元素和行内元素有哪些?   

    <div><ol><ul><dl><table><h1><h6><p><blockquote><dt><address><caption>

    2、css中display属性的值有哪些:

    none	此元素不会被显示。
    block	此元素将显示为块级元素,此元素前后会带有换行符。
    inline	默认。此元素会被显示为内联元素,元素前后没有换行符。
    inline-block	行内块元素。(CSS2.1 新增的值)
    list-item	此元素会作为列表显示。
    run-in	此元素会根据上下文作为块级元素或内联元素显示。
    compact	CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
    marker	CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
    table	此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
    inline-table	此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
    table-row-group	此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
    table-header-group	此元素会作为一个或多个行的分组来显示(类似 <thead>)。
    table-footer-group	此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
    table-row	此元素会作为一个表格行显示(类似 <tr>)。
    table-column-group	此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
    table-column	此元素会作为一个单元格列显示(类似 <col>)
    table-cell	此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
    table-caption	此元素会作为一个表格标题显示(类似 <caption>)
    inherit	规定应该从父元素继承 display 属性的值。
    

    3、empty()、is_null()、isset()、$a?:0、$a??0分别代表什么,其区别是什么?

    empty 判断变量是否为空,如果变量是非空 或非零 的值,则 empty() 返回 FALSE。换句话说,"" 、0 、"0" 、NULL 、FALSE 、array() 、var $var; 以及没有任何属性的对象 都将被认为是空的,如果变量为空,则返回 TRUE。
    
    is_null 判断变量是否为NULL
    
    isset 判断变量是否已存在,如果变量存在则返回 TRUE,否则返回 FALSE
    
    $a?:0 等同于 $a ? $a : 0
        
    $a??0 相当于isset($a)?$a:0 或 is_null($a)?0:$a

    4、打印出上个月最后一天的日期:

    echo date("Y-m-t", strtotime('-1month'));
    //https://www.cnblogs.com/yanximin/p/11053936.html (date格式化参数)

    5、设计提供接口时应该注意哪些问题

    1、单文件实现多接口的形式有很多种,例如:if..elseif.. 或 switch 或 动态方法 (也就是TP的这种访问函数体的形式) 。
    2、对于数据的输出最好用json,json具有相当强大的跨平台性,市场上各大主流编程语言都支持json解析,json正在逐步取代xml,成为网络数据的通用格式。
    3、接口安全,一定要增加接口验证。例如,客户端和服务端针对不同接口统一做好加密方式,服务端在对于每次接口需要都要进行验证。以保证防止接口被恶意刷新或黑客恶意调用,尤其是大型商业应用。
      例如: ①、当用户登录APP时,使用https协议调用后台相关接口,服务器端根据用户名和密码时生成一个access_key,并将access_key保存在session中,将生成的access_key和session_id返回给APP端。
         ②、APP端将接收到的access_key和session_id保存起来
          ③、当APP端调用接口传输数据时,将所传数据和access_key使用加密算法生成签名signature,并将signature和session_id一起发送给服务器端。
          ④、服务器端接收到数据时,使用session_id从session中获取对应的access_key,将access_key和接收到的数据使用同一加密算法生成对应signature,如果生成的签名和接收到的signature相同时,则表明数据合法

    4、对于线上的 API 必须保证所有接口正常且关闭所有的错误信息 => error_reporting(0),在输出JSON 时,不能有任何其它输出,否则,客户端将解析数据失败,app直接闪退!

    6、数据库优化有哪些方法:

    https://www.cnblogs.com/jongty/p/11688933.html

    7、给定两个排好序的数组A,B,大小分别为n,m。给出一个高效算法查找数组B包含A中的哪些元素

    function binarySearch($num, $arr, $len){
        $left = 0;
        $right = $len-1;
        while ($left <= $right){
            $mid = ($left+$right)/2;
            if ($arr[$mid]==$num){
                return true;
            }elseif ($num>$arr[$mid]){
                $left = $mid+1;
            }else{
                $right = $mid-1;
            }
        }
    }
    
    function inter($A, $B, $n, $m){
        $inter = array();
        foreach ($A as $a){
            if(binarySearch($a,$B,$m)){
                array_push($inter, $a);
            }
        }
        return $inter;
    }

      

     

    慢慢来才是最快的
  • 相关阅读:
    Nginx禁止IP,只允许指定域名访问
    预防vsphere勒索病毒,适用于 ESXi 6.x 中的 OpenSLP 安全漏洞 (CVE-2019-5544) 的权宜措施 (76372)
    解决 vCenter root 密码过期无法登陆 User password expired
    停用Veritas Smart Meter-概念与操作
    centos7.0 没有netstat 和 ifconfig命令问题
    MAVEN剪除传递依赖
    Spring+SpringMVC+MyBatis+Maven框架整合
    CentOS7配置MongoDB
    利用mybatis-generator自动生成代码
    idea提交本地项目到git
  • 原文地址:https://www.cnblogs.com/jongty/p/11697365.html
Copyright © 2011-2022 走看看