PHP面試(A-01)


【智力部分】(20分)

1.有一種細菌,經過一分鍾分裂為2個,再過一分鍾,分裂為4個,這樣,將一個細菌放在一個瓶子里面,一個小時后瓶子被細菌充滿了。現在假設一開始放入瓶中的為兩個細菌,那么到充滿瓶子要多長的時間?(10分)

59分鍾
	一個細菌的時候是2的60次方個細菌才把瓶子填滿,兩個細菌開始則是2*2的59次方,故結果是59分鍾

2.一只蝸牛從井底爬到井口,每天白天蝸牛要睡覺,晚上才出來活動,一個晚上蝸牛可以向上爬3尺,但是白天睡覺的時候會往下滑2尺,井深10尺,問蝸牛幾天可以爬出來?(10分)

8天或者7天加一夜
		7天爬7尺,第七天晚上向上爬了3尺,已經爬出了井口,所以白天就沒有再下滑2尺的動作

【專業部分】(75分)

3.談談你對MVC的認識,介紹幾種目前比較流行的MVC框架?(5分)

由模型(model),視圖(view),控制器(controller)完成的應用程序 
由模型發出要實現的功能到控制器,控制器接收組織功能傳遞給視圖; 
BroPHP,ThinkPHP,Zend,Yii

4.html表單中 GET與POST提交方法的區別?(5分)

a)GET是發送請求HTTP協議通過url參數傳遞進行接收,而POST是實體數據,可以通過表單提交大量信息. 
b)GET傳參會有大小的限制,因瀏覽器和操作系統的不同而不同。而POST傳參理論上不受限,但是一般會人為設定。
c)POST安全性比GET高

5.請簡述SESSION與COOKIE的區別?(5分)

a)session:儲存用戶訪問的全局唯一變量,存儲在服務器上的php指定的目錄中的(session_dir)的位置進行的存放  
cookie:用來存儲連續訪問一個頁面時所使用,是存儲在客戶端,對於Cookie來說是存儲在用戶WIN的Temp目錄中的。  

6.求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數。(5分)

<?php
	function get_days($date1,$date2){
		$time1=strtotime($date1);
		$time2=strtotime($date2);
		return abs($time1-$time2)/86400;
	}
	echo get_days('2007-2-5','2007-3-6');
?>

7.寫出如下程序的輸出結果 (5分)

aaaaaa

8.在空表News中,字段ID為自增主鍵,批量插入17條記錄之后,發現最后三條數據有誤,刪除此三條記錄后重啟Mysql數據庫,再重新插入三條記錄,請問最后一條記錄的ID值是多少?(5分)

如果是innodb類型結果是17
如果是myisam類型,結果是20

9.至少寫出一種驗證139開頭的11位手機號碼的正則表達式。(5分)

‘/^139[0-9]{8}$/x’
	‘/^139\d{8}/x’

10.請寫一個函數,實現以下功能:
字符串“open_door” 轉換成 “OpenDoor”、”make_by_id” 轉換成 ”MakeById”。(10分)

function diversion($str){
	$arr=explode('_',$str);
	foreach($arr as $v){
		$res.=ucfirst($v);
	}
	return $res;
}
echo diversion('open_door');
echo diversion('make_by_id');

11.請寫一個函數將1234567890轉換成1,234,567,890 每3位用逗號隔開的形式。(10分)

Echo Number_format(1234567890);

12.有A(id,sex,par,c1,c2),B(id,age,c1,c2)兩張表,其中A.id與B.id關聯,現在要求寫一條SQL語句,將B中age>50的記錄的c1、c2更新到A表中統一記錄中的c1、c2字段中。(10分)

Update A,B set A.c1=B.c1 ,A.c2=B.c2 where A.id=B.id and B.age>50;

13.請用php寫出以下程序:假設網絡中有一台服務器192.168.1.101,開放端口8899進行偵聽,請用php的socket相關知識,寫出一個簡易的client,連接到server,並發送字符串”hello server!”。程序僅對連接的成功和失敗進行簡易錯誤判斷和處理即可。(10分)

//***客戶端代碼 需要准備服務端代碼才可執行下面
//***准備服務端端口

$service_port = 8899;

//***准備主機地址

$address = '192.168.1.101';

//***創建socket
//***協議***AF_INET 這是大多數用來產生socket的協議,使用TCP或UDP來傳輸,用在IPv4的地址 
//***socket類型***SOCK_STREAM 這個協議是按照順序的、可靠的、數據完整的基於字節流的連接。這是一個使用最多的socket類型,這個socket是使用TCP來進行傳輸。
//***公共協議***SOL_TCP 和  getprotobyname(“tcp”)函數一樣的效果 使用公共協議名字來獲取一個協議類型。在這里使用的是TCP公共協議,如果你想使用UDP或者ICMP協議,那么你應該把getprotobyname()函數的參數改為“udp”或“icmp”。

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

//***如果$socket創建失敗 獲取socket失敗信息提示

if ($socket === false) {
	echo "socket創建失敗,原因: " . socket_strerror(socket_last_error()) . "\n";
} else {
	echo "socket創建成功<br />";
}

//***開始socket連接
//***$socket 已創建好的socket資源
//***$address 主機地址
//***$service_port 服務端端口

$result = socket_connect($socket, $address, $service_port);

//***判斷是否連接成功

if($result === false) {
	echo "socket連接失敗: ({$result}) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
	echo "socket連接成功<br />";
}

//***准備發送數據

$in='hello server!';

//***輸出內容初始化

$out = "";
//***寫數據到socket緩存

socket_write($socket, $in, strlen($in));

//***讀取指定長度的socket數據
//***$socket 已創建好的socket資源
//***8192 讀取內容的指定長度

while ($out = socket_read($socket, 8192)) {
	//***輸出讀取到的內容

	echo $out;
}
//***關閉socket連接
socket_close($socket);

【Linux知識】(15分)

14.如何實現每天0點鍾重新啟動服務器。(5分)

cd /opt/
vim re_server.txt
0 0 * * * service httpd restart

crontab re_server.txt

/sbin/service crond restart

15.當前目錄下有一個文件為 showme.sh , 如何修改文件,將其指定為使用 /bin/bash 運行(5分),如何修改其權限為所有用戶可讀寫,所有用戶可執行。(5分)

16.當前目錄下有一個文件為 showme.sh,如何修改其所有人為root。(5分)

chown root:root showme.sh

【附加部分】(30分)

1.使用thinkphp在控制器(Action)中傳遞一個一維數組到視圖(Tpl),並將數組循環顯示在前台頁面,請簡要的寫出前后台的主要代碼。(10分)

以BroPHP為例:
	On.class.php://控制器
		Class one{
			Function two(){
				$arr=array(1,2,3,4,5,6);
				$this->assign(‘arr’,$arr);
}
}
	
		Two.htm://模版文件 視圖
		<{foreach $arr as $v}>
			<{$v@key}>->
			<{$v}><br />	
<{/foreach}>

2.請用php編寫程序,讀取出www.baidu.com的首頁的網頁內容(僅html),並存入字符串 $str.(10分)

$str=file_get_contents(‘http://www.baidu.com’);

3 請用php將上題中讀取出的網頁內容的<title>標簽的值解析出來。(10分)

$zz=’/<title>(.*?)<\/title>/ixums’;
	preg_match_all($zz,$str,$res);
	var_dump($res);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM