試卷

一 試題:http://blog.csdn.net/chinalinuxzend/archive/2009/05/11/4167319.aspx

有答案的 http://blog.csdn.net/beimuaihui/archive/2007/10/21/1836071.aspx

http://hi.baidu.com/qibaiyilang/blog/item/d954d40e72ba32c27bcbe1ad.html

http://hi.baidu.com/xmseo/blog/item/674951e7b0d4cb2db93820ca.html  這裏的答案是最全的

1、echo print print_r的區別

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

3、用PHP寫出顯示客戶端IP與服務器IP的代碼

4、如何實現字符串反轉

5、優化數據庫的方法

6、MYSQL取得當前時間的函數是?,格式化日期的函數是

7、實現中文字串截取無亂碼的方法

8、對於大流量的網站你使用什麼樣的方法來解決訪問量的問題

9、用PHP寫出顯示客戶端IP與服務器IP的代碼

10、語句include和require的區別是什麼?爲避免多次包含同一文件,可用(?)語句代替它們?

11、如何修改SESSION的生存時間

12、有一個網頁地址, 比如PHP研究室主頁: http://www.phpv.net/index.html,如何得到它的內容?

13、在HTTP 1.0中,狀態碼401的含義是(?);如果返回“找不到文件”的提示,則可用 header 函數,其語句爲

14、寫出發貼數最多的十個人名字的SQL,利用下表:members(id,username,posts,pass,email)

15、在PHP中error_reporting這個函數有什麼作用?

17、簡述如何得到當前執行腳本路徑,包括所得到參數

18、mysql_fetch_row() 和mysql_fetch_array之間有什麼區別? 

19、請寫出數據類型(int char varchar datetime text)的意思; 請問varchar和char有什麼區別

20、取得查詢結果集總數的函數是

21、$arr = array(’james’, ‘tom’, ’symfony’); 請打印出第一個元素的值

22、請將數組的值用’,'號分隔並合併成字串輸出

23、執行程序段<?php echo (-8%)(2) ?>將輸出__

24、數組函數 arsort 的作用是____;

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

$script="以下內容不顯示:<script language='javascript'>alert('cc');</script>";
26、以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊,然後再用語句____使得Apache把所有擴展名爲php的文件都作爲PHP腳本處理。

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

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

32、編程題第二題考覈的是正則

 

 

答案

1

echo 有點像語句,print有點像函數,

$some_var = null;
($some_var) ? print 'true' : print 'false'; rigth

($some_var) ? echo 'true' : echo 'false';wrong ,這是需要返回值的

print_r完全就是函數,可以打印出數據的詳細信息,比如數組,對象

 

2

echo date('Y-m-d H:i:s',mktime(date("H"), date("i"), date("s"), date("m") , date("d")-1, date("Y")));

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

 

3

客戶端

$_SERVER['REMOT_ADDR'];

服務器端

$_SERVER['SERVER_ADDR'];

gethostbyname("www.tupoe.com")

 

4 strrev

 

5 參見日記

 

6、

now() curdate() curtime()

date_formate(now, '%m-%d-$Y') -> 12-29-2008

 

7、

ord(substr($str,$i,1))>0xa0 使用這個來判斷是否是中文字符,在ASCII中0xa0代表漢字的開始,如果成立則要最少截取兩個字符

 

http://hi.baidu.com/renshengyixiaojian/blog/item/fa6f85d34a7d14d0a8ec9a73.html

 

8、參考日誌 

 

9、$_SERVER[SERVER_ADDR] 服務器端的ip ;$_SERVER[REMOTE_ADDR] 客戶端Ip

 

10、

include與require的區別就是當遇到丟掉文件等錯誤的時候include產生一個警告,而require會終止程序

include_once與require_once的區別同上

include與include_once的區別就是文件中的代碼只被包含一次,避免函數重定義,變量重新賦值等問題

 

11、

session_start();

setcookie(session_name(),session_id(),time()+24*3600),還可以使用一個函數來處理

session_set_cookie_params(24*3600),必須在session_start()前調用
使用$_session['name'] = null 就可以定義一個session

setcookie(TestCookie,'value') ;  setcookie(TestCookie['a'],$value);

調用

echo $_COOKIE["TestCookie"];
echo 
$HTTP_COOKIE_VARS["TestCookie"
];

 

12 、file_get_contents('http://www.phpv.net/index.html'),如果有亂碼使用iconv('gb2312','utf-8',$content)來處理

 

這道題引申到對session和cookie的理解問題,參見日記

 

13、沒有授權,header("http/1.0 404 not found")

 

14、select username from members group by username order by count(-1) desc

15、設置php的報錯級別並返回當前級別,error_reporting(0) 禁用,error_reporting(E_ALL) 報告所有錯誤

17、$_SERVER['SCRIPT_FILENAME'] 和 $_SERVER['QUERY_STRING']

