PHP筆試題


1、不用新變量直接交換現有兩個變量的值

(1)list($a,$b)=array($b,$a);
(2)a=a+b,b=a-b,a=a-b
2、PHP 數字金額轉大小格式,同時說明思路
  function daxie($num){
      $da_num = array('零','一','二','三','四','五','六','七','八','九');
      $return = '';
      $len_num = strlen($num);
      if(!is_numeric($num) || $len_num < 0){
          return '';
      }
      for($i=0;$i<$len_num;$i++){
          $return .= $da_num[ substr($num,$i,1)];
      }
      return $return;
  }
3.SQL查詢語句如下:
select * from table where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID = 13) or (ID = 44)
讓結果按10,32,22,76,13,44的順序檢索出來,請問如何書寫?
select * from table
where id in (10,32,22,76,13,44)          
order by charindex(id,'10,32,22,76,13,44') desc

4.用PHP打印出前一天的時間,格式是2006-5-10 22:21:21

(1)echo date('Y-m-d H:i:s',time()-60*60*24);
(2)echo date('Y-m-d H:i:s',strtotime('-1 day'))

5. echo(),print(),print_r()的區別

echo是語言結構,無返回值;print功能和echo基本相同,不同的是print是函數,有返回值;print_r是遞歸打印,用於輸出數組或對象

 6.能夠使HTML和PHP分離開使用的模板

PHP本身是一種模版引擎,我用過的是smarty,常見的還有PHPLib,FastTemplate,Savant

7.如何實現PHP、JSP交互?

題目有點含糊不清,SOAP,XML_RPC,Socket function,CURL都可以實現這些,
如果是考PHP和Java的整合,PHP內置了這種機制(如果考PHP和.NET的整合,也可以這么回答),例如$foo = new Java('java.lang.System');

8.使用哪些工具進行版本控制?

CVS和SVN,SVN號稱下一代CVS,功能強大,不過CVS是老牌,市占率很高.
我一直用SVN,題目是問用什么工具,呃,這個可能需要這么回答:CVS Server on Apache作服務端,WinCVS作客戶端;
Subversion on Apache/DAV 做服務端,TortoiseSVN做客戶端,或者Subclipse做客戶端

9.如何實現字符串翻轉?

其實PHP本身就有字符串翻轉的函數:strrev(),不過這種方法都不能解決中文字符串翻轉的問題,會出錯的。
<?php
function reverse($var)
{
$res="";
for($i=0,$j=strlen($var);$i<$j;$i++)
{
$res=$var[$i].$res;
}
return $res;
}
$tmpvar="wofang";
$res=reverse($tmpvar);
echo $res;
?>


 10.優化MYSQL數據庫的方法

(1).數據庫設計方面,這是DBA和Architect的責任,設計結構良好的數據庫,必要的時候,去正規化(英文是這個:denormalize),
允許部分數據冗余,避免JOIN操作,以提高查詢效率 (2).系統架構設計方面,表散列,把海量數據散列到幾個不同的表里面.快慢表,快表只留最新數據,慢表是歷史存檔.集群,主服務器Read & write,
從服務器read only,或者N台服務器,各機器互為Master (3).(1)和(2)超越PHP Programmer的要求了,會更好,不會沒關系.檢查有沒有少加索引 (4).寫高效的SQL語句,看看有沒有寫低效的SQL語句,比如生成笛卡爾積的全連接啊,大量的Group By和order by,沒有limit等等.
必要的時候,把數據庫邏輯封裝到DBMS端的存儲過程里面.緩存查詢結果,explain每一個sql語句 (5).所得皆必須,只從數據庫取必需的數據,比如查詢某篇文章的評論數,select count(*) … where article_id = ?
就可以了,不要先select * … where article_id = ?然后msql_num_rows. 只傳送必須的SQL語句,比如修改文章的時候,如果用戶只修改了標題,那就update … set title = ? where article_id = ?
不要set content = ?(大文本) (6).必要的時候用不同的存儲引擎.比如InnoDB可以減少死鎖.HEAP可以提高一個數量級的查詢速度

11.談談事務處理

A給B的賬戶轉賬50美元的例子

12.apache+mysql+php實現最大負載的方法

參考第10題。

13.實現中文字串截取無亂碼的方法

(1)mb_substr()

(2)
function GBsubstr($string, $start, $length) {
    if(strlen($string)>$length){
        $str=null;
        $len=$start+$length;
        for($i=$start;$i<$len;$i++){
            if(ord(substr($string,$i,1))>0xa0){
                $str.=substr($string,$i,2);
                $i++;
            }else{
                $str.=substr($string,$i,1);
            }
        }
        return $str;
    }else{
        return $string;
    }
}

14.用PHP寫出顯示客戶端IP與服務器IP的代碼:

echo '客戶端IP:'.$_SERVER['REMOTE_ADDR'].'<br />';
echo '服務器端IP:'.gethostbyname($_SERVER['SERVER_NAME']);

 15.在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預定義變量(1)中;而鏈接到當前頁面的URL記錄在預定義變量(2)中。

  前執行腳本的絕對路徑名(3),正在瀏覽當前頁面用戶的 IP 地址(4),查詢(query)的字符串(URL 中第一個問號 ? 之后的內容):id=1&bi=2(5),當前運行腳本所在的文檔根目錄(6)。

(1)$_SERVER['SCRIPT_FILENAME'];或者$_SERVER['PHP_SELF']
(2)$_SERVER['HTTP_REFERER'] (3)$_SERVER['SCRIPT_FILENAME'];
(4)$_SERVER['REMOTE_ADDR'];
(5)$_SERVER['QUERY_STRING'];
(6)$_server['DOCUMENT_ROOT'];

 16.執行程序段 將輸出__。

(1)echo 8%(-2)。輸出:0
(2)echo (-8)%3 .輸出:-2
(3)echo 8%(-3).輸出:2

17.在HTTP 1.0中,狀態碼 401 的含義是____;如果返回“找不到文件”的提示,則可用 header 函數,其語句為____。

(1)401表示未授權;
(2)header(“HTTP/1.0 404 Not Found”);[

18.數組函數 arsort 的作用是____;語句 error_reporting(2047)的作用是____。

arsort:對數組進行逆向排序並保持索引關系 
error_reporting(2047)的作用是:report All errors and warnings

 19.寫出一個正則表達式,過慮網頁上的所有JS/VBS腳本(即把script標記及其內容都去掉):

$a="<script type='text/javascript'>XXXXXXXXXXXXXXX</script>";
echo preg_replace('/\<script[^>]*?>.*<\/script\>/is','',$a);

20.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊,
然后再用語句____使得Apache把所有擴展名為php的文件都作為PHP腳本處理。

LoadModule php5_module "c:/php/php5apache2.dll";
AddType application/x-httpd-php .php

 21.語句 include 和 require 都能把另外一個文件包含到當前文件中,它們的區別是____;為了避免多次包含同一文件,可以用語句____來代替它們。

在如何處理失敗時,include() 產生一個警告而 require() 則導致一個致命錯誤;
require_once()/include_once()

22.一個函數的參數不能是對變量的引用,除非在php.ini中把____設為on 

allow_call_time_pass_reference boolean 
:是否啟用在函數調用時強制參數被按照引用傳遞

23..SQL 中LEFT JOIN的含義是__,如果 tbl_user記錄了學生的姓名(name)和學號(ID),
  tbl_score記錄了學生(有的學生考試以后被開除了,沒有其記錄)的學號(ID)和考試成績(score)以及考試科目(subject),要想打印出 各個學生姓名及對應的的各科總成績,則可以用SQL語句____.

答:自然左外連接

create database phpinterview;
use phpinterview
create table tbl_user
(
ID int not null PRIMARY KEY,
name varchar(50) not null,
primary key (ID)
);
create table tbl_score
(
ID int not null ,
score dec(6,2) not null,
subject varchar(20) not null
);

insert into tbl_user (ID, name) values (1, 'beimu');
insert into tbl_user (ID, name) values (2, 'aihui');
insert into tbl_score (ID, score, subject) values (1, 90, '語文');
insert into tbl_score (ID, score, subject) values (1, 80, '數學');
insert into tbl_score (ID, score, subject) values (2, 86, '數學');
insert into tbl_score (ID, score, subject) values (2, 96, '語文');

select A.id,sum(B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id

24.在PHP中,heredoc是一種特殊的字符串,它的結束標志必須____

結束標識符所在的行不能包含任何其它字符除";"

25.寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。

<?php
function my_scandir($dir)
{
    $files=array();
    if(is_dir($dir))
    {
        if($handle=opendir($dir))
        {
            while(($file=readdir($handle))!==false)
            {
                if($file!="." && $file!="..")
                {
                    if(is_dir($dir."/".$file))
                    {
                        $files[$file]=my_scandir($dir."/".$file);
                    }else{
                        $files[]=$dir."/".$file;
                    }
                }
            }
            closedir($handle);
            return $files;
        }
    }
}
print_r(my_scandir("D:Program FilesInternet ExplorerMUI")); ?>

26.類的屬性可以序列化后保存到 session 中,從而以后可以恢復整個類,這要用到的函數是 

serialize() /unserialize()

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM