php軟體工程師面試分享

來源:互聯網
上載者:User
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";elseecho "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.



  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.