亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PHP面試整理

figofuture / 1018人閱讀

摘要:是語句不是函數(shù),有返回值,只能輸出一個變量,不需要圓括號。這些特性使成為理想的數(shù)據(jù)交換語言。如果子類中定義了構造函數(shù)則不會隱式調用其父類的構造函數(shù)。要執(zhí)行父類的構造函數(shù),需要在子類的構造函數(shù)中調用。

PHP HTTP Keep-Alive的作用 作用

Keep-Alive:使客戶端到服務器端的連接持續(xù)有效,當出現(xiàn)對服務器的后繼請求時,Keep-Alive功能避免了建立或者重新建立連接。Web服務器,基本上都支持HTTP Keep-Alive。

缺點

對于提供靜態(tài)內容的網(wǎng)站來說,這個功能通常很有用。但是,對于負擔較重的網(wǎng)站來說,雖然為客戶保留打開的連 接有一定的好處,但它同樣影響了性能,因為在處理暫停期間,本來可以釋放的資源仍舊被占用。當Web服務器和應用服務器在同一臺機器上運行時,Keep-Alive功能對資源利用的影響尤其突出。

解決

Keep-Alive: timeout=5, max=100

timeout:過期時間5秒(對應httpd.conf里的參數(shù)是:KeepAliveTimeout),

max:是最多一百次請求,強制斷掉連接。就是在timeout時間內又有新的連接過來,同時max會自動減1,直到為0,強制斷掉。

php數(shù)組函數(shù)常見的那些? 數(shù)組遍歷函數(shù)
list();  //不是真正的函數(shù),而是PHP的語言結構,用于給一組變量賦值,僅能用于索引數(shù)組
each();  //返回數(shù)組當前元素的鍵值對,并將指針移動到下一個元素位置
while(); //可配合list或each使用:while(list($key, $value) = each($arr)){each $key, $value; }
數(shù)組內部指針控制
current();  //讀取指針位置的內容
key();      //讀取當前指針指向內容的索引值
next();     //將數(shù)組中的內部指針指向下一單元
prev();     //將數(shù)組內部指針倒回一位
end();      //將數(shù)組內部指針指向最后一個元素
reset();    //將目前指針指向第一個索引位置
數(shù)組鍵值操作函數(shù)
array_values($arr);       //獲得數(shù)組的值
array_keys($arr);         //獲得數(shù)組的鍵名
array_flip($arr);         //數(shù)組中的值與鍵名互換(如果有重復前面的會被后面的覆蓋)
array_search("PHP",$arr); //檢索給定的值,加true則是嚴格類型檢查
array_reverse($arr);      //將數(shù)組中的元素翻轉(前后順序)
in_array("apple", $arr);  //在數(shù)組中檢索apple
array_key_exists("apple", $arr); // 檢索給定的鍵名是否存在數(shù)組中
array_count_values($arr);        // 統(tǒng)計數(shù)組中所有值出現(xiàn)的次數(shù)
array_unique($arr);              // 刪除數(shù)組中重復的值
數(shù)組回調函數(shù)
array_filter(); //使用回調函數(shù)過濾數(shù)組中的元素,如果回調返回true則當前的元素被包含到返回數(shù)組中
array_walk();   //回調函數(shù)處理數(shù)組,自定義函數(shù)要有兩個參數(shù),本函數(shù)第三個參數(shù)可以作為回調第三個參數(shù)返回
array_map();    //可以處理多個數(shù)組,每個數(shù)組的長度應該相同,傳入數(shù)組的個數(shù)和回調函數(shù)參數(shù)個數(shù)應該一致
數(shù)組的分段和填充
array_slice($arr, 0, 3);    //將數(shù)組中的一段取出,此函數(shù)忽略鍵名(數(shù)組的分段)
array_splice($arr, 0, 3,array("black","maroon"));    //將數(shù)組中的一段取出,返回的序列從原數(shù)組中刪除
array_chunk($arr, 3, TRUE);   //將一個數(shù)組分割成多個,TRUE為保留原數(shù)組的鍵名(分割多個數(shù)組)
數(shù)組與棧,列隊
array_push($arr, "apple", "pear");    //將一個或多個元素壓入數(shù)組棧的末尾(入棧),返回入棧元素的個數(shù)
array_pop($arr);    // 將數(shù)組棧的最后一個元素彈出(出棧)
array_shift($arr);   //數(shù)組中第一個元素移出并返回(長度減1,其他元素向前移動一位,數(shù)字鍵名改為從零計數(shù),文字鍵名不變)
array_unshift($arr,"a",array(1,2));  //在數(shù)組的開頭插入一個或多個元素
數(shù)組的排序
sort($arr);      //由小到大,忽略鍵名
rsort($arr);     //由大到小,忽略鍵名
asort($arr);     //由小到大,保留鍵名
arsort($arr);    //由大到小,保留鍵名
ksort($arr);     //按照鍵名正序排序
krsort($arr);    //按照鍵名逆序排序
數(shù)組的計算
array_sum($arr);   //對數(shù)組內部的所有元素做求和運算(數(shù)組元素的求和)
array_merge($arr1, $arr2); //合并兩個或多個(相同字符串鍵名,后面覆蓋前面,相同的數(shù)字鍵名,后面的附加到后面)
 
