php初級攻城獅面試題

1. php 模擬 post 提交的方法有哪些?

第一種 : file_get_content 模擬 post

第二種 : curl 模擬 post

第三種 : socket 模擬 post

 

2. 用 php 打印出 2016-05-26 09:31:07 的 Unix 時間戳

$time = "2016-05-26 09:31:07";

$unixtime = strtotime($time);

 

3. php 獲取客戶端 IP 的方法

echo $_SERVER["REMOTE_ADDR"];

 

4. 用 php 實現 302 跳轉到 http://www.qq.com

302 是臨時重定向的意思 , 表示被訪問頁面因爲各種需要被臨時跳轉到其他頁面

header(Location:http://www.qq.com); exit;

 

5. 匹配郵箱的正則表達式

$email = $_POST["email"];  

$pattern = "/([\w\-]+\@[\w\-]+\.[\w\-]+)/";

if (!preg_match($pattern ,$email)) {  

$emailErr = "郵箱格式不正確!";   

}  

 

6. 如何處理 php 服務的 500 錯誤?

找到 php的配置文件  /etc/php.ini 

    配置參數值:display_errors = On 

 error_reporting = E_ALL | E_STRICT

  重啓apache 服務  service  httpd  restart 

  這個時候 瀏覽器已經可以輸出錯誤信息了。

  需要再配置下 apache    /etc/httpd/conf/httpd.conf

 在 apache的配置文件最後添加 兩行:

php_flag display_errors on

php_value error_reporting 2039 

重啓apache。

對php.ini 中參數的設置 也可用在php代碼中完成。

調用:調用ini_set()函數

//開啓php.ini中的display_errors指令

ini_set('display_errors',1);

//通過error_reporting()函數設置,輸出所有級別的錯誤報告

error_reporting(E_ALL);

這樣可用動態的,在指定的php文件中,輸出錯誤。

 

7. 幾個常用的 php 字符串函數

implode : 將一個一維數組的值轉化爲字符串

$array = array('lastname', 'email', 'phone');

$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

explode : 使用一個字符串分割另一個字符串 , 返回一個數組

$pizza  = "piece1,piece2,piece3,piece4,piece5,piece6";

$pieces = explode(",", $pizza);

str_repeat : echo str_repeat("=", 10); ==========

str_replace :

str_replace("a", "apple", "I like eat apple."); I like eapplet applepple.

str_split :

$str = "Hello Friend";

$arr1 = str_split($str);

$arr2 = str_split($str, 3);

print_r($arr1);

print_r($arr2);

Array( [0] => H [1] => e [2] => l [3] => l [4] => o [5] => [6] => F [7] => r [8] => i [9] => e [10] => n [11] => d ) Array ( [0] => Hel [1] => lo [2] => Fri [3] => end )

strpos : $mystring = 'abc'; $findme   = 'a'; $pos = strpos($mystring, $findme); 結果爲 0

判斷 $mystring 中是否包含有 $findme , 有則返回位置, 無則返回 false

注意 : 判斷的時候要用 === 例如:

if ($pos === false) 如果不用 === , 返回位置爲 0 ,會判斷結果等於false

strlen : 需要計算長度的字符串。

$str = 'abcdef'; echo strlen($str); // 6

$str = ' ab cd '; echo strlen($str); // 7

strtolower :

$str = "Mary Had A Little Lamb and She LOVED It So";

$str = strtolower($str);

echo $str; //mary had a little lamb and she loved it so

strtoupper : $str = "Mary Had A Little Lamb and She LOVED It So";

$str = strtoupper($str);

echo $str; //MARY HAD A LITTLE LAMB AND SHE LOVED IT SO

strtotime : 將任何英文文本的日期時間描述解析爲 Unix 時間戳

substr :

$rest = substr("abcdef", -1);    // 返回 "f"

$rest = substr("abcdef", -2);    // 返回 "ef"

$rest = substr("abcdef", -3, 1); // 返回 "d"

$rest = substr("abcdef", 0, -1);  // 返回 "abcde"

$rest = substr("abcdef", 2, -1);  // 返回 "cde"

$rest = substr("abcdef", 4, -4);  // 返回 ""

$rest = substr("abcdef", -3, -1); // 返回 "de"

 

8. 常用的 php 數組函數

array_combine : 創建一個數組,用一個數組的值作爲其鍵名,另一個數組的值作爲其值

$a = array('green', 'red', 'yellow');

$b = array('avocado', 'apple', 'banana');

$c = array_combine($a, $b);

print_r($c);

Array ( [green] => avocado [red] => apple [yellow] => banana )

array_column : 返回數組中指定的一列

array_keys : 返回數組中部分的或所有的鍵名

array_values : 返回數組中所有的值

array_merge : 合併一個或多個數組

$array1 = array("color" => "red", 2, 4);

$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);

$result = array_merge($array1, $array2);

print_r($result);

Array ( [color] => green [0] => 2 [1] => 4 [2] => a [3] => b [shape] => trapezoid [4] => 4 )

array_push : 將一個或多個單元壓入數組的末尾(入棧)

$stack = array("orange", "banana");

array_push($stack, "apple", "raspberry");

print_r($stack);

Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry )

array_rand : 返回數組中的隨機鍵名

$a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); print_r(array_rand($a,2));

Array ( [0] => a [1] => c )

array_slice :

1. $a=array("red","green","blue","yellow","brown"); print_r(array_slice($a,2));

從數組的第三個元素開始取出,並返回數組中的其餘元素:

Array ( [0] => blue [1] => yellow [2] => brown )

2. $a=array("red","green","blue","yellow","brown"); print_r(array_slice($a,1,2));

從數組的第二個元素開始取出,並僅返回兩個元素:

Array ( [0] => green [1] => blue )

3. $a=array("red","green","blue","yellow","brown"); print_r(array_slice($a,-2,1));

Array ( [0] => yellow )

array_sum : 返回數組中所有值的和

$a=array("a"=>52.2,"b"=>13.7,"c"=>0.9); echo array_sum($a); 66.8

 

9. php寫文件的方法有哪些?

一 . 語法:fwrite(file,string,length)

  1. <span style="font-size:18px;">
  2. <?php  
  3.     header("Content-Type:text/html;Charset=utf-8");  
  4.     $file_path="test.css";  
  5.     if(file_exists($file_path)){  
  6.         //如果是追加內容,則使用a+ append  
  7.         //如果是全新的寫入到文件 ,則使用 w+ write  
  8.         $fp=fopen($file_path,"a+");  
  9.         $con="\r\n你好!";  
  10.         for($i=0;$i<10;$i++){  
  11.             fwrite($fp,$con);  
  12.        }  
  13.        echo "添加ok";  
  14.        fclose($fp);  
  15.     }else{  
  16.         echo "文件不存在!";  
  17.     }  
  18. ?>
  19. </span>  

二 . file_put_contents()

  1. <span style="font-size:18px;">
  2. <?php  
  3.     header("Content-Type:text/html;Charset=utf-8");  
  4.     $file_path="test.txt";  
  5.     $con="北京你好!\r\n";  
  6.     for($i=0;$i<10;$i++){  
  7.         $con.="北京你好!\r\n";  
  8.     }  
  9.     //請不要循環的使用該函數 。  
  10.     file_put_contents($file_path,$con,FILE_APPEND); //fopen fwrite fclose  
  11.     echo "ok";  
  12. ?>
  13. </span>  

10. file_get_contents('php://input') 是什麼意思?

獲取遠程內容

php://input 是個可以訪問請求的原始數據的只讀流。

11. 優化 mysql 數據庫的方法有哪些 (重點看 9-16 條)

1、創建索引

2、複合索引

3、索引不會包含有NULL值的列

4、使用短索引

5、排序的索引問題

6、like語句操作

7、不要在列上進行運算

8、不使用NOT IN和<>操作

9. 選取最適用的字段屬性

10. 使用連接(JOIN)來代替子查詢(Sub-Queries)

11. 使用聯合(UNION)來代替手動創建的臨時表

12. 事務

13. 鎖定表

14. 使用外鍵

15. 使用索引

16. 優化的查詢語句

12. 簡述 mysql 多表關聯查詢的方式和區別

 

13. memcache , redis 分別支持哪些數據類型

memcache : Memcached僅支持簡單的key-value結構的數據

redis :

1. string 2. hash 3. list 4. set 5. sort set 6. transaction

14 . git 和 svn 有何不同?

1. git 是分佈式 , svn 是集中式

2. git 把內容按元數據方式存儲 , 而 svn 是按文件

3. git 分支和 svn 的分支不同

4. git 沒有一個全局的版本號 , 而 svn 有

5. git 的內容完整性要優於 svn

GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章