程式設計師找工作必備 PHP 基礎面試題 - 第十七天

viphper發表於2020-03-31

“PHP學習網” 公眾號會每天分享一些面試題,正在找工作的小夥伴們可以來看看哦。

一、寫一段檔案上傳程式碼,要求只能上傳圖片格式,大小限制5M

<form action=”action.php” method=”post” enctype=”multipart/form-data”>
    <input type=”file” name=”pic” />
    <input type=”submit” value=”提交” />
</form>

Action.php:
    $name=$_FILES[‘pic’][‘name’];
    $type=$_FILES[‘pic’][‘type’];
    $tmp=$_FILES[‘pic’][‘tmp_name’];
    $error=$_FILES[‘pic’][‘error’];
    $size=$_FILES[‘pic’][‘size’];
    $maxsize=1024*1024*5;
    If($size>$maxsize){
    Exit(‘圖片大小超出’);
}
    $name_arr=array(‘gif’,’png’,’jpg’,’jpeg’);
    $ext=pathinfo($name,PATHINFO_EXTENSION);
If(!in_array($ext,$name_arr)){
        Exit(‘圖片型別不正確’);
}

二、網站出現mysql 壓力太大,mysql 佔用的cpu 太高,應該從哪些方面入手查詢問題根源?

1、 資料庫設計方面,設計結構良好的資料庫,允許部分資料冗餘。
選取最適用的欄位屬性,儘可能把欄位設定為NOT NULL,這樣在查詢的時候,資料庫不用去比較NULL值。

2、系統架構設計方面,表雜湊,把海量資料雜湊到幾個不同的表裡面,叢集,資料庫查詢和寫入分開。

3、寫高效sql語句,以提高效率。
使用連線(join)來代替子查詢
使用聯合(union)來代替手動建立的臨時表

4、所得皆必須,只從資料庫取必須的資料。

5、必要的時候用不同的儲存引擎,比如Innodb可以減少死鎖,HEAP可以提高一個數量級的查詢速度。

6、使用事務

7、使用外來鍵

8、使用索引

三、怎麼防止sql注入?

1、過濾掉一些常見的資料庫操作關鍵字:select,insert,update,delete,and,*等
或者透過系統函式:addslashes(需要被過濾的內容)來進行過濾。

2、在PHP配置檔案中
Register_globals=off;設定為關閉狀態 //作用將註冊全域性變數關閉。
比如:接收POST表單的值使用$_POST[‘user’],如果將register_globals=on;直接使用$user可以接收表單的值。

3、SQL語句書寫的時候儘量不要省略小引號(tab鍵上面那個)和單引號

4、提高資料庫命名技巧,對於一些重要的欄位根據程式的特點命名,取不易被猜到的

5、對於常用的方法加以封裝,避免直接暴漏SQL語句

6、開啟PHP安全模式 Safe_mode=on;

7、開啟magic_quotes_gpc來防止SQL隱碼攻擊
Magic_quotes_gpc=off;預設是關閉的,它開啟後將自動把使用者提交的sql語句的查詢進行轉換,把’轉為',這對防止sql注入有重大作用。
因此開啟:magic_quotes_gpc=on;

8、控制錯誤資訊
關閉錯誤提示資訊,將錯誤資訊寫到系統日誌。

9、使用mysqli或pdo預處理。

四、資料庫索引有幾類,分別是什麼?什麼時候該用索引

普通索引、主鍵索引、唯一索引

並非所有的資料庫都以相同的方式使用索引,作為通用規則,只有當經常查詢列中的資料時才需要在表上建立索引。

五、陣列中下標最好是什麼型別的,為什麼?

陣列的下標最好是數字型別的,數字型別的處理速度快。

六、++i和i++哪一個效率高,為什麼?

++i效率比i++的效率更高,因為++i少了一個返回i的過程。

七、magic_quotes_gpc()、magic_quotes_runtime()的意思是什麼?

Magic_quotes_gpc()是php配置檔案中的,如果設定為on則會自動POST,GET,COOKIE中的字串進行轉義,在’之前加\

Magic_quotes_runtime()是php中的函式,如果引數為true則會資料庫中取出來的單引號、雙引號、反斜線自動加上反斜槓進行轉義。

八、你對Memcach的理解,優點有哪些?

Memcache是一種快取技術,在一定的時間內將動態網頁經過解析之後儲存到檔案,下次訪問時動態網頁就直接呼叫這個檔案,而不必在重新訪問資料庫。使用memcache做快取的好處是:提高網站的訪問速度,減輕高併發時伺服器的壓力。
Memcache的優點:穩定、配置簡單、多機分散式儲存、速度快

最後各位可以掃下方二維碼關注我公眾號,目前我正在更新基礎面試題,之後會更新中高階、redis、liunx面試題

本作品採用《CC 協議》,轉載必須註明作者和本文連結
和PHP學習網一起努力學習

相關文章