- 相關(guān)推薦
php練習(xí)筆試題
引導(dǎo)語(yǔ):php學(xué)習(xí)成本低,開(kāi)發(fā)效率高,擴(kuò)展函數(shù)豐富,成為了最流行的服務(wù)器端腳本語(yǔ)言。以下是小編整理的php練習(xí)筆試題,歡迎參考閱讀!
1. echo count("abc"); 輸出什么?
答:"1"
count — 計(jì)算數(shù)組中的單元數(shù)目或?qū)ο笾械膶傩詡(gè)數(shù)
int count ( mixed $var [, int $mode ] ), 如果 var 不是數(shù)組類(lèi)型或者實(shí)現(xiàn)了 Countable 接口的對(duì)象,將返回 1,有一個(gè)例外,如果 var 是 NULL 則結(jié)果是 0。
對(duì)于對(duì)象,如果安裝了 SPL,可以通過(guò)實(shí)現(xiàn) Countable 接口來(lái)調(diào)用 count()。該接口只有一個(gè)方法 count(),此方法返回 count() 函數(shù)的返回值。
2. 用PHP寫(xiě)出顯示客戶(hù)端IP與服務(wù)器IP的代碼
答:$_SERVER['SERVER_ADDR'] 服務(wù)器
$_SERVER['REMOTE_ADDR']客戶(hù)端
function getOnlineIP(){
if (getenv('HTTP_CLIENT_IP')) return getenv('HTTP_CLIENT_IP');
if (getenv('HTTP_X_FORWARDED_FOR')) return getenv('HTTP_X_FORWARDED_FOR');
if ($_SERVER["REMOTE_ADDR"]) return $_SERVER["REMOTE_ADDR"];
if (!empty($HTTP_SERVER_VARS['REMOTE_ADDR'])) return $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
3. error_reporting(2047)什么作用?
答:PHP 顯示所有錯(cuò)誤 E_ALL
4. echo,print()和print_r()有什么區(qū)別?
答:echo是一個(gè)語(yǔ)言結(jié)構(gòu),沒(méi)有返回值。
print是一個(gè)函數(shù),返回int類(lèi)型的值。[只能打印int string]
print_r()是一個(gè)函數(shù),返回bool類(lèi)型值,按結(jié)構(gòu)輸出變量的值。打印關(guān)于變量的易于理解的信息[數(shù)組、對(duì)象等]
5. 打開(kāi)php.ini中的Safe_mode,會(huì)影響哪些函數(shù)?至少說(shuō)出6個(gè)。
答:1:用戶(hù)輸入輸出函數(shù)(fopen() file() require(),只能用于調(diào)用這些函數(shù)有相同腳本的擁有者)
2:創(chuàng)建新文件(限制用戶(hù)只在該用戶(hù)擁有目錄下創(chuàng)建文件)
3:用戶(hù)調(diào)用popen() systen() exec()等腳本,只有腳本處在safe_mode_exec_dir配置指令指定的目 錄中才可能
4:加強(qiáng)HTTP認(rèn)證,認(rèn)證腳本擁有者的UID的劃入認(rèn)證領(lǐng)域范圍內(nèi),此外啟用安全模式下,不會(huì)設(shè)置PHP_AUTH
5:mysql服務(wù)器所用的用戶(hù)名必須與調(diào)用mysql_connect()的文件的擁有者用戶(hù)名相同
6:受影響的函數(shù)變量以及配置命令達(dá)到40個(gè)
6. 寫(xiě)個(gè)函數(shù)來(lái)解決多線程同時(shí)讀寫(xiě)一個(gè)文件的問(wèn)題。
答:flock($hander,LOCK_EX); 這個(gè)可是內(nèi)置函數(shù)啊,
這個(gè)尚待解決
7. 請(qǐng)寫(xiě)一個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確(要求使用正則)
答:preg_match('/^[w-.]+@[w-]+(.w+)+$/', $email);
8. 考SQL語(yǔ)句的題,題太長(zhǎng)了,實(shí)在不好回憶了。
答:去理解別人的回憶是件很困難的事情
9. MySQL數(shù)據(jù)庫(kù),一天一萬(wàn)條以上的增量,怎么優(yōu)化?
答:我們?cè)鲞^(guò)短信SP的東西,有個(gè)短信發(fā)送的日志表,每天增量也很大,處理的方法是按月進(jìn)行分表,因?yàn)槭侨罩颈,主要操作是操作,所以每月初自?dòng)生成新的數(shù)據(jù)表,數(shù)據(jù)插入到對(duì)應(yīng)月份的那張數(shù)據(jù)表。[比如表明前綴是cdb_smslog 后面加200910 及時(shí)cdb_smslog_200910]
其他優(yōu)化方式暫時(shí)想不起來(lái),對(duì)于myISAM, 考慮容量的話,也有優(yōu)化的方案
但是對(duì)于那種查詢(xún)操作的表的話,我的思路是根據(jù)作者的發(fā)布時(shí)間存儲(chǔ)到不同的表里面
所以對(duì)sina那種海量數(shù)據(jù)的處理很感興趣,很好奇他們的處理方法,[以前同事說(shuō)sina 的首頁(yè)同時(shí)操作10多個(gè)數(shù)據(jù)庫(kù)]
10. 寫(xiě)出一種排序算法(要寫(xiě)出代碼),并說(shuō)出優(yōu)化它的方法。
答:
//冒泡排序
function maopao($arr) {
$count = count($arr);
for($i=0; $i<$count-1; ++$i) {
for($j=0; $j<$count-$i-1; ++$j) {
if($arr[$j] > $arr[$j+1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
//順序排序
function shunxu($arr) {
$count = count($arr);
for($i=0; $i<$count-1; ++$i) {
$p = $i;
for($j=$i+1; $j<$count; ++$j) {
$p = $arr[$p] > $arr[$j] ? $j : $p;
}
if($p != $i) {
$tvalue = $arr[$i];
$arr[$i] = $arr[$p];
$arr[$p] = $tvalue;
}
}
return $arr;
}
ps:有人說(shuō)加個(gè)監(jiān)控,計(jì)算數(shù)組交換的頻度[這對(duì)冒泡], 比如冒泡的第一次操作頻度為0,則無(wú)需操作,直接返回,因?yàn)橐呀?jīng)是排好序的數(shù)組
11. 寫(xiě)個(gè)函數(shù)用來(lái)對(duì)二維數(shù)組排序。
答:
function array_sort_by_any_row($array_name, $row_id, $order_type){
$array_temp=array();
foreach($array_name as $key=>$value){
$array_temp[$key]=$value[$row_id];
}
if($order_type==="ASC"){ //順序
asort($array_temp);
} else {
arsort($array_temp);
}
$result_array=array();
foreach($array_temp as $key=>$value){
$result_array[$key]=$array_name[$key];
}
return $result_array;
}
$arr = array(array('num'=>5, 'value'=>6),
array('num'=>2, 'value'=>39),
array('num'=>36, 'value'=>29)
);
$sortarr = array_sort_by_any_row($arr, 'num', 'DESC');
print_r($sortarr);
12. 寫(xiě)5個(gè)不同的自己的函數(shù),來(lái)截取一個(gè)全路徑的文件的擴(kuò)展名,允許封裝php庫(kù)中已有的函數(shù)。
答:$path = str_replace('\', '/',__FILE__);
echo $path.'
';
function extname1($path) {
return strrchr($path, '.');
}
function extname2($path) {
$position = strrpos($path, '.');
return substr($path, $position);
}
function extname3($path) {
$arr = explode('.', $path);
return $arr[count($arr) - 1];
}
function extname4($path) {
preg_match_all('/[w/:-]+.([w]+)$/', $path, $out);
return $out[1][0];
}
function extname5($path) {
return preg_replace('/^[^.]+.([w]+)$/', '${1}', basename($path));
}
print_r(extname5($path));
13. 一群猴子排成一圈,按1,2,...,n依次編號(hào)。然后從第1只開(kāi)始數(shù),數(shù)到第m只,把它踢出圈,從它后面再開(kāi)始數(shù),再數(shù)到第m只,在把它踢出去...,如此不停的進(jìn)行下去,直到最后只剩下一只猴子為止,那只猴子就叫做大王。要求編程模擬此過(guò)程,輸入m、n, 輸出最后那個(gè)大王的編號(hào)。
答:
yuesefu環(huán)問(wèn)題,PPC有很多針對(duì)這個(gè)問(wèn)題的處理,我的就不上啦
function yuesefu($n,$m) {
$r=0;
for($i=2; $i<=$n; $i++) {
$r=($r+$m)%$i;
}
return $r+1;
}
print_r(yuesefu(3,3));
【php練習(xí)筆試題】相關(guān)文章:
NIIT練習(xí)試題11-01
華為2017筆試題09-24
NIIT練習(xí)試題及答案10-31
SSAT自測(cè)練習(xí)試題09-28
華為2017筆試試題07-06
2017筆譯翻譯練習(xí)材料09-26
小升初數(shù)學(xué)檢測(cè)練習(xí)試題09-11