真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP常見面試問答題有哪些

這篇文章主要講解了“PHP常見面試問答題有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP常見面試問答題有哪些”吧!

成都創(chuàng)新互聯(lián)公司服務項目包括香洲網(wǎng)站建設、香洲網(wǎng)站制作、香洲網(wǎng)頁制作以及香洲網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,香洲網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到香洲省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

PHP常見面試問答題有哪些

PHP常見面試題

1.詳述一次完整的HTTP請求過程

這個問題的核心是域名解析和服務器(nginx)解析這兩部分,基本上這兩部分詳細闡述就可以了。

步驟一、解析URL

瀏覽器會解析當前的URL數(shù)據(jù),判斷此URL是否為合法的鏈接。如果是合法鏈接則正常的向下一步驟前進。如果不是合法的鏈接,則會執(zhí)行搜索功能,例如執(zhí)行百度、360、Google搜索等。

步驟二、解析域名

服務器是以ip的形式存在的。而域名需要解析到ip上,解析IP會有三個小的步驟:

1)、從瀏覽器自身的緩存中解析此域名數(shù)據(jù)

2)、從本地電腦的HOST文件中解析域名

3)、通過DNS服務器解析域名

步驟三、拿信息

這個步驟我們拿到了URL的信息,主要是IP和端口信息。

步驟四、封包并進行三次握手

瀏覽器將請求信息進行打包,通過TCP的三次握手將數(shù)據(jù)傳遞至服務器。

步驟五、服務器解析、處理、返回數(shù)據(jù)

服務器通過種種層級、方式拿到傳遞的數(shù)據(jù),對數(shù)據(jù)進行分析、處理,最后返回響應類MIME類型數(shù)據(jù)。正常狀態(tài)碼為200,非正常的錯誤碼有404、500、501等等

步驟六、瀏覽器獲得、渲染、展現(xiàn)數(shù)據(jù)

瀏覽器從服務器拿到數(shù)據(jù)、通過加載資源、渲染頁面等操作,將頁面展現(xiàn)給用戶。

2. SESSION 與 COOKIE的區(qū)別是什么,請從協(xié)議,產(chǎn)生的原因與作用說明?

1)、http無狀態(tài)協(xié)議,不能區(qū)分用戶是否是從同一個網(wǎng)站上來的,同一個用戶請求不同的頁面不能看做是同一個用戶。

2)、SESSION存儲在服務器端,COOKIE保存在客戶端。Session比較安全,cookie用某些手段可以修改,不安全。Session依賴于cookie進行傳遞。

禁用cookie后,session不能正常使用。Session的缺點:保存在服務器端,每次讀取都從服務器進行讀取,對服務器有資源消耗。Session保存在服務器端的文件或數(shù)據(jù)庫中,默認保存在文件中,文件路徑由php配置文件的session.save_path指定。Session文件是公有的。

3.HTTP 狀態(tài)中302、403、 500代碼含義?

一二三四五原則: 一. 消息系列 二 成功系列 三. 重定向系列 四. 請求錯誤系列 五. 服務器端錯誤系列

302:臨時轉移成功,請求的內容已轉移到新位置 403:禁止訪問 500:服務器內部錯誤 401代表未授權。

4. Linux 下建立壓縮包,解壓縮包的命令

Tar.gz:

打包: tar czf file.tar.gz file.txt

解壓: tar xzf file.tar.gz

Bz2:

打包: bzip2 [-k] 文件

解壓: bunzip2 [-k] 文件

Gzip(只對文件,不保留原文件)

打包: gzip file1.txt

解壓: gunzip file1.txt.gz

Zip: -r 對目錄

打包: zip file1.zip file1.txt

解壓: unzip file1.zip

5. 請寫出數(shù)據(jù)類型(int char varchar datetime text)的意思;請問 varchar 和 char有什么區(qū)別?

Int 整數(shù) char 定長字符 Varchar 變長字符 Datetime 日期時間型 Text 文本型 Varchar 與char的區(qū)別 char是固定長度的字符類型,分配多少空間,就占用多長空間。 Varchar是可變長度的字符類型,內容有多大就占用多大的空間,能有效節(jié)省空間。 由于varchar類型是可變的,所以在數(shù)據(jù)長度改變的時,服務器要進行額外的操作,所以效率比char類型低。

6. MyISAM 和 InnoDB 的基本區(qū)別?索引結構如何實現(xiàn)?

MyISAM類型不支持事務,表鎖,易產(chǎn)生碎片,要經(jīng)常優(yōu)化,讀寫速度較快,而InnoDB類型支持事務,行鎖,有崩潰恢復能力。讀寫速度比MyISAM慢。

創(chuàng)建索引:alert table tablename add index (`字段名`)

7. 不使用cookie向客戶端發(fā)送一個cookie.

理解:session_start()開啟時,生成一個常量 SID,當COOKIE開啟時,這個常量為空,當COOKIE關閉時,這個常量中存儲了PHPSESSID的值。通過在URL后加一個SID參數(shù)來傳遞SESSIONID的值,從而使客戶端頁面可以使用SESSION里面的值。 當客戶端開啟COOKIE和服務器端開啟SESSION時。 瀏覽器第一次請求,服務器會向瀏覽器端發(fā)送一個COOKIE里面存儲SESSIONID. 當瀏覽器第二次請求時,會把已存在

8. isset() 和 empty() 區(qū)別

Isset判斷變量是否存在,可以傳入多個變量,若其中一個變量不存在則返回假,empty判斷變量是否為空為假,只可傳一個變量,如果為空為假則返回真。

9.持久化redis有幾種方式?

答:主要有兩種方式:

1) 快照持久化

在redis配置文件中已經(jīng)自動開啟了,

格式是:save N M

表示在N秒之內,redis至少發(fā)生M次修改則redis抓快照到磁盤。

當然我們也可以手動執(zhí)行save或者bgsave(異步)命令來做快照

2)append only file  AOF持久化

總共有三種模式,如

appendfsync everysec默認的是每秒強制寫入磁盤一次

appendfsync always 每次執(zhí)行寫操作的時候就強制寫入磁盤

appendfsync no 完全取決于os,性能最好但是持久化沒法保證

其中第三種模式最好。redis默認的也是采取第三種模式。

10.MySQL存儲引擎

答:常用的主要分為兩種,一種是innodb,一種是myisam,兩者的主要區(qū)別是

1)myisam不支持事務處理,而innoDB支持事務處理

2)myisam 不支持外鍵,innoDB支持外鍵

3)myisam支持全文檢索,而innoDB在MySQL5.6版本之后才支持全文檢索

4)數(shù)據(jù)的存儲形式不一樣,mysiam表存放在三個文件:結構、索引、數(shù)據(jù),innoDB存儲把結構存儲為一個文件,索引和數(shù)據(jù)存儲為一個文件

5)myisam在查詢和增加數(shù)據(jù)性能更優(yōu)于innoDB,innoDB在批量刪除方面性能較高。

6)myisam支持表鎖,而innoDB支持行鎖

11.sql注入是什么及如何預防sql注入?

答:SQL注入攻擊指的是用戶或者黑客通過構建特殊的輸入作為參數(shù)傳入我們的Web應用程序端,而這些輸入大都是SQL語法里的一些組合,通過執(zhí)行SQL語句進而執(zhí)行攻擊者所要的操作,其主要原因是程序員沒有細致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)而造成的。因此我們在做開發(fā)過程中一定要預防sql注入,主要從兩方面著手:

1)占位符的方式,就是對sql語句進行預處理,然后執(zhí)行sql語句

2)通過addslashes或者mysql_real_escape_string這兩個函數(shù)對用戶輸入的值進行轉義處理,把一些特殊的字符轉義掉。

12.有用過預處理么?

答:用過,PDO類中,有個prepare方法可以實現(xiàn)預處理,PDOStament類中 的excute方法可以執(zhí)行預處理,預處理的參數(shù)分為兩種,一種是:字符串占位符,另一種是?占位符,:字符串占位符在執(zhí)行預處理傳遞參數(shù)時傳入的是關聯(lián)數(shù)組,而?占位符傳遞的是索引數(shù)組。兩者不能混合使用,但一般推薦使用:字符串占位符。

13.用框架還用自己的處理嗎

答:一般成熟的開源框架中都考慮到了數(shù)據(jù)安全這方面的東西,但有時候我們可能會使用一些原生的SQL語句時,我們就需要考慮自己對sql語句進行預處理。當然有時候框架中的過濾方法我們不希望采用,比如使用文本編輯器時,我們可以使用自己的過濾方式。

14.mysql優(yōu)化怎么做的?

答:mysql優(yōu)化主要從以下幾個方面來實現(xiàn):

1)設計角度:存儲引擎的選擇,字段類型選擇,范式

2)功能角度:可以利用mysql自身的特性,如索引,查詢緩存,碎片整理,分區(qū)、分表等

3)sql語句的優(yōu)化方面:盡量簡化查詢語句,能查詢字段少就盡量少查詢字段,優(yōu)化分頁語句、分組語句等。

4)部署大負載架構體系:數(shù)據(jù)庫服務器單獨出來,負載大時可以采用主從復制,讀寫分離機制進行設計

5)從硬件上升級數(shù)據(jù)庫服務器。

15.請說明 PHP 中傳值與傳引用的區(qū)別。什么時候傳值什么時候傳引用?

按值傳遞:函數(shù)范圍內對值的任何改變在函數(shù)外部都會被忽略

按引用傳遞:函數(shù)范圍內對值的任何改變在函數(shù)外部也能反映出這些修改

優(yōu)缺點:按值傳遞時,php必須復制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。按引用傳遞則不需要復制值,對于性能提高很有好處。

16.在PHP中error_reporting這個函數(shù)有什么作用?

設置 PHP 的報錯級別并返回當前級別。

17.使用PHP描述快速排序算法,對象可以是一個數(shù)組嗎?

原理:快速排序使用分治策略來把待排序數(shù)據(jù)序列分為兩個子序列,具體步驟為:

(1)從數(shù)列中挑出一個元素,稱該元素為“基準”。

(2)掃描一遍數(shù)列,將所有比“基準”小的元素排在基準前面,所有比“基準”大的元素排在基準后面。

(3)通過遞歸,將各子序列劃分為更小的序列,直到把小于基準值元素的子數(shù)列和大于基準值元素的子數(shù)列排序。

//快速排序(數(shù)組排序)
function QuickSort($arr){
 $num = count($arr);
 $l=$r=0;
 for($i=1;$i<$num;$i++){
  if($arr[$i] < $arr[0]){
   $left[] = $arr[$i];
   $l++;
  }else{
   $right[] = $arr[$i];
   $r++;
  }
 }
 if($l > 1){
  $left = QuickSort($left);
 }
 $new_arr = $left;
 $new_arr[] = $arr[0];
 if($r > 1){
  $right = QuickSort($right);
 }
 for($i=0;$i<$r;$i++){
  $new_arr[] = $right[$i];
 }
 return $new_arr;
}

18.使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個有序數(shù)組

//二分查找(數(shù)組里查找某個元素)
function bin_sch($array, $low, $high, $k){
 if ($low <= $high){
  $mid = intval(($low+$high)/2);
  if ($array[$mid] == $k){
   return $mid;
  }elseif ($k < $array[$mid]){
   return bin_sch($array, $low, $mid-1, $k);
  }else{
   return bin_sch($array, $mid+1, $high, $k);
  }
 }
 return -1;
}
//順序查找(數(shù)組里查找某個元素)
function seq_sch($array, $n, $k){
 $array[$n] = $k;
 for($i=0; $i<$n; $i++){
  if($array[$i]==$k){
   break;
  }
 }
 if ($i<$n){
  return $i;
 }else{
  return -1;
 }
}

