【智力部分】(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);