程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php程序員面試分享

php程序員面試分享

編輯:關於PHP編程

面試總結

今天去了北京著名IT公司進行PHP程序員的面試。這是人生第一次麼,怎麼不緊張?我是不是有病。不是,這叫自信呵.

首先是做一些筆試題。
1.mysql數據庫索引使用的數據結構?這樣做的好處是?
可以參考這篇博文:http://blog.csdn.net/ant_ren/article/details/2932068


2.有兩個字符串a和b,判斷b字符串是否出現在a中。不考慮大小寫。。

我的答案是:使用stripos()這個函數來解決的。

 

if(stripos($a,$b)>-1)
	echo "b in a";
else
	echo "b not in a";

 

拓展:
但是如果是不考慮順序的話,問b字符串中的字符是否全部出現在a中。。。
那我們就需要用循環來解決的。下面提供解決方案:
$b_arr = str_split($b);
for(var $i=0,$len = count($b_arr); $i < $len ;  ++$i){
	if(stripos($a,$b_arr[$i])==-1)
		return false;
	return true;
}

3.你知道的開源框架?
我按照自己的經驗寫了一些:
Laravel,PHP,jQuery。。。


4.簡單解釋session 和cookie。關閉cookie,session是否可用?
我寫的比較簡單:
session存儲在服務器端,cookie存儲在客戶端。兩者沒有直接的聯系。
對於訪問其他的頁面。PHP_SESSIONID是作為一個臨時cookie放在浏覽器端的。
每次浏覽器發出的請求,都會在http header裡 帶上 sessionid來標識自己。
如果禁用cookie,那麼會自動放在url後面進行傳遞。


5.數據庫優化方案
這個自己在網絡上找一下。


6.設計一個Timer類,用來計算程序運行的時間,並且簡單的調用它。
class Timer { 
	private $StartTime = 0;//程序運行開始時間 
	private $StopTime = 0;//程序運行結束時間 
	private $TimeSpent = 0;//程序運行花費時間 


	function start(){//程序運行開始 
		$this->StartTime = microtime(); 
	} 
	function stop(){//程序運行結束 
		$this->StopTime = microtime(); 
	} 
	function spent(){//程序運行花費的時間 
		if ($this->TimeSpent) { 
			return $this->TimeSpent; 
		} else { 
			list($StartMicro, $StartSecond) = explode(" ", $this->StartTime); 
			list($StopMicro, $StopSecond) = explode(" ", $this->StopTime); 
			$start = doubleval($StartMicro) + $StartSecond; 
			$stop = doubleval($StopMicro) + $StopSecond; 
			$this->TimeSpent = $stop - $start; 
			return substr($this->TimeSpent,0,8)."秒";//返回獲取到的程序運行時間差 
		} 
	} 
} 
$timer = new Timer(); 
$timer->start(); 
//...程序運行的代碼 
$timer->stop(); 
echo "程序運行時間為:".$timer->spent(); 

 

下面是簡單版的。

class Timer{
	private $t = 0;


	public function start(){
		$this->t = microtime(true);
	}


	public function stop(){
		return microtime(true)- $this->t;
	}
}


$time = new Timer();
$time->start();
//do somethings...
$t = $time->stop();


7.建立復合索引應該注意的事項。
(1)對一張表來說,如果有一個復合索引 on (col1,col2)就沒有必要同時建立一個單索引 on col1。
(2)如果查詢條件需要,可以在已有單索引 on col1的情況下,添加復合索引on (col1,col2),對於效率有一定的提高。
(3)同時建立多字段(包含5、6個字段)的復合索引沒有特別多的好處,相對而言,建立多個窄字段(僅包含一個,或頂多2個字段)的索引可以達到更好的效率和靈活性。


8.設計一張數據庫表。該數據表用來存儲經常插入和查詢的url數據。
並解釋為什麼這麼設計的原因。
create table url(
	`id` int(11) not null primary key auto_increment comment "主鍵",
	`url` varchar(255) not null comment "url 內容",
	`name` varchar(50) comment "url對應的名稱"
)ENGINE=MyISAM


我是這麼建立的。
經常插入和刪除,我覺的數據庫存儲引擎應該使用MyISAM。
如果再在url,name字段上建立一個索引就更好了。

不是我想簡單寫啊。這麼多題目就一張A4紙啊。

這不是逼著我寫簡單點嗎?不過我還是犯了一些低級的錯誤。我正在努力改正。

一點福利,分享給大家。

Best Wishes.



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved