<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            PHP面試題及答案()

            時間:2025-05-08 21:36:33 php語言 我要投稿

            PHP面試題及答案(匯總)

              PHP語言使用廣泛,語法吸收了C語言、Java和Perl的特點。本文是百分網小編搜索整理的關于PHP面試題及答案(匯總),供參考借鑒,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!

            PHP面試題及答案(匯總)

              基礎題:

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

              答:get是發送請求HTTP協議通過url參數傳遞進行接收,而post是實體數據,可以通過表單提交大量信息.

              2.session與cookie的區別?

              答:session:儲存用戶訪問的全局唯一變量,存儲在服務器上的PHP指定的目錄中的(session_dir)的位置進行的存放

              cookie:用來存儲連續訪問一個頁面時所使用,是存儲在客戶端,對于Cookie來說是存儲在用戶WIN的Temp目錄中的。

              兩者都可通過時間來設置時間長短

              3.數據庫中的事務是什么?

              答:事務(transaction)是作為一個單元的一組有序的數據庫操作。如果組中的所有操作都成功,則認為事務成功,即使只有一個操作失敗,事務也不成功。如果所有操作完成,

              事務則提交,其修改將作用于所有其他數據庫進程。如果一個操作失敗,則事務將回滾,該事務所有操作的影響都將取消。

              簡述題:

              1、用php打印出前一天的時間格式是2006-5-10 22:21:21(2分)

              答:echo date('Y-m-d H:i:s', strtotime('-1 days'));

              2、echo(),print(),print_r()的區別(3分)

              答:echo是PHP語句, print和print_r是函數,語句沒有返回值,函數可以有返回值(即便沒有用)

              print()    只能打印出簡單類型變量的值(如int,string)

              print_r() 可以打印出復雜類型變量的值(如數組,對象)

              echo     輸出一個或者多個字符串

              3、能夠使HTML和PHP分離開使用的模板(1分)

              答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

              5、使用哪些工具進行版本控制?(1分)

              答:cvs,svn,vss;

              6、如何實現字符串翻轉?(3分)

              答:echo strrev($a);

              7、優化MySQL數據庫的方法。(4分,多寫多得)

              答:

              1、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設置NOT NULL,例如'省份,性別',最好設置為ENUM

              2、使用連接(JOIN)來代替子查詢:

              a.刪除沒有任何訂單客戶:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)

              b.提取所有沒有訂單客戶:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)

              c.提高b的速度優化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid

              WHERE orderinfo.customerid IS NULL

              3、使用聯合(UNION)來代替手動創建的臨時表

              a.創建臨時表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`

              4、事務處理:

              a.保證數據完整性,例如添加和修改同時,兩者成立則都執行,一者失敗都失敗

              mysql_query("BEGIN");

              mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";

              mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");

              mysql_query("COMMIT");

              5、鎖定表,優化事務處理:

              a.我們用一個 SELECT 語句取出初始數據,通過一些計算,用 UPDATE 語句將新值更新到表中。

              包含有 WRITE 關鍵字的 LOCK TABLE 語句可以保證在 UNLOCK TABLES 命令被執行之前,

              不會有其它的訪問來對 inventory 進行插入、更新或者刪除的操作

              mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");

              mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);

              mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id);

              mysql_query("UNLOCK TABLES");

              6、使用外鍵,優化鎖定表

              a.把customerinfo里的customerid映射到orderinfo里的customerid,

              任何一條沒有合法的customerid的記錄不會寫到orderinfo里

              CREATE TABLE customerinfo

              (

              customerid INT NOT NULL,

              PRIMARY KEY(customerid)

              )TYPE = INNODB;

              CREATE TABLE orderinfo

              (

              orderid INT NOT NULL,

              customerid INT NOT NULL,

              PRIMARY KEY(customerid,orderid),

              FOREIGN KEY (customerid) REFERENCES customerinfo

              (customerid) ON DELETE CASCADE

              )TYPE = INNODB;

              注意:'ON DELETE CASCADE',該參數保證當customerinfo表中的一條記錄刪除的話同時也會刪除order

              表中的該用戶的所有記錄,注意使用外鍵要定義事務安全類型為INNODB;

              7、建立索引:

              a.格式:

              (普通索引)->

              創建:CREATE INDEX <索引名> ON tablename (索引字段)

              修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)

              創表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))

              (唯一索引)->

              創建:CREATE UNIQUE <索引名> ON tablename (索引字段)

              修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)

              創表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))

              (主鍵)->

              它是唯一索引,一般在創建表是建立,格式為:

              CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

              8、優化查詢語句

              a.最好在相同字段進行比較操作,在建立好的索引字段上盡量減少函數操作

              例子1:

              SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)

              SELECT * FROM order WHERE orderDate<"2008-01-01";(快)

              例子2:

              SELECT * FROM order WHERE addtime/7<24;(慢)

              SELECT * FROM order WHERE addtime<24*7;(快)

              例子3:

              SELECT * FROM order WHERE title like "%good%";

              SELECT * FROM order WHERE title>="good" and name<"good";

              8、PHP的意思(送1分)

              答:PHP是一個基于服務端來創建動態網站的腳本語言,您可以用PHP和HTML生成網站主頁

              9、mysql取得當前時間的函數是?,格式化日期的函數是(2分)

              答:now(),date()

              10、實現中文字串截取無亂碼的方法。(3分)

              答: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;

              }

              }

              11、您是否用過版本控制軟件? 如果有您用的版本控制軟件的名字是?(1分)

              12、您是否用過模板引擎? 如果有您用的模板引擎的名字是?(1分)

              答:用過,smarty

              13、請簡單闡述您最得意的開發之作(4分)

              答:信息分類

              14、對于大流量的網站,您采用什么樣的方法來解決訪問量問題?(4分)

              答:確認服務器硬件是否足夠支持當前的流量,數據庫讀寫分離,優化數據表,

              程序功能規則,禁止外部的盜鏈,控制大文件的下載,使用不同主機分流主要流量

              編程題:

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

              答:

              function my_scandir($dir)

              {

              $files = array();

              if ( $handle = opendir($dir) ) {

              while ( ($file = readdir($handle)) !== false ) {

              if ( $file != ".." && $file != "." ) {

              if ( is_dir($dir . "/" . $file) ) {

              $files[$file] = scandir($dir . "/" . $file);

              }else {

              $files[] = $file;

              }

              }

              }

              closedir($handle);

              return $files;

              }

              }

              2. 在 HTML 語言中,頁面頭部的 meta 標記可以用來輸出文件的編碼格式,以下是一個標準的 meta 語句

              請使用 PHP 語言寫一個函數,把一個標準 HTML 頁面中的類似 meta 標記中的 charset 部分值改為 big5

              請注意:

              1. 需要處理完整的 html 頁面,即不光此 meta 語句

              2. 忽略大小寫

              3. ' 和 " 在此處是可以互換的

              4. 'Content-Type' 兩側的引號是可以忽略的,但 'text/html; charset=gbk' 兩側的不行

              5. 注意處理多余空格

              3. 寫一個函數,算出兩個文件的相對路徑

              如 $a = '/a/b/c/d/e.php';

              $b = '/a/b/12/34/c.php';

              計算出 $b 相對于 $a 的相對路徑應該是 ../../c/d將()添上

              答:function getRelativePath($a, $b) {

              $returnPath = array(dirname($b));

              $arrA = explode('/', $a);

              $arrB = explode('/', $returnPath[0]);

              for ($n = 1, $len = count($arrB); $n < $len; $n++) {

              if ($arrA[$n] != $arrB[$n]) {

              break;

              }

              }

              if ($len - $n > 0) {

              $returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));

              }

              $returnPath = array_merge($returnPath, array_slice($arrA, $n));

              return implode('/', $returnPath);

              }

              echo getRelativePath($a, $b);

              填空題:

              1.在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預定義變量__$_SERVER['PHP_SELF']__中;而鏈接到當前頁面的URL記錄在預定義變量__$_SERVER['HTTP_REFERER']__

              中

              2.執行程序段<?php echo 8%(-2) ?>將輸出__0__。

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

              4.數組函數 arsort 的作用是__對數組進行逆向排序并保持索引關系__;語句 error_reporting(2047)的作用是__報告所有錯誤和警告__。

              5.PEAR中的數據庫連接字符串格式是____。

              6.寫出一個正則表達式,過慮網頁上的所有JS/VBS腳本(即把scrīpt標記及其內容都去掉):preg_replace(" /<script[^>].*?>.*?</script>/si", "newinfo", $script);

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

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

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

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

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

              11.SQL中LEFT JOIN的含義是__自然左外鏈接__。如果 tbl_user記錄了學生的姓名(name)和學號(ID),tbl_score記錄了學生(有的學生考試以后被開除了,沒有其記錄)的學號(ID)

              和考試成績(score)以及考試科目(subject),要想打印出各個學生姓名及對應的的各科總成績,則可以用SQL語句____。

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


            【PHP面試題及答案()】相關文章:

            精選php面試題及答案06-01

            PHP面試題及答案06-27

            最新的PHP面試題及答案08-16

            PHP算法面試題及答案11-04

            流行的php面試題及答案09-14

            PHP最新面試題及答案07-16

            PHP算法面試題目及答案10-21

            PHP常見面試題及答案10-09

            PHP企業面試題附答案08-19

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看