1. 程式人生 > >php面試題,各大企業常見的php面試題之五

php面試題,各大企業常見的php面試題之五

1. 寫一個函式,儘可能高效的,從一個標準 url 裡取出檔案的副檔名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
答:<?php
$url = “http://www.sina.com.cn/abc/de/fg.php?id=1″;
arr=parseurl(url);
pathArr=pathinfo(arr['path']);
print_r($pathArr['extension']);

2. 寫一個函式,算出兩個檔案的相對路徑
如 $a = ‘/a/b/c/d/e.php';
$b = ‘/a/b/12/34/c.php';
計算出 b相對於a 的相對路徑應該是 http://www.cnblogs.com/12/34/c.php將添上
答:<?php
$a = ‘/a/b/c/d/e.php';
$b = ‘/a/b/12/34/c.php';
//獲取path相對於conpath的相對路徑
function sGetRelativePath(path,conpath)
{
pathArr=explode(“/”,path);
conpathArr=explode(“/”,conpath);
$dismatchlen = 0;
for(i=0;i < count(pathArr);i++)
{
if(conpathArr[i] != pathArr[i])
{
dismatchlen=count(pathArr) – $i;
arrLeft=arrayslice(pathArr, $i);
break;
}
}
ret=strrepeat(“../”,dismatchlen).implode(“/”, $arrLeft);
return $ret;
}
print_r(sGetRelativePath(b,a));

3.寫一個函式,能夠遍歷一個資料夾下的所有檔案和子資料夾。
答:<?php
function aGetAllFile($folder)
{
$aFileArr = array();
if(is_dir($folder))
{
handle=opendir(folder);
while((file=readdir(handle)) !== false)
{
//如果是.或者..則跳過
if(file==”.”||file == “..”)
{
continue;
}
if(is_file(folder.”/”.file))
{
aFileArr[]=file;
}
else if(is_dir(folder.”/”.file))
{
aFileArr[file] = aGetAllFile(folder.”/”.file);
}
}
closedir($handle);
}
return $aFileArr;
}
$path = “/home/test/sql”;
print_r(aGetAllFile($path));

3、指出一些在PHP輸出一段HTML程式碼的辦法。
答:你可以使用 PHP 中任何一種輸出語句,包括 echo、print、printf,大部分人都使用如下例的 echo:
echo “My string $variable”;
你也可以使用這種方法:
Heredoc
echo <<<END
This text is written to the screen as output and this $variable is parsed too. If you wanted you can have <span> HTML tags in here as well.</span> The END; remarks must be on a line of its own, and can’t contain any extra white space.
END;

4、下面哪個函式可以開啟一個檔案,並對檔案進行讀和寫操作? c
答:(a) fget() (b) file_open() (c) fopen() (d) open_file()

5、下面哪個選項沒有將 john 新增到users 陣列中? bd
答:(a) $users[] = ‘john’;
(b) array_add($users, ‘john’);
(c) array_push($users, ‘john’, ‘andy’);
(d) $users ||= ‘john’;

6、用哪一個函式檢測一個變數是否定義過?是否為空的函式是?是否為NULL?
答:isset()、 empey、is_null()要深刻理解這幾個的含義。

7、請將陣列的值用’,’號分隔併合併成字串輸出。如何將一個以’,’隔開的字串分割成陣列?
答:參考 implode.php 把陣列變成字串
要掌握implode和explode的用法。

8、$a = ‘abcdef’; 請打印出$a的第一個字母。
答:echo $a{0};
echo $a[0]; // 不建議用這種方式
substr($a, 0, 1);
最好是用{}。

10、PHP可以和sql server/oracle等資料庫連線嗎?
答:可以。可以用PDO連線。

11、請寫出php5的建構函式和解構函式
答:function __construct(){}
function __destruct(){}

12、寫一個函式,儘可能高效的,從一個標準 url 裡取出檔案的副檔名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
答:參考url1.php

13、求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數(天數)。
答:思路1:先用strtotime轉換成unix時間戳,然後相減,除以86400.
思路2:先用mktime轉換成unix時間戳,然後相減,除以86400.
參考 time1.php

14、請寫一個函式,實現以下功能:
字串”open_door” 轉換成 “OpenDoor”、”make_by_id” 轉換成 “MakeById”。
答:思路:
1)將’_’替換成’ ‘;
2)使用ucwords()將各單詞首字母大寫;
3)去掉空格;str_replace()
rename_for_val.php

15、不用新變數直接交換現有兩個變理的值。
答:考演算法的基本功。
$a = ‘welcome’;
$b = ‘beijing’;
$a = ‘|’.$a.’|’.’|’.$b.’|’; //|welcome||beijing|
$b = str_replace( ‘|’.$b.’|’, ”, $a);
$b = trim($b, ‘|’);

$a = str_replace( ‘|’.$b.’|’, ”, $a);
$a = trim($a, ‘|’);
echo $a;
echo $b;
$a=5;$b=3;怎麼交換兩個數字?
$a=$a+$b; // 8
$b=$a-$b; //5
$a=$a-$b; //3

16、表單中 get與post提交方法的區別?
答:a、Get 方法通過 URL 請求來傳遞使用者的資料,將表單內各欄位名稱與其內容,以成對的字串連線,置於 action 屬性所指程式的 url 後,如http://www.domain.com/test.asp?name=51js&password=51js,資料都會直接顯示在 url 上,就像使用者點選一個連結一樣;Post 方法通過 HTTP post 機制,將表單內各欄位名稱與其內容放置在 HTML 表頭(header)內一起傳送給伺服器端交由 action 屬效能所指的程式處理,該程式會通過標準輸入(stdin)方式,將表單的資料讀出並加以處理
b、 Get 方式需要使用 $_GET 來取得變數的值;而 Post 方式通過 $_POST 來訪問提交的內容
c、Get 方式傳輸的資料量非常小,一般限制在 2 KB 左右,但是執行效率卻比 Post 方法好;而 Post 方式傳遞的資料量相對較大,它是等待伺服器來讀取資料,不過也有位元組限制,這是為了避免對伺服器用大量資料進行惡意攻擊。可在php.in中 對 post_max_size 進行設定。
建議:除非你肯定你提交的資料可以一次性提交,否則請儘量用 Post 方法
d、Get 方式提交資料,會帶來安全問題,比如一個登陸頁面,通過 Get 方式提交資料時,使用者名稱和密碼將出現在 URL 上,如果頁面可以被快取或者其他人可以訪問客戶這臺機器,就可以從歷史記錄獲得該使用者的帳號和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁面常見的問題是,該頁面如果重新整理的時候,會彈出一個對話方塊。
建議:出於安全性考慮,建議最好使用 Post 提交資料***********************************在B/S應用程式中,前臺與後臺的資料互動,都是通過HTML中Form表單完成的。Form提供了兩種資料傳輸的方式——get和post。雖然它們都是資料的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對資料產生嚴重的影響。雖然為了方便的得到變數值,Web容器已經遮蔽了二者的一些差異,但是瞭解二者的差異在以後的程式設計也會很有幫助的。
Form中的get和post方法,在資料傳輸過程中分別對應了HTTP協議中的GET和POST方法。二者主要區別如下:
a、Get是用來從伺服器上獲得資料,而Post是用來向伺服器上傳遞資料。
b、Get將表單中資料的按照variable=value的形式,新增到action所指向的URL後面,並且兩者使用”?”連線,而各個變數之間使用”&”連線;Post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到action所指向URL。
c、Get是不安全的,因為在傳輸過程,資料被放在請求的URL中,而如今現有的很多伺服器、代理伺服器或者使用者代理都會將請求URL記錄到日誌檔案中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到。另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部訊息將會一同顯示在使用者面前。Post的所有操作對使用者來說都是不可見的。
d、Get傳輸的資料量小,這主要是因為受URL長度限制;而Post可以傳輸大量的資料,所以在上傳檔案只能使用Post(當然還有一個原因,將在後面的提到)。
e、Get限制Form表單的資料集的值必須為ASCII字元;而Post支援整個ISO10646字符集。
f、Get是Form的預設方法。
*.Post傳輸資料時,不需要在URL中顯示出來,而Get方法要在URL中顯示。
*.Post傳輸的資料量大,可以達到2M,而Get方法由於受到URL長度的限制,只能傳遞大約1024位元組.
*.Post顧名思義,就是為了將資料傳送到伺服器段,Get就是為了從伺服器段取得資料.而Get之所以也能傳送資料,只是用來設計告訴伺服器,你到底需要什麼樣的資料.Post的資訊作為http請求的內容,而Get是在Http頭部傳輸的。

17、session與cookie的區別?
答:session是伺服器端快取,cookie是客戶端快取。
cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。

18、PHP支援的資料型別有八種,以下被支援的有:(A B C E )
string
int
float
Bool
array
NULL
resource
object
A、array
B、floating-point numbers(double)
C、integer
D、date
E、string

19、假定要使用Apache+Php的配置,並將php3編譯成Apache的一個模組。那麼以下httpd.conf檔案的語句是必須的:【C】
A、AddModule mod_php3.c
B、LoadModule php3_module libexec/libphp3.so
C、AddType application/x-httpd-php3 .php3
D、setup
E、make install

20、以下程式:
<HTML>
<HEAD>
<TITLE></TITLE>
<HEAD>
<BODY>
<?php
$num1 = 15;
$num2 = $num1;
echo “<p>$num2</p>”;
$num2 = &$num1;
$num2 = 20;
echo “<p>$num1</p>”;
?>
</BODY>
</HTML>
程式輸出為:[AC]
A、15
B、35
C、20
D、5

21、以下程式
<?php
$str1 = “01″;
$str1++;
$str1 += 1; //$str1 = $str1 + 1;
echo “<p>\$str1 => $str1</p>”;
?>
程式輸出為:[D]
A、$str1 => 01
B、$str1 => 2
C、$str1 => 03
D、$str1 => 3
E、$str1 => 1

22、全域性變數與區域性變數
$a=1;
sum(){
echo $a;
}
sum();
程式輸出為:[E]
A、1
B、10
C、100
D、1000
E、空值

23、PHP的控制語句
<?php
$a = 3;
$b = $a++;
if ($a > $b){
echo “a 比 b 大”;
}elseif ($a == $b){
echo “a 等於 b”;
}else{
echo “a 比 b 小”;
}
?>
輸出結果為:[A]
A、a 比 b 大
B、a 等於 b
C、a 比 b 小
D、”a 比 b 小”
E、無輸出

24、PHP對字串的處理程式
$name=”Jollen”;
echo ‘Name:$name’;
echo “Name:$name”;
輸出結果為:[C]
A、Name:Jollen
Name:Jollen
B、Name:Jollen
Name:$name
C、Name:$name
Name:Jollen
D、Name:$name
Name:$name
E、Name:”Jollen”
Name:Jollen

25、下面建立與MySQL Server的連線語法正確的是:[BD ]
A、$link=connect(“host_name”,”user_name”,”password”);
B、$link=mysql_connect(“host_name”,”user_name”,”password”);
C、$link=mysqlconnect(“host_name”,”user_name”,”password”);
D、$link=mysql_pconnect(“host_name”,”user_name”,”password”);
E、$link=pconnect(“host_name”,”user_name”,”password”);

26、rawurlencode()的作用是?
答:按照 RFC 1738 對 URL 進行編碼返回字串,此字串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進位制數。這是在 RFC 1738 中描述的編碼,是為了保護原義字元以免其被解釋為特殊的 URL 定界符,同時保護 URL 格式以免其被傳輸媒體(像一些郵件系統)使用字元轉換時弄亂。
與urlencode()的區別:
urlencode:返回字串,此字串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進位制數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 資料的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體型別編碼方式一樣。由於歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼(參見 rawurlencode())不同。

27、請說明在php.ini中safe_mode開啟之後對於PHP系統函式的影響?
答:safe_mode是唯一PHP_INI_SYSTEM屬性,必須通過php.ini或httpd.conf來設定。要啟用safe_mode,只需修改php.ini: safe_mode = On 或者修改httpd.conf,定義目錄:
Options FollowSymLinks php_admin_value safe_mode 1
重啟apache後safe_mode就生效了。啟動safe_mode,會對許多PHP函式進行限制,特別是和系統相關的檔案開啟、命令執行等函式。
預設情況下,所有操作檔案的函式將只能操作與指令碼UID相同的檔案。
注意:如果在linux中啟用了safe_mode,那麼如果要在一個目錄中建立一個目錄,比如要在/upload中建立一個20081202,那麼/upload目錄所有者必須是apache的所有者。

28、PHP5中魔術方法函式有哪幾個,請舉例說明各自的用法
答:__sleep
__wakeup
__toString
__set_state
__construct,
__destruct
__call,
__get,
__set,
__isset,
__unset
__clone
__autoload

相關推薦

php試題,企業常見php試題之一

1.在PHP中,當前指令碼的名稱(不包括路徑和查詢字串)記錄在預定義變數(1)中;而連結到當前頁面的URL記錄在預定義變數(2)中。 答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 2.執行程式段<

php試題,企業常見php試題

1. 寫一個函式,儘可能高效的,從一個標準 url 裡取出檔案的副檔名 例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php 答:<?php $url = “http://www.sina.com.

android試題,企業常見的android試題

1.android dvm 的程序和Linux的程序,應用程式的程序是否為同一個概念: 答:dvm是dalivk虛擬機器。每一個android應用程式都在自己的程序中執行,都擁有一個dalivk虛擬機器例項。而每一個dvm都是在linux的一個程序。所以說可以認為是同一個概

java試題,企業常見的java筆試題

IO 流及Socket 部分:(共5 題:基礎5 道) 1、什麼是java 序列化,如何實現java 序列化?【基礎】 答:序列化就是一種用來處理物件流的機制,所謂物件流也就是將物件的內容進行流化。可以對流化後的物件進行讀寫操作,也可將流化後的物件傳輸於網路之間。序列化是為

.net試題,企業常見的.net試題

1.描述一下C#中索引器的實現過程,是否只能根據數字進行索引? 答:不是。可以用任意型別。 2.在C#中,string str = null 與 string str = ” ” 請儘量使用文字或圖象說明其中的區別。 答:null是沒有空間引用的; ” ” 是空間為0的字串

.net試題,企業常見的.net試題及答案(精華)

隨著.net平臺開發的職位的增加,筆試、面試也越來越有“套路”,這裡我總結了一些面試題,多數是.net的基礎知識,適合於面試新人。經過本人最近的面試和對面試資料的一些彙總,準備記錄這些面試題,以便.net開發工程師找工作複習之用,本人希望有面試經驗的同學能和我同時完成這個模

java試題,企業常見的java筆試題

1、什麼時候用assert?【中等難度】 答:assertion(斷言)在軟體開發中是一種常用的除錯方式,很多開發語言中都支援這種機制。一般來說,assertion 用於保證程式最基本、關鍵的正確性。assertion 檢查通常在開發和測試時開啟。為了提高效能,在軟體釋出後

試題:公司Java後端開發試題總結 !=!未看

array water 沒有 引用 run 模塊 transacti 速度 相關 ThreadLocal(線程變量副本) Synchronized實現內存共享,ThreadLocal為每個線程維護一個本地變量。 采用空間換時間,它用於線程間的數據隔離,為每一個使用該變量的線

試題: 公司 !=!=未看

BE static 分布 試題 復制 運行 cal hash lai 1. junit用法,before,beforeClass,after, afterClass的執行順序2. 分布式鎖3. nginx的請求轉發算法,如何配置根據權重轉發4. 用hashmap實現redi

試題: 公司!=!=未看

