1. 抓取遠程圖片到本地,你會用什么函數?
fsockopen();
~~~
//獲取遠程圖片的大小
$fp = fsockopen("www.baidu.com", 80, $errno, $errstr, 30);
if ($fp) {
//這里請求設置為HEAD就行了
$out = "HEAD /img/baidu_sylogo1.gif HTTP/1.1\r\n";
$out .= "Host: www.baidu.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$header = fgets($fp);
if (stripos($header, 'Content-Length') !== false) {
$size = trim(substr($header, strpos($header, ':') + 1));
echo 'ddd'.$size;
}
}
fclose($fp);
} else {
echo "jkj.$errstr ($errno)";
}
~~~
沒找到使用fsockopen函數到本地的具體代碼,有他的一些類似用法
* * * * *
2.簡述pOST 和GET傳輸的最大容量分別是多少?
2MB,1024B
* * * * *
3.用最少的代碼寫一個求3值最大值的函數.
~~~
function lar($a,$b,$c){
return $a>$b? ($a>$c? $a : $c) : ($b>$c? $b : $c );
}
~~~
* * * * *
4.求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數
~~~
//先轉為時間戳
$begin=strtotime(‘2007-2-5′);
$end=strtotime(‘2007-3-6′);
echo ($end-$begin)/(24*3600);
~~~
* * * * *
5.請寫一個函數,實現以下功能:
字符串“open_door” 轉換成 “OpenDoor”、”make_by_id” 轉換成 ”MakeById”。
~~~
function str_change($str) {
//將_替換成空格
$str = str_replace ( “_”, " ", $str );
$str = ucwords ( $str );
//將空格換成空
$str = str_replace ( " ", “”, $str );
return $str;
}
~~~
6.要求寫一段程序,實現以下數組$arr1轉換成數組$arr2:
$arr1 = array (
‘0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ),
‘1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ),
‘2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ),
‘3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ),
‘4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ )
);
$arr2 = array (
‘0′ => array (
‘0′ => array ( ‘tid’ => 1, ‘name’ => ‘Name1′),
‘1′ => array ( ‘tid’ => 2, ‘name’ => ‘Name2′),
‘2′ => array ( ‘tid’ => 5, ‘name’ => ‘Name3′),
‘3′ => array ( ‘tid’ => 7, ‘name’ => ‘Name4′) ),
‘1′ => array (
‘0′ => array ( ‘tid’ => 9, ‘name’ => ‘Name5′ ) ) );
~~~
//將tid相同的元素歸一個數組
$arr1 = array (
'0' => array ('fid' => 1, 'tid' => 1, 'name' =>'Name1' ),
'1' => array ('fid' => 1, 'tid' => 2 , 'name' =>'Name2' ),
'2' => array ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),
'3' => array ('fid' => 1, 'tid' => 7 , 'name' =>'Name4' ),
'4' => array ('fid' => 3, 'tid' => 9, 'name' =>'Name5' )
);
function changeArrayStyle($arr){
foreach($arr as $key=>$value){
$result[$value[fid]][]=$value;
}
return array_values($result);
}
$arr2=changeArrayStyle($arr1);
echo "<pre>";
var_dump($arr2);
~~~
* * * * *
7.寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。(目錄操作)
~~~
//echo __file__."<br>";
//echo dirname(__file__)."<br>";
$d = dir(dirname(__file__));
//var_dump($d) ;
//echo "<br>Handle: " . $d->handle . "\\n";
//echo "<br>path: " . $d->path . "\\n";
$entry = $d->read ();
//echo "<br>";
//var_dump($entry);
while ( false !== ($entry = $d->read ()) ) {
echo "<br>".$entry . "<br />";
}
$d->close ();
~~~
* * * * *
8.兩張表 city表和province表。分別為城市與省份的關系表。
city:
id City provinceid
1 廣州 1
2 深圳 1
3 惠州 1
4 長沙 2
5 武漢 3
………. 廣州
province:
id province
1 廣東
2 湖南
3 湖北
……….
(1) 寫一條sql語句關系兩個表,實現:顯示城市的基本信息。?
select A.id,A.Cityname,B.province from city A,province B where A.provinceid=B.id
(2)如果要統計每個省份有多少個城市,請用group by 查詢出來。?
顯示字段:省份id ,省份名,包含多少個城市。
.select B.id,B.province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id
* * * * *
9.請簡述操作系統的線程與進程的區別
參考鏈接:http://mp.weixin.qq.com/s/hIawygtVQII9Q7Jo-M9eBg
一個進程可以包括多個線程;
一個進程的內存空間是共享的,每個線程都可以使用這些共享內存;
一個線程使用某些共享內存時,其他線程必須等它結束,才能使用這一塊內存;
操作系統的設計,因此可以歸結為三點:
(1)以多進程形式,允許多個任務同時運行;
(2)以多線程形式,允許單個任務分成不同的部分運行;
(3)提供協調機制,一方面防止進程之間和線程之間產生沖突,另一方面允許進程之間和線程之間共享資源。
* * * * *
10.請使用偽語言結合數據結構冒泡排序法對以下一組數據進行排序 10 2 36 14 10 25 23 85 99 45。
~~~
$a = array(10,2,36,14,10,25,23,85,99,45);
for($j=0 ; $j<9 ; $j++)
for($i=0 ; $i<9-$j ; $i++)
if($a[$i] > $a[$i+1]) {
$t = $a[$i] ;
$a[$i] = $a[$i+1] ;
$a[$i+1] = $t ;
}
echo var_dump($a);
~~~
* * * * *
11.COOKIE、SESSION的聯系和區別,多臺web服務器如何共享SESSION,禁用COOKIE后SESSION是否可用,為什么?
可以參考:http://blog.hlnet.com.cn/forum.php?mod=viewthread&tid=73
答:session的運行機制:
用戶A訪問站點Y,如果站點Y指定了session_start();(以下假設session_start()總是存在)那么會產生一個session_id,這個session_id一般會以COOKIE的形式保存到用戶A(我們可以通過在php.ini里設置session.use_only_cookies為1,強制SESSIONID必須以COOKIE專遞。)。這時候SESSIONID表現為$_COOKIE[‘PHPSESSID’];(PHPSESSID可用session_name()函數來下修改)
用戶A接著訪問,這個session id($_COOKID[‘PHPSESSID’])就會在A每次訪問Y的時候傳送到站點Y。
在站點Y上,會有這么一個目錄,是用來保存SESSION的實際數據的。站點Y接收到sessionid,然后通過session id,來獲得與SESSION數據的關聯,并返回SESSION數據。
答:session與cookie的區別:
SESSION存儲在服務器端,用戶無法進行修改,相對比較安全,COOKIE存儲在客戶端,用戶通過手段可以進行修改,相對不安全。
Session會在一定時間內保存在服務器上,當訪問增多,會比較占用服務器資源。
單個cookie在客戶端的限制是3k,就是說一個站點在客戶端存放的COOKIE不能超過3k。
答:多臺服務器如何共享SESSION:
共享就是每臺服務器公用一個,那顯然要把這個session專門放到一個地方
比如存數據庫,每臺服務器都調這個數據庫里的session
存memcache 一樣的原理
答:可以,但是需要在傳值的時候將Session_id寫到URL中;因為禁用以后再傳遞參數的時候會以網址的形式參數接到后面傳過去!
* * * * *
12.HTTp協議中的pOST和GET有何區別?
| 操作方式 | 數據位置 | 明文密文 | 數據安全 | 長度限制 | 應用場景 |
| --- | --- | --- | --- | --- | --- |
| GET | HTTP包頭 | 明文 | 不安全 | 長度較小 | 查詢數據 |
|POST | HTTP正文 | 可明可密 | 安全 | 支持較大數據傳輸 | 修改數據 |
* * * * *
13.一段php代碼,寫出輸出結果:
~~~
$a=0;
$b=0;
if(($a=3)>0||($b=3)>0){
$a++;
$b++;
echo $a ;
echo $b; //輸出b的值 ($a=4 ,$b=1) $b=3沒有執行
}
~~~
* * * * *
14.reqiure的include都可包含文件,二者的區別何在?require/include 與 require_once/include_once區別何在?
當包含的文件不存在時,
include:代碼繼續往下執行,報一個warning,
而require則是報fatal error, 停止執行.
*_once只包含一次,即便多次調用.
而不加once,則調用一次,包含一次.
關于效率:
加once需要檢測已加載的文件,效率稍低,
如果能確認不會多次包含,不必加once
'