程序員找工做必備PHP基礎面試題 - 第十七天

「PHP學習網」 公衆號會天天分享一些面試題,正在找工做的小夥伴們能夠來看看哦。

1、寫一段文件上傳代碼,要求只能上傳圖片格式,大小限制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(‘圖片類型不正確’);
}

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

一、 數據庫設計方面,設計結構良好的數據庫,容許部分數據冗餘。
選取最適用的字段屬性,儘量把字段設置爲NOT NULL,這樣在查詢的時候,數據庫不用去比較NULL值。php

二、系統架構設計方面,表散列,把海量數據散列到幾個不一樣的表裏面,集羣,數據庫查詢和寫入分開。mysql

三、寫高效sql語句,以提升效率。
使用鏈接(join)來代替子查詢
使用聯合(union)來代替手動建立的臨時表面試

四、所得皆必須,只從數據庫取必須的數據。redis

五、必要的時候用不一樣的存儲引擎,好比Innodb能夠減小死鎖,HEAP能夠提升一個數量級的查詢速度。sql

六、使用事務數據庫

七、使用外鍵數組

八、使用索引緩存

3、怎麼防止sql注入?

一、過濾掉一些常見的數據庫操做關鍵字:select,insert,update,delete,and,*等
或者經過系統函數:addslashes(須要被過濾的內容)來進行過濾。安全

二、在PHP配置文件中
Register_globals=off;設置爲關閉狀態 //做用將註冊全局變量關閉。
好比:接收POST表單的值使用$_POST['user'],若是將register_globals=on;直接使用$user能夠接收表單的值。服務器

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

四、提升數據庫命名技巧,對於一些重要的字段根據程序的特色命名,取不易被猜到的

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

六、開啓PHP安全模式 Safe_mode=on;

七、打開magic_quotes_gpc來防止SQL注入
Magic_quotes_gpc=off;默認是關閉的,它打開後將自動把用戶提交的sql語句的查詢進行轉換,把'轉爲',這對防止sql注入有重大做用。
所以開啓:magic_quotes_gpc=on;

八、控制錯誤信息
關閉錯誤提示信息,將錯誤信息寫到系統日誌。

九、使用mysqli或pdo預處理。

4、數據庫索引有幾類,分別是什麼?何時該用索引

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

並不是全部的數據庫都以相同的方式使用索引,做爲通用規則,只有當常常查詢列中的數據時才須要在表上建立索引。

5、數組中下標最好是什麼類型的,爲何?

數組的下標最好是數字類型的,數字類型的處理速度快。

6、++i和i++哪個效率高,爲何?

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

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

Magic_quotes_gpc()是php配置文件中的,若是設置爲on則會自動POST,GET,COOKIE中的字符串進行轉義,在'以前加\

Magic_quotes_runtime()是php中的函數,若是參數爲true則會數據庫中取出來的單引號、雙引號、反斜線自動加上反斜槓進行轉義。

8、你對Memcach的理解,優勢有哪些?

Memcache是一種緩存技術,在必定的時間內將動態網頁通過解析以後保存到文件,下次訪問時動態網頁就直接調用這個文件,而沒必要在從新訪問數據庫。使用memcache作緩存的好處是:提升網站的訪問速度,減輕高併發時服務器的壓力。
Memcache的優勢:穩定、配置簡單、多機分佈式存儲、速度快

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

weixin.jpg

相關文章
相關標籤/搜索