down 情況下 調用 所有 hot keep 常量池 executor etime JVM有哪些分區? 程序計數器,java虛擬機棧,本地方法棧,堆,方法區(java棧中存放的是一個一個的棧幀,每一個棧幀對應一個被調用的方法。棧頂包括局部變量表,操作數棧,方法的返回地址,

互聯網Java試題匯總,最後我成功拿到百度的offer

Java 程序員 後端 編程語言 面試 從事Java開發也有5年經驗了,7月初來到帝都,開啟面試經歷,前後20天左右,主面互聯網公司,一二線大公司或者是融資中的創業公司都面試過,拿了一些offer,其中包括奇虎360,最後綜合決定還是去百度了。 首先不同面試官面試風格一定不同,我這裏就是總

公司資料庫相關試題集合NO2

✎✎✎第一小節>>   1. 舉出兩個判斷DDL改動的方法? 解答:你可以使用 Logminer 或 Streams   2.Coalescing做了什麼? 解答:Coalescing針對於字典管理的tablespace進行碎片整理,

公司資料庫相關試題集合NO1

✎✎✎第一小節>>   1.你一定得利用備份恢復資料庫,但是你沒有控制檔案,該如何解決問題呢? 解答:重建控制檔案,用帶backup control file 子句的recover命令恢復資料庫。   2.如何轉換init.ora到spfile?

金九銀十,網際網路公司Java試題合集

金九銀十又到了面試求職高峰期,最近有很多網友都在求大廠面試題。正好我之前電腦裡面有這方面的整理,於是就發上來分享給大家。  這些題目是網友去百度、小米、樂視、美團、58、獵豹、360、新浪、搜狐等一線網際網路公司面試被問到的題目,熟悉本文中列出的知識點會大大增加通過前兩輪技術

歷年IT公司筆試試題

2.百度歷年筆試面試150題:http://ask.julyedu.com/question/456  3.阿里巴巴歷年筆試面試70題:http://ask.julyedu.com/question/463  4.騰訊歷年筆試面試60題:http://ask.julyedu.com/question/466

atitit. java跟php的比較..為什麼企業喜歡java 而不是php

atitit. java跟php的比較..為什麼大企業喜歡java 而不是php 4. 結論 3 1. 主要原因::php是“低技術、低價格、低素質人員使用”的三低武器 因為php是屬於“低技術、低價格、低素質人員使用”的三低武器 php就是i

web前端面試題-公司試題(360)

1 下面程式碼的輸出值是: alert(1&&2) //2 answer: 1、只要“||”前面為false,不管“||”後面是true還是false,都返回“||”後面的值。 2、只要“||”前面為true,不管“||”後面是tr

軟體測試試題---公司試題

1.白箱測試和黑箱測試是什麼?什麼是迴歸測試?2.單元測試、整合測試、系統測試的側重點是什麼?3.設計用例的方法、依據有那些?4.一個測試工程師應具備那些素質和技能?5.整合測試通常都有那些策略?6.你用過的測試工具的主要功能、效能及其他?7.一個缺陷測試報告的組成8.基於WEB資訊管理系統測試時應考慮的因素

勒索病毒變種不斷更新 不斷***企業

昨天再百度看了很多關於中病毒的帖子,大多數是受害者的自述,中了什麼樣的病毒,檔案變成了什麼樣子,復旦請問有沒有人能夠處理,病毒的檔案字尾各種各樣,我們復旦解密也是接解密到了很多諮詢,雖然出現了很多新型病毒,但是,憑藉著過硬的技術跟經驗,4全部成功處理。那麼說說,最近為什麼會出現這麼多的新7型病毒呢?首先,我們

企業擔任融資顧問,揭祕投融資騙局!看到文章的企業家有福了!

大家好,融資市場魚龍混雜,皮包公司極其多,無法辨別其真實性,另外融資平臺也隨之多起來。 絕大部分創業者企業家急於融資,可能會通過百度搜索融資平臺,融資平臺正撒好了網等你去鑽。 於是你註冊其網站,瞭解平臺之後規模很大,業務員千方百計讓你繳納會員服務費,各種承諾,