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;
}

  

 

慢慢来才是最快的
原文地址:https://www.cnblogs.com/jongty/p/11697365.html