18、mysql_fetch_row() 返回的是數字索引數組,mysql_fetch_array() 返回的是關聯數組或數字數組,有三個參數,MYSQL_NUM同row,MYSQL_ASSOC 同mysql_fetch_assoc(),返回關聯數組,MYSQL_BOTH 同 array

19、

int 整型 32位整數,char字符串類型 255個字符 ,varchar 字符串類型 最多255個字符,datetime 時間和日期數據類型 是date和time的結合體 2010-05-21 12:21:34 ,text字符串類型 可變長度 2的16次方-1個字符,多用於存儲文本內容

char和varchar的區別是 char是固定長度,不可以存儲開頭和結尾的空格 ;varchar是可變化長度,在規定長度範圍內,可以存儲空格

20、mysql_num_rows() 引申出要學習其他的功能

21、array_shift($arr);

22、implode(',' , $arr);

23、-2

24、對數組進行逆序排列並保持索引關係

25、preg_match_all(" @<script[^>].*?>.*?</script>@si "," ",$str); s表示.可以代表換行符/n

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

見參考手冊》目錄》II. 安裝與配置》6. Windows 系統下的安裝Microsoft Windows 下的 Apache 2.0.x

27、unserialize

28、自然左外連接

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
http://hi.baidu.com/qloog/blog/item/ae358d7745d62617b151b9ee.html
   

 

二 試題:http://hi.baidu.com/snunix/blog/item/88d3fe11c43af218b8127b48.html

https://bbs.et8.net/bbs/archive/index.php/t-981563.html  有答案的

http://blog.csdn.net/qqww378155/archive/2011/05/05/6395916.aspx  騰訊試題的答案

 

 

1、請對POSIX風格和兼容Perl風格兩種正則表達式的主要函數進行類比說明

3、php5中魔術方法有哪幾個,請舉例說明各自的用法

4、請寫出讓,並說明如何在命令行下運行PHP腳本(寫出兩種方式)同時向PHP腳本傳遞參數?

5、PHP的垃圾收集機制是怎樣的

7、用php實現一個雙向隊列

8、你用什麼方法檢查PHP腳本的執行效率(通常是腳本執行時間)和數據庫SQL的效率(通常是數據庫Query時間),並定位和分析腳本執行和數據庫查詢的瓶頸所在? 

 

答案

1

1.1 posix是UNIX遵循標準的。UNIX命令如grep,sed用的正則就是posix的

perl正則在posix的基礎上進行擴展,實現了很多方便的功能,

舉個例子,pers用/d表示數字,而posix用[0-9](早期的posix才用,新版的已經使用perl風格了);posix有類的概念,比如[:digit:]比配數字,perl原來沒有,後來支持posix也有了。perl中a.*?b 和a.*b匹配的結果不一樣,前者最小匹配,後者最大匹配,屬於非貪婪模式。1.2 perl正則函數比ereg的效率要高 

1.3 perl風格支持posix風格不支持的語法,

比如非貪婪匹配

參見http://www.cnitblog.com/yemoo/archive/2006/06/22/12675.html 和 日誌

 

斷言和條件子模式

教程精選:正則表達式快速入門<三> http://www.jz123.cn/text/071317.html

 

常用的正則表達式

http://hi.baidu.com/gllin123/blog/item/e2a203a96cc10dbacb130c89.html

POSIX和Perl 區別  google搜索詞

http://www.dnbcw.com/biancheng/php/nkvr215349.html

3、

clas test {

    prvate $_data = array():

    private $_val = null;

    private $_name = null;

    public $_set = 30;

 

    public function __construct($name) {

        $this->_name = $name

    }

    public function __get($valName) {

        echo 'error'.$valName

    }

 

    public function __set($na,$val) {

        $this->_data[$na] = $val;

    }

 

    public function __call($name,$arguments) {

        echo 'method =' . $name,'param = '. implode(',',$arguments); // $arguments是一個數組

    }

 

    public function __toString() {

        return $this->_name;

    }

 

    public function getName() {
        return $this->_name;

    }

    public function __clone() {
        $this->_name = "clone結果";

    }

 

    public function __sleep() {
        return array('name'); //不序列化val和data

    }

 

    public function __wakeup() {
        $this->_val = "val";

        // 還可以寫一些數據庫連接,等前期需要準備的步驟

    }

 

    public function __isset($name) {

        echo "$name not set" ;

    }

 

    public function __unset($name) {
        echo '';

    }

 

    public function __autoload($name) {
        require_once $name."php";

    }

}

 

$testObj = new test();

__get() 當試圖獲取一個非public屬性值時,或試圖讀取未定義的變量時,$testObj->_val 這時會調用__get($valName) 方法

__set() 當試圖設置一個非public屬性值時,或試圖設置未定義的變量時,$testOb->_setVal = 'aa' 將會調用__set()方法

