看板 rikaka
作者 標題 Re: 面試考題整理
時間 2012年03月22日 Thu. AM 02:35:10
Yahoo! 的 PHP 面試題目(第三部份)
http://www.hksilicon.com/kb/articles/979/YahooPHP
Yahoo! 的 PHP 面試題目(第三部份) - - 香港矽谷
mysql_fetch_row() 和 ...
若果你已經看過 Yahoo! 的 PHP 面試題目(第一部份)及第二部份,請繼續觀看第三部份第十一至第十六題,其餘題目已經在第四部份轉載。每一部份的都會先列出題目,題解會寫在後面。
在一個類別內如何存取這個類別的特性及變改它的值? include 和 include_once 有什麼分別?require 又如何? 以下哪一個函式可以把瀏覽器轉向到另一個頁面? redir() header() location() redirect()
以下哪一個函式可以用來開啟檔案以便讀/寫? fget() file_open() fopen() open_file()mysql_fetch_row() 和 ...
若果你已經看過 Yahoo! 的 PHP 面試題目(第一部份)及第二部份,請繼續觀看第三部份第十一至第十六題,其餘題目已經在第四部份轉載。每一部份的都會先列出題目,題解會寫在後面。
---------------------------------------------------------------------------------------
在一個類別內如何存取這個類別的特性及變改它的值?
include 和 include_once 有什麼分別?require 又如何?
以下哪一個函式可以把瀏覽器轉向到另一個頁面?
redir()
header()
location()
redirect()
以下哪一個函式可以用來開啟檔案以便讀/寫?
fget()
file_open()
fopen()
open_file()
mysql_fetch_row() 和 mysql_fetch_array() 有什麼分別?
下面的代碼用來做什麼?請解釋。
$date='08/26/2003';
print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);
以下是 Matt Wilkin 提供的解答:
在一個類別內如何存取這個類別的特性及變改它的值?
使用語句:$this->propertyName,例如:
class myclass
{
private $propertyName;
public function __construct()
{
$this->propertyName = "value";
}
}
include 和 include_once 有什麼分別?require 又如何?
三者都是用來在腳本中插入其他檔案,視乎 url_allow_fopen 是否核准,
這個檔案可以從系統內部或外部取得。但他們之間也有微細的分別:
include():這個函式容許你在腳本中把同一個檔案插入多次,若果檔案不存在,它會發出系統警告並繼續執行腳本。
include_once():它跟 include() 的功能相似,正如它的名字所示,在腳本的執行期間,有關檔案只會被插入一次。
require():跟 include() 差不多,它也是用來在腳本中插入其他檔案,
但若果檔案不存在,它會發出系統警告,這個警告會引致致命錯誤令腳本中止執行。
以下哪一個函式可以把瀏覽器轉向到另一個頁面?
redir()
這不是一個 PHP 函式,會引致執行錯誤。
header()
這個是正確答案,header() 用來插入卷頭資料,可以用來使瀏覽器轉向到另一個頁面,例如:
header("Location: http://www.search-this.com/"%29;
location()
這不是一個 PHP 函式,會引致執行錯誤。
redirect()
這不是一個 PHP 函式,會引致執行錯誤。
以下哪一個函式可以用來開啟檔案以便讀/寫?
fget()
這不是一個 PHP 函式,會引致執行錯誤。
file_open()
這不是一個 PHP 函式,會引致執行錯誤。
fopen()
這是正確答案,fopen() 可以用來開啟檔案以便讀/寫,事實上這個函式還有很多選項,詳細資料請參閱 php.net。
open_file()
這不是一個 PHP 函式,會引致執行錯誤。
mysql_fetch_row() 和 mysql_fetch_array() 有什麼分別?
mysql_fetch_row() 把數據庫的一列儲存在一個以零為基數的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,如此類推。mysql_fetch_assoc() 把數據庫的一列儲存在一個關聯陣列中,陣列的索引就是欄位名稱,例如我的數據庫查詢送回「first_name」、「last_name」、「email」三個欄位,陣列的索引便是「first_name」、「last_name」和「email」。mysql_fetch_array() 可以同時送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。
下面的代碼用來做什麼?請解釋。
$date='08/26/2003';
print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);
這是把一個日期從 MM/DD/YYYY 的格式轉為 DD/MM/YYYY 格式。我的一個好朋友告訴我可以把這個正規表達式拆解為以下的語句,對於如此簡單的表示是來說其實無須拆解,純粹為了解說的方便:
// 對應一個或更多 0-9,後面緊隨一個斜號$regExpression = "([0-9]+)/";
// 應一個或更多 0-9,後面緊隨另一個斜號
$regExpression .= "([0-9]+)/";
// 再次對應一個或更多 0-9
$regExpression .= "([0-9]+)";
至於 \\2/\\1/\\3 則是用來對應括號,第一個括號對的是月份,第二個括號對應的是日期,第三個括號對應的是年份。
Yahoo! 的 PHP 面試題目(第四部份)
http://www.hksilicon.com/kb/articles/978/YahooPHP
[center][quote]Yahoo! 的 PHP 面試題目(第四部份) - - 香港矽谷
若果你已經看過 Yahoo! 的 PHP 面試題目(第一部份)、第二部份及第三部份,請繼續觀看最後一部份第十七至第二十二題。首先會先列出題目,題解會寫在後面。
------------------------------------------------------------------------------------
給你一行文字 $string,你會如何編寫一個正規表達式,把 $string 內的 HTML 標籤除去?
PHP 和 Perl 分辨陣列和散列表的方法有什麼差異?
你如何利用 PHP 解決 HTTP 的無狀態本質?
GD 函式庫用來做什麼?
試寫出幾個輸出一段 HTML 代碼的方法。
PHP 比 Perl 好嗎?請討論。 ...
給你一行文字 $string,你會如何編寫一個正規表達式,把 $string 內的 HTML 標籤除去?
PHP 和 Perl 分辨陣列和散列表的方法有什麼差異?
你如何利用 PHP 解決 HTTP 的無狀態本質?
GD 函式庫用來做什麼?
試寫出幾個輸出一段 HTML 代碼的方法。
PHP 比 Perl 好嗎?請討論。
以下是 Matt Wilkin 提供的解答:
給你一行文字 $string,你會如何編寫一個正規表達式,把 $string 內的 HTML 標籤除去?
首先,PHP 有內建函式 strip_tags() 除去 HTML 標籤,為何要自行編寫正規表達式?好了,便當作是面試的一道考題吧,我會這樣回答:
$stringOfText = "<p>This is a test</p>";
$expression = "/<(.*?)>(.*?)<\/(.*?)>/";
echo preg_replace($expression, "\\2", $stringOfText);
// 有人說也可以使用 /(<[^>]*>)/
$expression = "/(<[^>]*>)/";
echo preg_replace($expression, "", $stringOfText);
-----------------
http://www.encntc.edu.tw/document/php4doc/regular/ereg_replace.html
ereg_replace(PHP3 , PHP4)
ereg_replace --- 正規表達比對取代
語法 : string ereg_replace (string pattern, string replacement, string string)
說明 :
此函式掃描string來和pattern比對,然後以replacement來取代比對到的文字。
此函式傳回修改過的字串,如果比對不到則傳回原來的字串。
如果pattern包含括弧的部份字串,則replacement可以包含" \\數字"的部份字串,這將會以第幾個括弧內的部份字串來替代。\\0將會產生整個字串的內容,最多可使用到九個部份字串,這種情況下它會以開啟的括弧來計算。
如果在string中找不到比對,則將會傳回未改變的字串string。
以下的範例會將字串切斷,並顯示三次 "This was a test" :
<?php
$string = "This is a test";
echo ereg_replace (" is", " was", $string);
echo ereg_replace ("( )is", "\\1was", $string);
echo ereg_replace ("(( )is)", "\\2was", $string);
?>
有一個地方需要去注意的是,如果你在參數replacement中使用整數值的時候,你可能無法取得到結果,這是因為ereg_replace( )將會把數字解釋成字元的順序(ordinal)值,並且執行它,例如 :
<?php
/* This will not work as expected. */
$num = 4;
$string = "This string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string; /* Output: 'This string has words.' */
/* This will work. */ $num = '4';
$string = "This string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string; /* Output: 'This string has 4 words.' */
?>
-----------------
PHP 和 Perl 分辨陣列和散列表的方法有什麼差異?
這正是為何我老是告訴別人選擇適當的編程語言,若果你只用一種語言的話你怎麼能回答這道問題?
這道問題很簡單,
Perl 所有陣列變量都是以 @ 開頭,例如 @myArray,PHP 則沿用 $ 作為所有變量的開頭,例如 $myArray。
至於 Perl 表示散列表則用 %,例如 %myHash,
PHP 則沒有分別,仍是使用 $,例如 $myHash。
你如何利用 PHP 解決 HTTP 的無狀態本質?
最主要的倆各選擇是 session 和 cookie。
使用 session 的方法是在每一頁的開始加上 session_start(),然後利用 $_SESSION 散列表來儲存 session 變量。
至於 cookie 你只需記著一個原則:在輸出任何文字之前調用 set_cookie() 函式,
此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 變量。
還有一個不那麼可靠的方法,就是利用訪客的 IP 地址,這個方法有特定的危險性。
GD 函式庫用來做什麼?
這個可能是我最喜歡的函式庫,自從 PHP 4.3.0 版本後 GD 便內建在 PHP 系統中。
這個函式庫讓你處理和顯示各式格式的圖檔,它的另一個常見用途是製作所圖檔。
GD 以外的另一個選擇是 ImageMagick,但這個函式庫並不內建於 PHP 之中,必須由系統管理員安裝在伺服器上。
試寫出幾個輸出一段 HTML 代碼的方法。
嗯,你可以使用 PHP 中任何一種輸出語句,包括 echo、print、printf,大部分人都使用如下例的 echo:
echo "My string $variable";
你也可以使用這種方法:
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;
PHP 比 Perl 好嗎?請討論。
我們不要為一個簡單的問題引發一場舌戰,正如我經常說的:「為工作選擇適合的語言,不要把工作遷就語言。」
我個人認為 Perl 十分適合用作命令行工具,雖然它在網頁應用上也有不錯的表現,
但是它的真正實力在命令行上才能充分發揮。
同樣地,PHP 雖然可以在控制台的環境中使用,但是個人認為它在網頁應用上有更好的表現,
PHP 有大量專門為網頁應用而設計的函式,Perl 則似乎以命令行為設計之本。
個人來說兩種語言我都喜歡,在大學期間我經常使用 Perl、PHP 和 Java,可惜工作上我使用 C#,
但在家裡我花不少時間操練 PHP、Perl、Ruby(現正學習)和 Java,保持我的技能知識在最新狀態。
很多人問我 C 和 C++ 怎麼樣,它們是否仍有機會在我的應用中佔一席位,我的答案基本上是「否」,
我近來的工作主要集中在網頁開發,雖然 C 和 C++ 也可以用來寫網頁,但它們到底不是為這種工作而設計的,
「為工作選擇適合的語言」,若果我需要編寫一個控制台應用,
用來展示 bubble sort、quick sort 和 merge sort 的效能比較,我一定會使用 C / C++。
若果我需要編寫一個相片簿系統,我會使用 PHP 或者 C#(我認為製作用戶介面方面 .NET 語言比網頁更加)。
--
※ 編輯: rikaka 時間: 2012-03-23 23:11:24
※ 看板: rikaka 文章推薦值: 0 目前人氣: 0 累積人氣: 536
回列表(←)
分享