php面試題以及php知識點

2021-05-09 15:56:49 字數 4953 閱讀 7355

. php中單雙引號的區別

"" 雙引號裡面的字段會經過編譯器解釋,然後再當作html**輸出。

'' 單引號裡面的不進行解釋,直接輸出。

1.請說明php中傳值與傳引用的區別。什麼時候傳值什麼時候傳引用?

按值傳遞:函式範圍內對值的任何改變在函式外部都會被忽略

按引用傳遞:函式範圍內對值的任何改變在函式外部也能反映出這些修改

優缺點:

按值傳遞時,產生乙個副本。對於大型的字串和物件來說,這將會是乙個代價很大的操作。

按引用傳遞則不需要複製值,對於效能提高很有好處。

2. 在php中error_reporting這個函式有什麼作用?

error_reporting() 設定 php 的報錯級別並返回當前級別。

3. error_reporting(2047)什麼作用?

答:php 顯示所有錯誤 e_all

1 e_error

2 e_warning

4 e_parse

8 e_notice

16 e_core_error

32 e_core_warning

64 e_compile_error

128 e_compile_warning

256 e_user_error

512 e_user_warning

1024 e_user_notice

2047 e_all

2048 e_strict

4. session與cookie的區別?

session:儲存使用者訪問的全域性唯一變數,儲存在伺服器上的php指定的目錄中的一般用於後台和安全性比較高的地方。

cookie:是儲存在客戶端,對於cookie來說是儲存在使用者瀏覽器下面的,一般使用者登陸,負載壓力比較大的地方。可以減輕伺服器的負載。

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

1、get是傳送請求http協議通過url引數傳遞進行接收而post是實體資料,可以通過表單提交大量資訊.

2、get方式的提交你需要用request.querystring來取得變數的值,而post方式提交時,你必須通過request.form來訪問提交的內容。

3. 受url長度限制,get傳輸的資料量小,而post可以傳輸大量的資料。

6. 資料庫中的事務是什麼?

是指作為單個邏輯工作單元執行的一系列操作。

資料庫事務的acid屬性:原子性,一致性,隔離性,永續性

7. 4. echo count("abc"); 輸出什麼?

答:"1"。

count —計算陣列中的單元數目或物件中的屬性個數。如果可選的 mode 引數設為 count_recursive(或 1),count() 將遞迴地對陣列計數。對計算多維陣列的所有單元尤其有用。

mode 的預設值是 0。count() 識別不了無限遞迴。

$b[0] = 7;

$b[5] = 9;

$b[10] = 11;

$result = count($b);

// $result == 3;

$result = count(null);

// $result == 0

$result = count(false);

// $result == 1

<?php

