Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse objektorientierter Fragen in PHP-Interviewfragen

Analyse objektorientierter Fragen in PHP-Interviewfragen

黄舟
黄舟Original
2017-11-10 10:38:394069Durchsuche

Objektorientiert ist ein unverzichtbarer Bestandteil des Erlernens von PHP. Wenn viele Freunde zu Vorstellungsgesprächen ins Unternehmen gehen, kennen sie die objektorientierten Fragen in den PHP-Interviewfragen nicht Was sollen wir tun? Im vorherigen Artikel haben wir auch PHP-Interviewfragen, schriftliche Testfragen und PHP-Kerntechnische Fragen vorgestellt.

Objektorientierte Fragen für PHP-Interviewfragen

1. Notieren Sie die Unterschiede zwischen den drei Zugriffskontrollmodi von PHP: öffentlich, geschützt und privat (Sina Technology Department)

public : Öffentlich, überall zugänglich
protected: Vererbt, Zugriff nur in dieser Klasse oder Unterklasse möglich, Zugriff an anderer Stelle nicht erlaubt
private: Privat, nur in dieser Klasse zugänglich, an anderer Stelle Zugriff nicht erlaubt

Verwandte Fragen: Bitte schreiben Sie den PHP5-Berechtigungskontrollmodifikator
private protected public
2. Entwurfsmusterprüfung: Bitte verwenden Sie die monomorphe Entwurfsmustermethode, um die Klasse zu entwerfen Folgende Anforderungen:
Bitte verwenden Sie PHP5-Code zum Schreiben von Klassen, um sicherzustellen, dass bei jedem Zugriff auf die Datenbankverbindung nur eine Datenbankverbindung hergestellt werden kann. Der spezifische detaillierte Code für die Verbindung zur Datenbank ist ignoriert. Bitte schreiben Sie den Hauptlogikcode (Sina Technology Department)
<?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. Schreiben Sie die Ausgabeergebnisse der folgenden Programme (Sina Technology Department)
<?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();
?>

Ausgabeergebnis 10

[!]4. Was sind die magischen Methoden-Funktionen in PHP5? Bitte geben Sie Beispiele für ihre Verwendung an (von Tencent PHP-Ingenieuren geschriebene Testfragen)

sleep serialisiert zuvor verwendet
wakeup wird aufgerufen, wenn unserialize aufgerufen wird
toString wird aufgerufen, wenn ein Objekt gedruckt wird
set_state wird aufgerufen, wenn var_export aufgerufen wird, und der Rückgabewert von set_state wird verwendet als der Rückgabewert von var_export
construct Konstruktor , aufgerufen, wenn das Objekt instanziiert wird
destruct Destruktor, aufgerufen, wenn das Objekt zerstört wird
call Das Objekt ruft eine Methode auf Wenn die Methode vorhanden ist, rufen Sie sie direkt auf. Wenn sie nicht vorhanden ist, wird die Funktion call
aufgerufen Wenn das Attribut vorhanden ist, wird die Funktion get aufgerufen get wird aufgerufen, wenn festgestellt wird, ob das Attribut eines Objekts vorhanden ist
set unset wird aufgerufen, wenn die Eigenschaften eines Objekts zugewiesen werden set
wird aufgerufen, wenn ein Objekt geklont wird isset
Wenn beim Instanziieren eines Objekts die entsprechende Klasse nicht vorhanden ist, wird diese Methode aufgerufen unset
Verwandte Themen: Bitte notieren Sie den Konstruktor und Destruktor von PHP5 clone
Konstruktor: autoload

Destruktor:

5. Wie verwende ich die folgende Klasse und erkläre, was das Folgende bedeutet?construct
destructDoppelte MD5-Verschlüsselung

6 Sie deklarieren eine Klasse namens „myclass“ ohne Methoden oder Eigenschaften? (Yahoo)
<?php
    class test{
        function Get_test($num){
            $num = md5(md5($num)."En");
            return $num;
        }
    }

    $testObject = new test();
    $encryption = $testObject->Get_test("itcast");
    echo $encryption;
?>

Verwandte Frage: Wie deklariere ich eine Klasse namens „myclass“ ohne Methoden und Attribute?

7. Wie würden Sie ein Objekt erstellen, das eine Instanz von „myclass“ ist (Yahoo)
class myclass{};
Verwandte Themen: Wie instanziiere ich ein Objekt mit dem Namen „myclass“?
8. Wie greifen Sie innerhalb der Klasse auf die Eigenschaften einer Klasse zu und legen diese fest?
$obj= new myclass();
Verwenden Sie die Anweisung: $this->propertyName, zum Beispiel:
9. Der Code unten _ weil .(Tencent)

A wird funktionieren, Klassendefinitionen können in mehrere PHP-Blöcke aufgeteilt werden.
<?php
    class mycalss{
        private $propertyName;
        public function construct()
        {
            $this->propertyName = "value";
        }
    }
?>
B wird nicht funktionieren Definitionen müssen in einem einzelnen PHP-Block sein.
C funktioniert nicht, Klassendefinitionen müssen in einer einzelnen Datei sein, können aber in mehreren PHP-Blöcken sein.
D funktioniert, Klassendefinitionen können in mehrere aufgeteilt werden Dateien und mehrere PHP-Blöcke.
<?php
class Foo{
?>
<?php
    function bar(){
        print "bar";
    }
}
?>
Antwort: B


10. Die Attribute einer Klasse können serialisiert und in der Sitzung gespeichert werden, sodass die gesamte Klasse später wiederhergestellt werden kann .
serialize() und unserialize()

11 Wenn die abgeleitete Klasse in PHP eine Funktion mit demselben Namen wie die übergeordnete Klasse hat, ersetzt die Funktion der abgeleiteten Klasse die Funktion der übergeordneten Klasse Klasse, und das Programmergebnis ist


A tmp
C
12. Was ist der Unterschied zwischen Schnittstelle und abstrakter Klasse?
<?php
class A{
    function disName(){
        echo "Picachu";
    }
}

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

$cartoon = New B;
$cartoon->disName();
?>


Abstrakte Klasse
ist eine Klasse, die nicht instanziiert werden kann und nur als übergeordnete Klasse anderer Klassen verwendet werden kann. Abstrakte Klassen werden über das Schlüsselwort abstract deklariert.
Abstrakte Klassen ähneln gewöhnlichen Klassen. Sie enthalten beide Mitgliedsvariablen und Mitgliedsmethoden. Der Unterschied zwischen den beiden besteht darin, dass eine abstrakte Methode von Natur aus keinen Methodenkörper hat von Unterklassen überschrieben werden.
Das Format der abstrakten Methode ist: abstrakte Funktion 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面试题


Teilen von PHP-Kerntechnologiefragen in PHP-Interviewfragen


Eine Zusammenfassung schriftlicher Testfragen in PHP-Interviewfragen


Die umfassendste Zusammenfassung der PHP-Interviewfragen und -antworten im Jahr 2017


Das obige ist der detaillierte Inhalt vonAnalyse objektorientierter Fragen in PHP-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn