最近在網路上看到很多的小夥伴們都在詢問如何應對php面試,這個對於有工作經驗和實戰項目的小伙伴來說是沒什麼問題的,但是對於剛學習完php的小伙伴們、 php面試卻是一個很重要的一步,那麼今天php中文網就給大家總結了一下php面試題,其中有很多題目都是很多程式設計師在面試的時候遇到的!希望可以幫助你!
第一部分:php基礎面試題
1.PHP語言的一大優勢是跨平台,什麼是跨平台?
PHP的運作環境最優搭配為Apache+MySQL+PHP,此運作環境可以在不同作業系統(例如windows、Linux等)上配置,不受操作系統的限制,所以叫跨平台
2.說一下你所掌握的網頁前端技術有哪些?
熟練DIV+CSS網頁佈局,JavaScript,jQuery框架、photoshop圖片處理
##3.現在編程中常採取MVC三層結構,請問MVC分別指哪三層,有什麼優點?
MVC三層分別指:業務模型、視圖、控制器,由控制器層呼叫模型處理數據,然後將資料對應到視圖層進行顯示,優點是:①可以實現程式碼的重用性,避免產生程式碼冗餘;②M和V的實作程式碼分離,從而使同一個程式可以使用不同的表現形式
##4.對json資料格式的理解?
JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,json資料格式固定,可以被多種語言用作資料的傳遞
PHP中處理json格式的函數為json_decode( string $json [, bool $assoc ] ) ,接受一個 JSON格式的字串並且把它轉換為PHP變量,參數json待解碼的json string格式的字串。 assoc當此參數為TRUE時,將傳回array而非object;Json_encode:將PHP變數轉換成json格式
5. AJAX的優點是什麼?
ajax是非同步傳輸技術,可以透過javascript實現,也可以透過JQuery框架實現,實現局部刷新,減輕了伺服器的壓力,也提高了用戶體驗6.在程式的開發中,如何提升程式的運作效率?
①優化SQL語句,查詢語句中盡量不使用select *,用哪個欄位查哪個欄位;少用子查詢可用表連接取代;少用模糊查詢;
②資料表中建立索引;
##③對程式中常用到的資料產生快取;
7.PHP處理數組的常用函數? (重點看函數的'參數'和'返回值')
①array()建立數組;③array_push()將一個或多個元素插入數組的末尾(入堆疊);
######④array_column ()傳回輸入陣列中某個單一列的值;############⑤###array_combine###()透過合併兩個陣列來建立一個新陣列;#### ########⑥###array_reverse###()以相反的順序傳回陣列;############⑦array_unique()刪除陣列中的重複值;### ###⑧in_array()檢查陣列中是否存在指定的值;
#8.PHP處理字串的常用函數?
①trim()移除字串兩側的空白字元和其他字元;
②substr_replace()把字串的一部分替換為另一個字串;
③substr_count()計算子字串在字串中出現的次數;
④substr()傳回字串的一部份;
⑤strtolower()把字串轉換成小寫字母;
⑥strtoupper()把字串轉換為大寫字母;
⑦strtr()轉換字串中特定的字元;
⑧strrchr()查找字串在另一個字串中最後一次出現;
⑨strstr()查找字串在另一字串中的第一次出現(對大小寫敏感);strrev()反轉字串;strlen()傳回字串的長度;str_replace()取代字串中的一些字元(對大小寫敏感);print()輸出一個或多個字串;explode()把字串打散為數組;is_string()偵測變數是否為字串;strip_tags()從一個字串中移除HTML標籤;mb_substr()用來截中文與英文的函數
第二部分:php面試題之資料庫部分
1. 常見的關係型資料庫管理系統產品有?
答案:Oracle、SQL Server、MySQL、Sybase、DB2、Access等。
2.什麼是事務?及其特性?
答案:事務:是一系列的資料庫操作,是資料庫應用的基本邏輯單位。
事務特性:
(1)原子性:即不可分割性,事務要麼全部被執行,要麼就全部不被執行。
(2)一致性或可串性。事務的執行使得資料庫從一種正確狀態轉換成另一種正確狀態
(3)隔離性。在事務正確提交之前,不允許把該事務對資料的任何變更提供給任何其他事務,
(4) 持久性。交易正確提交後,其結果將永久保存在資料庫中,即使在交易提交後有了其他故障,事務的處理結果也會被保存。
或這樣理解:
交易就是被綁定在一起作為一個邏輯工作單元的SQL語句分組,如果任何一個語句操作失敗那麼整個操作就被失敗,以後操作就會回滾到操作前狀態,或是上有個節點。為了確保要么執行,要么不執行,就可以使用事務。要將有組語句當作交易考慮,就需要通過ACID測試,即原子性,一致性,隔離性和持久性
3.char和varchar的區別?
#回答:是固定長度的類型,varchar則是一種可變長度的類型,它們的差異是:
char(M)類型的資料列裡,每個值都佔用M個位元組,如果某個長度小於M,MySQL就會在它的右邊用空格字元補足. (在檢索作業中那些填補出來的空格字元會被去掉)在varchar(M)類型的資料列裡,每個值只佔用剛好夠用的位元組再加上一個用來記錄其長度的位元組(即總長度為L+1位元組).
4.Mysql 的儲存引擎,myisam和innodb的差別。
答案:簡單的表達:
MyISAM 是非交易的儲存引擎;適合用於頻繁查詢的應用;表鎖,不會出現死鎖;適合小數據,小並發
innodb是支援事務的儲存引擎;合於插入和更新操作比較多的應用;設計合理的話是行鎖(最大差異就在鎖的層級);適合大數據,大並發。
5.資料表類型有哪些
# 答:MyISAM、InnoDB、HEAP 、BOB,ARCHIVE,CSV等。
MyISAM:成熟、穩定、容易管理,快速讀取。有些功能不支援(交易等),表級鎖定。
InnoDB:支援事務、外鍵等功能、資料行鎖定。空間佔用大,不支援全文索引等。
第三部分:php面試題之物件導向
#1.什麼是物件導向?(理解回答)
答案:物件導向OO = 物件導向的分析OOA + 物件導向的設計OOD + 物件導向的程式設計OOP;通俗的解釋就是“萬物皆對象”,把所有的事物都看作一個個個可以獨立的對象(單元),它們可以自己完成自己的功能,而不是像C那樣分成一個個函數。
現在純正的OO語言主要是Java和C#,PHP、C++也支援OO,C是流程導向的。
2、簡述 private、 protected、 public修飾符的存取權。
答案:private : 私有成員, 在類別的內部才可以存取。
protected : 保護成員,該類別內部和繼承類別中可以存取。
public : 公共成員,完全公開,沒有存取限制。
3、堆疊和堆疊的差別?
答案:堆疊是編譯期間分配好的記憶體空間,因此你的程式碼中必須就堆疊的大小有明確的定義;
##堆疊是程式運行期間動態分配的記憶體空間,你可以根據程式的運行情況來決定要分配的堆記憶體的大小。4、物件導向的特徵有哪些面向?
#答案:主要有封裝,繼承,多態。如果是4個方面則加上:抽象。5. 什麼是建構函數,什麼是析構函數,作用是什麼?
答案:「建構子」建構函式(方法)是物件建立完成後第一個被物件自動呼叫的方法。它存在於每個宣告的類別中,是一個特殊的
成員方法。作用是執行一些初始化的任務。 Php中使用construct()宣告建構方法,並且只能宣告一個。
析構函數(方法)作用和建構方法正好相反,是物件被銷毀之前最後一個被物件自動呼叫的方法。是PHP5中新加入的內容作用是用於實現在銷毀一個物件之前執行一些特定的操作,諸如關閉檔案和釋放記憶體等。總結:
php面試題目對於每家公司都是不一樣的,這裡我們是小夥伴們總結了一下在比較常遇到的php面試題目,但也可以根據我們總結的php面試題進行自行拓展和延伸!
相關推薦:
##1.11個提問頻率最高的php面試題php面試題分享以上是2017最完整的php面試題目及答案總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!