目錄
php面試題之物件導向題目
1. 寫出php 的public、protected、private 三種存取控制模式的區別(新浪網技術部)
相關題目:請寫出PHP5 權限控制修飾符
private protected public
2. 設計模式考察:請用單態設計模式方法設計類滿足以下需求:
連接資料庫的詳細程式碼忽略,請寫出主要邏輯程式碼(新浪網技術部)" >請用PHP5 程式碼編寫類別實作在每次對資料庫連接的存取中都只能獲得唯一的一個資料庫連接,具體連接資料庫的詳細程式碼忽略,請寫出主要邏輯程式碼(新浪網技術部)
3. 寫出下列程式的輸出結果(新浪網技術部)
析構函數,當物件銷毀時被呼叫
get
設定一個物件的屬性時,若屬性存在,則直接賦值,若不存在,則呼叫
函數
isset
unset 一個物件的屬性時被呼叫

析構函式:
13. 类中如何定义常量、如何类中调用常量、如何在类外调用常量。
14. autoload()函数是如何运作的?
15. 哪种OOP设置模式能让类在整个脚本里只实例化一次?(奇矩互动)
16. 借助继承,我们可以创建其他类的派生类。在PHP中,子类最多可以继承几个父类?(奇矩互动)
17. 执行以下代码,输出结果是(奇矩互动)
18. 执行以下代码,输出结果是
19. 请定义一个名为MyClass的类,这个类只有一个静态方法justDoIt。(卓望)
20. 只有该类才能访问该类的私有变量吗?(卓望)
21. 写出你知道的几种设计模式,并用php代码实现其中一种。(卓望)
首頁 後端開發 php教程 php面試題中物件導向的題目分析

php面試題中物件導向的題目分析

Nov 10, 2017 am 10:38 AM
php 物件

物件導向是我們學習php不可或缺的一部分,很多朋友對物件導向都是一知半解的,所以導致很多朋友去公司面試的時候,問到php面試題中物件導向的問題就不知道如何是好,在之前的文章我們也介紹php面試題,筆試題,php核心技術題, 今天我們就帶大家來看看這個php面試題中的物件導向的題到底有哪些?

php面試題之物件導向題目

1. 寫出php 的public、protected、private 三種存取控制模式的區別(新浪網技術部)

#public :公有,任何地方都可以訪問
protected:繼承,只能在本類或子類中訪問,在其它地方不允許訪問
private:私有,只能在本類中訪問,在其他地方不允許存取

相關題目:請寫出PHP5 權限控制修飾符
private protected public
2. 設計模式考察:請用單態設計模式方法設計類滿足以下需求:
請用PHP5 程式碼編寫類別實作在每次對資料庫連接的存取中都只能獲得唯一的一個資料庫連接,具體連接資料庫的詳細程式碼忽略,請寫出主要邏輯程式碼(新浪網技術部)
<?php
    class Mysql
    {
        private static $instance = null;
        private $conn;

        // 构造方法,设置为private,不允许通过new获得对象实例
        private function construct(argument)
        {
            $conn = mysql_connect("localhost","root","root");
        }

        // 获取实例方法
        public function getInstance()
        {
            if (!self::$instance instanceof self) {
                self::$instance = new self;
            }
            return self::$instance;
        }

        // 禁止克隆
        private function clone(){}
    }

    // 获得对象
    $db = Mysql::getInstance();
?>
登入後複製
3. 寫出下列程式的輸出結果(新浪網技術部)
<?php
    class a
    {
        protected $c;

        public function a()
        {
            $this->c = 10;
        }
    }

    class b extends a
    {
        public function print_data()
        {
            return $this->c;
        }
    }

    $b = new b();
    echo $b->print_data();
?>
登入後複製

輸出結果10







# [!]4. PHP5 中魔術方法
函數有哪幾個,請舉例說明各自的用法(騰訊PHP 工程師筆試題)sleep serialize 之前被呼叫
wakeup unserialize 時被呼叫toString
列印一個物件時被呼叫set_state
呼叫var_export 時被調用,用set_state的回傳值作為var_export 的回傳值
construct
建構子,實例化物件時被呼叫

destruct
析構函數,當物件銷毀時被呼叫

call 物件調用某個方法,若存在該方法,則直接調用,若不存在,則調用call
函數 get

讀取一個物件屬性時,若屬性存在,則直接傳回,若不存在,則呼叫
get
函數

set
設定一個物件的屬性時,若屬性存在,則直接賦值,若不存在,則呼叫
set
函數
isset
偵測一個物件的屬性是否存在時被呼叫
unset
unset 一個物件的屬性時被呼叫

clone

複製物件時被呼叫
autoload

實例化一個物件時,如果對應的類別不存在,則此方法被呼叫

相關題目:請寫出php5 的建構子和析構函式

建構子:

construct

析構函式:
destruct

5. 如何使用下面的類別,並解釋下面什麼意思?

<?php
    class test{
        function Get_test($num){
            $num = md5(md5($num)."En");
            return $num;
        }
    }

    $testObject = new test();
    $encryption = $testObject->Get_test("itcast");
    echo $encryption;
?>
登入後複製

雙重md5 加密

6. How would you declare a class named “myclass” with no methods or properties?(Yahoo)
class myclass{};
登入後複製

相關題目:如何宣告一個名為「myclass」的沒有方法與屬性的類別?
7. How would you create an object, which is an instance of “myclass”? (Yahoo)

$obj= new myclass();
登入後複製
相關題目:如何實例化一個名為“myclass”的物件?
8. How do you access and set properties of a class from within the class?(Yahoo)

使用語句:$this->propertyName,例如:###
<?php
    class mycalss{
        private $propertyName;
        public function construct()
        {
            $this->propertyName = "value";
        }
    }
?>
登入後複製
## #9. The code below _ because .(騰訊)###
<?php
class Foo{
?>
<?php
    function bar(){
        print "bar";
    }
}
?>
登入後複製
###A. will work, class definitions can be split up into multiple PHP blocks.###B. will not work, class definitions must be in a single PHP block.###C. will not work, class definitions must be in a single file but can be in multiple PHP blocks.###D. will work, class definitions can be split up into multiple files and multi PHP blo .###答案: B######10. 類別的屬性可以序列化後保存到session 中,以便以後可以恢復整個類,這要用到的函數是。 ###serialize() 和unserialize()######11. 在PHP 中,如果衍生類別與父類別有相同名字的函數,則衍生類別的函數會取代父類別的函數,程式結果為# ##
<?php
class A{
    function disName(){
        echo "Picachu";
    }
}

class B extends A{
    var $tmp;
    function disName(){
        echo "Doraemon";
    }
}

$cartoon = New B;
$cartoon->disName();
?>
登入後複製
###A. tmp###B. Picachu###C. disName###D. Doraemon###E. 無輸出###答案:D#######12. 介面與抽象類別的區別是什麼? #########抽象類別###是一種不能被實例化的類,只能作為其他類別的父類來使用。抽象類別是透過關鍵字abstract 來聲明的。 ###抽象類別與普通類別相似,都包含成員變數和成員方法,兩者的差異在於,抽象類別中至少要包含一個抽象方法,抽象方法沒有方法體,該方法天生就是要被子類別重寫的。 ###抽象方法的格式為:abstract function abstractMethod();###

接口是通过 interface 关键字来声明的,接口中的成员常量和方法都是 public 的,方法可以不写关键字 public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。
抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。
子类继承抽象类使用 extends,子类实现接口使用 implements。

13. 类中如何定义常量、如何类中调用常量、如何在类外调用常量。

类中的常量也就是成员常量,常量就是不会改变的量,是一个恒值。定义常量使用关键字 const,例如:const PI = 3.1415326;
无论是类内还是类外,常量的访问和变量是不一样的,常量不需要实例化对象,访问常量的格式都是类名加作用域操作符号(双冒号)来调用,即:类名:: 类常量名

14. autoload()函数是如何运作的?

使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。
当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行autoload()函数。

这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后就执行 include 或者 require 来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。

15. 哪种OOP设置模式能让类在整个脚本里只实例化一次?(奇矩互动)

A. MVC
B. 代理模式
C. 状态模式
D. 抽象工厂模式
E. 单件模式
答案:E

16. 借助继承,我们可以创建其他类的派生类。在PHP中,子类最多可以继承几个父类?(奇矩互动)

A. 1个
B. 2个
C. 取决于系统资源
D. 3个
E. 想要几个有几个
答案:A

17. 执行以下代码,输出结果是(奇矩互动)
<?php
    abstract class a{
        function construct()
        {
            echo "a";
        }
    }

    $a = new a();
?>
登入後複製

A. a
B. 一个错误警告
C. 一个致命性的报错
答案:C 因为类a是抽象类,不能被实例化

18. 执行以下代码,输出结果是
<?php
class a{
    function construct(){
        echo "echo class a something";
    }
}

class b extends a{
    function construct(){
        echo "echo class b something";
    }
}

$a = new b();
?>
登入後複製

A. echo class a something echo class b something
B. echo class b something echo class a something
C. echo class a something
D. echo class b something
答案:D
类 b 继承自类 a,两个类都定义了构造函数,由于二者名字相同,所以子类中的构造函数覆盖了父类的构造函数,要想子类对象实例化时也执行父类的构造函数,需要在子类构造函数中使用 parent::construct()来显示调用父类构造函数。

19. 请定义一个名为MyClass的类,这个类只有一个静态方法justDoIt。(卓望)
<?php
class MyClass{
    public static function justDoIt(){

    }
}
?>
登入後複製
20. 只有该类才能访问该类的私有变量吗?(卓望)

是的

21. 写出你知道的几种设计模式,并用php代码实现其中一种。(卓望)

单例模式,工厂模式
单例模式 实现代码 见 第二题

总结:

我们在这个片文章中,我们主要给大家汇总了一下php面试题中关于面向对象中的一些常见面试问题,具体细节大家可以自己扩展,希望对你有所帮助!

相关推荐:

最让人容易出错的10道php面试题


php面試題目中php核心技術的問題分享


#php面試題目中筆試題目的總結


2017最完整的php面試題目及答案摘要


以上是php面試題中物件導向的題目分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles