1. 程式人生 > >應屆生最新PHP面試題(2)

應屆生最新PHP面試題(2)

  1. 用php獲取當前時間並列印,列印格式:2018-5-10 09:21:21
//注意這裡的5不是05
//區別m和n,d和j
echo date('Y-n-d H:i:s');
  1. 如何把字串’08/26/2018’替換成’2018-08-26’
$date = '08/26/2018';
$partern = '/(\d+)\/(\d+)\/(\d+)/';
echo preg_replace($partern,'$3-$1-$2',$date);
  1. 簡述一下表的索引

索引,降低掃描行數,提高表的查詢速度,最為重要的優化手段
主要分主鍵索引 唯一索引 普通索引

  1. 無限分類的實現原理

無限分類,一個表存放有關係的多級分類,之間有層級關係
實現通過表中的pid欄位,然後遞迴,把查詢到的有關係的資料放到一個數組中
有時候加多一個path欄位,表示頂級分類到當前分類的分類地圖,用作url路徑

  1. 儘可能高效的,從匹配標準url裡取出檔案的副檔名
$arr = parse_url($url);
$arr1 = pathinfo($arr['[path]']);
echo $arr1['extension'];
  1. 描述大流量高併發網站的解決方案

在這裡插入圖片描述

  1. 如何設計或者配置mysql,使其高效使用

mysql伺服器主從複製
表分割槽
表引擎,資料量小盡量選擇myisam
索引優化

  1. 如何防sql注入

表單儘量用post提交
使用http_referer檢查來源
使用addslashes對特殊字元進行轉義
使用htmlspecialchars進行實體轉換

  1. 如何寫一個安全的使用者登入系統

表單post提交
限制錯誤登入次數
使用驗證碼,防止機器破解(google的,簡訊類的這些更安全)
同時做前端和後端的表單認證

10.session與cookie的區別,從協議和產生的原因與作用說明

http協議是無狀態,無連線的,不能區分使用者是否是從同一個網站過來的
而且網站需要儲存登入態和一些使用記錄
所有用到會話機制session和cookie
session依賴於cookie.
session是儲存在伺服器中的,cookie是在伺服器產生,儲存在客戶端中的,所以cookie會有延遲
考慮到安全方面,使用session,考慮到減輕伺服器效能的,使用cookie.

  1. 表單中 get與post提交方法的區別?

get請求傳送資料是通過url引數傳遞的,會明文顯示,瀏覽器限制了get請求傳送資料的大小是2KB
post請求傳送的資料放在request body中,資料大小預設是無限制的
post比get安全,get比post效率高
get可以被快取,保留歷史記錄,收藏為書籤 post不行

更深入的說:
get傳送一個tcp資料包,post傳送兩個tcp資料包
get.post都是tpc連結,由於http協議的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同.

  1. 語句include和require的區別是什麼?

include和require在如何處理失敗上是不同的:
include在引入不存在的檔案時會產生一個警告,指令碼繼續執行
require卻會導致一個致命的錯誤,終止指令碼執行
require在php預處理階段就執行了,而include是在執行到include語句的時候才引入
require是不受條件語句影響的

  1. 請說明php中傳值與傳引用的區別。

本質就是zval結構體中的recount_gc和is_ref_gc的影響

傳值:函式內對值的改變都不會影響函式外部的
傳引用:函式內外的變數的值一起被影響

14.echo(),print(),print_r()的區別?

echo語言結構,無返回值,可以一次輸出多個值
print語言結構,有返回值true或者false,只能輸出一個值
print_r 遞迴列印,可以輸出資料和物件,當第二個引數是ture是直接返回不輸出

語言結構:php語法組成部分的函式
echo print list array eval

  1. mvc優勢

耦合性低
重用性高
可維護性高
有利於軟體工程化