__call() 當試圖調用一個未定義的方法時,包括沒有權限訪問的方法,例如私有方法;$testObj->testMethod('bb','cc')

__toString() 返回的是表示對象的字符串信息,當使用echo ,print 對象是調用';例如 $obj = new test("string"); echo $obj 結果就是string

__clone() 重寫原來的屬性和方法,前一個對象的不變,在使用clone賦值給另一個變量時使用的;例如 $aa =new test("aa");

$aa->getName() -> aa, $bb = clone $aa; $bb-> getName() -> clone結果,$aa->getName() -> aa

__sleep() 在序列化對象前被調用,返回需要序列化的屬性;例如 $aa = new test("aa");$bb = serialize($aa);序列化屬性只會包含name

__wakeup() 在反序列化對象前被調用,預先準備數據;例如 上一個unserialize($bb) 則對象中的屬性$val = 'val';

__isset($name) 在使用isset() 檢測類變量是否定義時使用;例如$aa = new test("aa"); isset($aa->_noset);這時$_noset這個屬性沒有被定義,所以調用__isset($name) 方法 輸出 _noset not set

__unset($name) 在使用unset的時候被調用,可用於unset數組中的某字段,參見手冊 重載

__autoload($class_name) 自動加載對象

 

http://www.jz123.cn/text/2319266.html

http://blog.planetsidecn.com/2010/05/php%E4%B9%8B%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95/

參考手冊 類與對象中的重載

 

4、

4.1 進入php的安裝目錄,找到php.exe文件

在Linux操作系統裏,它被保存在PHP安裝目錄的bin/子目錄下

執行php hello.php param1.parma2

4.2 命令行方式運行php腳本

http://blog.csdn.net/guoguo1980/archive/2008/03/13/2178525.aspx

 

$PHP_HOME/bin/php -r 'echo $argv[1];' hello
$PHP_HOME/bin/php hello.php hello

5、

當一個 PHP線程結束時,當前佔用的所有內存空間都會被銷燬,當前程序中所有對象同時被銷燬。

GC進程一般都跟着每起一個SESSION而開始運行的.gc目的是爲了在session文件過期以後自動銷燬刪除這些文件. 

7、棧是先進後出,隊列是先進先出,如果在數組中的就是array_unshift和array_pop對應的關係或array_push和array_shift對應的關係

8、

1.腳本執行時間,統計函數執行次數和具體時間進行分析,啓用xdebug,使用WinCacheGrind分析。
2.數據庫查詢,mysql使用EXPLAIN分析查詢,啓用slow query log記錄慢查詢。

3、代碼腳本里計時。
4、在線系統用strace跟蹤相關進程的具體系統調用。

5、sql的explain(mysql),set autotrace trace only; set timing on; (oracle)然後看具體的執行計劃,物理讀和邏輯讀,是否使用到合適索引,是否有阻塞鎖存在。 是否返回合適尺寸的查詢結果集。 通常還要看數據庫設計是否合理,需求是否合理等。 

 

 

試卷:

http://www.mianwww.com/html/2011/03/7932.html

http://www.js4j.com/tech/php/587.html

http://www.hongxincao.com/archives/80.html

http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&biw=1020&bih=560&q=%E6%96%B0%E6%B5%AAphp%E9%9D%A2%E8%AF%95%E9%A2%98&revid=1848536300&sa=X&ei=5SK4Tb2YH4W8vgO3hvihAw&ved=0CGYQ1QIoAg

http://hi.baidu.com/snunix/blog/item/88d3fe11c43af218b8127b48.html

http://aweber.blogbus.com/logs/65639476.html 這個是有答案的,這個博客有很多可以瞭解的東西

這個算是比較好的

http://blog.csdn.net/chinalinuxzend/archive/2009/05/11/4167319.aspx

上面試題的答案

http://blog.csdn.net/yanjiee/archive/2009/11/28/4885781.aspx

http://fav100.info/archives/91/ 比較好,答案很全,相關文章也有很多面試題

http://www.phpzixue.cn/detail586.shtml   一份不錯的php面試題(附答案)

https://bbs.et8.net/bbs/archive/index.php/t-981563.html

http://fav100.info/archives/220/   裏面有很多試題

 

教程: 教程可以總結一些常用的東西,不用自己總結了
http://www.5idev.com/

http://www.jz123.cn/text/0827425.html 這個網站也很好

http://blog.csdn.net/beimuaihui/archive/2007/10/21/1836071.aspx  帶有答案 

 

正則表達式

http://www.cnblogs.com/catprayer/archive/2010/10/04/1841998.html

 

sina

http://hi.baidu.com/linchaoqi/blog/item/4f83690fbcefb1206059f394.html

遇到過的一些php筆試題

http://www.cnblogs.com/xcp19870712/archive/2011/07/08/2101003.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章