php初級程序員面試題目_php初級程序員面試題
對于PHP初級程序員來說,在面試中做好面試準(zhǔn)備,了解面試題目很有必要,那么你了解面試題目了嗎?下面小編已經(jīng)為你們整理了php初級程序員面試題目,希望可以幫到你。
php初級程序員面試題目(一)
1、您是否用過版本控制軟件? 如果有您用的版本控制軟件的名字是?(1分)
2、您是否用過模板引擎? 如果有您用的模板引擎的名字是?(1分)
答:用過,smarty
3、請簡單闡述您最得意的開發(fā)之作(4分)
答:信息分類
4、對于大流量的網(wǎng)站,您采用什么樣的方法來解決訪問量問題?(4分)
答:確認(rèn)服務(wù)器硬件是否足夠支持當(dāng)前的流量,數(shù)據(jù)庫讀寫分離,優(yōu)化數(shù)據(jù)表,
程序功能規(guī)則,禁止外部的盜鏈,控制大文件的下載,使用不同主機分流主要流量
5、語句include和require的區(qū)別是什么?為避免多次包含同一文件,可用(?)語句代替它們? (2分)
答:require->require是無條件包含也就是如果一個流程里加入require,無論條件成立與否都會先執(zhí)行require
include->include有返回值,而require沒有(可能因為如此require的速度比include快)
注意:包含文件不存在或者語法錯誤的時候require是致命的,include不是
6、foo()和@foo()之間有什么區(qū)別?(1分)
答:@foo()控制錯誤輸出
7、如何聲明一個名為”myclass”的沒有方法和屬性的類? (1分)
答:class myclass{ }
8、如何實例化一個名為”myclass”的對象?(1分)
答:new myclass()
9、你如何訪問和設(shè)置一個類的屬性? (2分)
答:$object = new myclass();
$newstr = $object->test;
$object->test = "info";
10、mysql_fetch_row() 和mysql_fetch_array之間有什么區(qū)別? (1分)
答:mysql_fetch_row是從結(jié)果集取出1行數(shù)組,作為枚舉
mysql_fetch_array是從結(jié)果集取出一行數(shù)組作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,兩者兼得
11、GD庫是做什么用的? (1分)
答:gd庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。
在網(wǎng)站上GD庫通常用來生成縮略圖或者用來對圖片加水印或者對網(wǎng)站數(shù)據(jù)生成報表。
php初級程序員面試題目(二)
1、談?wù)剬vc的認(rèn)識(1分)
答:由模型(model),視圖(view),控制器(controller)完成的應(yīng)用程序
由模型發(fā)出要實現(xiàn)的功能到控制器,控制器接收組織功能傳遞給視圖;
2、寫出發(fā)貼數(shù)最多的十個人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;
3、 請說明php中傳值與傳引用的區(qū)別。什么時候傳值什么時候傳引用?(2分)
答:按值傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部都會被忽略
按引用傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部也能反映出這些修改
優(yōu)缺點:按值傳遞時,php必須復(fù)制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。
按引用傳遞則不需要復(fù)制值,對于性能提高很有好處。
4、 在PHP中error_reporting這個函數(shù)有什么作用? (1分)
答:設(shè)置錯誤級別與錯誤信息回報
5、 請寫一個函數(shù)驗證電子郵件的格式是否正確 (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);
}
6、 簡述如何得到當(dāng)前執(zhí)行腳本路徑,包括所得到參數(shù)。(2分)
答:$script_name = basename(__file__); print_r($script_name);
7、JS表單彈出對話框函數(shù)是?獲得輸入焦點函數(shù)是? (2分)
答:彈出對話框: alert(),prompt(),confirm()
獲得輸入焦點 focus()
8、JS的轉(zhuǎn)向函數(shù)是?怎么引入一個外部JS文件?(2分)
答:window.location.href,<script type="text/javascript" src="js/js_function.js"></script>
php初級程序員面試題目(三)
1、使用哪些工具進(jìn)行版本控制?(1分)
答:cvs,svn,vss;
2、如何實現(xiàn)字符串翻轉(zhuǎn)?(3分)
答:echo strrev($a);
3、優(yōu)化MYSQL數(shù)據(jù)庫的方法。(4分,多寫多得)
答:
1)、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設(shè)置NOT NULL,例如'省份,性別',最好設(shè)置為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的速度優(yōu)化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid
WHERE orderinfo.customerid IS NULL
3)、使用聯(lián)合(UNION)來代替手動創(chuàng)建的臨時表
a.創(chuàng)建臨時表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`
4)、事務(wù)處理:
a.保證數(shù)據(jù)完整性,例如添加和修改同時,兩者成立則都執(zhí)行,一者失敗都失敗
mysql_query("BEGIN");
mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";
mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
mysql_query("COMMIT");
5)、鎖定表,優(yōu)化事務(wù)處理:
a.我們用一個 SELECT 語句取出初始數(shù)據(jù),通過一些計算,用 UPDATE 語句將新值更新到表中。
包含有 WRITE 關(guān)鍵字的 LOCK TABLE 語句可以保證在 UNLOCK TABLES 命令被執(zhí)行之前,
不會有其它的訪問來對 inventory 進(jìn)行插入、更新或者刪除的操作
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)、使用外鍵,優(yōu)化鎖定表
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',該參數(shù)保證當(dāng)customerinfo表中的一條記錄刪除的話同時也會刪除order
表中的該用戶的所有記錄,注意使用外鍵要定義事務(wù)安全類型為INNODB;
7)、建立索引:
a.格式:
(普通索引)->
創(chuàng)建:CREATE INDEX <索引名> ON tablename (索引字段)
修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)
創(chuàng)表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))
(唯一索引)->
創(chuàng)建:CREATE UNIQUE <索引名> ON tablename (索引字段)
修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)
創(chuàng)表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))
(主鍵)->
它是唯一索引,一般在創(chuàng)建表是建立,格式為:
CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])
8)、優(yōu)化查詢語句
a.最好在相同字段進(jìn)行比較操作,在建立好的索引字段上盡量減少函數(shù)操作
例子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";
4、PHP的意思(送1分)
答:PHP是一個基于服務(wù)端來創(chuàng)建動態(tài)網(wǎng)站的腳本語言,您可以用PHP和HTML生成網(wǎng)站主頁
5、MYSQL取得當(dāng)前時間的函數(shù)是?,格式化日期的函數(shù)是(2分)
答:now(),date()
6、實現(xiàn)中文字串截取無亂碼的方法。(3分)
答:function GBsubstr($string, $start, $length) {
if(strlen($str
ing)>$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;
}
}
看了“php初級程序員面試題目”