php面接問題その4——PHP対象(基礎部分)

6705 ワード

四、PHP対象
1.phpのpublic、protected、privateの3種類のアクセス制御モードの違いを書く(新浪網技術部)
public:共通で、どこでもprotectedにアクセスできます:継承、本クラスまたはサブクラスでのみアクセスできます.private:プライベート、本クラスでのみアクセスできます.他の場所ではアクセスできません.private:プライベート、他の場所ではアクセスできません.
PHP 5権限コントロール修飾子を書いてください
private protected public
2.設計モード考察:単態設計モード方法で設計類は以下のニーズを満たす:
PHP 5コードでクラスを作成してください.現在、データベース接続へのアクセスのたびに唯一のデータベース接続しか得られません.具体的な接続データベースの詳細コードは無視して、主要な論理コードを書いてください(新浪網技術部)
<?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.PHP 5の中でマジックの方法の関数はどれらがあって、例を挙げてそれぞれの用法を説明してください(テンセントPHP技師の筆記試験問題)__sleep serialize以前に__wakeup unserializeが呼び出されたときに__toStringが呼び出されてオブジェクトが印刷されたときに__set_stateが呼び出されてvar_が呼び出されたexport時に呼び出され、__set_stateの戻り値をvar_とするexportの戻り値__constructコンストラクタは、オブジェクトをインスタンス化するときに呼び出される__destruct構造関数であり、オブジェクトが破棄されるときに呼び出される__callオブジェクトによってメソッドが呼び出され、そのメソッドが存在する場合は直接呼び出され、存在しない場合は__call関数__getを呼び出してオブジェクト属性を読み出す場合、属性が存在する場合は直接戻り、存在しない場合は、__getを呼び出す関数__setが1つのオブジェクトの属性を設定する場合、属性が存在する場合は直接値を付与し、存在しない場合は、__setを呼び出す関数__issetが1つのオブジェクトの属性が存在するか否かを検出するときに__unset unset 1つのオブジェクトの属性が呼び出されたときに__cloneが呼び出されてオブジェクトがクローン化するときに__autoloadが1つのオブジェクトが呼び出されたときに、対応するクラスが存在しない場合、メソッドが呼び出されます.
関連テーマ:php 5の構造関数と構造関数を書いてください
コンストラクション関数:__constructコンストラクション関数:__destruct5.次のクラスをどのように使用し、次の意味を説明しますか?
<?php
	class test{
		function Get_test($num){
			$num = md5(md5($num)."En");
			return $num;
		}
	}

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

二重md 5暗号化
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 multiple PHP blocks.答え: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. tmpB. PicachuC. disNameD. DoraemonE. 出力しない答え:D
12.インタフェースと抽象クラスの違いは何ですか.
抽象クラスはインスタンス化できないクラスであり、他のクラスの親としてのみ使用できます.抽象クラスはキーワードabstractによって宣言されます.抽象クラスは普通のクラスと似ていて、メンバー変数とメンバーメソッドが含まれています.両者の違いは、抽象クラスには少なくとも1つの抽象メソッドが含まれていなければなりません.抽象メソッドにはメソッド体がありません.このメソッドは生まれながらにしてクラスに書き換えられます.抽象メソッドのフォーマットは、abstract function abstractMethod()です.
インタフェースはinterfaceキーワードで宣言され、インタフェースのメンバー定数とメソッドはpublicであり、メソッドはキーワードpublicを書かなくてもよいし、インタフェースのメソッドもメソッド体がない.インタフェースの中の方法も生まれつき布団類で実現される.抽象クラスとインタフェース実装の機能は非常に似ており,最大の違いはインタフェースがマルチ継承を実現できることである.アプリケーションで抽象クラスを選択するか、インタフェースを選択するかは、具体的な実装によって異なります.サブクラス継承抽象クラスはextends,サブクラス実装インタフェースはimplementsを用いる.
13.クラスで定数を定義する方法、クラスで定数を呼び出す方法、クラス外で定数を呼び出す方法.
クラスの定数はメンバー定数であり、定数は変更されない量であり、一定値です.定数を定義するには、キーワードconstを使用します.たとえば、const PI=3.1415326です.クラス内でもクラス外でも、定数のアクセスと変数は異なり、定数はインスタンス化オブジェクトを必要とせず、アクセス定数のフォーマットはクラス名と役割ドメイン操作記号(二重コロン)で呼び出されます.すなわち、 :: です.
14.autoload()関数はどのように動作しますか?
このマジック関数を使用する基本的な条件は、クラスファイルのファイル名がクラスの名前と一致することです.プログラムがクラスをインスタンス化するまで実行されると、インスタンス化前にクラスファイルが導入されない場合、__autoload()関数が自動的に実行されます.
この関数は、インスタンス化されたクラスの名前に基づいてこのクラスファイルのパスを検索し、このクラスファイルのパスの下にこのクラスファイルが確かに存在すると判断した後、includeまたはrequireを実行してクラスをロードし、プログラムは実行を続け、このパスの下にこのファイルが存在しない場合はエラーをプロンプトします.
15.どのOOP設定モードでクラスをスクリプト全体で一度だけインスタンス化できますか?(奇数モーメント相互作用)
A. MVCB. エージェントモード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.aB.エラー警告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 somethingB. echo class b something echo class a somethingC. echo class a somethingD. echo class b something解答:Dクラスbはクラスaから継承され、両クラスともコンストラクション関数が定義されている.両者の名前が同じであるため、サブクラスのコンストラクション関数は親クラスのコンストラクション関数を上書きし、サブクラスオブジェクトのインスタンス化時にも親クラスのコンストラクション関数を実行するには、サブクラスコンストラクション関数でparent::__construct()を使用して親クラスコンストラクション関数を呼び出す必要がある.
19.静的メソッドjustDoItが1つしかないMyClassというクラスを定義してください.(卓望)
<?php
class MyClass{
	public static function justDoIt(){

	}
}
?>

20.クラスのみがクラスのプライベート変数にアクセスできますか?(卓望)
はい
21.あなたが知っているいくつかの設計モードを書き出し、phpコードでその1つを実現します.(卓望)
単例モード、工場モード単例モード実現コードは第2題を参照