一、表單中 get與post提交方法的區別?javascript
答:get是發送請求HTTP協議經過url參數傳遞進行接收,而post是實體數據,能夠經過表單提交大量信息.php
二、session與cookie的區別?html
答:session:儲存用戶訪問的全局惟一變量,存儲在服務器上的php指定的目錄中的(session_dir)的位置進行的存放java
cookie:用來存儲連續訪問一個頁面時所使用,是存儲在客戶端,對於Cookie來講是存儲在用戶WIN的Temp目錄中的。mysql
二者均可經過時間來設置時間長短linux
三、數據庫中的事務是什麼?面試
答:事務(transaction)是做爲一個單元的一組有序的數據庫操做。若是組中的全部操做都成功,則認爲事務成功,即便只有一個操做失敗,事務也不成功。若是全部操做完成,事務則提交,其修改將做用於全部其餘數據庫進程。若是一個操做失敗,則事務將回滾,該事務全部操做的影響都將取消。正則表達式
四、用PHP打印出前一天的時間格式是2006-5-10 22:21:21(2分)算法
答:echo date('Y-m-d H:i:s', strtotime('-1 days'));sql
五、echo(),print(),print_r()的區別(3分)
答:echo是PHP語句, print和print_r是函數,語句沒有返回值,函數能夠有返回值(即使沒有用)
print()只能打印出簡單類型變量的值(如int,string)
print_r()能夠打印出複雜類型變量的值(如數組,對象)
echo 輸出一個或者多個字符串
六、可以使HTML和PHP分離開使用的模板(1分)
答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate
十、PHP的意思(送1分)
答:PHP是一個基於服務端來建立動態網站的腳本語言,您能夠用PHP和HTML生成網站主頁
十一、MYSQL取得當前時間的函數是?,格式化日期的函數是(2分)
答:now(),date()
十二、實現中文字串截取無亂碼的方法。(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;
}
}
1三、您是否用過模板引擎? 若是有您用的模板引擎的名字是?(1分)
答:用過,smarty
1四、對於大流量的網站,您採用什麼樣的方法來解決訪問量問題?(4分)
答:確認服務器硬件是否足夠支持當前的流量,數據庫讀寫分離,優化數據表,
程序功能規則,禁止外部的盜鏈,控制大文件的下載,使用不一樣主機分流主要流量
1五、用PHP寫出顯示客戶端IP與服務器IP的代碼1分)
答:打印客戶端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');
打印服務器IP:echo gethostbyname("www.bolaiwu.com")
1六、語句include和require的區別是什麼?爲避免屢次包含同一文件,可用(?)語句代替它們? (2分)
答:require->require是無條件包含也就是若是一個流程里加入require,不管條件成立與否都會先執行require
include->include有返回值,而require沒有(可能由於如此require的速度比include快)
注意:包含文件不存在或者語法錯誤的時候require是致命的,include不是
1七、如何修改SESSION的生存時間(1分).
答:方法1:將php.ini中的session.gc_maxlifetime設置爲9999重啓apache
方法2:$savePath = "./session_save_dir/";
$lifeTime = 小時 * 秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
方法3:setcookie() and session_set_cookie_params($lifeTime);
1八、有一個網頁地址, 好比PHP開發資源網主頁: http://www.phpres.com/index.html,如何獲得它的內容?($1分)
答:方法1(對於PHP5及更高版本):
$readcontents = fopen("http://www.phpres.com/index.html", "rb");
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;
方法2:
echo file_get_contents("http://www.phpres.com/index.html");
1九、在HTTP 1.0中,狀態碼401的含義是(?);若是返回「找不到文件」的提示,則可用 header 函數,其語句爲(?);(2分)
答:狀態401表明未被受權,header("Location:www.xxx.php");
20、在PHP中,heredoc是一種特殊的字符串,它的結束標誌必須?(1分)
答:heredoc的語法是用"<<<"加上本身定義成對的標籤,在標籤範圍內的文字視爲一個字符串
例子:
$str = <<<SHOW
my name is Jiang Qihui!
SHOW;
2一、談談asp,php,jsp的優缺點(1分)
答:ASP全名Active Server Pages,是一個WEB服務器端的開發環境,利用它能夠產生和運行動態的、交互的、高性能的WEB服務應用程序。ASP採用腳本語言VB Script(Java script)做爲本身的開發語言。
PHP是一種跨平臺的服務器端的嵌入式腳本語言. 它大量地借用C,Java和Perl語言的語法, 並耦合PHP本身的特性,使WEB開發者可以快速地寫出動態生成頁面.它支持目前絕大多數數據庫。還有一點,PHP是徹底免費的,不用花錢,你能夠從PHP官方站點(http://www.php.net)自由下載。並且你能夠不受限制地得到源碼,甚至能夠從中加進你本身須要的特點。
JSP 是Sun公司推出的新一代站點開發語言,他徹底解決了目前ASP,PHP的一個通病--腳本級執行(聽說PHP4 也已經在Zend 的支持下,實現編譯運行).Sun 公司藉助本身在Java 上的不凡造詣,將Java 從Java 應用程序和 Java Applet 以外,又有新的碩果,就是Jsp--Java Server Page。Jsp 能夠在Serverlet和JavaBean的支持下,完成功能強大的站點程序。
三者都提供在 HTML 代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。但JSP代碼被編譯成 Servlet 並由 Java 虛擬機解釋執行,這種編譯操做僅在對 JSP 頁面的第一次請求時發生。在 ASP 、PHP、JSP 環境下, HTML 代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的 HTML 頁面只依賴於 Web 服務器,而 ASP 、PHP、JSP 頁面須要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被從新嵌入到HTML 代碼中,而後一塊兒發送給瀏覽器。 ASP 、PHP、 JSP三者都是面向 Web 服務器的技術,客戶端瀏覽器不須要任何附加的軟件支持。
2二、談談對mvc的認識(1分)
答:由模型(model),視圖(view),控制器(controller)完成的應用程序由模型發出要實現的功能到控制器,控制器接收組織功能傳遞給視圖;
2三、寫出發貼數最多的十我的名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;
2四、 請說明php中傳值與傳引用的區別。何時傳值何時傳引用?(2分) 以題的形式 出
答:按值傳遞:函數範圍內對值的任何改變在函數外部都會被忽略
按引用傳遞:函數範圍內對值的任何改變在函數外部也能反映出這些修改
優缺點:按值傳遞時,php必須複製值。特別是對於大型的字符串和對象來講,這將會是一個代價很大的操做。
按引用傳遞則不須要複製值,對於性能提升頗有好處。
2五、 在PHP中error_reporting這個函數有什麼做用? (1分)
答:設置錯誤級別與錯誤信息回報
2六、請寫一個函數驗證電子郵件的格式是否正確 (2分)
答:function checkEmail($email)
{
$pregEmail = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";
return preg_match($pregEmail,$email);
}
2七、 簡述如何獲得當前執行腳本路徑,包括所獲得參數。(2分)
答:$script_name = basename(__file__); print_r($script_name);
2八、JS表單彈出對話框函數是?得到輸入焦點函數是? (2分)
答:彈出對話框: alert(),prompt(),confirm()
得到輸入焦點 focus()
2九、JS的轉向函數是?怎麼引入一個外部JS文件?(2分)
答:window.location.href,<script type="text/javascript" src="js/js_function.js"></script>
30、foo()和@foo()之間有什麼區別?(1分)
答:@foo()控制錯誤輸出
3一、如何聲明一個名爲」myclass」的沒有方法和屬性的類? (1分)
答:class myclass{ }
3二、如何實例化一個名爲」myclass」的對象?(1分)
答:new myclass()
3三、你如何訪問和設置一個類的屬性? (2分)
答:$object = new myclass();
$newstr = $object->test;
$object->test = "info"; sxhj_lzd@163
3四、mysql_fetch_row() 和mysql_fetch_array之間有什麼區別? (1分)
答:mysql_fetch_row是從結果集取出1行數組,做爲枚舉
mysql_fetch_array是從結果集取出一行數組做爲關聯數組,或數字數組,二者兼得
3五、GD庫是作什麼用的? (1分)
答:gd庫提供了一系列用來處理圖片的API,使用GD庫能夠處理圖片,或者生成圖片。
在網站上GD庫一般用來生成縮略圖或者用來對圖片加水印或者對網站數據生成報表。
3六、指出一些在PHP輸入一段HTML代碼的辦法。(1分)
答:echo "<a href='index.php'>aaa</a>";
3七、下面哪一個函數能夠打開一個文件,以對文件進行讀和寫操做?(1分)
(a) fget() (b) file_open() (c) fopen() (d) open_file() [ c ]
3八、下面哪一個選項沒有將 john 添加到users 數組中? (1分)
(a) $users[] = ‘john’;
(b) array_add($users,’john’);
(c) array_push($users,‘john’);
(d) $users ||= ‘john’; [ a , c ]
3九、下面的程序會輸入是否?(1分)
$num = 10;
function multiply(){
$num = $num * 10;
}
multiply();
echo $num;
?>
輸出:10
40、使用php寫一段簡單查詢,查出全部姓名爲「張三」的內容並打印出來 (2分)
表名User
Name Tel Content Date
張三 13333663366 大專畢業 2006-10-11
張三 13612312331 本科畢業 2006-10-15
張四 021-55665566 中專畢業 2006-10-15
請根據上面的題目完成代碼:
$mysql_db=mysql_connect("local","root","pass");
@mysql_select_db("DB",$mysql_db);
$result = mysql_query("SELECT * FROM `user` WHERE name='張三'");
while($rs = mysql_fetch_array($result)){
echo $rs["tel"].$rs["content"].$rs["date"];
}
4一、如何使用下面的類,並解釋下面什麼意思?(3)
class test{
function Get_test($num){
$num=md5(md5($num)."En");
return $num;
}
}
答:$testnum = "123";
$object = new test();
$encrypt = $object->Get_test($testnum);
echo $encrypt;
類test裏面包含Get_test方法,實例化類調用方法多字符串加密
4二、寫出 SQL語句的格式 : 插入,更新,刪除 (4分)
表名User
Name Tel Content Date
張三 13333663366 大專畢業 2006-10-11
張三 13612312331 本科畢業 2006-10-15
張四 021-55665566 中專畢業 2006-10-15
(a) 有一新記錄(小王 13254748547 高中畢業 2007-05-06)請用SQL語句新增至表中
mysql_query("INSERT INTO `user` (name,tel,content,date) VALUES
('小王','13254748547','高中畢業','2007-05-06')")
(b) 請用sql語句把張三的時間更新成爲當前系統時間
$nowDate = date("Ymd");
mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='張山'");
(c) 請寫出刪除名爲張四的所有記錄
mysql_query("DELETE FROM `user` WHERE name='張四'");
4三、請寫出數據類型(int char varchar datetime text)的意思; 請問varchar和char有什麼區別(2分)
答:int是數字類型,char固定長度字符串,varchar實際長度字符串,datetime日期時間型,text文本字符串
char的場地固定爲建立表設置的長度,varchar爲可變長度的字符
4四、寫出如下程序的輸出結果 (1分)
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
?>
答:4
4五、檢測一個變量是否有設置的函數是否?是否爲空的函數是?(2分)
答:isset($str),empty($str);
4六、取得查詢結果集總數的函數是?(1分)
答:mysql_num_rows($result);
4七、$arr = array('james', 'tom', 'symfony'); 請打印出第一個元素的值 (1分)
答:echo $array[0];
4八、請將41題的數組的值用','號分隔併合併成字串輸出(1分)
答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}
4九、$a = 'abcdef'; 請取出$a的值並打印出第一個字母(1分)
答:echo $a{0} 或 echo substr($a,0,1)
50、PHP能夠和sql server/oracle等數據庫鏈接嗎?(1分)
答:固然能夠
5一、請寫出PHP5權限控制修飾符(3分)
答:public(公共),private(私用),protected(繼承)
5二、請寫出php5的構造函數和析構函數(2分)
答:__construct , __destruct
5三、完成如下:
5四、
(一)建立新聞發佈系統,表名爲message有以下字段 (3分)
id 文章id
title 文章標題
content 文章內容
category_id 文章分類id
hits 點擊量
答:CREATE TABLE 'message'(
'id' int(10) NOT NULL auto_increment,
'title' varchar(200) default NULL,
'content' text,
'category_id' int(10) NOT NULL,
'hits' int(20),
PRIMARY KEY('id');
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
(二)一樣上述新聞發佈系統:表comment記錄用戶回覆內容,字段以下 (4分)
comment_id 回覆id
id 文章id,關聯message表中的id
comment_content 回覆內容
現經過查詢數據庫須要獲得如下格式的文章標題列表,並按照回覆數量排序,回覆最高的排在最前面
文章id 文章標題點擊量回複數量
用一個SQL語句完成上述查詢,若是文章沒有回覆則回覆數量顯示爲0
答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,
IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN
comment ON message.id=comment.id GROUP BY message.`id`;
(三)上述內容管理系統,表category保存分類信息,字段以下 (3分)
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用戶輸入文章時,經過選擇下拉菜單選定文章分類
寫出如何實現這個下拉菜單
答:function categoryList()
{
$result=mysql_query("select category_id,categroy_name from category")
or die("Invalid query: " . mysql_error());
print("<select name='category' value=''>\n");
while($rowArray=mysql_fetch_array($result))
{
print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>\n");
}
print("</select>");
}
5四、 寫一個函數,儘量高效的,從一個標準 url 裏取出文件的擴展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 須要取出 php 或 .php
答案1:
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(".",$file);
return $ext[1];
}
答案2:
function getExt($url) {
$url = basename($url);
$pos1 = strpos($url,".");
$pos2 = strpos($url,"?");
if(strstr($url,"?")){
return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);
} else {
return substr($url,$pos1);
}
}
5五、 在 HTML 語言中,頁面頭部的 meta 標記能夠用來輸出文件的編碼格式,如下是一個標準的 meta 語句
請使用 PHP 語言寫一個函數,把一個標準 HTML 頁面中的相似 meta 標記中的 charset 部分值改成 big5
請注意:
1. 須要處理完整的 html 頁面,即不光此 meta 語句
2. 忽略大小寫
3. ' 和 " 在此處是能夠互換的
4. 'Content-Type' 兩側的引號是能夠忽略的,但 'text/html; charset=gbk' 兩側的不行
5. 注意處理多餘空格
5六、寫一個函數,算出兩個文件的相對路徑
如 $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);
5七、如何實現PHP、JSP交互?
題目有點含糊不清,SOAP,XML_RPC,Socket function,CURL均可以實現這些,若是是考PHP和Java的整合,PHP內置了這種機制(若是考PHP和.NET的整合,也能夠這麼回答),例如$foo = new Java('java.lang.System');
5八、使用哪些工具進行版本控制?
CVS和SVN,SVN號稱下一代CVS,功能強大,不過CVS是老牌,市佔率很高.我一直用SVN,題目是問用什麼工具,呃,這個可能須要這麼回答:CVS Server on Apache做服務端,WinCVS做客戶端;Subversion on Apache/DAV 作服務端,TortoiseSVN作客戶端,或者Subclipse作客戶端
5九、如何實現字符串翻轉?
其實PHP自己就有字符串翻轉的函數:strrev(),不妨試試echo strrev($str);不過全部的這三種方法都不能解決中文字符串翻轉的問題,會出錯的。
代碼
<?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;
?>
60、優化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能夠提升一個數量級的查詢速度
6一、談談事務處理
A給B的帳戶轉帳50美圓的例子
6二、apache+mysql+php實現最大負載的方法
見7
6三、實現中文字串截取無亂碼的方法。
mb_substr()
?>
6四、用PHP寫出顯示客戶端IP與服務器IP的代碼:
打印客戶端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');
打印服務器IP:echo gethostbyname("http://www.baidu.com/")
6五、在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預約義變量(1)中;而連接到當前頁面的的前一頁面URL記錄在預約義變量(2)中
<?php
//本頁地址,SCRIPT_NAME也能夠:php/test.php
echo $_SERVER['PHP_SELF']."<br />";
//連接到當前頁面的前一頁面的 URL 地址:
echo $_SERVER['HTTP_REFERER']."<br />";
//其它的見參考手冊:語言參考》變量》預約義變量
//前執行腳本的絕對路徑名:D:Inetpubwwwrootphp est.php
echo $_SERVER["SCRIPT_FILENAME"]."<br />";
//正在瀏覽當前頁面用戶的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"]."<br />";
//查詢(query)的字符串(URL 中第一個問號 ? 以後的內容):id=1&bi=2
echo $_SERVER["QUERY_STRING"]."<br />";
//當前運行腳本所在的文檔根目錄:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"]."<br />";
?>
6六、執行程序段<?php echo 8%(-2) ?>將輸出__。
<?php
//參考手冊》語言參考》運算符》算術運算符》%爲取模運算,輸出0
echo 8%(-2)."<br />";
//取模 $a % $b 在 $a 爲負值時的結果也是負值。輸出-2
echo ((-8)%3)."<br />";
//輸出2
echo (8%(-3))."<br />";
?>
6七、在HTTP 1.0中,狀態碼 401 的含義是____;若是返回「找不到文件」的提示,則可用 header 函數,其語句爲____。
答:401表示未受權;header("HTTP/1.0 404 Not Found");[見參考手冊》函數參考》HTTP函數》header]
6八、數組函數 arsort 的做用是____;語句 error_reporting(2047)的做用是____。
答:arsort:對數組進行逆向排序並保持索引關係 error_reporting(2047)的做用是:report All errors and warnings
6九、寫出一個正則表達式,過慮網頁上的全部JS/VBS腳本(即把script標記及其內容都去掉):
<?php
$script="如下內容不顯示:<script language='javascript'>alert('cc');</script>";
echo preg_replace("/<script[^>].*?>.*?</script>/si", "替換內容", $script);
?>
70、以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊,
而後再用語句____使得Apache把全部擴展名爲php的文件都做爲PHP腳本處理。
答:LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php
見參考手冊》目錄》II. 安裝與配置》6. Windows 系統下的安裝》Microsoft Windows 下的 Apache 2.0.x
7一、語句 include 和 require 都能把另一個文件包含到當前文件中,它們的區別是____;爲了不屢次包含同一文件,能夠用語句____來代替它們。
答:在如何處理失敗時,include() 產生一個警告而 require() 則致使一個致命錯誤;require_once()/include_once()
7二、一個函數的參數不能是對變量的引用,除非在php.ini中把____設爲on.
答:allow_call_time_pass_reference boolean :是否啓用在函數調用時強制參數被按照引用傳遞, 見參考手冊》附錄G
7三、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,
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
7四、 在PHP中,heredoc是一種特殊的字符串,它的結束標誌必須____
答:結束標識符所在的行不能包含任何其它字符除";"
7五、寫一個函數,可以遍歷一個文件夾下的全部文件和子文件夾。
<?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"));
?>
7六、如下哪一句不會把 John 新增到 users 陣列?
$users[] = 'john';
成功把 John 新增到陣列 users。
array_add($users,’john’);
函式 array_add() 無定義。
array_push($users,‘john’);
成功把 John 新增到陣列 users。
$users ||= 'john';
語法錯誤。
7七、sort()、assort()、和 ksort() 有什麼分別?它們分別在什麼狀況下使用?
sort()
根據陣列中元素的值,以英文字母順序排序,索引鍵會由 0 到 n-1 從新編號。主要是當陣列索引鍵的值無關疼癢時用來把陣列排序。
assort()
PHP 沒有 assort() 函式,因此多是 asort() 的筆誤。
asort()
與 sort() 同樣把陣列的元素按英文字母順序來排列,不一樣的是全部索引鍵都得到保留,特別適合替聯想陣列排序。
ksort()
根據陣列中索引鍵的值,以英文字母順序排序,特別適合用於但願把索引鍵排序的聯想陣列。
7八、如下的代碼會產生什麼?爲何?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
因爲函式 multiply() 沒有指定 $num 爲全域變量(例如 global $num 或者 $_GLOBALS['num']),因此 $num 的值是 10。
7九、 reference 跟一個正規的變量有什麼分別?如何 pass by reference?在什麼狀況下咱們須要這樣作?
Reference 傳送的是變量的地址而非它的值,因此在函式中改變一個變量的值時,整個應用都見到這個變量的新值。
一個正規變量傳送給函式的是它的值,當函式改變這個變量的值時,只有這個函式才見到新值,應用的其餘部分仍然見到舊值。
$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 傳送參數
以 reference 傳送參數給函式,能夠使函式改變了的變量,即便在函式結束後仍然保留新值。
80、些函式能夠用來在現正執行的腳本中插入函式庫?
對這道題目不一樣的理解會有不一樣的答案,個人第一個想法是插入 PHP 函式庫不外乎 include()、include_once()、require()、require_once(),但細心再想,「函式庫」也應該包括 com 物件和 .net 函式庫,因此咱們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起「函式庫」的時候,別忘記這兩個函式。
8一、foo() 與 @foo() 有什麼分別?
foo() 會執行這個函式,任何解譯錯誤、語法錯誤、執行錯誤都會在頁面上顯示出來。
@foo() 在執行這個函式時,會隱藏全部上述的錯誤訊息。
不少應用程式都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的錯誤訊息,我認爲這是很嚴重的失誤,由於錯誤不應被隱藏,你必須妥善處理它們,可能的話解決它們。
8二、你如何替 PHP 的應用程式偵錯?
我並不常這樣作,我曾經試過不少不一樣的偵錯工具,在 Linux 系統中設定這些工具一點也不容易。不過如下我會介紹一個近來頗受注目的偵錯工具。
PHP - Advanced PHP Debugger 或稱 PHP - APD,第一步是執行如下的指令安裝:
pear install apd安裝後在你的腳本的開頭位置加入如下的語句開始進行偵錯:
apd_set_pprof_trace();執行完畢,打開如下檔案來查閱執行日誌:
apd.dumpdir
你也能夠使用 pprofp 來格式化日誌。
詳細的資料能夠參閱 http://us.php.net/manual/en/ref.apd.php。
8三、「===」是什麼?試舉一個「==」是真但「===」是假的例子。
「===」是給既能夠送回布爾值「假」,也能夠送回一個不是布爾值但卻能夠賦與「假」值的函式,strpos() 和 strrpos() 即是其中兩個例子。
問題的第二部份有點困難,想一個「==」是假,可是「===」是真的例子卻很容易,相反的例子卻不多。但我終於找到如下的例子:
if (strpos("abc", "a") == true){ // 這部分永不會被執行,由於 "a" 的位置是 0,換算成布爾值「假」}if (strpos("abc", "a") === true){ // 這部份會被執行,由於「===」保證函式 strpos() 的送回值不會換算成布爾值.}
8四、你會如何定義一個沒有成員函式或特性的類別 myclass?
class myclass{}
8五、你如何產生一個 myclass 的物件?
$obj = new myclass();
8六、在一個類別內如何存取這個類別的特性及變改它的值?
使用語句:$this->propertyName,例如:
class myclass{ private $propertyName; public function __construct() { $this->propertyName = "value"; }}
8七、include 和 include_once 有什麼分別?require 又如何?
三者都是用來在腳本中插入其餘檔案,視乎 url_allow_fopen 是否覈准,這個檔案能夠從系統內部或外部取得。但他們之間也有微細的分別:
include():這個函式允許你在腳本中把同一個檔案插入屢次,若果檔案不存在,它會發出系統警告並繼續執行腳本。
include_once():它跟 include() 的功能類似,正如它的名字所示,在腳本的執行期間,有關檔案只會被插入一次。
require():跟 include() 差很少,它也是用來在腳本中插入其餘檔案,但若果檔案不存在,它會發出系統警告,這個警告會引致致命錯誤令腳本停止執行
8八、如下哪個函式能夠把瀏覽器轉向到另外一個頁面?
redir()
這不是一個 PHP 函式,會引致執行錯誤。
header()
這個是正確答案,header() 用來插入卷頭資料,能夠用來使瀏覽器轉向到另外一個頁面,例如:
header("Location: http://www.search-this.com/");
location()
這不是一個 PHP 函式,會引致執行錯誤。
redirect()
這不是一個 PHP 函式,會引致執行錯誤。
8九、如下哪個函式能夠用來開啓檔案以便讀/寫?
fget()
這不是一個 PHP 函式,會引致執行錯誤。
file_open()
這不是一個 PHP 函式,會引致執行錯誤。
fopen()
這是正確答案,fopen() 能夠用來開啓檔案以便讀/寫,事實上這個函式還有不少選項,詳細資料請參閱 php.net。
open_file()
這不是一個 PHP 函式,會引致執行錯誤。
90、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() 的值。
9一、下面的代碼用來作什麼?請解釋。
$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 則是用來對應括號,第一個括號對的是月份,第二個括號對應的是日期,第三個括號對應的是年份。
9二、給你一行文字 $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);
9三、PHP 和 Perl 分辨陣列和散列表的方法有什麼差別?
這正是爲什麼我總是告訴別人選擇適當的編程語言,若果你只用一種語言的話你怎麼能回答這道問題?這道問題很簡單,Perl 全部陣列變量都是以 @ 開頭,例如 @myArray,PHP 則沿用 $ 做爲全部變量的開頭,例如 $myArray。
至於 Perl 表示散列表則用 %,例如 %myHash,PHP 則沒有分別,還是使用 $,例如 $myHash。
9四、你如何利用 PHP 解決 HTTP 的無狀態本質?
最主要的倆各選擇是 session 和 cookie。使用 session 的方法是在每一頁的開始加上 session_start(),而後利用 $_SESSION 散列表來儲存 session 變量。至於 cookie 你只需記着一個原則:在輸出任何文字以前調用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表即可以存取全部 cookie 變量。
還有一個不那麼可靠的方法,就是利用訪客的 IP 地址,這個方法有特定的危險性。
9五、GD 函式庫用來作什麼?
這個多是我最喜歡的函式庫,自從 PHP 4.3.0 版本後 GD 便內建在 PHP 系統中。這個函式庫讓你處理和顯示各式格式的圖檔,它的另外一個常見用途是製做所圖檔。GD 之外的另外一個選擇是 ImageMagick,但這個函式庫並不內建於 PHP 之中,必須由系統管理員安9六、試寫出幾個輸出一段 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;
9七、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 語言比網頁更加)。
9八、請說明 PHP 中傳值與傳引用的區別。何時傳值何時傳引用?
答:傳值只是把某一個變量的值傳給了另外一個變量,而引用則說明二者指向了同一個地方。
9九、在PHP中error_reporting這個函數有什麼做用?
答: The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script.
100、 請用正則表達式(Regular Expression)寫一個函數驗證電子郵件的格式是否正確。
答:
<?php
if(isset($_POST['action']) && $_POST['action']=='submitted')
{
$email=$_POST['email'];
if(!preg_match("/^(?:w+.?)*w+@(?:w+.?)*w+$/",$email))
{
echo "電子郵件檢測失敗";
}
else
{
echo "電子郵件檢測成功";
}
}
else
{
?>
<html>
<head><title>EMAIL檢測</title>
<script type="text/javascript">
function checkEmail(sText)
{
var reg=/^(?:w+.?)*w+@(?:w+.?)*w+$/;
var email=document.getElementById(sText).value;
if(!reg.test(email))
{
alert("電子郵件檢測失敗");
}
else
{
alert("電子郵件格式正確");
}
}
</script>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
電子郵件:<input type="text" id="email" name="email" /><br />
<input type="hidden" name="action" value="submitted" />
<input type="button" name="button" value="客戶端檢測" onclick="checkEmail('email')" />
<input type="submit" name="submit" value="服務器端檢測" />
</form>
</body>
</html>
<?php
}
?>
10一、 簡述如何獲得當前執行腳本路徑,包括所獲得參數。
<?php
echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
//echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>
10二、有一個一維數組,裏面存儲整形數據,請寫一個函數,將他們按從大到小的順序排列。要求執行效率高。並說明如何改善執行效率。(該函數必須本身實現,不能使用php函數)
<?php
function BubbleSort(&$arr)
{
$cnt=count($arr);
$flag=1;
for($i=0;$i<$cnt;$i++)
{
if($flag==0)
{
return;
}
$flag=0;
for($j=0;$j<$cnt-$i-1;$j++)
{
if($arr[$j]>$arr[$j+1])
{
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
$flag=1;
}
}
}
}
$test=array(1,3,6,8,2,7);
BubbleSort($test);
var_dump($test);
?>
10三、請舉例說明在你的開發過程當中用什麼方法來加快頁面的加載速度
答:要用到服務器資源時纔打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態,圖片等大文件單獨服務器。使用代碼優化工具啦
Mysql部分
10四、 建立poll表,用於記錄單選投票用戶的數據
字段包括 id[ Autoincreace ] , ip , time , iid(用戶選則的選項,int型)
寫出create上述table的完整sql語句
drop table if exists poll;
/*==============================================================*/
/* Table: poll */
/*==============================================================*/
create table poll
(
id int unsigned not null auto_increment,
ip varchar(15) not null,
time datetime not null,
iid int not null,
primary key (id)
)
10五、 寫出將一個選擇2號選項的ip爲127.0.0.1的用戶在當前時間的投票記錄到數據庫的SQL
insert into poll (ip,time,iid) values('127.0.0.1',now(),2);
10六、 寫出知足下邊條件的SQL語句
item表的結構爲 id(就是poll表中的iid) , descp(用戶選擇的選項的文字)
請查詢並返回10條記錄,包括ip和用戶選擇的選項的文字
10七、 如今由於投票人數太多,網站時常出現too many connection的錯誤,請提供解決方案
方法一:加大MySql的最大鏈接數
mysql的最大鏈接數默認是100, 這個數值對於併發鏈接不少的數據庫應用是遠遠不夠的,當鏈接請求大於默認鏈接數後,就會出現沒法鏈接數據庫的錯誤,所以咱們須要把它適當調大一些,編輯my.ini
修改 max_connections=1000
方法二,不用mysql數據庫,改成直接寫文件,詳細方法參照問題5
若非要用 mysql,還可
方法三:因爲用mysql語句調用數據庫時,在每次之執行語句前,會作一個臨時的變量用來打開數據庫,因此你在使用mysql語句的時候,記得在每次調用完mysql以後就關閉mysql臨時變量
10八、 在成功解決鏈接數的問題後,發現程序運行緩慢,經查發現是mysql併發太多,表被鎖定的現象嚴重,請提供解決方案
對於訪問量大的,原本就不推薦使用數據庫,能夠考慮直接寫到文本中,根據預測的訪問量,先定義倘若是100個文件文件名依次爲1.txt,2.txt…100.txt,每有用戶投票的時候,隨機往其中的一個文件中寫入投票信息。統計的時候,再對全部文本文件中的數據進行分析。必要的時候,再導入數據庫
drop table if exists item;
/*==============================================================*/
/* Table: item */
/*==============================================================*/
create table item
(
id int not null,
descp varchar(200) not null,
primary key (id)
);
select A.ip,b.descp
from poll A,item B
where A.id=B.id
limit 10
10九、 由於用戶實在太多,因此又分配給你兩臺服務器,你會如何來安排這3臺服務器?
對於服務器分配,其實有好幾種方案(建議採用LINUX主機),先列出一個解決方案。
1.考慮到電信,網通(南北差別)互訪問速度慢的問題,可讓電信的用戶走電信的線,網通的走網通的線。大體能夠這樣分配,國內南方用戶(電信用戶)擁有一臺服務器A;北方用戶(網通用戶)擁有一臺服務器B。國外的用戶也能夠考慮給一臺服務器C。用戶訪問的時候,首先訪問的是針對國外的服務器,那臺機器是電信網通的用戶訪問速度都差很少的(能夠考慮就租用香港或是什麼地方的),通過服務器C判斷後直接跳到相應的服務器。統計時三臺機器的數據合起來。
1十、 如今開始要求同一ip不能重複投票,請指出如何對數據表進行相應的修改
ALTER TABLE `phpinterview`.`poll` ADD unique INDEX `IX_poll_ip`(`ip`);
1十一、 原有數據已經有不少重複ip的數據了,因此咱們把它導出爲一個txt,格式和上邊的poll一致,用TAB鍵間隔,請寫一段程序,刪除ip有重複的記錄,並統計每一個投票選項的投票數
<?php
//讀取文本並放入數組
$apoll = file("c:\1.txt");
//對每一行數據進行分割,從而獲取了一個二維數組
for ($i=0;$i<count($apoll);$i++)
{
$poll[$i] = split(" ",$apoll[$i]);
}
//獲取IP、出現的次數數據
$arrIP=array();
for($i=0;$i<count($poll);$i++)
{
$arrIP[$poll[$i][1]]=isset($arrIP[$poll[$i][1]])?$arrIP[$poll[$i][1]]+1:1;
}
//獲取選項、投票個數
$arrRes=array();
for($i=0;$i<count($poll);$i++)
{
if($arrIP[$poll[$i][1]]==1)
{
$arrRes[$poll[$i][3]]=isset($arrRes[$poll[$i][3]])?$arrRes[$poll[$i][3]]+1:1;
}
}
var_dump($arrRes);
?>
mysql5.0測試版:
/*========================獲得測試數據c: .txt=========*/
SELECT *
into outfile 'c: .txt'
FROM `testok`;
/*========================載入臨時表=========*/
create TABLE phpinterview.testok(id int,ip varchar(15),time datetime,iid int);
LOAD DATA INFILE 'c: .txt'
into table testok;
/*=========================刪除ip有重複的記錄=========*/
delete A from testok A,(select ip from testok B group by ip having count(*) >1) B
where A.ip=B.ip
/*================統計每一個投票選項的投票數==============================*/
select iid,count(*) from testok B group by B.iid
1十二、使用php寫一段簡單查詢,查出全部姓名爲「張三」的內容並打印出來
表名User
Name Tel Content Date
張三 13333663366 大專畢業 2006-10-11
張三 13612312331 本科畢業 2006-10-15
張四 021-55665566 中專畢業 2006-10-15
請根據上面的題目完成代碼:
$mysql_db=mysql_connect("local","root","pass");
@mysql_select_db("DB",$mysql_db);
代碼
drop table if exists user;
/*==============================================================*/
/* Table: user */
/*==============================================================*/
create table user
(
`Name` varchar(20),
Tel varchar(16),
Content varchar(255),
`Date` date
)
insert into user(name,tel,content,`date`) values('張三','13333663366','大專畢業','2006-10-11');
insert into user(name,tel,content,`date`) values('張三','13612312331','本科畢業','2006-10-15');
insert into user(name,tel,content,`date`) values('張四','021-55665566','中專畢業','2006-10-1');
select * from user where name='張三';
代碼
<?php
header("content-type:text/html; charset=gbk");
$mysql_db=mysql_connect("localhost","root","");
@mysql_select_db("phpinterview",$mysql_db);
echo "<table>";
mysql_query("set names gbk");
$result=mysql_query("select Name,Tel,Content,Date from user where Name='張三'") or die("錯誤:".mysql_error());
while($row=mysql_fetch_array($result,MYSQL_BOTH))
{
echo "<tr><td>".$row["Name"]."</td><td>".$row["Tel"]."</td><td>".
$row["Content"]."</td><td>".$row["Date"]."</td></tr>";
}
mysql_free_result($result);
echo "</table>"
?>
11三、如何使用下面的類,並解釋下面什麼意思?
class test{
function Get_test($num){
$num=md5(md5($num)."En");
return $num;
}
}
<?php
/**
* 使用md5加密數據...
*
*/
class test{
function Get_test($num){
$num=md5(md5($num)."En");
return $num;
}
}
$a=new test();
echo $a->Get_test("123");
?>
11四、用javascipt打印「上海愛吉」
<html>
<head><title>JS打印</title></head>
<body>
<script type="text/javascript">
document.write("上海吉它");
</script>
</body>
</html>
11五、寫出 SQL語句的格式 : 插入,更新,刪除
代碼
select expression
from tablename
where condition
group by columns asc
with rollup
order by column asc
limit offset,rowcount;
insert into tablename(columname) values(exp);
update tablename set columnname=exp where condition order by column limit rowcount;
delete from tablename where condition order by column limit rowcount;
11六、某內容管理系統中,表message有以下字段
id 文章id
title 文章標題
content 文章內容
category_id 文章分類id
hits 點擊量
建立上表,寫出MySQL語句
11七、一樣上述內容管理系統:表comment記錄用戶回覆內容,字段以下
comment_id 回覆id
id 文章id,關聯message表中的id
comment_content 回覆內容
現經過查詢數據庫須要獲得如下格式的文章標題列表,並按照回覆數量排序,回覆最高的排在最前面
文章id 文章標題點擊量回複數量
用一個SQL語句完成上述查詢,若是文章沒有回覆則回覆數量顯示爲0
11八、上述內容管理系統,表category保存分類信息,字段以下
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用戶輸入文章時,經過選擇下拉菜單選定文章分類
寫出如何實現這個下拉菜單
drop table if exists Comment;
drop table if exists category;
drop table if exists message;
/*==============================================================*/
/* Table: Comment */
/*==============================================================*/
create table Comment
(
comment_id int unsigned not null,
id int unsigned not null,
comment_content text,
primary key (comment_id)
)
type = InnoDB;
/*==============================================================*/
/* Table: category */
/*==============================================================*/
create table category
(
category_id int not null AUTO_INCREMENT,
category_name varchar(40) not null,
primary key (category_id),
key AK_pk_category_id (category_id)
)
type = InnoDB;
/*==============================================================*/
/* Table: message */
/*==============================================================*/
create table message
(
id int not null,
title varchar(120) not null,
content text not null,
category_id int unsigned,
hit int unsigned,
primary key (id)
)
type = InnoDB;
select A.id,A.title,A.hits,IFNULL(B.num,0)
from message A left join (select id,count(*) as num from comment B group by id) B
on A.id=B.id
order by B.num desc;
<html>
<head><title>JS打印</title></head>
<body>
<form>
<select id="category" name="category">
<?php
mysql_connect("localhost","root","") or die("db conn error:".mysql_error());
mysql_select_db("phpinterview") or die("db error".mysql_error());
$result=mysql_query("select category_id,category_name from category");
while($row=mysql_fetch_array($result))
{
echo "<option value='".$row["cateogry_id"]."'>".$row["category_name"]."</option>";
}
?>
</select>
</form>
</body>
11九、內容管理系統:用戶提交內容後,系統生成靜態HTML頁面;寫出實現的基本思路
直接經過php寫入文件,或使用模板來替換標籤
120、 簡單描述用戶修改以發佈內容的實現流程和基本思路
更新內容,替換靜態文件
12一、 寫出如下程序的輸出結果
<?
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
?>
12二、寫出如下程序的輸出結果
<?
$str="cd";
$$str="hotdog";
$$str.="ok";
echo $cd;
?>
hotdogok
12三、有一表 menu(mainmenu,submenu,url),請用遞歸法寫出一樹形菜單,將全部的menu列出來
<html>
<head><title>JS打印</title></head>
<body>
<form>
<?php
function GenerateMenu($id=0,$str="")
{
$result=mysql_query("select mainmenu,url,submenu from menu where mainmenu=$id");
while($row=mysql_fetch_array($result))
{
echo $str.$row["url"]."<br />";
GenerateMenu($row["submenu"],$str."--");
}
mysql_free_result($result);
}
$link=mysql_connect("localhost","root","");
mysql_select_db("phpinterview");
GenerateMenu();
mysql_close($link)
?>
</form>
</body>
</html>
12四、 給你三個數,寫程序求出其最大值。
$var1=1;
$var2=7;
$var3=8;
$max=$var1>$var2?$var1:$var2;
$max=$max>$var3?$max:$var3;
echo $max;
12五、寫出發貼數最多的十我的名字的SQL,利用下表:
members(id,username,posts,pass,email)
SELECT username,count(*) as num FROM `members` group by username desc order by count(*) desc limit 10
10)如何經過javascript判斷一個窗口是i已經被屏蔽。
<script>
var result = window.open("/somepage.aspx");
if(result==null)
{
alert("瀏覽器不容許彈出窗口");
}
</script>
12六、寫出session的運行機制
用戶A訪問站點Y,若是站點Y執行了session_start();(如下假定session_start()老是存在)那麼會產生一個 session_id,這個session id通常會以COOKIE的形式保存到用戶A(咱們能夠經過在php.ini裏設置session.use_only_cookies爲1,強制SESSION ID必須以COOKIE傳遞。)。這時候SESSION ID表現爲$_COOKIE[’PHPSESSID’];(PHPSESSID可用session_name()函數來修改)
用戶A接着訪問,這個session id($_COOKIE[’PHPSESSID’])就會在A每次訪問Y的時候傳送到站點Y。
在站點Y上,會有這麼一個目錄,是用來保存SESSION的實際數據的。站點Y接收到session id,而後經過session id,來得到與SESSION數據的關聯,並返回SESSION數據。
12七、防止SQL注射漏洞通常用__addslashes___函數。
12八、請說明 PHP 中傳值與傳引用的區別。何時傳值何時傳引用?
傳值只是把某一個變量的值傳給了另外一個變量,而引用則說明二者指向了同一個地方。
12九、 在PHP中error_reporting這個函數有什麼做用?
設定php腳本的錯誤報告級別,說實話,我沒怎麼用過,我如今用的是C#開發,。
130、 請用正則表達式(Regular Expression)寫一個函數驗證電子郵件的格式是否正確。
/*
檢查郵件地址是否爲郵件地址,返回邏輯值
*/
function CheckMailAdr($str){
return(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$str));
}
13一、簡述如何獲得當前執行腳本路徑,包括所獲得參數。
說明:例若有一個腳本 www.domain.com,傳給他的參數有參數1,參數2,參數3…。傳遞參數的方法有多是GET有多是POST,
那麼如今請寫出相似:http://www.domain.com/script.php?參數1=值1&參數2=值2..... 的結果
關於前執行腳本路徑感受有點歧義:如果獲得該腳本在服務器上的絕對路徑用 $_SERVER[‘APPL_PHYSICAL_PATH’].如果該腳本的URL則能夠用獲取
獲取全部參數:能夠用如下方法:
//獲取post的數據
while (list($var, $value) = each($HTTP_POST_VARS))
{
echo "$var = $value n";
}
//獲取get方式的數據
while (list($var, $value) = each($HTTP_GET_VARS))
{
echo "$var = $value n";
}
132,有一個一維數組,裏面存儲整形數據,請寫一個函數,將他們按從大到小的順序排列。要求執行效率高。並說明如何改善執行效率。(該函數必須本身實現,不能使用php函數)
能夠用冒泡排序
<?php
function BubbleSort($str)
{
for ($i=0;$i<count($str);$i++)
{
for ($j=count($str)-2;$j>=$i;$j--)
{
if($str[$j+1]<$str[$j])
{
$tmp = $str[$j+1];
$str[$j+1]=$str[$j];
$str[$j]=$tmp;
}
}
}
return $str;
}
$str = array(3,6,1,5,9,0,4,6,11);
print_r(BubbleSort($str));
?>
13二、 負載均衡
目前主要有三種網絡負載平衡轉發技術,分別是網絡地址轉換、直接路由和IP隧道技術,採用不一樣的方法將客戶端發送的包轉發到目的服務器上,並確保目的服務器的返回包能夠順利到達客戶端。
● 網絡地址轉換
網絡地址轉換模式
在目標網絡地址轉換(DNAT)模式下,提供服務的IP被定義在平衡服務器上,應用服務器只須要定義各自的內部IP地址,可是必須將負載平衡服務器定義爲缺省路由,以保證返回客戶端的包通過負載平衡服務器,完成第二次地址轉換後再送回客戶端。
原理:
1. 客戶發出服務請求
2. 負載平衡服務器接收到請求,將數據包中目的IP地址改成選中的應用服務器IP地址,而後從新發出數據包
3. 應用服務器收到後,將應答包發回給負載平衡服務器
4. 負載平衡服務器收到應答包後將其中的源地址改回成服務IP,發回客戶端
缺點是網絡地址轉換的性能擴展能力有限,由於請求包和應答包都必須經過平衡服務器,當服務器的節點數量達到20或更多時,平衡服務器可能成爲整個系統的瓶頸。所以,這種方式主要適用於網絡負載不是很高的場合。
● 直接路由
和那種請求包和應答包都必須經過平衡服務器的網絡地址轉換不一樣,平衡服務器在直接路由模式下,將請求調度到不一樣的實際服務器,實際服務器直接將結果發回 客戶端。在大多數應用中,請求的字節數遠小於應答的字節數,因此與網絡地址轉換相比平衡服務器能處理更多的請求。採用直接路由能更大程度提升平衡服務器的 最大節點數和網絡吞吐量。甚至於平衡服務器使用100M全雙工的網卡,系統的最大數據吞吐量仍能夠超過1Gbps。
直接路由的特色是運用網絡分層原理,經過將目標IP包封裝在指定MAC地址的以太網數據包中欺騙TCP堆棧,所以實際服務器和負載平衡服務器必須在同一個物理網段中,而且在應用服務器上必須將服務IP定義在loopback虛擬網卡上。
原理:
1. 客戶發出服務請求
2. 負載平衡服務器接收到請求,將數據包中網卡物理地址(MAC)改成選中的應用服務器的MAC地址,而後從新發出數據包
3. 目標應用服務器收到後,將應答包經過路由器直接發回客戶端(不通過負載平衡服務器)
直接路由是最高效,網絡延時最小的負載平衡技術,可是,爲達到MAC地址的欺騙,負載平衡服務器和全部應用服務器必須在同一個物理網段。並且,如今出現操做系統缺省是關閉這種特性的,如FreeBSD,必須顯示打開相應的內核開關才能夠。不過,目前的主流操做系統,均可以知足直接路由的需求,如Windows、Linux、AIX、Solaris、FreeBSD等。
直接路由轉換模式
● IP隧道
與直接路由的方法相似,區別僅僅在於不是經過MAC欺騙來轉發數據包,而是經過創建負載平衡服務器和應用服務器之間的IP隧道來完成。
由於這些服務器的鏈接是經過IP隧道,平衡服務器和實際服務器能夠在不一樣的局域網甚至是廣域網。缺點是全部服務器必須使用IP隧道(IP封裝)協議,比直接路由的效率要低,並且,不是全部的操做系統都支持。
13三、 索引
索引的原理;索引的意義;什麼狀況下不易用索引,
13四、 2.int varchar char text 的最大值和在gbk和ntf_8中所佔字符數
13五、 3.xss是什麼?怎麼預防
13六、 4.include與require的區別
13七、 5.192.168.0.1用二進制和十進制分別如何表示
13八、 在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預約義變量__$_SERVER['PHP_SELF']__中;而連接到當前頁面的URL記錄在預約義變量__$_SERVER['HTTP_REFERER']__中
13九、 執行程序段<?php echo 8%(-2) ?>將輸出__0__。
140、 在HTTP 1.0中,狀態碼 401 的含義是____;若是返回「找不到文件」的提示,則可用 header 函數,其語句爲____。
14一、 數組函數 arsort 的做用是__對數組進行逆向排序並保持索引關係__;語句 error_reporting(2047)的做用是__報告全部錯誤和警告__。
14二、 PEAR中的數據庫鏈接字符串格式是____。
14三、 寫出一個正則表達式,過慮網頁上的全部JS/VBS腳本(即把scrīpt標記及其內容都去掉):preg_replace("/<script[^>].*?>.*?</script>/si", "newinfo", $script);
14四、 .以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊,而後再用語句____使得Apache把全部擴展名爲php的文件都做爲PHP腳本處理。
14五、 LoadModule php5_module "c:/php/php5apache2.dll" , AddType application/x-httpd-php .php,
14六、 語句 include 和 require 都能把另一個文件包含到當前文件中,它們的區別是____;爲了不屢次包含同一文件,能夠用語句__require_once||include_once__來代替它們。
14七、 類的屬性能夠序列化後保存到 session 中,從而之後能夠恢復整個類,這要用到的函數是____。
14八、 一個函數的參數不能是對變量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__設爲on.
14九、 11.SQL中LEFT JOIN的含義是__天然左外連接__。若是 tbl_user記錄了學生的姓名(name)和學號(ID),tbl_score記錄了學生(有的學生考試之後被開除了,沒有其記錄)的學號(ID)
150、 和考試成績(score)以及考試科目(subject),要想打印出各個學生姓名及對應的的各科總成績,則能夠用SQL語句____。
15一、 在PHP中,heredoc是一種特殊的字符串,它的結束標誌必須____。
15二、 寫一個函數,可以遍歷一個文件夾下的全部文件和子文件夾。
答:
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;
}
15四、簡述論壇中無限分類的實現原理。
答:
<?php
/*
數據表結構以下:
CREATE TABLE `category` (
`categoryID` smallint(5) unsigned NOT NULL auto_increment,
`categoryParentID` smallint(5) unsigned NOT NULL default '0',
`categoryName` varchar(50) NOT NULL default '',
PRIMARY KEY (`categoryID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES
(0, '一級類別'),
(1, '二級類別'),
(1, '二級類別'),
(1, '二級類別'),
(2, '三級類別'),
(2, '333332'),
(2, '234234'),
(3, 'aqqqqqd'),
(4, '哈哈'),
(5, '66333666');
*/
//指定分類id變量$category_id,而後返回該分類的全部子類
//$default_category爲默認的選中的分類
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
global $DB;
$sql = "SELECT * FROM category ORDER BY categoryID DESC";
$result = $DB->query( $sql );
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID], 'name' => $rows
[categoryName]);
}
if (!isset($category_array[$category_id]))
{
return "";
}
foreach($category_array[$category_id] AS $key => $category)
{
if ($category['id'] == $default_category)
{
echo "<option selected value=".$category['id']."";
}else
{
echo "<option value=".$category['id']."";
}
if ($level > 0)
{
echo ">" . str_repeat( " ", $level ) . " " . $category['name'] . "</option>\n";
}
else
{
echo ">" . $category['name'] . "</option>\n";
}
Get_Category($key, $level + 1, $default_category);
}
unset($category_array[$category_id]);
}
/*
函數返回的數組格式以下所示:
Array
(
[1] => Array ( [id] => 1 [name] =>一級類別 [level] => 0 [ParentID] => 0 )
[4] => Array ( [id] => 4 [name] =>二級類別 [level] => 1 [ParentID] => 1 )
[9] => Array ( [id] => 9 [name] =>哈哈 [level] => 2 [ParentID] => 4 )
[3] => Array ( [id] => 3 [name] =>二級類別 [level] => 1 [ParentID] => 1 )
[8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 )
[2] => Array ( [id] => 2 [name] =>二級類別 [level] => 1 [ParentID] => 1 )
[7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )
[6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 )
[5] => Array ( [id] => 5 [name] =>三級類別 [level] => 2 [ParentID] => 2 )
[10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 )
)
*/
//指定分類id,而後返回數組
function Category_array($category_id = 0,$level=0)
{
global $DB;
$sql = "SELECT * FROM category ORDER BY categoryID DESC";
$result = $DB->query($sql);
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows;
}
foreach ($category_array AS $key=>$val)
{
if ($key == $category_id)
{
foreach ($val AS $k=> $v)
{
$options[$k] =
array(
'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => $level, 'ParentID'=>$v['categoryParentID']
);
$children = Category_array($k, $level+1);
if (count($children) > 0)
{
$options = $options + $children;
}
}
}
}
unset($category_array[$category_id]);
return $options;
}
?>
<?php
class cate
{
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
echo $category_id;
$arr = array(
'0' =>array(
'1' => array('id' => 1, 'parent' => 0, 'name' => '1111'),
'2' => array('id' => 2, 'parent' => 0, 'name' => '2222'),
'4' =>array('id' => 4, 'parent' => 0, 'name' => '4444')
),
'1' =>array(
'3' => array('id' => 3, 'parent' => 1, 'name' => '333333'),
'5' =>array('id' => 5, 'parent' => 1, 'name' => '555555')
),
'3' =>array(
'6' => array('id' => 6, 'parent' => 3, 'name' => '66666'),
'7' =>array('id' => 7, 'parent' => 3, 'name' => '77777')
),
'4' =>array(
'8' => array('id' => 8, 'parent' => 4, 'name' => '8888'),
'9' =>array('id' => 9, 'parent' => 4, 'name' => '9999')
)
);
if (!isset($arr[$category_id]))
{
return "";
}
foreach($arr[$category_id] AS $key => $cate)
{
if ($cate['id'] == $default_category)
{
$txt = "<option selected value=".$cate['id']."";
}else{
$txt = "<option value=".$cate['id']."";
}
if ($level > 0)
{
$txt1 = ">" . str_repeat( "-", $level ) . " " . $cate['name'] . "</option>\n";
}else{
$txt1 = ">" . $cate['name'] . "</option>\n";
}
$val = $txt.$txt1;
echo $val;
self::Get_Category($key, $level + 1, $default_category);
}
}
function getFlush($category_id = 0,$level = 0, $default_category = 0)
{
ob_start();
self::Get_Category($category_id ,$level, $default_category);
$out = ob_get_contents();
ob_end_clean();
return $out;
}
}
$id =$_GET['id'];
echo "<select>";
$c = new cate();
//$c->Get_Category();
$ttt= $c->getFlush($id,'0','3');
echo $ttt;
echo "</select>";
?>
15五、 寫出以下程序的輸出結果
<?php
$str1 = null;
$str2 = false;
echo $str1==$str2 ? ‘相等’ : ‘不相等’;
$str3 = 」;
$str4 = 0;
echo $str3==$str4 ? ‘相等’ : ‘不相等’;
$str5 = 0;
$str6 = ‘0′;
echo $str5===$str6 ? ‘相等’ : ‘不相等’;
?>
15六、 寫出以下程序的輸出結果
<?php
$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = 」;
$a5 = ‘0′;
$a6 = ‘null’;
$a7 = array();
$a8 = array(array());
echo empty($a1) ? ‘true’ : ‘false’;
echo empty($a2) ? ‘true’ : ‘false’;
echo empty($a3) ? ‘true’ : ‘false’;
echo empty($a4) ? ‘true’ : ‘false’;
echo empty($a5) ? ‘true’ : ‘false’;
echo empty($a6) ? ‘true’ : ‘false’;
echo empty($a7) ? ‘true’ : ‘false’;
echo empty($a8) ? ‘true’ : ‘false’;
?>
15七、 寫出以下程序的輸出結果
<?php
$test = ‘aaaaaa’;
$abc = & $test;
unset($test);
echo $abc;
?>
15八、 寫出以下程序的輸出結果
<?Php
15九、 $count = 5;
function get_count(){
static $count = 0;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();
?>
15五、 寫出以下程序的輸出結果
<?php
$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
get_value();
echo $var1;
echo $var2;
?>
15六、 寫出以下程序的輸出結果
<?php
function get_arr($arr){
unset($arr[0]);
}
$arr1 = array(1, 2);
$arr2 = array(1, 2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);
echo count($arr2);
?>
15七、 使用五種以上方式獲取一個文件的擴展名
要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必須使用PHP自帶的處理函數進行處理,方法不能明顯重複,能夠封裝成函數,好比 get_ext1($file_name), get_ext2($file_name)
15八、 使用PHP描述冒泡排序和快速排序算法,對象能夠是一個數組
15九、 使用PHP描述順序查找和二分查找(也叫作折半查找)算法,順序查找必須考慮效率,對象能夠是一個有序數組
160、 寫一個二維數組排序算法函數,可以具備通用性,能夠調用php內置函數
【附答案】(如下答案不必定是最好的,只是一個簡單的參考)
1. 相等 相等 不相等
2. true true true true true false true false
3. aaaaaa
4. 5 0 1
5. 5 2
6. 1 2
7. 使用五種以上方式獲取一個文件的擴展名
function get_ext1($file_name){
return strrchr($file_name, ‘.’);
}
function get_ext2($file_name){
return substr($file_name, strrpos($file_name, ‘.’));
}
function get_ext3($file_name){
return array_pop(explode(‘.’, $file_name));
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’)));
}
16一、 使用PHP描述冒泡排序和快速排序算法,對象能夠是一個數組
//冒泡排序(數組排序)
function bubble_sort($array)
{
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j–){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
//快速排序(數組排序)
function quick_sort($array) {
if (count($array) <= 1) return $array;
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i=1; $i<count($array); $i++){
if ($array[$i] <= $key)
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}
$left_arr = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
16二、 使用PHP描述順序查找和二分查找(也叫作折半查找)算法,順序查找必須考慮效率,對象能夠是一個有序數組
//二分查找(數組裏查找某個元素)
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}
//順序查找(數組裏查找某個元素)
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i<$n; $i++){
if($array[$i]==$k){
break;
}
}
if ($i<$n){
return $i;
}else{
return -1;
}
}
16三、 寫一個二維數組排序算法函數,可以具備通用性,能夠調用php內置函數
//二維數組排序, $arr是數據,$keys是排序的健值,$order是排序規則,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
if (!is_array($arr)) {
return false;
}
$keysvalue = array();
foreach($arr as $key => $val) {
$keysvalue[$key] = $val[$keys];
}
if($order == 0){
asort($keysvalue);
}else {
arsort($keysvalue);
}
reset($keysvalue);
foreach($keysvalue as $key => $vals) {
$keysort[$key] = $key;
}
$new_array = array();
foreach($keysort as $key => $val) {
$new_array[$key] = $arr[$val];
}
return $new_array;
}
16四、 在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預約義變量(1)中;而連接到當前頁面的URL記錄在預約義變量(2)中。
16五、 執行程序段<?php echo 8%(-2) ?>將輸出(3)。
16六、 在HTTP 1.0中,狀態碼 401 的含義是(4);若是返回「找不到文件」的提示,則可用 header 函數,其語句爲(5)。
16七、 數組函數 arsort 的做用是(6);語句 error_reporting(2047)的做用是(7)。
16八、 PEAR中的數據庫鏈接字符串格式是(8)。
16九、 寫出一個正則表達式,過慮網頁上的全部JS/VBS腳本(即把script標記及其內容都去掉):(9)。
170、 以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句(10)動態裝載PHP模塊,
而後再用語句(11)使得Apache把全部擴展名爲php的文件都做爲PHP腳本處理。
17一、 語句 include 和 require 都能把另一個文件包含到當前文件中,它們的區別是(12);爲了不屢次包含同一文件,能夠用語句(13)來代替它們。
17二、 類的屬性能夠序列化後保存到 session 中,從而之後能夠恢復整個類,這要用到的函數是(14)。
17三、 一個函數的參數不能是對變量的引用,除非在php.ini中把(15)設爲on.
17四、 SQL 中LEFT JOIN的含義是(16)。
若是 tbl_user記錄了學生的姓名(name)和學號(ID),
tbl_score記錄了學生(有的學生考試之後被開除了,沒有其記錄)的學號(ID)和考試成績(score)以及考試科目(subject),
要想打印出各個學生姓名及對應的的各科總成績,則能夠用SQL語句(17)。
17五、 在PHP中,heredoc是一種特殊的字符串,它的結束標誌必須(18)。
17六、 寫一個函數,可以遍歷一個文件夾下的全部文件和子文件夾。
17七、 簡述論壇中無限分類的實現原理。
17八、 設計一個網頁,使得打開它時彈出一個全屏的窗口,該窗口中有一個文本框和一個按鈕。用戶在文本框中輸入信息後點擊按鈕就能夠把窗口關閉,而輸入的信息卻在主網頁中顯示。
17九、 在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預約義變量(1)中;而連接到當前頁面的的前一頁面URL記錄在預約義變量(2)中
<?php
//本頁地址,SCRIPT_NAME也能夠:php/test.php
echo $_SERVER['PHP_SELF'].」<br />」;
//連接到當前頁面的前一頁面的 URL 地址:
echo $_SERVER['HTTP_REFERER'].」<br />」;
//其它的見參考手冊:語言參考》變量》預約義變量
//前執行腳本的絕對路徑名:D:Inetpubwwwrootphp est.php
echo $_SERVER["SCRIPT_FILENAME"].」<br />」;
//正在瀏覽當前頁面用戶的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"].」<br />」;
//查詢(query)的字符串(URL 中第一個問號 ? 以後的內容):id=1&bi=2
echo $_SERVER["QUERY_STRING"].」<br />」;
//當前運行腳本所在的文檔根目錄:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"].」<br />」;
?>
180、 執行程序段<?php echo 8%(-2) ?>將輸出__。
18一、 <?php
//參考手冊》語言參考》運算符》算術運算符》%爲取模運算,輸出0
echo 8%(-2).」<br />」;
//取模 $a % $b 在 $a 爲負值時的結果也是負值。輸出-2
echo ((-8)%3).」<br />」;
//輸出2
echo (8%(-3)).」<br />」;
?>
在HTTP 1.0中,狀態碼 401 的含義是____;若是返回「找不到文件」的提示,則可用 header 函數,其語句爲____。
答:401表示未受權;header(「HTTP/1.0 404 Not Found」);[見參考手冊》函數參考》HTTP函數》header]
180、 數組函數 arsort 的做用是____;語句 error_reporting(2047)的做用是____。
答:arsort:對數組進行逆向排序並保持索引關係 error_reporting(2047)的做用是:report All errors and warnings
18一、 寫出一個正則表達式,過慮網頁上的全部JS/VBS腳本(即把script標記及其內容都去掉):
<?php
$script=」如下內容不顯示:<script language=’javascript’>alert(‘cc’);</script>」;
echo preg_replace(「/<script[^>].*?>.*?</script>/si」, 「替換內容」, $script);
?>
18二、 以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊,
而後再用語句____使得Apache把全部擴展名爲php的文件都做爲PHP腳本處理。
答:LoadModule php5_module 「c:/php/php5apache2.dll」;AddType application/x-httpd-php .php
見參考手冊》目錄》II. 安裝與配置》6. Windows 系統下的安裝》Microsoft Windows 下的 Apache 2.0.x
18三、 語句 include 和 require 都能把另一個文件包含到當前文件中,它們的區別是____;爲了不屢次包含同一文件,能夠用語句____來代替它們。
答:在如何處理失敗時,include() 產生一個警告而 require() 則致使一個致命錯誤;require_once()/include_once()
18四、 一個函數的參數不能是對變量的引用,除非在php.ini中把____設爲on.
答:allow_call_time_pass_reference boolean :是否啓用在函數調用時強制參數被按照引用傳遞, 見參考手冊》附錄G
18五、 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,
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
18六、 在PHP中,heredoc是一種特殊的字符串,它的結束標誌必須____
答:結束標識符所在的行不能包含任何其它字符除」;」
18七、 寫一個函數,可以遍歷一個文件夾下的全部文件和子文件夾。
<?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」));
?>
18八、 在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預約義變量(1)中;而連接到當前頁面的的前一頁面URL記錄在預約義變量(2)中 <?php 18九、 執行程序段<?php echo 8%(-2) ?>將輸出__。 <?php 190、 在HTTP 1.0中,狀態碼 401 的含義是____;若是返回「找不到文件」的提示,則可用 header 函數,其語句爲____。 答:401表示未受權;header("HTTP/1.0 404 Not Found");[見參考手冊》函數參考》HTTP函數》header] 19一、 數組函數 arsort 的做用是____;語句 error_reporting(2047)的做用是____。 19二、 寫出一個正則表達式,過慮網頁上的全部JS/VBS腳本(即把script標記及其內容都去掉): <?php 19二、 以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊, 見參考手冊》目錄》II. 安裝與配置》6. Windows 系統下的安裝》Microsoft Windows 下的 Apache 2.0.x 19三、 語句 include 和 require 都能把另一個文件包含到當前文件中,它們的區別是____;爲了不屢次包含同一文件,能夠用語句____來代替它們。 19四、 一個函數的參數不能是對變量的引用,除非在php.ini中把____設爲on. 19五、 SQL 中LEFT JOIN的含義是__,若是 tbl_user記錄了學生的姓名(name)和學號(ID), 答:天然左外鏈接 create database phpinterview; 19六、 在PHP中,heredoc是一種特殊的字符串,它的結束標誌必須____ 19七、 寫一個函數,可以遍歷一個文件夾下的全部文件和子文件夾。 <?php |
19八、 $arr = array('james', 'tom', 'symfony'); 請打印出第一個元素的值 (1分)
答:echo $array[0];
19九、 請將41題的數組的值用','號分隔併合併成字串輸出(1分)
答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}
200、 $a = 'abcdef'; 請取出$a的值並打印出第一個字母(1分)
答:echo $a{0} 或 echo substr($a,0,1)
20一、 PHP能夠和sql server/oracle等數據庫鏈接嗎?(1分)
答:固然能夠
20二、 請寫出PHP5權限控制修飾符(3分)
答:public(公共),private(私用),protected(繼承)
20三、 請寫出php5的構造函數和析構函數(2分)
答:__construct , __destruct
20四、 完成如下:
(一)建立新聞發佈系統,表名爲message有以下字段 (3分)
id 文章id
title 文章標題
content 文章內容
category_id 文章分類id
hits 點擊量
答:CREATE TABLE 'message'(
'id' int(10) NOT NULL auto_increment,
'title' varchar(200) default NULL,
'content' text,
'category_id' int(10) NOT NULL,
'hits' int(20),
PRIMARY KEY('id');
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
(二)一樣上述新聞發佈系統:表comment記錄用戶回覆內容,字段以下 (4分)
comment_id 回覆id
id 文章id,關聯message表中的id
comment_content 回覆內容
現經過查詢數據庫須要獲得如下格式的文章標題列表,並按照回覆數量排序,回覆最高的排在最前面
文章id 文章標題 點擊量 回覆數量
用一個SQL語句完成上述查詢,若是文章沒有回覆則回覆數量顯示爲0
答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,
IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN
comment ON message.id=comment.id GROUP BY message.`id`;
(三)上述內容管理系統,表category保存分類信息,字段以下 (3分)
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用戶輸入文章時,經過選擇下拉菜單選定文章分類
寫出如何實現這個下拉菜單
答:function categoryList()
{
$result=mysql_query("select category_id,categroy_name from category")
or die("Invalid query: " . mysql_error());
print("<select name='category' value=''>\n");
while($rowArray=mysql_fetch_array($result))
{
print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>\n");
}
print("</select>");
}
20五、 寫一個函數,儘量高效的,從一個標準 url 裏取出文件的擴展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 須要取出 php 或 .php
答案1:
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(".",$file);
return $ext[1];
}
答案2:
function getExt($url) {
$url = basename($url);
$pos1 = strpos($url,".");
$pos2 = strpos($url,"?");
if(strstr($url,"?")){
return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);
} else {
return substr($url,$pos1);
}
}
20六、 在 HTML 語言中,頁面頭部的 meta 標記能夠用來輸出文件的編碼格式,如下是一個標準的 meta 語句
請使用 PHP 語言寫一個函數,把一個標準 HTML 頁面中的相似 meta 標記中的 charset 部分值改成 big5
請注意:
1. 須要處理完整的 html 頁面,即不光此 meta 語句
2. 忽略大小寫
3. ' 和 " 在此處是能夠互換的
4. 'Content-Type' 兩側的引號是能夠忽略的,但 'text/html; charset=gbk' 兩側的不行
5. 注意處理多餘空格
20七、 寫一個函數,算出兩個文件的相對路徑
如 $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);
20八、 在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預約義變量__$_SERVER['PHP_SELF']__中;而連接到當前頁面的URL記錄在預約義變量__$_SERVER['HTTP_REFERER']__
中
20九、 執行程序段<?php echo 8%(-2) ?>將輸出__0__。
2十、 在HTTP 1.0中,狀態碼 401 的含義是____;若是返回「找不到文件」的提示,則可用 header 函數,其語句爲____。
2十一、 數組函數 arsort 的做用是__對數組進行逆向排序並保持索引關係__;語句 error_reporting(2047)的做用是__報告全部錯誤和警告__。
2十二、 PEAR中的數據庫鏈接字符串格式是____。
21三、 寫出一個正則表達式,過慮網頁上的全部JS/VBS腳本(即把scrīpt標記及其內容都去掉):preg_replace("/<script[^>].*?>.*?</script>/si", "newinfo", $script);
21四、 以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊,而後再用語句____使得Apache把全部擴展名爲php的文件都做爲PHP腳本處理。
LoadModule php5_module "c:/php/php5apache2.dll" , AddType application/x-httpd-php .php,
21五、 語句 include 和 require 都能把另一個文件包含到當前文件中,它們的區別是____;爲了不屢次包含同一文件,能夠用語句__require_once||include_once__來代替它們。
21六、 類的屬性能夠序列化後保存到 session 中,從而之後能夠恢復整個類,這要用到的函數是____。
21七、 一個函數的參數不能是對變量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__設爲on.
21八、 SQL中LEFT JOIN的含義是__天然左外連接__。若是 tbl_user記錄了學生的姓名(name)和學號(ID),tbl_score記錄了學生(有的學生考試之後被開除了,沒有其記錄)的學號(ID)
和考試成績(score)以及考試科目(subject),要想打印出各個學生姓名及對應的的各科總成績,則能夠用SQL語句____。
21九、 在PHP中,heredoc是一種特殊的字符串,它的結束標誌必須____。
220、 寫一個函數,可以遍歷一個文件夾下的全部文件和子文件夾。
答:
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;
}
}
22一、 簡述論壇中無限分類的實現原理。
答:
<?php
/*
數據表結構以下:
CREATE TABLE `category` (
`categoryID` smallint(5) unsigned NOT NULL auto_increment,
`categoryParentID` smallint(5) unsigned NOT NULL default '0',
`categoryName` varchar(50) NOT NULL default '',
PRIMARY KEY (`categoryID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES
(0, '一級類別'),
(1, '二級類別'),
(1, '二級類別'),
(1, '二級類別'),
(2, '三級類別'),
(2, '333332'),
(2, '234234'),
(3, 'aqqqqqd'),
(4, '哈哈'),
(5, '66333666');
*/
//指定分類id變量$category_id,而後返回該分類的全部子類
//$default_category爲默認的選中的分類
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
global $DB;
$sql = "SELECT * FROM category ORDER BY categoryID DESC";
$result = $DB->query( $sql );
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID], 'name' => $rows
[categoryName]);
}
if (!isset($category_array[$category_id]))
{
return "";
}
foreach($category_array[$category_id] AS $key => $category)
{
if ($category['id'] == $default_category)
{
echo "<option selected value=".$category['id']."";
}else
{
echo "<option value=".$category['id']."";
}
if ($level > 0)
{
echo ">" . str_repeat( " ", $level ) . " " . $category['name'] . "</option>\n";
}
else
{
echo ">" . $category['name'] . "</option>\n";
}
Get_Category($key, $level + 1, $default_category);
}
unset($category_array[$category_id]);
}
/*
函數返回的數組格式以下所示:
Array
(
[1] => Array ( [id] => 1 [name] => 一級類別 [level] => 0 [ParentID] => 0 )
[4] => Array ( [id] => 4 [name] => 二級類別 [level] => 1 [ParentID] => 1 )
[9] => Array ( [id] => 9 [name] => 哈哈 [level] => 2 [ParentID] => 4 )
[3] => Array ( [id] => 3 [name] => 二級類別 [level] => 1 [ParentID] => 1 )
[8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 )
[2] => Array ( [id] => 2 [name] => 二級類別 [level] => 1 [ParentID] => 1 )
[7] => Array ( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )
[6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 )
[5] => Array ( [id] => 5 [name] => 三級類別 [level] => 2 [ParentID] => 2 )
[10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 )
)
*/
//指定分類id,而後返回數組
function Category_array($category_id = 0,$level=0)
{
global $DB;
$sql = "SELECT * FROM category ORDER BY categoryID DESC";
$result = $DB->query($sql);
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows;
}
foreach ($category_array AS $key=>$val)
{
if ($key == $category_id)
{
foreach ($val AS $k=> $v)
{
$options[$k] =
array(
'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => $level, 'ParentID'=>$v['categoryParentID']
);
$children = Category_array($k, $level+1);
if (count($children) > 0)
{
$options = $options + $children;
}
}
}
}
unset($category_array[$category_id]);
return $options;
}
?>
<?php
class cate
{
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
echo $category_id;
$arr = array(
'0' => array(
'1' => array('id' => 1, 'parent' => 0, 'name' => '1111'),
'2' => array('id' => 2, 'parent' => 0, 'name' => '2222'),
'4' => array('id' => 4, 'parent' => 0, 'name' => '4444')
),
'1' => array(
'3' => array('id' => 3, 'parent' => 1, 'name' => '333333'),
'5' => array('id' => 5, 'parent' => 1, 'name' => '555555')
),
'3' => array(
'6' => array('id' => 6, 'parent' => 3, 'name' => '66666'),
'7' => array('id' => 7, 'parent' => 3, 'name' => '77777')
),
'4' => array(
'8' => array('id' => 8, 'parent' => 4, 'name' => '8888'),
'9' => array('id' => 9, 'parent' => 4, 'name' => '9999')
)
);
if (!isset($arr[$category_id]))
{
return "";
}
foreach($arr[$category_id] AS $key => $cate)
{
if ($cate['id'] == $default_category)
{
$txt = "<option selected value=".$cate['id']."";
}else{
$txt = "<option value=".$cate['id']."";
}
if ($level > 0)
{
$txt1 = ">" . str_repeat( "-", $level ) . " " . $cate['name'] . "</option>\n";
}else{
$txt1 = ">" . $cate['name'] . "</option>\n";
}
$val = $txt.$txt1;
echo $val;
self::Get_Category($key, $level + 1, $default_category);
}
}
function getFlush($category_id = 0,$level = 0, $default_category = 0)
{
ob_start();
self::Get_Category($category_id ,$level, $default_category);
$out = ob_get_contents();
ob_end_clean();
return $out;
}
}
$id =$_GET['id'];
echo "<select>";
$c = new cate();
//$c->Get_Category();
$ttt= $c->getFlush($id,'0','3');
echo $ttt;
echo "</select>";
?>
22二、 要求在一組數中,插入一個新數,並維護原來的排序方式不變
22三、 用二分法在一個數組中查找你所需元素
22四、 打印一個楊輝三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
22五、 使用PHP描述冒泡排序和快速排序算法,對象能夠是一個數組
22六、 寫一個二維數組排序函數,可以具備通用性
22七、 寫一個function實現數組內每一個元素之間加法的遞代運算?
注:數組元素所有爲天然數.
例:
$data=array(1,2,3);
程序要求打印出數組每一個數組元素相互之間各類可能性加法(包括元素自已自己加法)
1+1=2,1+2=3,1+3=5,
2+2=4,2+3=5,
3+3=6
打印出如下結果
Array
(
[0] => Array
(
[0] => 2
[1] => 3
[2] => 4
)
[1] => Array
(
[1] => 4
[2] => 5
)
[2] => Array
(
[2] => 6
)
)
22八、 設有n 種物品,每種物品有一個重量及一個價值。但每種物品的數量是無限的,同時有一個揹包,最大載重量爲M,今從n 種物品中選取若干件(同一種物品能夠屢次選取),使其重量的和小於等於M,而價值的和爲最大。
22九、 設隨機抽到A的機率爲0.1,B的機率爲0.2,C的機率爲0.3,D的機率爲0.4,如今求按此機率隨機抽出一個字母的算法,
230、 一個小孩買了價值少於1美圓的糖,並將1美圓的錢交給售貨員。售貨員但願用數目最少的硬幣個數找給小孩。假設提供了數目不限的面值爲2 5美分、1 0美分、5美分、及1美分的硬幣,寫一個算法讓售貨員用最少的硬幣個數找給小孩
23一、 五隻猴子採得一堆桃子,猴子彼此約定隔天早起後再分食。不過,就在半夜裏,一隻猴子偷偷起來,把桃子均分紅五堆後,發現還多一個,它吃掉這桃子,並拿走了其中一堆。第二隻猴子醒來,又把桃子均分紅五堆後,仍是多了一個,它也吃掉這個桃子,並拿走了其中一堆。第三隻,第四隻,第五隻猴子都依次如此分食桃子。那麼桃子數最少應該有幾個呢?
23二、 公雞3元每隻,母雞5元每隻,小雞1元3只,一百元錢買一百隻雞。請求出公雞,母雞和小雞的數目。
23三、 小猴第一天摘下若干棗子,立即吃掉了一半,不過癮又多吃了一個;次日吃了剩下的一半又多吃了一個;之後每一天都吃了前一天剩下的一半多一個。到第十天小猴再想吃時,見到只剩下一隻棗子了。問第一天這堆棗子有多少?
23四、 有一艘大船準備用來裝載貨物。全部待裝貨物都裝在貨箱中且全部貨箱的大小都同樣,但貨箱的重量都各不相同。設第i 個貨箱的重量爲wi(1≤i≤n),而貨船的最大載重量爲c,如何在貨船上裝入最多的貨物。
23五、 小球從10米高處自由下落,每次彈起的高度是下落高度的70%,當小球彈起的高度不足原高度的千分之一時,小球很快會中止跳動,計算小球在整個彈跳過程當中所經歷的總路程(忽略彈起高度不足原高度千分之一的部分)。
23六、 JS下有一個字符串var str = '1|2|3|4|5|6#1|2|3|4#1|2|3|4|5|6|7|8'; 請用「#」號將其分割爲數組,再用「|」將其分割爲2維數組。能夠用例如ary[0][0]這樣的各式取出數組中的每一個元素。最後輸出其中最長數組的編號(1,2,3這樣的天然數),這個數組中元素的個數。以及大數組中每一個元素。如圖:
22八、 假設數據庫中有兩個表table1和table2,這兩個表結構相同,都有三個字段id、name和description,分別存放編號、名稱和描述。
如今請作一個頁面,包含兩個下拉菜單,第一個下拉菜單內是table1中的name,第二個下拉菜單內是table2中的name。下拉菜單的默認值是無,當選擇了table1中的任意一個name時,出現一個textarea框顯示name對應的description。當選擇了table2中的任意一個name時,出現一個textarea框顯示name對應的description,而且保留上一個下拉菜單的值和textarea中的值。Textarea中的值可修改,須要作到修改第一個textarea的值,而後更改第二個下拉菜單的值後,第一個textarea中的修改值仍然保留。最後是一個提交按鈕,只有按下提交按鈕,纔會把textarea中的數據纔會存入數據庫。如圖:
默認界面:
選擇第一個下拉菜單的值:
修改第一個菜單的中描述的值,而後選擇第二個菜單的name值
提交後纔會存入數據庫:
23八、 有一個數組array('a','b','c','d','e','f'),請使用兩段代碼分別達成圖1和圖2中的效果。
圖1:
圖2:
23九、 請使用一句話將相似「1910-09-09」的日期各式轉換爲「一九一零年九月九日」這樣的各式。(須要有通用性,是否是一句話不是關鍵,但不容許使用if\switch\while\for等語句)。
240、 有一張表test,包含四個字段id, question, answer,rank裏面有1000條數據。要求作一個頁面,隨機抽取50道題目(都是單選題),分頁顯示全部的題目,每頁顯示1題。按鈕包含:第一題—上一頁—當前第N題—下一頁—最後一題。交卷後將每一題的答案和數據庫中的標準答案做比較,相同+2分,最後得出成績存入rank。
24一、 簡述如何獲得當前執行腳本路徑,包括所獲得參數。
說明:例若有一個腳本www.domain.com,傳給他的參數有參數1,參數2,參數3….
傳遞參數的方法有多是GET有多是POST,那麼如今請寫出相似
http://www.domain.com/script.php? 參數1=值1&參數2=值2..... 的結果
23八、 寫出一個能建立多級目錄的PHP函數
23九、 有一個留言板,用mysql作數據庫
用戶信息包括:用戶名,密碼,email
留言內容包括:留言ID,標題,內容,發表時間,狀態(審覈,未審覈)
請實現下列需求:
1)數據庫結構。無需寫建表語句,用相似下面的表格,描述清楚便可
代表 |
table_aaa |
||
字段名 |
字段說明 |
字段類型 |
索引 |
name |
姓名 |
Varchar(64) |
惟一索引 |
gender |
性別 |
Enum(‘M’,‘F’) |
|
注意,要在索引欄中註明是否須要建立索引,以及要建立的索引的類型
用一個sql語句查詢出發表留言數量大於10條的用戶名及其留言數量,查詢結果按留言數量降序排列
240、 寫出php的public、protected、private三種訪問控制模式的區別
24一、 給你三個數,寫程序求出其最大值。
24二、 2五、寫出查詢發貼數最多的十我的名字的SQL,利用下表:
members(id,username,posts,pass,email)
24三、 如何經過javascript判斷一個窗口是否已經被屏蔽。
24四、 有一數組 $a=array(4,3,8,9,2);請將其從新排序(按從小到大的順序列出)。
24五、 寫出匹配郵箱地址和URL的兩個正則表達式。相似下面的:
郵箱地址:user_name.first@hztraining.com
URL地址:http://www.hztraining.com/user_profile.php?uid=100
24六、 對於大流量的網站,您採用什麼樣的方法來解決訪問量問題?
24七、 MySQL數據庫,一天一萬條以上的增量,怎麼優化?
24八、 寫個函數來解決多線程同時讀寫一個文件的問題。
24九、 一個一維數組,裏面存儲整形數據,請寫一個函數,將他們按從大到小的順序排列。要求執行效率高。並說明如何改善執行效率。(該函數必須本身實現,不能使用php函數)
250、 寫一個函數,算出兩個文件的相對路徑
如 $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
計算出 $b 相對於 $a 的相對路徑應該是 ../../c/d將()添上
25一、 用寫一個類實現會員管理,要求實現:
1)用文件存儲會員信息,會員註冊輸入用戶名和電子郵件就行。
2)用戶信息包括:用戶名,電子郵件。
3)要求用戶能夠登陸、退出和註銷用戶。
4)若是用戶沒有退出,下次登陸自動顯示用戶名。
5)保存用戶上次瀏覽時間。