array_diff($arr1, $arr2);       //返回差集結果數(shù)組   
array_diff_assoc($arr1, $arr2, $arr3);  //返回差集結果數(shù)組,鍵名也做比較
array_intersect($arr1, $arr2);  //返回交集結果數(shù)組    
array_intersect_assoc($arr1, $arr2);   //返回交集結果數(shù)組,鍵名也做比較 
其他的數(shù)組函數(shù)
array_unique($arr);   //移除數(shù)組中重復的值,新的數(shù)組中會保留原始的鍵名
shuffle($arr);        // 將數(shù)組的順序打亂
PHP中幾個輸出函數(shù)echo,print()print_r(),sprintf(),var_dump()的區(qū)別

echo:是語句不是函數(shù),沒有返回值,可輸出多個變量值,不需要圓括號。不能輸出數(shù)組和對象,只能打印簡單類型(如int,string)。

print:是語句不是函數(shù),有返回值 1 ,只能輸出一個變量,不需要圓括號。不能輸出數(shù)組和對象,只能打印簡單類型(如int,string)。

print_r:是函數(shù),可以打印復合類型,例如:stirng、int、float、array、object等,輸出array時會用結構表示,而且可以通過print_r($str,true)來使print_r不輸出而返回print_r處理后的值

printf:是函數(shù),把文字格式化以后輸出(參看C語言)

sprintf:是函數(shù),跟printf相似,但不打印,而是返回格式化后的文字(該函數(shù)把格式化的字符串寫寫入一個變量中,而不是輸出來),其他的與printf一樣。

$str = "Hello";    
$number = 123; 
$txt = sprintf("%s world. Day number %u",$str,$number);
//輸出: Hello world. Day number 123 
var_dump():函數(shù),輸出變量的內容、類型或字符串的內容、類型、長度。常用來調試。

可以通過function_exists("函數(shù)名稱")進行測試

var_dump(function_exists("print"));  //bool(false)
var_dump(function_exists("echo"));  //bool(false)
var_dump(function_exists("print_r")); //bool(true
heredoc

Heredoc在正規(guī)的PHP文檔中和技術書籍中一般沒有詳細講述。他是一種Perl風格的字符串輸出技術。使用heredoc技術可以實現(xiàn)界面與代碼的準分離,比如phpwind模板。
heredoc的語法是用”<<<”加上自己定義成對的標簽,在標簽范圍內的文字視為一個字符串

<<開始標記開始,以End結束標記結束,結束標記必須頂頭寫,不能有縮進和空格,且在結束標記末尾要有分號。開始標記和開始標記相同,比如常用大寫的EOT、EOD、EOF來表示,也可以使用其他標記,只要保證開始標記和結束標記不在正文中出現(xiàn)就行。

位于開始標記和結束標記之間的變量可以被正常解析,但是函數(shù)則不可以。在heredoc中,變量不需要用連接符 ., 來拼接,比如:

$a=2;
$b= <<

heredoc常用在輸出包含大量HTML語法文檔的時候。他要比傳統(tǒng)的echo輸出精煉很多,如下所示:

function getHtml(){
    echo "";
    echo "Title";
    echo "Content";
    echo "";
}

function getHtml(){
    echo <<
    Title
    Content
    
EOT;
}
禁掉cookiesession使用方案,設置session過期的方法,對應函數(shù)

通過url傳值,把session id附加到url上(缺點:整個站點中不能有純靜態(tài)頁面,因為純靜態(tài)頁面session id 將無法繼續(xù)傳到下一頁面)
通過隱藏表單,把session id放到表單的隱藏文本框中同表單一塊提交過去(缺點:不適用標簽這種直接跳轉的非表單的情況)
直接配置php.ini文件,將php.ini文件里的session.use_trans_sid= 0設為1,(好像在win上不支持)
用文件、數(shù)據(jù)庫等形式保存Session ID,在跨頁過程中手動調用

// 第一種  setcookie() 直接用setcookie設置session id的生命周期。
    $lifetime=60; //保存1分鐘 
    session_start(); 
    setcookie(session_name(), session_id(), time()+$lifetime, "/");
// 第二種  session_set_cookie_params()    
    $lifetime=60;//保存1分鐘
    session_set_cookie_params($lifetime);
    session_start();
    session_regenerate_id(true);
    // 其中session_regenerate_id();方法用于改變當前session_id的值,并保留session中數(shù)組的值。參數(shù)默認為 false,如果設置為true則改變session_id的值,并清空當前session數(shù)組。
json格式數(shù)據(jù)有哪些特點

JSON一種輕量級的數(shù)據(jù)交換格式(JavaScript Object Notation, JS 對象標記)。它基于ECMAScript的一個子集。 JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C、C++、C#Java、JavaScript、Perl、 Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成(網(wǎng)絡傳輸速率)。

"名稱/值"對的集合 不同語言中,它被理解為對象(object),記錄(record),結構(struct),字典(dictionary),哈希表(hash table),鍵列表(keyed list)等

值的有序列表 多數(shù)語言中被理解為數(shù)組(array)

php獲取文件內容的方法,對應的函數(shù)

file_get_contents得到文件的內容(可以以getpost的方式獲?。麄€文件讀入一個字符串中

fopen打開url, 以get方式獲取內容(借助fgets()函數(shù))

fsockopen函數(shù)打開url(可以以getpost的方式獲?。?,以get方式獲取完整的數(shù)據(jù),包括headerbody

使用curl庫獲取內容,使用curl庫之前,需要查看php.ini,查看是否已經(jīng)打開了curl擴展

php魔術方法與魔術常量 類方法:
__construct();

說明:具有構造函數(shù)的類會在每次創(chuàng)建新對象時先調用此方法,適合在使用對象之前做一些初始化工作。如果子類中定義了構造函數(shù)則不會隱式調用其父類的構造函數(shù)。要執(zhí)行父類的構造函數(shù),需要在子類的構造函數(shù)中調用 parent::__construct()。如果子類沒有定義構造函數(shù)則會如同一個普通的類方法一樣從父類繼承。

__destruct();

說明:析構函數(shù)會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執(zhí)行。

方法重載:
__call();

說明:在對象中調用一個不可訪問方法時,__call(); 方法會被調用。

__callStatic();

說明:用靜態(tài)方式中調用一個不可訪問方法時,__callStatic(); 方法會被調用。

屬性重載:(只對類中私有受保護的成員屬性有效)
__get();

說明:讀取不可訪問屬性的值時,__get() 會被調用。

__set();

說明:在給不可訪問屬性賦值時,__set() 會被調用。

__isset();

說明:當對不可訪問屬性調用 isset()empty() 時,__isset() 會被調用。

__unset();

說明:當對不可訪問屬性調用 unset() 時,__unset() 會被調用。

序列化相關:
__sleep();

說明:序列化時調用,serialize() 函數(shù)會檢查類中是否存在該魔術方法。如果存在,該方法會先被調用,然后才執(zhí)行序列化操作。

__wakeup();

說明:unserialize() 會檢查是否存在一個 __wakeup() 方法。如果存在,則會先調用該方法,用在反序列化操作中,例如重新建立數(shù)據(jù)庫連接,或執(zhí)行其它初始化操作

操作類和對象方法:
__toString();

說明:方法用于一個類被當成字符串時調用,例如把一個類當做字符串進行輸出

__invoke();

說明:當嘗試以調用函數(shù)的方式調用一個對象時,__invoke() 方法會被自動調用。

__set_state();

說明:當調用 var_export() 導出類時,此靜態(tài)方法會被調用。 本方法的唯一參數(shù)是一個數(shù)組

__clone();

說明:當復制完成時,如果定義了__clone()方法,則新創(chuàng)建的對象(復制生成的對象)中的__clone()方法會被調用,可用于修改屬性的值。

__autoload();

說明:該方法可以自動實例化需要的類。當程序要用一個類但沒有被實例化時,改方法在指定路徑下查找和該類名稱相同的文件。否則報錯。

__debugInfo();

說明:php5.6增加的特性,var_dump()一個類時觸發(fā),返回一個包含對象屬性的數(shù)組

PHP 將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法。所以在定義類方法時,除了上述魔術方法,建議不要以 __ 為前綴。在命名自己的類方法時不能使用這些方法名,除非是想使用其魔術功能。
常量:
__LINK__//文件中的當前行號。
__FILE__//文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。
__DIR__ //文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄,它等價于 dirname(__FILE__)。
 
__FUNCTION__//函數(shù)名稱。自 PHP 5 起本常量返回該函數(shù)被定義時的名字(區(qū)分大小寫)。在 PHP 4 中該值總是小寫字母的。
__CLASS__ //類的名稱。自 PHP 5 起本常量返回該類被定義時的名字(區(qū)分大小寫)。在 PHP 4 中該值總是小寫字母的。
__METHOD__//類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區(qū)分大小寫)。
__NAMESPACE__//當前命名空間的名稱(大小寫敏感)。這個常量是在編譯時定義的(PHP 5.3.0 新增)
php.inisafe mod關閉 影響哪些函數(shù)和參數(shù),至少寫6個?
move_uploaded_file();
exec();
system();                              
passthru();
popen();
fopen();
mkdir();                              
rmdir();
rename();                            
unlink();
copy();                                 
chgrp();
chown();                              
chmod();
touch();                               
symlink();
link();                                   
parse_ini_file();
set_time_limit();                  
max_execution_time; 
mail();
isset() 、empty()is_null的區(qū)別

當變量未定義時,is_null() 和“參數(shù)本身”是不允許作為參數(shù)判斷的,會報Notice警告錯誤;

empty , isset首先都會檢查變量是否存在,然后對變量值進行檢測。而is_null 和 “參數(shù)本身”只是直接檢查變量值,是否為null,因此如果變量未定義就會出現(xiàn)錯誤!

isset():僅當null和未定義,返回false

empty()""、0、"0"NULL、FALSEarray(),未定義,均返回true;

is_null():僅判斷是否為null,未定義報警告;

變量本身作為參數(shù),與empty()一致,但接受未定義變量時,報警告;

MVC的優(yōu)缺點 MVC的優(yōu)點

可以為一個模型在運行時同時建立和使用多個視圖。變化-傳播機制可以確保所有相關的視圖及時得到模型數(shù)據(jù)變化,從而使所有關聯(lián)的視圖和控制器做到行為同步。

視圖與控制器的可接插性,允許更換視圖和控制器對象,而且可以根據(jù)需求動態(tài)的打開或關閉、甚至在運行期間進行對象替換。

模型的可移植性。因為模型是獨立于視圖的,所以可以把一個模型獨立地移植到新的平臺工作。需要做的只是在新平臺上對視圖和控制器進行新的修改。

潛在的框架結構。可以基于此模型建立應用程序框架,不僅僅是用在設計界面的設計中。

MVC的不足之處

增加了系統(tǒng)結構和實現(xiàn)的復雜性。對于簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的復雜性,并可能產生過多的更新操作,降低運行效率。

視圖與控制器間的過于緊密的連接。視圖與控制器是相互分離,但確實聯(lián)系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。

視圖對模型數(shù)據(jù)的低效率訪問。依據(jù)模型操作接口的不同,視圖可能需要多次調用才能獲得足夠的顯示數(shù)據(jù)。對未變化數(shù)據(jù)的不必要的頻繁訪問,也將損害操作性能。

目前,一般高級的界面工具或構造器不支持MVC模式。改造這些工具以適應MVC需要和建立分離的部件的代價是很高的,從而造成使用MVC的困難。

sessioncookie的聯(lián)系和區(qū)別(運行機制),session共享問題解決方案 區(qū)別與聯(lián)系:

使用session_start()調用session,服務器端在生成session文件的同時生成session ID哈希值和默認值為PHPSESSIDsession name,并向客戶端發(fā)送變量為PHPSESSID(session name)(默認)值為一個128位的哈希值。服務器端將通過該cookie與客戶端進行交互,session變量的值經(jīng)php內部系列化后保存在服務器機器上的文本文件中,和客戶端的變量名默認情況下為PHPSESSIDcookie進行對應交互,即服務器自動發(fā)送了http 頭:header(‘Set-Cookie: session_name()=session_id(); path=/’);setcookie(session_name(),session_id());當從該頁跳轉到的新頁面并調用 session_start()后,PHP將檢查與給定ID相關聯(lián)的服務器端存貯的session數(shù)據(jù),如果沒找到則新建一個數(shù)據(jù)集。

共享方案:

使用數(shù)據(jù)庫來保存session,就算服務器宕機了也沒事,session照樣在。

問題:程序需要定制;每次請求都進行數(shù)據(jù)庫讀寫開銷不小,另外數(shù)據(jù)庫是一個單點,可以做數(shù)據(jù)庫的hash來解 決這個問題。

使用memcache來保存session, 這種方式跟數(shù)據(jù)庫類似,內存存取性能比數(shù)據(jù)庫好很多。

問題:程序需要定制,增加了工作量;存入memcached中的數(shù)據(jù)都需要序列化,效率較低,斷電或者重啟電腦容易丟失數(shù)據(jù);

通過加密的cookie,在A服務器上登錄,在用戶的瀏覽器上添加加密的cookie,當用戶訪問B服務器時,檢查有無Session,如果沒有,就檢驗 Cookie是否有效,Cookie有效的話就在B服務器上重建session。簡單,高效, 服務器的壓力減小了,因為session數(shù)據(jù)不存在服務器磁盤上。根本就不會出現(xiàn)session讀取不到的問題。

問題:網(wǎng)絡請求占用很多。每次請求時,客戶端都要通過cookie發(fā)送session數(shù)據(jù)給服務器,session中數(shù)據(jù)不能太多,瀏覽器對cookie的大小存在限制。不適合高訪問量的情況,因為高訪問量的情況下。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/28406.html

相關文章

  • php 面試題目整理(持續(xù)更新)

    摘要:來自博客整理于面試別人或被別人面試的一些題目持續(xù)更新答案網(wǎng)上基本都有,不一一列舉。例有個人去游玩,需要買水,商店活動買瓶贈送一瓶。請問題目至少需要買多少瓶飲料才可以人手一瓶前端方面前端性能團隊總結的條黃金定律說出幾條 來自 AT博客整理于面試別人或被別人面試的一些題目(持續(xù)更新),答案網(wǎng)上基本都有,不一一列舉。希望能幫到需要換工作的你。 數(shù)據(jù)庫 mysql 索引的理解 mysql b...

    missonce 評論0 收藏0
  • php 面試題目整理(持續(xù)更新)

    摘要:來自博客整理于面試別人或被別人面試的一些題目持續(xù)更新答案網(wǎng)上基本都有,不一一列舉。例有個人去游玩,需要買水,商店活動買瓶贈送一瓶。請問題目至少需要買多少瓶飲料才可以人手一瓶前端方面前端性能團隊總結的條黃金定律說出幾條 來自 AT博客整理于面試別人或被別人面試的一些題目(持續(xù)更新),答案網(wǎng)上基本都有,不一一列舉。希望能幫到需要換工作的你。 數(shù)據(jù)庫 mysql 索引的理解 mysql b...

    Tony_Zby 評論0 收藏0
  • php 面試題目整理(持續(xù)更新)

    摘要:來自博客整理于面試別人或被別人面試的一些題目持續(xù)更新答案網(wǎng)上基本都有,不一一列舉。例有個人去游玩,需要買水,商店活動買瓶贈送一瓶。請問題目至少需要買多少瓶飲料才可以人手一瓶前端方面前端性能團隊總結的條黃金定律說出幾條 來自 AT博客整理于面試別人或被別人面試的一些題目(持續(xù)更新),答案網(wǎng)上基本都有,不一一列舉。希望能幫到需要換工作的你。 數(shù)據(jù)庫 mysql 索引的理解 mysql b...

    waterc 評論0 收藏0
  • PHPer 面試指南-擴展閱讀資源整理

    摘要:前端篇收集的前端面試題和答案前端開發(fā)面試題史上最全的前端面試題匯總及答案前端工程師手冊協(xié)議工作原理協(xié)議運行機制的概述協(xié)議篇原理原理解析的工作原理與的區(qū)別理解后端篇年的面試總結垃圾回收機制面向對象設計淺談說清楚是什么和的區(qū)別索引原理及慢查 前端篇 收集的前端面試題和答案 前端開發(fā)面試題 史上最全的web前端面試題匯總及答案 前端工程師手冊 HTTP協(xié)議:工作原理 SSL/TLS協(xié)議運行...

    wemall 評論0 收藏0
  • 如何"有計劃,高效率,優(yōu)簡歷"應對面試

    摘要:雖然有了十全的計劃,但如何高效率去記住上面那么多東西是一個大問題,看看我是怎么做的。 前言 前一篇文章講述了我在三月份毫無準備就去面試的后果,一開始心態(tài)真的爆炸,但是又不服氣,一想到每次回來后家人朋友問我面試結果的期待臉,越覺得必須付出的行動來證明自己了。 面經(jīng)傳送門:一個1年工作經(jīng)驗的PHP程序員是如何被面試官虐的? 下面是我花費兩個星期做的準備,主要分三部分: 有計劃——計劃好...

    gyl_coder 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<