1. 程式人生 > >php面試題-2

php面試題-2

1.檢測一個變數是否有設定的函式是否?是否為空的函式是?(2分)

    檢測⼀個變數是否有設定的函式是isset()

檢測⼀個變數是是否為空的函式是empty()

2. echo(),print(),print_r()的區別(3分)

    echo()是php語句 沒有返回值 輸出一個或多個字串

    print()是函式 有返回值  列印簡單型別的變數(int,string

    print_r()是函式 有返回值 列印複雜的型別的變數的值(陣列,物件

 

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

    ① 傳輸的資料量不同

 get小,被url長度限制,效率高,安全性差,post可以傳輸大量資料,

    ② 傳輸方式不同

        Get是傳送請求http協議通過URL引數傳遞

        Post是實體資料

    ③ 伺服器端獲取資料方式不同

        $_GET和$_POST

    ④ 用途不同

        Get主要用於頁面搜尋,post用於資料的增刪改

 

4. session與cookie的區別?

    ① Cookie存放在客戶端 Session儲存在伺服器端

② 安全性cookie差

③ cookie有大小限制

④ session過大伺服器壓力會增大

5. 用PHP打印出前一天的時間格式是2015-8-10 22:21:21

    date_default_timezone_set('PRC');

echo  date('Y-m-d H:i:s', time()-24*3600);

echo '<br>';

echo date('Y-m-d H:i:s', strtotime('-1 day'));

 

6. 能夠使HTML和PHP分離開使用的模板引擎

    Smarty TagTemplate EasyTemplatePHP dttag Mustache

 

7. 使用哪些工具進行版本控制

    Svn git  cvs

8. 如何實現字串翻轉

    Strrev()函式

$str = "abcdefg";

function strrevv($str)
{
$len=strlen($str);
$newstr = '';
for($i=$len;$i>=0;$i--)
{
$newstr .= $str{$i};
}
return $newstr;
}
$showstr = strrevv($str);
echo $showstr."<br>";

 

9. 有一個網頁地址, 比如PHP開發資源網主頁: baidu.com, 如何得到它的內容?

        Fopen()

$readcontents = fopen("baidu.com ", "rb");

   $contents = stream_get_contents($readcontents);

   fclose($readcontents);

   echo $contents;

 

        File_get_contents()

 

10. 在PHP中error_reporting這個函式有什麼作用?

    設定報錯級別

 

11. JS表單彈出對話方塊函式是?獲得輸入焦點函式是?

    彈出對話方塊: alert(),prompt(),confirm() 獲得輸入焦點 focus()

 

12. foo()和 @ foo()之間有什麼區別

        @foo() 控制錯誤輸出

 

13. GD庫是做什麼用的?

    php處理圖形的擴充套件庫   驗證碼

 

14. 寫一個函式,能夠遍歷一個資料夾下的所有檔案和子資料夾

    function my_scandir($dir)  
{  
  $files = array();  
  if ( $handle = opendir($dir) ) { 
    while ( ($file = readdir($handle)) !== false ) {  
      if ( $file != ".." && $file != "." ) {  
        if ( is_dir($dir . "/" . $file) ) {  
        $files[$file] = scandir($dir . "/" . $file);  
        }else {  
        $files[] = $file;  
        }  
      }  
    }  
    closedir($handle);  
    return $files;  
  }  
}

$files=my_scandir('D:\www\moning');
print_r($files);

 

15. 寫出 SQL語句的格式 : 插入 ,更新 ,刪除 (4分)
  表名User Name Tel Content Date
  張三 13333663366 大專畢業 2006-10-11
  張三 13612312331 本科畢業 2006-10-15
  張四 021-55665566 中專畢業 2006-10-15
  (a) 有一新記錄(小王 13254748547 高中畢業 2007-05-06)請用SQL語句新增至表中
  (b) 請用sql語句把張三的時間更新成為當前系統時間
  (c) 請寫出刪除名為張四的全部記錄

        Mysql_query(“insert into `User`(name,tel,content,date) value(‘小王’, 13254748547,’ 高中畢業’,’ 2007-05-06’ )”)

        Mysql_query(“update `user` set date =’”.time().”’ Where name = ‘張三’”)

        Mysql_query(“delete from `user` where name=’張四’”)

 

16. myisam與innodb的區別

    ① Myisam不支援事務 innodb支援

    ② innodb為行級鎖 myisam表級鎖

    ③ innodb不儲存錶行數

    ④ myisam適用執行select innodb適用insert update

    ⑤ 物理結構不同 myisam存三個檔案,。frm 檔案存放表格定義。 資料檔案是MYD (MYData) 。 索引檔案是MYI (MYIndex)引伸  InnoDB 把資料和索引存放在表空間裡面

    ⑥ MyISAM中可以使AUTO_INCREMENT型別欄位建立聯合索引 InnoDB中必須包含AUTO_INCREMENT型別欄位的索引

 

17. int 與bigint的區別

    int普通大小的整數 預設10位 bigint大整數 預設20位

 

18. int(10)與int(11)的區別

    顯示長度不同

 

19. varchar與char的區別

        Char 儲存定長的型別

        Varchar儲存可變長的型別

 

20. 資料庫設計,使用者表與登入表分開的好處

    效能和安全

 

21. 分散式怎樣解決session共享問題

    使用redis集中管理session

       session複製

              tomcat的session複製,可以實現session共享  只需搭建tomcat叢集即可

       session繫結

              當用戶A第一次訪問系統時,tomcat1對其進行服務,那麼,下次訪問時仍然讓tomcat1對其進行服務

 

22.  php __autoload機制

    自動載入機制

 

23. 三次握手與四次揮手的過程(主要是畫圖),各個引數的含義

    三次握手

第一次握手:主機A傳送位碼為syn=1,隨機產生seq number=10001的資料包到伺服器,主機B由SYN=1知道,A要求建立聯機,此時狀態為SYN_SENT;

第二次握手:主機B收到請求後要確認聯機資訊,向A傳送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq=20001的包,此時狀態由LISTEN變為SYN_RECV;

第三次握手:主機A收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到後確認seq值與ack=1則連線建立成功,雙方狀態ESTABLISHED。

       

   

四次揮手:

 

客戶端向伺服器傳送FIN,請求關閉,進入FIN_WAIT_1狀態。

服務端接受到FIN報文,然後需要告訴客戶端,我已經知道請求,但還沒有準備好,你可以繼續等我訊息,所以服務端傳送ACK。然後可以進入CLOSE_WAIT狀態

客戶端接收到服務端資料,不做任何迴應,進入FIN_WAIT_2狀態。

服務端確認資料傳送完成之後,傳送FIN報文,告訴客戶端可以關閉連線了,然後進入LAST_ACK狀態。

客戶端接收到FIN報文之後,進入TIME_WAIT狀態,傳送ACK確認報文,如果2msl時間沒有反應則關閉連線。否則進行重傳。

服務端在接收到ACK之後,關閉連線。

 

24. http與https的區別,https怎樣保準安全(結合ssl)

   

1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。

2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

4、http的連線很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

 

25. 寫出一個排序演算法

    冒泡法:

        function bubbleSort($str){
    $_count=count($str);
    for($i=0;$i<$_count;$i++){
        for($j=$i+1;$j<$_count;$j++){
            if($str[$j]>$str[$i]){
                $tem=$str[$j];
                $str[$j]=$str[$i];
                $str[$i]=$tem;
            }
        }
    }
    return $str;
}
$str=array(8,5,4,3,32,2.4,54,59,6,7,);
print_r($str);
print_r(bubbleSort($str));
 
    快速排序法:
function qkSort($str){
    $_count=count($str);
    if($_count<2) return $str;
    $standard=$str[0];
    $_left=$_right=array();
    for($i=1;$i<$_count;$i++){
        if($str[$i]>$standard){
            $_left[]=$str[$i];
        }else{
            $_right[]=$str[$i];
        }
    }
    $_left=qkSort($_left);
    $_right=qkSort($_right);
    return array_merge($_left,array($standard),$_right);
}
$str=array(8,5,4,3,32,2.4,54,59,6,7,);
print_r($str);
print_r(qkSort($str));
 
26. 二分查詢的思想
        1.只適用於一組有序數,雜亂無序的數是不能使用二分法查詢的
        2.思想:根據你查詢的數來判斷查詢前半段還是後半段
 
27. linux常用命令
        ls -a 列出目錄所有檔案,包含以.開始的隱藏檔案
 
         ls -A 列出除.及..的其它檔案
 
         ls -r 反序排列
 
         ls -t 以檔案修改時間排序
 
         ls -S 以檔案大小排序
 
         ls -h 以易讀大小顯示
 
         ls -l 除了檔名之外,還將檔案的許可權、所有者、檔案大小等資訊詳細列出來
        cd [目錄名]。說明:切換當前目錄至dirName
        pwd 檢視當前工作目錄路徑
        mkdir t 建立t資料夾
        rm  刪除一個目錄中的一個或者多個檔案或目錄
        rmdir 刪除空目錄
        mv 移動檔案
        cp 複製檔案
        find 查詢檔案
        chmod 改變許可權
        tar 壓縮
        df 顯示磁碟空間使用情況
        du 顯示檔案佔用磁碟空情況
        free 顯示系統記憶體使用情況