2020PHP面試題大全【面向對象部分】

一、什麼是面向對象?(理解着回答)php

面向對象是一種思想,是基於面向過程而言的,就是說面向對象是將功能等經過對象來實現,將功能封裝進對象之中,讓對象去實現具體的細節。html

面向對象有三大特徵:封裝性、繼承性、多態性。laravel

如今純正的OO語言主要是 Java 和 C#,PHP、C++也支持OO,C是面向過程的。sql

二、簡述 private、 protected、 public修飾符的訪問權限。shell

private : 私有成員, 在類的內部才能夠訪問。編程

protected : 保護成員,該類內部和繼承類中能夠訪問。數組

public : 公共成員,徹底公開,沒有訪問限制。服務器

三、堆和棧的區別?架構

棧是編譯期間就分配好的內存空間,所以你的代碼中必須就棧的大小有明確的定義;併發

堆是程序運行期間動態分配的內存空間,你能夠根據程序的運行狀況肯定要分配的堆內存的大小。

四、XML 與 HTML 的主要區別

語法要求不一樣:

(1)在html中不區分大小寫,在xml中嚴格區分。

(2)在HTML中,有時不嚴格,若是上下文清楚地顯示出段落或者列表鍵在何處結尾,那麼你能夠省略或者之類的結束標記。在XML中,是嚴格的樹狀結構,絕對不能省略掉結束標記。

(3) 在XML中,擁有單個標記而沒有匹配的結束標記的元素必須用一個/ 字符做爲結尾。這樣分析器就知道不用查找結束標記了。

(4)在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。

(5)在HTML中,能夠擁有不帶值的屬性名。在XML中,全部的屬性都必須帶有相應的值。

(6) 在XML文檔中,空白部分不會被解析器自動刪除;可是html是過濾掉空格的。

標記不一樣:

(1)html使用固有的標記;而xml沒有固有的標記。

(2)Html標籤是預約義的;XML標籤是免費的、自定義的、可擴展的。

做用不一樣:

(1)html是用來顯示數據的;xml是用來描述數據、存放數據的,因此能夠做爲持久化的介質!Html將數據和顯示結合在一塊兒,在頁面中把這數據顯示出來;xml則將數據和顯示分開。 XML被設計用來描述數據,其焦點是數據的內容。HTML被設計用來顯示數據,其焦點是數據的外觀。

(2)xml不是HTML的替代品,xml和html是兩種不一樣用途的語言。 XML 不是要替換 HTML;實際上XML 能夠視做對 HTML 的補充。XML 和HTML 的目標不一樣HTML 的設計目標是顯示數據並集中於數據外觀,而XML的設計目標是描述數據並集中於數據的內容。

(3)對於XML最好的形容多是: XML是一種跨平臺的,與軟、硬件無關的,處理與傳輸信息的工具。

(4)XML將來將會無所不在。XML將成爲最廣泛的數據處理和數據傳輸的工具。

五、面向對象的特徵有哪些方面?

主要有封裝,繼承,多態。若是是4個方面則加上:抽象。

封裝:

封裝是保證軟件部件具備優良的模塊性的基礎,封裝的目標就是要實現軟件部件的高內聚,低耦合,防止程序相互依賴性而帶來的變更影響.

繼承:

在定義和實現一個類的時候,能夠在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容做爲本身的內容,並能夠加入若干新的內容,或修改原來的方法使之更適合特殊的須要,這就是繼承。繼承是子類自動共享父類數據和方法的機制,這是類之間的一種關係,提升了軟件的可重用性和可擴展性。

多態:

多態是指程序中定義的引用變量所指向的具體類型和經過該引用變量發出的方法調用在編程時並不肯定,而是在程序運行期間才肯定,即一個引用變量倒底會指向哪一個類的實例對象,該引用變量發出的方法調用究竟是哪一個類中實現的方法,必須在由程序運行期間才能決定。

抽象:

抽象就是找出一些事物的類似和共性之處,而後將這些事物歸爲一個類,這個類只考慮這些事物的類似和共性之處,而且會忽略與當前主題和目標無關的那些方面,將注意力集中在與當前目標有關的方面。例如,看到一隻螞蟻和大象,你可以想象出它們的相同之處,那就是抽象。

六、抽象類和接口的概念以及區別?

抽象類:它是一種特殊的,不能被實例化的類,只能做爲其餘類的父類使用。使用abstract關鍵字聲明。

接口:它是一種特殊的抽象類,也是一個特殊的類,使用interface聲明。

區別:

(1)抽象類的操做經過繼承關鍵字extends實現,而接口的使用是經過implements關鍵字來實現。

(2)抽象類中有數據成員,能夠實現數據的封裝,可是接口沒有數據成員。

(3)抽象類中能夠有構造方法,可是接口沒有構造方法。

(4)抽象類的方法能夠經過private、protected、public關鍵字修飾(抽象方法不能是private),而接口中的方法只能使用public關鍵字修飾。

(5)一個類只能繼承於一個抽象類,而一個類能夠同時實現多個接口。

(6)抽象類中能夠有成員方法的實現代碼,而接口中不能夠有成員方法的實現代碼。

七、什麼是構造函數,什麼是析構函數,做用是什麼?

構造函數(方法)是對象建立完成後第一個被對象自動調用的方法。它存在於每一個聲明的類中,是一個特殊的成員方法。做用是執行一些初始化的任務。Php中使用__construct()聲明構造方法,而且只能聲明一個。

析構函數(方法)做用和構造方法正好相反,是對象被銷燬以前最後一個被對象自動調用的方法。是PHP5中新添加的內容做用是用於實如今銷燬一個對象以前執行一些特定的操做,諸如關閉文件和釋放內存等。

八、如何重載父類的方法,舉例說明

重載,即覆蓋父類的方法,也就是使用子類中的方法替換從父類中繼承的方法,也叫方法的重寫。

覆蓋父類方法的關鍵是在子類中建立於父類中相同的方法包括方法的名稱、參數和返回值類型。PHP中只要求方法的名稱相同便可。

九、經常使用的魔術方法有哪些?舉例說明

php規定以兩個下劃線(__)開頭的方法都保留爲魔術方法,因此建議你們函數名最好不用__開頭,除非是爲了重載已有的魔術方法。

__construct() 實例化類時自動調用。

__destruct() 類對象使用結束時自動調用。

__set() 在給未定義的屬性賦值的時候調用。

__get() 調用未定義的屬性時候調用。

__isset() 使用isset()或empty()函數時候會調用。

__unset() 使用unset()時候會調用。

__sleep() 使用serialize序列化時候調用。

__wakeup() 使用unserialize反序列化的時候調用。

__call() 調用一個不存在的方法的時候調用。

__callStatic()調用一個不存在的靜態方法是調用。

__toString() 把對象轉換成字符串的時候會調用。好比 echo。

__invoke() 當嘗試把對象當方法調用時調用。

__set_state() 當使用var_export()函數時候調用。接受一個數組參數。

__clone() 當使用clone複製一個對象時候調用。

十、$this和self、parent這三個關鍵詞分別表明什麼?在哪些場合下使用?

$this 當前對象

self 當前類

parent 當前類的父類

$this在當前類中使用,使用->調用屬性和方法。

self也在當前類中使用,不過須要使用::調用。

parent在類中使用。

十一、類中如何定義常量、如何類中調用常量、如何在類外調用常量。

類中的常量也就是成員常量,常量就是不會改變的量,是一個恆值。

定義常量使用關鍵字const.

例如:const PI = 3.1415326;

不管是類內仍是類外,常量的訪問和變量是不同的,常量不須要實例化對象,

訪問常量的格式都是類名加做用域操做符號(雙冒號)來調用。

即:類名 :: 類常量名;

十二、做用域操做符::如何使用?都在哪些場合下使用?

(1)調用類常量

(2)調用靜態方法(使用static修飾的類方法)

1三、__autoload()方法的工做原理是什麼?

使用這個魔術函數的基本條件是類文件的文件名要和類的名字保持一致。

當程序執行到實例化某個類的時候,若是在實例化前沒有引入這個類文件,那麼就自動執行__autoload()函數。

這個函數會根據實例化的類的名稱來查找這個類文件的路徑,當判斷這個類文件路徑下確實存在這個類文件後

執行include或者require來載入該類,而後程序繼續執行,若是這個路徑下不存在該文件時就提示錯誤。

使用自動載入的魔術函數能夠沒必要要寫不少個include或者require函數。

點關注,不迷路

好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是人才。以前說過,PHP方面的技術點不少,也是由於太多了,實在是寫不過來,寫過來了你們也不會看的太多,因此我這裏把它整理成了PDF和文檔,若是有須要的能夠

點擊進入暗號: PHP+「平臺」

在這裏插入圖片描述

在這裏插入圖片描述


更多學習內容能夠訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)

以上內容但願幫助到你們,不少PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提高,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨須要的能夠免費分享給你們,須要的能夠加入個人 PHP技術交流羣

相關文章
相關標籤/搜索