$food = array('fruits' => array('orange', 'banana', 'apple'),

veggie' => array('carrot', 'collard','pea'));

// recursive count

echo count($food, count_recursive); // output 8

// normal count

echo count($food); // output 2

?>

8. 用php寫出顯示客戶端ip與伺服器ip的**

$_server[「remote_addr」] 和 $_server[「server_addr」]

9. php**

<?php

$hosts = gethostbynamel('');

echo $hosts[0];

?>

gethostbyname() 返回 ip **,返回對應於給定主機名的包含主機名字和位址資訊的hostent結構指標. 返回值: 字串

gethostbynamel 返回機器名稱的所有 ip。若乙個機器名稱有很多個 ip 位址 (例如一些 ftp 或是 www **),使用本函式可以取得全部的 ip 位址,返回到陣列變數中. 返回值:

陣列gethostbyaddr 返回機器名稱。本函式可返回某個 ip **的機器名稱 (domain name)。若執行失敗,則返回原來的 ip **。返回值: 字串

10. echo,print()和print_r()有什麼區別?

答:echo是php語法結構,無返回值 。print和print_r是函式,函式可以有返回值

print() 只能列印出簡單型別變數的值(如int,string)

print_r() 可以列印出複雜型別變數的值(如陣列,物件)

echo 輸出乙個或者多個字串

11. include和require的區別是什麼?

答:包含檔案不存在或者語法錯誤的時候require是致命的,include不是require需要放在頭部預先載入,而include放在檔案的任何位置隨時載入還有一對擴充套件函式:require_once() include_once()

12. php5中魔術方法函式有哪幾個,請舉例說明各自的用法

php中的魔術方法總結 :__construct, __destruct , __call, __callstatic,__get, __set, __isset, __unset , __sleep, __wakeup, __tostring, __set_state, __clone , __autoload。

__construct() :例項化物件時被呼叫;

__destuct():當刪除乙個物件或者物件操作終止是被執行;

__call():呼叫物件不存在方法時被呼叫;

__get():呼叫物件不存在的屬性時被呼叫;

__set():設定物件不存在的屬性時被呼叫;_

_tostring():列印乙個物件時被呼叫,比如echo $obj,print($obj);

__clone():轉殖物件時被呼叫,比如$t = new test();$tt = clone $t;

__sleep():serialize之前被呼叫,若物件比較大,想做一些刪除在序列化,可以考慮使用該方法;

__wakeup():unserialize之前被呼叫,做些物件的初始化;

__isset():檢測物件是否存在屬性的時候被呼叫,如 isset($c->name);

__unset():unset乙個物件屬性時被呼叫,如:unset($c->name);

__set_state():呼叫var_export時被呼叫,用__set_state的返回值作為 var_export的返回值;,

__autoload():例項化乙個物件時,如果對應的類不存在,在該方法被呼叫。

12.你用什麼方法檢查php指令碼的執行效率(通常是指令碼執行時間)和資料庫sql的效率(通常是資料庫query時間),並定位和分析指令碼執行和資料庫查詢的瓶頸所在?

1.指令碼執行時間,啟用xdebug,使用wincachegrind分析。 (wincachegrind是windows下的profile檢視程式。所謂profile,就是程式或軟體儲存的檔案資料,該軟體常與xdebug配合使用來分析php程式的效能。

)2.資料庫查詢,mysql使用explain分析查詢,啟用slow query log記錄慢查詢。

13.請對posix風格和相容perl風格兩種正規表示式的主要函式進行模擬說明

ereg preg_match

ereg_replace preg_replace

14.請說明在php.ini中safe_mode開啟之後對於php系統函式的影響

safe_mode是提供乙個基本安全的共享環境。在乙個多使用者共享的phpweb伺服器上,當這台伺服器開啟了safe_mode模式,有以下函式將會受到影響。首先,一下嘗試訪問檔案系統的函式將會被限制,執行伺服器的使用者id,如果想要嘗試操作某個檔案,必須要使用者該檔案的讀取或者寫入的訪問許可權。

因此,在safe_mode開啟的情況下,下列函式將會收到限制:

ckdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,rename,fopen,require,highlight_file,show_source,include,symlink,link,touch,mkdir,unlink

以上都是跟操作檔案系統有關的函式,除此之外,一些php擴充套件的函式也會受到限制,不能在程式裡面直接載入擴充套件,只能到php.ini裡載入,而且php如果需要執行作業系統的程式時,必須在safe_mode_exec_dir中指定程式的路徑,否則執行將失敗。此外還有exec,shell_exec,pasathru,system,popen等函式會收到限制

15. 請寫出讓,並說明如何在命令列下執行php指令碼(寫出兩種方式)同時向php指令碼傳遞引數?

window下,假設php安裝目錄為c:\program files\php5\,那麼使用命令視窗進入到該路徑下,敲入php hello.php回車,則會執行當前路徑下的hello.

php檔案,如果要指向其他路徑下php檔案,可以在php 路徑/hello.php ,這種形式稱為cli模式,我們平時通過瀏覽器看到的那種成為cgi模式,至於傳遞引數,php檔案在cli模式下,直接通過在檔名稱後面接引數,多個引數中間用空格隔開,在php檔案裡面是通過兩個變數來獲取引數的,乙個是$argv,乙個是$argc,前者是傳遞引數的陣列,預設第乙個為php檔案的名稱;後者為$argv的陣列個數。

新浪php面試題

網上轉的一篇文章,不知道真的是不是sina的,題目很普通。無論是不是真的新浪面試題,對於正在求職的同行來說,也算可以練練手的了。這些面試題都帶了答案,看著還行 1.echo count abc 輸出什麼?答 1 count 計算陣列中的單元數目或物件中的屬性個數 int count mixed va...

PHP面試題收藏

如何配置 使用和清除smarty快取?1 smarty快取的配置 smarty cache dir caches 快取目錄 smarty caching true 開啟快取,為flase的時侯快取無效 smarty cache lifetime 60 快取時間 2 smarty快取的使用和清除 sm...

PHP開發技術面試題之PHP簡述題

2 你如何訪問和設定乙個類的屬性?3 在http 1.0中,狀態碼401的含義是 如果返回 找不到檔案 的提示,則可用 header 函式,其語句為 4 談談asp,php,jsp的優缺點?5 js表單彈出對話方塊函式是?獲得輸入焦點函式是?6 你如何訪問和設定乙個類的屬性?7 寫出發貼數最多的十個...