百度電話面試php
1 自我介紹
2 php的數組函數有哪些?
好多,你們自行看書。nginx
3 自動加載類的方法?
__autoload()web
方法以下: function __autoload($class_name){
require($class_name.".php");
}
類名和文件名之間具備一種統一的對應關係。
注意修改php.ini中的include_path中的路徑。面試
spl_autoload($class_name,$file_extension)
優先使用autoload_func是否爲空,若是爲空則運行__autoload()若是沒有則報錯.算法
4 php-fpm是什麼?數組
php-fpm是一個php的fastcgi管理器,Nginx使用這些php-fpm進程來和php通訊。php的解釋器。 緩存
5 nginx如何解析PHP腳本?
1.nginx啓動時,載入php-fpm(php的fastcgi管理器)。
2.php-fpm自身初始化,啓動多個cgi解釋器進程。
3.client請求到server後,php-fpm選擇並鏈接一個cgi解釋器,webserver將cgi環境變量和標準輸入發送到php-fpm中的子進程php-cgi中,調用對應的PHP腳本進行處理。
4.子進程完成處理,將輸出信息和錯誤信息從同一鏈接返回webserver,當子進程關閉,請求完成。
6 tcp三次握手
1.client向server發送一個SYN=1,seq=x隨機選擇初始序列號的tcp請求.
2.server收到這個請求後,緩存這個tcp請求和變量。而後向client發送SYN=1,ACK=1,seq=y的迴應請求。
3.client收到server的贊成創建鏈接的請求後,給服務器發送ACK=1,seq=x+1的請求報文。鏈接成功創建。
備註: 1.在前兩次握手中報文不攜帶數據,第三次握手能夠攜帶數據。
2.因爲第二次握手時,server會緩存tcp請求和變量因此會遇到DoS(拒絕服務攻擊)即只是給server發送大量的一次握手報文形成server大量緩存,致使資源耗盡。安全
7 線程安全
多線程訪問時,採用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其餘線程不能進行訪問直到該線程讀取完,其餘線程纔可以使用。不會出現數據不一致或者數據污染。服務器
8 C語言內存管理多線程
內存空間主要由五個部分組成代碼段、數據段、BSS段,堆和棧組成.其中代碼段,數據段和BSS段是編譯的時候由編譯器分配,堆和棧是運行時由程序分配。
代碼段:存放程序執行代碼的內存區域,一般爲只讀。
數據段:存放初始化的全局變量和靜態變量的內存區域,屬於靜態內存分配。能夠分爲只讀數據段和讀寫數據段,字符串常量等存放在只讀數據段。
BSS段 :用來存放未初始化的全局變量和靜態變量,屬於靜態內存分配。BSS節不存放數據只是簡單的維護程序開始和結束的地址。
堆:是動態分配的內存段,malloc函數開闢新內存(加入堆中),free函數釋放。 特色:靈活方便,數據適應面普遍。缺點:效率有必定下降。
棧:存放臨時建立的局部變量的(函數中定義的,不包括static),在函數調用的時候參數和返回值都會存在棧中。 特色:速度快高效。缺點:大小有限制不靈活。
9 strcpy和mecpy區別?
原型:char* strcpy(char* dest, const char* src);
strcpy只用於字符串複製,而且它在複製字符串內容以外,還會複製字符串的結束符。
原型:void *memcpy( void *dest, const void *src, size_t count);
memcpy提供了通常內存的複製。即memcpy對於須要複製的內容沒有限制
10 C語言全局變量和局部變量的存儲位置?
全局變量存儲在數據段或者BSS段,局部變量存儲在棧中。
11 判斷鏈表相交
判斷兩個鏈表的最後一個節點是否一致。
12 相交鏈表的第一個結點
長的鏈表先走(長-短的距離),而後兩個鏈表一塊兒走,每走一次比較一次第一個相同的點便是。
13 將字符串中空格替換爲20%
統計字符串中空格的個數,而後計算替換後的長度。從字符串的最後一個開始遍歷遇到空格則將20%寫入,不然將字符寫入。
注意:問清楚是在原來的字符串空間裏進行替換仍是開闢新的空間。
問題總結: 1.開場白要突出項目的技術亮點和難點。 2.百度注重基礎和算法。 3.服務器方面和操做系統方面。