19.寫一個二維數(shù)組排序算法函數(shù),能夠具有通用性,可以調用php內置函數(shù)(array_multisort())

//二維數(shù)組排序, $arr是數(shù)據(jù),$keys是排序的健值,$order是排序規(guī)則,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
 if (!is_array($arr)) {
  return false;
 }
 $keysvalue = array();
 foreach($arr as $key => $val) {
  $keysvalue[$key] = $val[$keys];
 }
 if($order == 0){
  asort($keysvalue);
 }else {
  arsort($keysvalue);
 }
 reset($keysvalue);
 foreach($keysvalue as $key => $vals) {
  $keysort[$key] = $key;
 }
 $new_array = array();
 foreach($keysort as $key => $val) {
  $new_array[$key] = $arr[$val];
 }
 return $new_array;
}

20.對于用戶輸入一串字符串$string,要求$string中只能包含大于0的數(shù)字和英文逗號,請用正則 表達式驗證,對于不符合要求的$string返回出錯信息

class regx { 
 public static function check($str) { 
 if(preg_match("/^([1-9,])+$/",$str)) { 
  return true; 
 } 
 return false; 
 } 
} 
$str="12345,6"; 
if(regx::check($str)) { 
echo "suc"; 
} else { 
echo "fail"; 
}

21.單例模式,創(chuàng)建mysqli數(shù)據(jù)庫鏈接的單例對象

class Db { 
 private static $instance; 
 public $handle; 
 Private function __construct($host,$username,$password,$dbname) { 
  $this->handle=NULL; 
  $this->getcon($host,$username,$password,$dbname); 
 } 
 public static function getBb() { 
  self::$instance=new Db(); 
  return self::$instance; 
 } 
 private function getcon($host,$username,$password,$dbname) { 
  if($this->handle!=NULL){ 
   return true; 
  } 
  $this->handle=mysqli_connect($host,$username,$password,$dbname); 
 } 
}

22.PHP session擴展默認將session數(shù)據(jù)儲存在哪里? D

A) SQLite Database

B) MySQL Database

C) Shared Memory

D) File System

E) Session Server

23.PHP的strtolower()和strtoupper()函數(shù)在安裝非中文系統(tǒng)的服務器下可能會導致將漢字轉換為亂碼,請寫兩個替代的函數(shù)實現(xiàn)兼容Unicode文字的字符串大小寫轉換

答:原因是:中文是由多字節(jié)組成的,而只有英文系統(tǒng)的單個英文字符只有一個字節(jié),所以該系統(tǒng)把中文的每一個字節(jié)都做了strtolower()處理,改變后的中文字節(jié)拼接在一起就成了亂碼(新生成的編碼映射對應的字符可能就不是中文了)

手動解決:用str_split(string string,intstring,intsplit_length = 1)按每個字節(jié)切割,像中文能切割成三個字節(jié)。對識別到的字節(jié)若是英文字母則進行轉換。

= 97 && $v<= 122){  
            $v -= 32;  
        }  
        $r .= chr($v);  
    }  
    return $r;  
}  
 
 
$a = 'a中你繼續(xù)F@#$%^&*(BMDJFDoalsdkfjasl';  
echo 'origin string:'.$a."\n";  
echo 'result string:';  
$r = mystrtoupper($a);  
var_dump($r);

24.PHP的is_writeable()函數(shù)存在Bug,無法準確判斷一個目錄/文件是否可寫,請寫一個函數(shù)來判斷目錄/文件是否絕對可寫

答:其中bug存在兩個方面,
1)在windowns中,當文件只有只讀屬性時,is_writeable()函數(shù)才返回false,當返回true時,該文件不一定是可寫的。
如果是目錄,在目錄中新建文件并通過打開文件來判斷;
如果是文件,可以通過打開文件(fopen),來測試文件是否可寫。

2)在Unix中,當php配置文件中開啟safe_mode時(safe_mode=on),is_writeable()同樣不可用。
讀取配置文件是否safe_mode是否開啟。

/**
* Tests for file writability
*
* is_writable() returns TRUE on Windows servers when you really can't write to
* the file, based on the read-only attribute. is_writable() is also unreliable
* on Unix servers if safe_mode is on.
*
* @access   private
* @return   void
*/
if ( ! function_exists('is_really_writable'))
{
    function is_really_writable($file)
    {
    // If we're on a Unix server with safe_mode off we call is_writable
    if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE)
    {
        return is_writable($file);
    }
 
    // For windows servers and safe_mode "on" installations we'll actually
    // write a file then read it. Bah...
    if (is_dir($file))
    {
        $file = rtrim($file, '/').'/'.md5(mt_rand(1,100).mt_rand(1,100));
 
        if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE)
        {
            return FALSE;
        }
 
        fclose($fp);
        @chmod($file, DIR_WRITE_MODE);
        @unlink($file);
        return TRUE;
    } elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) {
        return FALSE;
    }
 
    fclose($fp);
    return TRUE;
    }
}

25.PHP處理上傳文件信息數(shù)組中的文件類型$_FILES[‘type’]由客戶端瀏覽器提供,有可能是黑客偽造的信息,請寫一個函數(shù)來確保用戶上傳的圖像文件類型真實可靠

答:用getimagesize來判斷上傳圖片的類型比$_FILES函數(shù)的type更可靠
同一個文件,使用不同的瀏覽器php返回的type類型是不一樣的,由瀏覽器提供type類型的話,
就有可能被黑客利用向服務器提交一個偽裝撐圖片后綴的可執(zhí)行文件。
可以通過getimagesize()函數(shù)來判斷上傳的文件類型,如果是頭像文件 會返回這樣的一個數(shù)組

Array
(
    [0] => 331
    [1] => 234
    [2] => 3
    [3] => width="331" height="234"
    [bits] => 8
    [mime] => image/png
);

26.如何實現(xiàn)PHP的安全最大化?怎樣避免SQL注入漏洞和XSS跨站腳本攻擊漏洞?

答:基本原則:不對外界展示服務器或程序設計細節(jié)(屏蔽錯誤),不相信任何用戶提交的數(shù)據(jù)(過濾用戶提交)

1)屏蔽錯誤,將display_errors 設置為off
2)過濾用戶提交參數(shù),這里需要注意的是不能僅僅通過瀏覽器端的驗證,還需要經(jīng)過服務器端的過濾

這里是需要注意最多的地方,因為所有用戶提交的數(shù)據(jù)入口都在這里,這是過濾數(shù)據(jù)的第一步。
      1 考慮是否過濾select,insert,update,delete,drop,create等直接操作數(shù)據(jù)的命令語句
      2 使用addslashes 將所有特殊字符過濾
      3 打開magic_quotes_gpc,開啟該參數(shù)數(shù)后自動將sql語句轉換,將 ' 轉換成  \'

3)可以考慮設置統(tǒng)一入口,只允許用戶通過指定的入口訪問,不能訪問未經(jīng)許可的文件等內容
4)可以考慮對安全性要求高的文件進行來源驗證,比如要想執(zhí)行b.php必須先執(zhí)行a.php,可以在b.php中判斷來自a.php的referer,避免用戶直接執(zhí)行b.php

27.請寫出讓PHP能夠在命令行下以腳本方式執(zhí)行時安裝PHP所必須指定的configure參數(shù),并說明如何在命令行下運行PHP腳本(寫出兩種方式)同時向PHP腳本傳遞參數(shù)?

答:由于 –enable-cli 和 –enable-cgi 同時默認有效,因此,不必再配置行中加上 –enable-cli 來使得 CLI 在 make install 過程中被拷貝到 {PREFIX}/bin/php

php -f “index.php” 
php -r “print_r(get_defined_constants());”

28.PHP的垃圾收集機制是怎樣的?

說明:
1)如果,你熟悉PHP源碼,那么請從源碼入手,回答些問題,會獲得額外加分
2)如果,你不熟悉PHP源碼,那么盡你所能,多寫點東西,包括利用自己的編程直覺得到的信息,都可以。
3)對,則有分,錯誤不扣,不寫無分。

答:PHP可以自動進行內存管理,清除不再需要的對象。PHP使用了引用計數(shù)(referencecounting)這種單純的垃圾回收(garbagecollection)機制。每個對象都內含一個引用計數(shù)器,每個reference連接到對象,計數(shù)器加1。當reference離開生存空間或被設為NULL,計數(shù)器減1。當某個對象的引用計數(shù)器為零時,PHP知道你將不再需要使用這個對象,釋放其所占的內存空間。

29.get和post的區(qū)別?

1. get是從服務器上獲取數(shù)據(jù),post是向服務器傳送數(shù)據(jù)。
2. get是把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
3. get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認為不受限制。
4. get安全性非常低,post安全性較高。但是執(zhí)行效率卻比Post方法好。

30.如何修改會話的生存時間?

一:在php.ini中設置session.gc_maxlifetime = 1440 //默認時間
二:代碼實現(xiàn)      $ lifeTime = 24 * 3600; //保存一天
    session_set_cookie_params($ lifeTime); 
    在session_start();

31.微信支付回調失敗該如何處理?

他問的是已經(jīng)支付成功后,但是回調失敗了。

自己可以創(chuàng)建定時任務在每天的凌晨執(zhí)行,去微信那邊對賬,然后更新數(shù)據(jù)庫訂單狀態(tài)。

32.調用區(qū)塊鏈接口的安全措施,有那些實現(xiàn)方法?

來自PHP技術交流群 群友分享

  1. 使用MD5實現(xiàn)對接口加簽,目的是為了防止篡改數(shù)據(jù)。

  2. 基于網(wǎng)關實現(xiàn)黑明單與白名單攔截

  3. 可以使用rsa非對稱加密 公鑰和私鑰互換

  4. 如果是開放接口的話,可以采用oath3.0協(xié)議

  5. 使用Https協(xié)議加密傳輸,但是傳輸速度慢

  6. 對一些特殊字符實現(xiàn)過濾 防止xss、sql注入的攻擊

  7. 定期使用第三方安全掃描插件

  8. 接口采用dto、do實現(xiàn)參數(shù)轉化 ,達到敏感信息脫敏效果

  9. 使用token+圖形驗證碼方法實現(xiàn)防止模擬請求

  10. 使用對ip訪問實現(xiàn)接口的限流,對短時間內同一個請求(ip)一直訪問接口 進行限制。

33.服務器受到dos攻擊,這個問題如何應付?

看看你的服務的訪問日志,在防火墻中加過濾,或者在web服務器中加過濾吧。方法有以下幾種。

  • 對于特定的IP訪問的情況,限制IP訪問

  • 限制同一IP在單位時間內的訪問次數(shù)

  • 上級服務器,提高吞吐能力

是消耗服務器資源為主還是純流量攻擊?消耗資源的可以通過配置防火墻過濾規(guī)則防御中小規(guī)模的攻擊。如果是純流量攻擊,考慮你用的是linode真心無解。即便你封了IP封了端口也沒用,人家不管你接不接受他的請求,他都會塞滿你的帶寬。linode必然認為你是被流量攻擊或者消耗過多資源然后給你掛起。

34.簡述Linux下安裝Mysql的過程?

Groupadd mysql 添加一個用戶組mysql
Useradd -g mysql mysql 添加一個mysql用戶指定分組為mysql
Cd /lamp/mysql 進入mysql目錄
./configure –prefix=/usr/local/mysql/ –with-extra-charsets=all
Make
Make all

