1.用PHP打印出前一天凌晨的時間,格式是2006-6-10 22:22:22
echo date("Y-m-d 00:00:00", strtotime("-1 day"));
2.jQuery中當(dāng)頁面完全載入后使 <div id="test">test</div> 隱藏
$(document).ready(function(){
$("#test").hide();
});
3.linux下改變文件權(quán)限的命令愉昆?如使test.php變?yōu)樗杏脩艨勺x寫不可執(zhí)行访诱。
chmod 666 test.php
4.MySQL如何取得當(dāng)前時間的UNIX時間戳?如何格式化UNIX時間戳锋拖?
UNIX_TIMESTAMP();
FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i:%s');
5.PHP中如何驗證郵件格式是否正確诈悍?
filter_var('bob@example.com', FILTER_VALIDATE_EMAIL);
//或者正則 TODO
6.用戶表a(user_id, user_name),發(fā)表文章的表b(a_id兽埃,user_id, create_time, content),其中a_id為文章id侥钳,用一個sql語句得到每一個用戶在2010-1-1以后發(fā)表文章數(shù)量的列表
SELECT a.user_id AS user_id, COUNT(b.a_id) AS num FROM a LEFT JOIN b ON a.user_id = b.a_id WHERE a.create_time > '2010-1-1';
7.請用PHP遍歷目錄下所有文件和文件夾
function tree($dir) {
$mydir = dir($dir);
while($file = $mydir->read()) {
if((is_dir("$dir/$file"))
&& ($file!=".") && ($file!="..")) {
echo $file, "\\n";
tree("$dir/$file");
} else {
echo $file, "\\n";
}
}
$mydir->close();
}
8.寫出你知道的幾個HTTP返回狀態(tài)碼,并說明用途
200 ok
301 永久重定向
302 臨時重定向
對瀏覽器一樣都做跳轉(zhuǎn)柄错,對搜索引擎不一樣舷夺。
301 搜索引擎在抓取新內(nèi)容的同時也將舊的網(wǎng)址替換為重定向之后的網(wǎng)址,302 搜索引擎會抓取新的內(nèi)容而保留舊的網(wǎng)址售貌。
304 文檔未修改 一般用在做靜態(tài)資源緩存
403 拒絕
404 未找到
500 內(nèi)部錯誤 常見錯誤可能是文件目錄權(quán)限或數(shù)據(jù)庫連接問題
501 未實現(xiàn)
502 錯誤網(wǎng)關(guān)
503 服務(wù)不可用
9.Linux命令给猾,請用Linux命令獲取文件log.txt的行數(shù)
wc -l log.txt //-c 字節(jié)數(shù) -w 字?jǐn)?shù)
10.請使用PHP描述冒泡排序和快排,對象可以是一個數(shù)組
$arr = array(1,3,4,5,9,6,2);
function maopao($arr) {
$len = count($arr);
for($i=1; $i<$len; $i++) {
for($k=0; $k<$len-$i; $k++) {
if($arr[$k]>$arr[$k+1]) {
$tmp=$arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$tmp;
}
}
}
return $arr;
}
//Ο(logN)
function quick($arr) {
$len = count($arr);
if($len <= 1) {
return $arr;
}
$base = $arr[0];
$left = array(); //小于 base
$right = array(); //大于 base
for($i=1; $i<$len; $i++) {
if($base > $arr[$i]) {
$left[] = $arr[$i];
} else {
$right[] = $arr[$i];
}
}
$left = quick($left);
$right = quick($right);
return array_merge($left, array($base), $right);
}
11.PHP5中魔術(shù)方法函數(shù)有哪幾個颂跨,請舉例說明各自用法
__construct()敢伸, __destruct(), __call()恒削, __callStatic()池颈, __get()尾序, __set(), __isset()躯砰, __unset()每币, __clone()
__sleep()、 __wakeup()
對應(yīng) serialize()/unserialize()琢歇,__sleep 清理對象兰怠,__wakeup 預(yù)先準(zhǔn)備對象需要的資源
__toString()用于一個類被當(dāng)成字符串時應(yīng)怎樣回應(yīng)
12.如何在命令行下運行PHP腳本(寫出兩種方式)同時向PHP腳本傳遞參數(shù)?
$argv矿微、getopt()
13.請寫一段PHP代碼痕慢、確保多個進(jìn)程同時寫入同一文件成功
$fd = fopen("test.txt", "a");
if(flock($fd, LOCK_EX)) { // or LOCK_NB 區(qū)別 阻塞 與 非阻塞
fwrite($fd, "write");
flock($fd, LOCK_UN);
} else {
echo "locking";
}
fclose($fd);
14.請描述mysql的innodb和myisam的區(qū)別
Innodb支持事務(wù)處理與外鍵。
Innodb行級鎖涌矢。MyISAM表鎖掖举。寫入頻繁時MyISAM可能會出現(xiàn)lock table。
MyISAM支持全文索引娜庇。
count(*)MyISAM比較快塔次。
災(zāi)后恢復(fù)機(jī)制Innodb比較完善。
Innodb是官方推薦的引擎名秀。
15.一個MySQL數(shù)據(jù)表励负,每天寫入數(shù)據(jù)量非常大,該如何優(yōu)化寫效率
上下文沒給全匕得。具體問題具體分析继榆。常規(guī)做法:檢查索引是否過多,讀寫分離汁掠,切分(水平or垂直)略吨。
16.如何進(jìn)行防SQL注入
1)對特殊字符進(jìn)行轉(zhuǎn)義(mysql_escape_string、addslashes)考阱、過濾或者使用預(yù)編譯的SQL語句綁定變量
2)最小權(quán)限原則翠忠,不用root賬戶。
3)SQL語句運行出錯時乞榨,不要顯示錯誤信息給用戶秽之。```