很有用的php筆試題系列二,細說php自測題

本文目錄一覽:

PHP應聘筆試題

題目一:

?php

echo -10%3;

?

答案:-1。

考查:優先級。因為-的優先級比%求余的優先級低,也就是-(10%3)。

題目二:

print (int)pow(2,32);

答案:0

題目三:

//file1.php

?php

$a = ‘123’;

?

//file2.php

?php

echo include(‘file1.php’);

?

答案:1.

考查:返回值。因include()也是一個函數,有返回值。在成功時返回1,失敗時返回錯誤信息。如果被包含的文件有return,則inculde()成功時返回該文件的`返回值。

題目四:

?php

$count = 5;

function get_count() {

static $count = 0;

return $count++;

}

++$count;

get_count();

echo get_count();

?

答案:1.

考查:static和++。因static $count,所以只在第一次調用get_count的時候對$count賦值為0,第二次再進來這個函數,則不會第二次賦值。其次就是return $count++和return ++$count了,前者先返回,後者先++再返回。

題目五:

?php

$arr= array(0 =1,’aa’ =2,3,4);

foreach($arr as $key = $val){

print($key == ‘aa’ ? 5 : $val);

}

?

答案:5534.

考查:類型轉換。因遍曆數組第一次的時候,$key和aa的比較實際就是0和aa的比較,一個是int一個是string,這個時候會轉換類型,將字符串轉換為數字再與數字比較。所以0==’aa’就是0==0,所以為true,也就是輸出5。雖然PHP是若類型語言,但是人家也有類型的好嗎。

   題目六:

?php

echo count (false);

$a = count (“567”) + count(null)

+ count(false);

echo $a;

?

答案:2.

考查:count的用法。

因count()的官方解釋“If the parameter

is not an array or not an object

with implemented Countable

interface, 1 will be returned.”.意思是說,如果不是數組或者對象的其他類型,返回1.那麼這個值應該就是1+0+1了(boolen人家也是一個類型,雖然是討厭的false)。NULL的意思是沒有值,難道在計數函數中還能有1?

題目七:

?php

$arr = array(1,2,3);

foreach($arr as $val) {

$val += $val % 2 ? $val++ : $val–;

}

$val = 0;

print(join(”,$arr));

?

答案:330。

考查:++和。

因foreach結束後的數組應該是array(3,3,7);最後給第三個元素賦值為0,所以就是330了。其中注意的是,如果有則是對原變量操作,如果沒有,則是先生成一個新變量,然後給這個變量複製,最後操作的是這個新變量。

題目八:

?php

echo intval((0.1+0.7)*10);

?

答案:7。

考查:浮點數的概念。

因0.1+0.7=0.8 0.8*10=8 所以轉換成整數後還是8?錯!因為0.1+0.7=0.8是浮點數,0.8*10在數學計算中是正整數8,可是在計算機中它仍然是浮點數8,什麼叫浮點數8?每一個看起來像整數的浮點數,其實都不是整數,比如這個8,它其實只是

7.9999循環,無限接近於8,轉換成整數會捨棄小數部分,就是7嘍。

題目九:

?php

ini_set(‘display_errors’,0);

$arr = array(1=1,3=3);

$i = 2;

$a = ‘test’ . isset($arr[$i]) ?

$arr[$i] : $i;

請問$a的值是什麼?

A、test B、NULL C、2 D、test2

?

答案:B。

考查:優先級 因“.”的優先級高於三元運算符”?:”。所以程序其實報錯了。會說$arr的索引2不存在。

題目十:

?php

$a = 3;

$b = 5;

if($a = 5 || $b = 7) {

$a++;

$b++;

}

echo $a . ” ” . $b;

?

A、6 8 B、6 6 C、2 6 D、1 6 E、4 6

答案:D。

考查:優先級,基礎概念,++。因“=”的優先級低於“||”,所以先邏輯判斷再賦值。也就是($a = (5 || $b = 7))。所以,最後其實給a賦值了,$a等於1.

PHP筆試題:有20個正整數,怎麼最快取出其中三個相互最接近的數?在線等

$a  = array(1,2,5,6,8,9,23,34,5,7,87,980,23);

//最接近值為相等的序列

$tmp = ”;

//最接近值為1的序列

$tmp1 = ”;

for($i=0;$icount($a);$i++){

if($i == (count($a)-1)){

return false;

}

if($a[$i+1]==$a[$i]){

$tmp .= ‘,’.$i;

}

}

var_dump($tmp);

隨便寫了點,可能有適配的算法吧

PHP面試題

1.有一個IP地址(192.168.0.1),請寫出其32位無符號整數形式。

2. 請列舉你能想到的UNIX信號,並說明信號用途。

答案:UNIX定義了許多信號,比如SIGINT表示中斷字符信號,也就是Ctrl+C的信號,SIGBUS表示硬件故障的信號;SIGCHLD表示子進程狀態改變信號;SIGKILL表示終止程序運行的信號

PHP面試題誰有啊?

1.以下哪一句不會把 John 新增到 users 陣列?

$users[] = ‘john’;

成功把 John 新增到陣列 users。

array_add($users,’john’);

函式 array_add() 無定義。

array_push($users,‘john’);

成功把 John 新增到陣列 users。

$users ||= ‘john’;

語法錯誤。

2.sort()、assort()、和 ksort() 有什麼分別?它們分別在什麼情況下使用?

sort()

根據陣列中元素的值,以英文字母順序排序,索引鍵會由 0 到 n-1 重新編號。主要是當陣列索引鍵的值無關疼癢時用來把陣列排序。

assort()

PHP 沒有 assort() 函式,所以可能是 asort() 的筆誤。

asort()

與 sort() 一樣把陣列的元素按英文字母順序來排列,不同的是所有索引鍵都獲得保留,特別適合替聯想陣列排序。

ksort()

根據陣列中索引鍵的值,以英文字母順序排序,特別適合用於希望把索引鍵排序的聯想陣列。

3.以下的代碼會產生什麼?為什麼?

$num =10;

function multiply(){

$num =$num *10;

}

multiply();

echo $num;

由於函式 multiply() 沒有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS[‘num’]),所以 $num 的值是 10。

4. reference 跟一個正規的變量有什麼分別?如何 pass by reference?在什麼情況下我們需要這樣做?

Reference 傳送的是變量的地址而非它的值,所以在函式中改變一個變量的值時,整個應用都見到這個變量的新值。

一個正規變量傳送給函式的是它的值,當函式改變這個變量的值時,只有這個函式才見到新值,應用的其他部分仍然見到舊值。

$myVariable = “its’ value”;

Myfunction($myVariable); // 以 reference 傳送參數以 reference 傳送參數給函式,可以使函式改變了的變量,即使在函式結束後仍然保留新值。

5.些函式可以用來在現正執行的腳本中插入函式庫?

對這道題目不同的理解會有不同的答案,我的第一個想法是插入 PHP 函式庫不外乎 include()、include_once()、require()、require_once(),但細心再想,“函式庫”也應該包括 com 物件和 .net 函式庫,所以我們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起“函式庫”的時候,別忘記這兩個函式。

6.foo() 與 @foo() 有什麼分別?

foo() 會執行這個函式,任何解譯錯誤、語法錯誤、執行錯誤都會在頁面上顯示出來。

@foo() 在執行這個函式時,會隱藏所有上述的錯誤訊息。

很多應用程式都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的錯誤訊息,我認為這是很嚴重的失誤,因為錯誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。

7.你如何替 PHP 的應用程式偵錯?

我並不常這樣做,我曾經試過很多不同的偵錯工具,在 Linux 系統中設定這些工具一點也不容易。不過以下我會介紹一個近來頗受注目的偵錯工具。

PHP – Advanced PHP Debugger 或稱 PHP – APD,第一步是執行以下的指令安裝:

pear install apd安裝後在你的腳本的開頭位置加入以下的語句開始進行偵錯:

apd_set_pprof_trace();執行完畢,打開以下檔案來查閱執行日誌:

apd.dumpdir

你也可以使用 pprofp 來格式化日誌。

詳細的資料可以參閱 。

8.“===”是什麼?試舉一個“==”是真但“===”是假的例子。

“===”是給既可以送回布爾值“假”,也可以送回一個不是布爾值但卻可以賦與“假”值的函式,strpos() 和 strrpos() 便是其中兩個例子。

問題的第二部份有點困難,想一個“==”是假,但是“===”是真的例子卻很容易,相反的例子卻很少。但我終於找到以下的例子:

if (strpos(“abc”, “a”) == true){ // 這部分永不會被執行,因為 “a” 的位置是 0,換算成布爾值“假”}if (strpos(“abc”, “a”) === true){ // 這部份會被執行,因為“===”保證函式 strpos() 的送回值不會換算成布爾值.}

9.你會如何定義一個沒有成員函式或特性的類別 myclass?

class myclass{}

10.你如何產生一個 myclass 的物件?

$obj = new myclass();

11.在一個類別內如何存取這個類別的特性及變改它的值?

使用語句:$this-propertyName,例如:

class myclass{ private $propertyName; public function __construct() { $this-propertyName = “value”; }}

12.include 和 include_once 有什麼分別?require 又如何?

三者都是用來在腳本中插入其他檔案,視乎 url_allow_fopen 是否核准,這個檔案可以從系統內部或外部取得。但他們之間也有微細的分別:

include():這個函式容許你在腳本中把同一個檔案插入多次,若果檔案不存在,它會發出系統警告並繼續執行腳本。

include_once():它跟 include() 的功能相似,正如它的名字所示,在腳本的執行期間,有關檔案只會被插入一次。

require():跟 include() 差不多,它也是用來在腳本中插入其他檔案,但若果檔案不存在,它會發出系統警告,這個警告會引致致命錯誤令腳本中止執行

13.以下哪一個函式可以把瀏覽器轉向到另一個頁面?

redir()

這不是一個 PHP 函式,會引致執行錯誤。

header()

這個是正確答案,header() 用來插入卷頭資料,可以用來使瀏覽器轉向到另一個頁面,例如:

header(“Location: “);

location()

這不是一個 PHP 函式,會引致執行錯誤。

redirect()

這不是一個 PHP 函式,會引致執行錯誤。

14.以下哪一個函式可以用來開啟檔案以便讀/寫?

fget()

這不是一個 PHP 函式,會引致執行錯誤。

file_open()

這不是一個 PHP 函式,會引致執行錯誤。

fopen()

這是正確答案,fopen() 可以用來開啟檔案以便讀/寫,事實上這個函式還有很多選項,詳細資料請參閱 php.net。

open_file()

這不是一個 PHP 函式,會引致執行錯誤。

15.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() 的值。

16.下面的代碼用來做什麼?請解釋。

$date=’08/26/2003′;print ereg_replace(“([0-9]+)/([0-9]+)/([0-9]+)”,”[url=]\\2/\\1/\\3″,$date[/url]);

這是把一個日期從 MM/DD/YYYY 的格式轉為 DD/MM/YYYY 格式。我的一個好朋友告訴我可以把這個正規表達式拆解為以下的語句,對於如此簡單的表示是來說其實無須拆解,純粹為了解說的方便:

// 對應一個或更多 0-9,後面緊隨一個斜號$regExpression = “([0-9]+)/”;// 應一個或更多 0-9,後面緊隨另一個斜號$regExpression .= “([0-9]+)/”;// 再次對應一個或更多 0-9$regExpression .= “([0-9]+)”;至於 [url=]\\2/\\1/\\3[/url] 則是用來對應括號,第一個括號對的是月份,第二個括號對應的是日期,第三個括號對應的是年份。

17.給你一行文字 $string,你會如何編寫一個正規表達式,把 $string 內的 HTML 標籤除去?

首先,PHP 有內建函式 strip_tags() 除去 HTML 標籤,為何要自行編寫正規表達式?好了,便當作是面試的一道考題吧,我會這樣回答:

$stringOfText = “pThis is a test/p”;$expression = “/(.*?)(.*?)\/(.*?)/”;echo preg_replace($expression, “[url=]\\2[/url]”, $stringOfText);// 有人說也可以使用 /([^]*)/ $expression = “/([^]*)/”;echo preg_replace($expression, “”, $stringOfText);

18.PHP 和 Perl 分辨陣列和散列表的方法有什麼差異?

這正是為何我老是告訴別人選擇適當的編程語言,若果你只用一種語言的話你怎麼能回答這道問題?這道問題很簡單,Perl 所有陣列變量都是以 @ 開頭,例如 @myArray,PHP 則沿用 $ 作為所有變量的開頭,例如 $myArray。

至於 Perl 表示散列表則用 %,例如 %myHash,PHP 則沒有分別,仍是使用 $,例如 $myHash。

19.你如何利用 PHP 解決 HTTP 的無狀態本質?

最主要的倆各選擇是 session 和 cookie。使用 session 的方法是在每一頁的開始加上 session_start(),然後利用 $_SESSION 散列表來儲存 session 變量。至於 cookie 你只需記着一個原則:在輸出任何文字之前調用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 變量。

還有一個不那麼可靠的方法,就是利用訪客的 IP 地址,這個方法有特定的危險性。

20.GD 函式庫用來做什麼?

這個可能是我最喜歡的函式庫,自從 PHP 4.3.0 版本後 GD 便內建在 PHP 系統中。這個函式庫讓你處理和顯示各式格式的圖檔,它的另一個常見用途是製作所圖檔。GD 以外的另一個選擇是 ImageMagick,但這個函式庫並不內建於 PHP 之中,必須由系統管理員安裝在伺服器上。

21.試寫出幾個輸出一段 HTML 代碼的方法。

嗯,你可以使用 PHP 中任何一種輸出語句,包括 echo、print、printf,大部分人都使用如下例的 echo:

echo “My string $variable”;你也可以使用這種方法:

echo ENDThis 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;

22.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 語言比網頁更加)。

急求6道PHP筆試題答案

2:我覺得第二題比較有意思,如果不緩存,用遞歸100就已經夠大了

?php

$cache_ary = array(0=1 , 1=1);

$num = 1200;

function fib_cache($i){

global $cache_ary;

if($i == 1 || $i == 0 ){

return $cache_ary[$i];

}else if(isset($cache_ary[$i])){

return $cache_ary[$i];

}else{

$cache_ary[$i] = fib_cache($i – 1) + fib_cache($i – 2);

return $cache_ary[$i];

}

}

function fib_2($i){

if($i == 0 || $i == 1){

return 1;

}else{

return fib_2($i – 1) + fib_2($i – 2);

}

}

?

php面試題解答

1,

var x=document.getElementById(“img1”);

var title=document.getElementById(“img1”).title;

var sina_title=document.getElementById(“img1”).sina_title;

2,serialize(),unserialize();

3,編碼方式不同,urlencode()將字串以URL編碼。例如空格就會變成加號。

rawurlencode()將url編碼成url的字符串專用格式,特殊字符迴轉換成百分號後面加兩個十六子介數字的格式。

4,strip_tags(),html_entity_decode();

5,$str=preg_replace(“/\script.*\.*\\/script\/i”,””,$str);

6,左連接,左連接的表如果沒有匹配的數據不影響結果。

7

SELECT name,score FROM tl_user LEFT JOIN tl_score ON tl_user.ID=tl_score.ID

7 system(),exec(),passthru()

8,json_decode ,json_encode

9 isset() empty()

10 後者的權限大於前者,後者是OFF的話,前者就算是E-ALL也沒用。

11,$_SERVER[‘REMOTE_ADDR’];

12,incov()

echo iconv(“gbk”,””UTF-8,”我們”);

mb_convert_encoding($str, “GBK”, “UTF-8”)

13 explode() split() ;implode() join()

14 注意事項挺多的,懶得寫。

1,超時,服務器已經關閉連接

2 靜態表字段長度固定,自動填充,讀寫速度很快,便於緩存和修復,但比較占硬盤,動態表是字段長度不固定,節省硬盤,但更複雜,容易產生碎片,速度慢,出問題後不容易重建。

3InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優缺點,視具體應用而定。基本的差別為:MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供事務支持已經外部鍵等高級數據庫功能。

MyIASM是IASM表的新版本,有如下擴展:

二進制層次的可移植性。

NULL列索引。

對變長行比ISAM表有更少的碎片。

支持大文件。

更好的索引壓縮。

更好的鍵嗎統計分布。

更好和更快的auto_increment處理。

1.MySQL最大的優勢在於MyISAM引擎下的簡單SELECT,INSERT和UPDATE快速操作

2.MyISAM類型的數據文件可以在不同操作系統中COPY,這點很重要,布署的時候方便點。

以下是一些細節和具體實現的差別:

1.InnoDB不支持FULLTEXT類型的索引。

2.InnoDB 中不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數即可。注意的是,當count(*)語句包含 where條件時,兩種表的操作是一樣的。

3.對於AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯合索引。

4.DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。

5.LOAD TABLE FROM MASTER操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導入數據後再改成InnoDB表,但是對於使用的額外的InnoDB特性(例如外鍵)的表不適用。

另外,InnoDB表的行鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的範圍,InnoDB表同樣會鎖全表,例如update table set num=1 where name like “%aaa%”

以暫對存儲引擎的認識,覺得 InnoDB 支持外鍵,在數據量可以用“龐大”來形容時,在有良好的 INDEX 的基礎上,InnoDB 的查詢速度應該比 MyISAM 要快。

在 Falcon 有穩定版本前,我想 MyISAM 是一個可用的選擇方案。

任何一種表都不是萬能的,只用恰當的針對業務類型來選擇合適的表類型,才能最大的發揮MySQL的性能優勢

3, 都是1 ^^懶得回答了,睡覺去。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/188235.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 09:19
下一篇 2024-11-28 13:29

相關推薦

  • Python Flask系列完整示例

    Flask是一個Python Web框架,在Python社區中非常流行。在本文中,我們將深入探討一些常見的Flask功能和技巧,包括路由、模板、表單、數據庫和部署。 一、路由 Fl…

    編程 2025-04-28
  • CTP程序化交易入門系列

    本文將從多個方面詳細闡述CTP程序化交易入門系列,包括行情獲取、交易指令下達等。 一、行情獲取 在進行程序化交易前,需要獲取實時的行情信息。CTP提供了多種獲取行情的渠道,包括: …

    編程 2025-04-28
  • Python計算一系列數的和

    Python是一種功能強大的編程語言,它提供了大量的數學計算庫,使計算變得更加簡單和輕鬆。計算一系列數的和是許多數學計算任務中的一個基本操作,Python提供了多種方法來實現這個功…

    編程 2025-04-27
  • fvtool:MATLAB信號處理工具箱系列

    一、fvtool是什麼? fvtool是MATLAB中的一個信號處理工具箱。它提供了一種可視化分析信號頻譜的方法。fvtool允許您比較、分析和修改信號的頻率響應,它還能夠可視化濾…

    編程 2025-02-05
  • python解放雙手系列(python的turtle畫中國解放)

    本文目錄一覽: 1、學習python能幹什麼 2、python語言都可以幹什麼? 3、如何成為優秀程序員 學完Python能做哪些工作 4、求python書籍推薦 學習python…

    編程 2025-01-16
  • 混子曰c語言,混子曰系列

    本文目錄一覽: 1、c語音是一種什麼語言? 2、c程序中scanf是什麼意思? 3、c語言指針聲明int&p對嗎 4、簡單C語言,小白求教 5、C語言如何編寫? c語音是一…

    編程 2025-01-13
  • php筆試題2019,php筆試題不會寫

    本文目錄一覽: 1、PHP面試題 2、PHP面試題(求過程) 3、PHP程序員上機面試題(並附答案,回答好的加分) 4、PHP應聘筆試題 5、php面試題解答 PHP面試題 1.有…

    編程 2025-01-13
  • java學習系列之一(java學習路線)

    本文目錄一覽: 1、java需要學習些什麼內容 2、學習Java需要學哪些內容? 3、java學習有哪些課程 4、Java需要學習哪些內容? 5、如何學習JAVA java需要學習…

    編程 2025-01-11
  • java刷code(Java筆試刷題)

    本文目錄一覽: 1、初學java,我怎麼去練習? 2、Java code問題 3、java web 項目驗證碼的刷新問題 4、java 微信二次開發網頁授權第一步怎麼獲取code …

    編程 2025-01-11
  • java爬蟲系列第五講(JAVA爬蟲)

    本文目錄一覽: 1、java 網絡爬蟲怎麼實現 2、Java_爬蟲,如何抓取Js動態生成數據的頁面? 3、java爬蟲實時獲取頁面數據並存入數據庫 4、java爬蟲讀取某一張指定圖…

    編程 2025-01-11

發表回復

登錄後才能評論