35.對于大流量的網(wǎng)站,您采用什么樣的方法來解決訪問量問題?

優(yōu)化程序,優(yōu)化數(shù)據(jù)庫,如果程序和數(shù)據(jù)庫已經(jīng)最優(yōu)化,使用以下解決方法:

  • 確定當前服務器設備是否滿足流量需求。

  • 使用Memcache緩存技術,把動態(tài)內容緩存到文件中,動態(tài)網(wǎng)頁直接調用這些文件,而不必再訪問數(shù)據(jù)庫。

  • 禁止外部盜鏈,圖片和文件外部盜鏈會給服務器帶來大量的負載壓力,可以通過refer來禁止外部盜鏈,或者使用apache來配置禁止盜鏈。

  • 控制大文件的下載,大文件的下載對于非SCSI硬盤來說會占用大量的資源,導致服務器的響應能力下降。

  • 使用不同的主機分流主要流量,使服務器均衡負載。

  • 使用流量統(tǒng)計軟件統(tǒng)計分析網(wǎng)站流量,可以知道哪些地方耗費了大量的流量,哪些頁面需要再進行優(yōu)化。

36.對關系型數(shù)據(jù)庫而言,索引是相當重要的概念,請回答有關索引幾個問題:

1)索引的目的是什么?

  • 快速訪問數(shù)據(jù)表中的特定信息,提高檢索速度

  • 創(chuàng)建唯一性索引,保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性

  • 加速表和表之間的連接

  • 使用分組和排序子句進行數(shù)據(jù)檢索時,可以顯著減少查詢中分組和排序的時間

2) 索引對數(shù)據(jù)庫系統(tǒng)的負面影響是什么?

負面影響:創(chuàng)建索引和維護索引需要耗費時間,這個時間隨著數(shù)據(jù)量的增加而增加;索引需要占用物理空間,不光是表需要占用數(shù)據(jù)空間,每個索引也需要占用物理空間;當對表進行增、刪、改的時候索引也要動態(tài)維護,這樣就降低了數(shù)據(jù)的維護速度。

3) 為數(shù)據(jù)表建立索引的原則有哪些?

  • 在最頻繁使用的、用以縮小查詢范圍的字段上建立索引

  • 在平頻繁使用的、需要排序的字段上建立索引

4) 什么情況下不宜建立索引?

  • 對于查詢中很少涉及的列或者重復值比較多的列,不宜建立索引

  • 對于一些特殊的數(shù)據(jù)類型,不宜建立索引,比如文本字段(text),值范圍較少的知道等。

37.PHP字符串中單引號與雙引號的區(qū)別?

單引號不能解釋變量,而雙引號可以解釋變量。

單引號不能轉義字符,在雙引號中可以轉義字符。

38.求兩個日期的差數(shù),例如2021-2-5 ~ 2021-3-6 的日期差數(shù)

方法一:
get_days(’2021-2-5′, ’2021-3-6′);
?>
方法二:

39.有一個一維數(shù)組,里面存儲整形數(shù)據(jù),請寫一個函數(shù),將他們按從大到小的順序排列。要求執(zhí)行效率高。并說明如何改善執(zhí)行效率。(該函數(shù)必須自己實現(xiàn),不能使用php函數(shù))

$arr[$j+1]){
   $tmp=$arr[$j];
   $arr[$j]=$arr[$j+1];
   $arr[$j+1]=$tmp;
   $flag=1;
  }
 }
 }
}
$test=array(1,3,6,8,2,7);
BubbleSort($test);
var_dump($test);

感謝各位的閱讀,以上就是“PHP常見面試問答題有哪些”的內容了,經(jīng)過本文的學習后,相信大家對PHP常見面試問答題有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!


本文標題:PHP常見面試問答題有哪些
轉載源于:http://weahome.cn/article/gidecc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部