ホームページ  >  記事  >  バックエンド開発  >  収集する価値のある史上最も包括的な PHP 面接質問集 (面接をより効率的にする)

収集する価値のある史上最も包括的な PHP 面接質問集 (面接をより効率的にする)

慕斯
慕斯転載
2021-06-04 11:42:526707ブラウズ

この記事では、史上最も完全な PHP の基本的な面接の質問を共有し、基礎を強化するのに役立ちます。一定の参考値があるので、困っている友達が参考になれば幸いです。

収集する価値のある史上最も包括的な PHP 面接質問集 (面接をより効率的にする)

1. PHP の基本部分

1. PHP 言語の主な利点の 1 つはクロスプラットフォームです。クロスプラットフォーム?

PHP の最適な実行環境は、Apache MySQL PHP です。この実行環境は、さまざまなオペレーティング システム (Windows、Linux など) 上で構成でき、オペレーティング システムによって制限されないため、このように呼ばれます。クロスプラットフォーム

2. WEB開発におけるデータ入稿の方法は何通りありますか?違いは何ですか? Baidu はどの方法を使用しますか?

2 つのメソッドの取得と投稿
相違点:
(1) URL の可視性: url パラメーターは get メソッドでは可視ですが、get メソッドでは可視ではありません。 the post

(2) キャッシュ可能性: get メソッドはキャッシュできますが、post メソッドはキャッシュできません。

(3) 送信データサイズ: 一般的な get の送信データサイズは 2k ~ 4k を超えません (ブラウザによって制限は異なりますが、大きな差はありません); post のサイズリクエスト送信データはphp.iniに従って設定されます。ファイル設定は無限に大きくすることもできます。

(4) データ送信: get メソッドは URL アドレスバー結合によるパラメータの送信に使用され、post メソッドはボディによるデータの送信に使用されます。

提案:
1. get メソッドは Post メソッドよりも安全性が低く、機密情報が含まれています。Post データ送信メソッドを使用することをお勧めします。
2データ クエリには Get メソッドを使用することをお勧めします。データの追加、変更、削除には Post メソッドを使用することをお勧めします。
Baidu で使用される get メソッド。URL から確認できるため

3. PHP のフレームワーク、テンプレート エンジン、システムをマスターする お待ちください

フレームワーク:フレームワークには CI、Yii、Laravel など、たくさんあります。 thinkphp
テンプレート エンジン:教科書では、私たちが学んだことはスマートです
システム: など、たくさんあります。 Kangsheng の製品 ( uchome、supesite、discuzX など)、Empire system、DEDE (Dream Weaver)、ecshop など、私たちが学んだのは DEDECMS、Ecshop

4 です。Web フロントエンドとは何ですかあなたが習得したテクノロジーは何ですか?

p CSS Web ページ レイアウト、JavaScript、jQuery フレームワーク、Photoshop 画像処理に精通している

5. AJAX の利点は何ですか?

ajax は、JavaScript または JQuery フレームワークを通じて実装できる非同期送信テクノロジーで、部分更新を実現します。これにより、サーバーへの負荷が軽減され、ユーザー エクスペリエンスが向上します。

6. プログラムにとってセキュリティは非常に重要ですが、開発時に注意すべきセキュリティの仕組みについて教えてください。

(1) 認証コードを使用して、登録機のフラッディングを防ぎます。

(2) 前処理、パラメータのバインド、パラメータのフィルタリング、およびエスケープを使用して、SQL インジェクションを防止します。

(3) トークンを使用してリモート送信を防止し、トークンを使用してログイン ステータスを確認します。

7. プログラム開発において、プログラムの動作効率を向上させるにはどうすればよいでしょうか?

(1) SQL ステートメントを最適化し、クエリ ステートメントで select * を使用しないようにし、どのフィールドをチェックするためにどのフィールドを使用するか、サブクエリの使用を減らし、テーブル接続で置き換えることができるようにし、ファジー クエリの使用を減らします。

(2) データテーブルにインデックスを作成します。

(3) プログラムで頻繁に使用されるデータのキャッシュを生成します (redis を使用してデータをキャッシュする、ob を使用して動的ページを静的化するなど)。

(4) mysqlをマスタースレーブレプリケーションにして読み書きを分離します。 (mysqの実行効率とクエリ速度の向上)

(5) 負荷分散にはnginxを使用します。 (ポリモーフィックサーバーへのアクセス圧力を均等に分散します)

8. PHP は他のデータベースでも使用できますか?

PHP は MYSQL データベースとの組み合わせに最適です。もちろん、PHP は PostgreSql、SqlServer、Oracle、SqlLite などの他のデータベースと併用することもできます。

9. 現在、プログラミングでは MVC の 3 層構造がよく採用されていますが、MVC の 3 層とは何ですか? どのようなメリットがあるのでしょうか?

MVC の 3 つの層は、ビジネス モデル、ビュー、コントローラーを指します。コントローラー層はモデルを呼び出してデータを処理し、データを表示のためにビュー層にマップします。

メリットは、①コードの再利用性が得られ、コードの重複を避けることができる、②MとVをコードに分離できるため、同じプログラム内で異なる表現を使用できることです

#10. jsonデータ形式について理解していますか?

JSON (JavaScript Object Notation) は軽量のデータ交換形式であり、json データ形式は固定されており、複数の言語でのデータ転送に使用できます。

json 形式を処理する PHP の関数は json_decode(string $json [, bool $assoc]) で、JSON 形式の文字列を受け取り、それを PHP 変数に変換します。パラメータ json は、変換対象の JSON 文字列形式の文字列です。デコードされました。 assoc このパラメータが TRUE の場合、オブジェクトの代わりに配列が返されます;
Json_encode: PHP 変数を json 形式に変換します。

11. Print、echo、print_r の違いは何ですか?

(1) echo と print はどちらも出力を実行できます。違いは、echo は関数ではなく戻り値がありませんが、print は戻り値のある関数であるため、相対的に言えば、 echo を出力するだけで高速になります。print_r は通常、変数に関する情報を出力するために使用され、デバッグでよく使用されます。
(2) print は文字列を出力します
(3) print_r は配列オブジェクトなどの複合型を出力します

12. SESSION と COOKIE の違いは何ですか?

(1) 保存場所: セッションはサーバーに保存され、Cookie はブラウザに保存されます
(2) セキュリティ: セッションのセキュリティは Cookie よりも高いです
(3) セッションは「session' Service」を使用するには、サービスを有効にする必要があります。Cookie を有効にする必要はありません。

13. PHP で配列を処理するための一般的な関数は何ですか? (関数の「パラメータ」と「戻り値」に注目してください)

(1) array() は配列を作成します

(2) in_array() は要素がは配列内にあります

(3) count() は配列内の要素の数を返します

(4) array_merge() は複数の配列を 1 つの配列にマージします

(5) ) array_diff() 比較 2 つ以上の配列の差分

(6)array_intersect() 2 つ以上の配列の共通部分を取得します

(7)array_keys() 配列のキー リストを取得しますarray

(8)array_values() arrayの値リストを取得

(9)array_unique() array内の重複する値を削除

(10)array_push () 1 つ以上の要素を配列の末尾に挿入します (プッシュ)

(11) array_pop() 配列配列の最後の要素をポップして返します (プッシュ)

(12) ) array_walk() ユーザー定義を使用する この関数は、配列内の各要素に対してコールバック処理を実行します

14. PHP で文字列を処理するために使用される一般的な関数は何ですか? (関数の「パラメータ」と「戻り値」に注目してください)

(1) trim() は文字列の両側にある空白文字とその他の文字を削除します。 (2) strlen() で文字列の長さを取得します

(3) mb_strlen() で文字列の長さを取得します(文字エンコーディングを指定でき、中国語文字列の長さは計算されます)

(4) substr() 文字列の一部を返す;

(5) str_replace() 部分文字列の置換

(6) str_repeat () 文字列を繰り返す

( 7) is_string() 変数が文字列かどうかを確認します;

(8) str_shuffle () 文字列をランダムにシャッフルします

(9) sprintf() はフォーマットされた文字列に基づいて生成された文字列を返します(通常使用 (テーブル分割後にデータテーブル名を取得するため)

(10) strstr() は文字列

の最初の出現を検索します (11) ラッシュを追加します バックスラッシュを使用して引用符を付けます文字列

15. 時間を処理するために PHP で一般的に使用される関数は何ですか? (関数の「パラメータ」と「戻り値」に注目してください)

(1) date() は現地の時刻/日付をフォーマットします。

(2) getdate() 日時情報を取得します。

(3)date_default_timezone_set() はデフォルトのタイムゾーンを設定します。

(4) date_default_timezone_get() はデフォルトのタイムゾーンを返します。

(5)mktime() は日付の Unix タイムスタンプを返します。

(6) strtotime() 任意の文字列の日付と時刻の説明を Unix タイムスタンプに解析します

(7) strftime() 地域の設定に従って現地の時刻/日付をフォーマットします

16. PHP がデータベースを処理するために一般的に使用される関数は何ですか? (関数の「パラメータ」と「戻り値」に注目)

#PHP マニュアルを参照してよく読んでください。この項目は非常に重要です。

17. PHP操作ファイル よく使う関数は? (関数の「パラメータ」と「戻り値」に注目)

(1) ファイル fopen()

を開きます (2) ファイル fgets() を読み込みます。注: file_get_contents() はファイルの読み取りも行います

(3) ファイルの書き込み fwrite(); 注: file_put_contents() はファイルへの書き込みも可能です

(4) ファイル ハンドルを閉じます fclose()

(5) ファイルの移動/名前変更 rename()

(6) ファイルのコピー copy()

(7) ファイルの作成 vim または touch

(8) ) ファイルを削除します unlink()

(9) ファイルが最後にアクセスされた時刻を取得します fileatime()

(10) ファイルが最後に変更された時刻を取得します filemtime()

(11) ファイルサイズの取得 filesize()

(12) ファイルの種類の取得 filetype()

(13) ファイルの詳細の取得 state()

(14) 判定 PHPでディレクトリ(フォルダ)を操作する一般的な関数であるディレクトリis_dir()

18でしょうか? (関数の「パラメータ」と「戻り値」に注目)

(1) ディレクトリ opendir()

(2) ディレクトリ readdir()# を読み込みます

##(3) ディレクトリの削除 rmdir()

(4) ディレクトリハンドルを閉じる closeir()

(5) ディレクトリの作成 mkdir()

(6) ) 戻りパス dirname()

(7) のディレクトリ部分。 現在の作業ディレクトリを取得します。 getcwd()

(8) 指定されたパス内のファイルとディレクトリを一覧表示します。 scandir()

2. データベース部分

#一般的なリレーショナル データベース管理システム製品は何ですか?

  1. 答え: Oracle、SQL Server、MySQL、Sybase、DB2、Access など。
    1. SQL 言語にはどのような部分が含まれますか?各セクションのアクションキーワードは何ですか?

    回答: SQL 言語には、データ定義 (DDL)、データ操作 (DML)、データ コントロール (DCL)、およびデータ クエリ (DQL) の 4 つの部分が含まれています。
    データ定義: テーブルの作成、テーブルの変更、テーブルの削除、インデックスの作成/ドロップなど
    データ操作: 選択、挿入、更新、削除、
    データ コントロール: 付与、取り消し
    データ クエリ: select

    1. 整合性制約には何が含まれますか?

    データの整合性とは、データの正確さと信頼性を指します。

    内容:

    (1) エンティティの整合性: テーブルの各行がテーブル内で一意のエンティティであることを規定します。

    (2) ドメインの整合性: テーブル内の列が、値の範囲、精度、その他の規制を含む特定のデータ型の制約を満たす必要があることを意味します。

    (3) 参照整合性: 2 つのテーブルの主キーと外部キーのデータが一貫していることを意味し、テーブル間のデータの整合性を確保し、データの損失や無意味なデータの発生を防ぎます。データベース全体に分散されています。

    (4) ユーザー定義の整合性: さまざまなリレーショナル データベース システムでは、アプリケーション環境に基づいた特別な制約が必要になることがよくあります。ユーザー定義の整合性は、特定のリレーショナル データベースに対する制約であり、特定のアプリケーションが満たさなければならないセマンティック要件を反映しています。

    1. #トランザクションとは何ですか?そしてその特徴は?
    トランザクション: 一連のデータベース操作であり、データベース アプリケーションの基本的な論理単位です。

    機能:

    (1) 原子性: つまり、すべてのトランザクションが実行されるか、まったく実行されないかの不可分性です。

    (2) 一貫性または文字列可能性。トランザクションの実行により、データベースはある正しい状態から別の正しい状態に変換されます。

    (3) 分離。トランザクションが正しくコミットされるまでは、トランザクションによるデータの変更を他のトランザクションに提供することはできません。

    (4) 耐久性。トランザクションが正しく送信されると、その結果はデー​​タベースに永続的に保存され、トランザクションの送信後に他の失敗が発生した場合でも、トランザクションの処理結果は保存されます。

    簡単な理解: トランザクション内のすべての操作は成功するか失敗します。

    1. ロックとは何ですか?
    データベースは、複数のユーザーが使用する共有リソースです。複数のユーザーが同時にデータにアクセスすると、複数のトランザクションがデータベース内の同じデータに同時にアクセスします。同時操作が制御されていない場合、誤ったデータが読み取られて保存され、データベースの一貫性が破壊される可能性があります。

    ロックは、データベースの同時実行制御を実現するための非常に重要なテクノロジです。トランザクションはデータ オブジェクトを操作する前に、まずシステムにロック要求を送信します。ロック後、トランザクションはデータ オブジェクトに対して一定の制御を持ちます。トランザクションがロックを解放するまでは、他のトランザクションはデータ オブジェクトを更新できません。

    基本的なロック タイプ: ロックには行レベルのロックとテーブル レベルのロックが含まれます

    1. ビューとは何ですか?カーソルとは何ですか?
    2. #ビューは、物理テーブルと同じ機能を持つ仮想テーブルです。ビューは追加、変更、確認、操作できます。ビューは通常、1 つまたは複数のテーブルの行または列のサブセットです。ビューを変更しても、基になるテーブルには影響しません。複数テーブルのクエリと比較して、データの取得が容易になります。

    カーソル: クエリ結果セットを単位として効果的に処理します。カーソルをセル内の特定の行に配置して、結果セット内の現在の行から 1 つ以上の行を取得できます。結果セットの現在の行を変更できます。カーソルは通常は使用されませんが、データを 1 つずつ処理する必要がある場合、カーソルは非常に重要です。

      ストアド プロシージャとは何ですか?何と呼べばいいでしょうか?
    1. ストアド プロシージャはプリコンパイルされた SQL ステートメントです。利点は、モジュール設計が可能であることです。つまり、一度作成するだけで済み、プログラム内で複数回呼び出すことができます。後で。特定の操作で SQL を複数回実行する必要がある場合は、単純な SQL ステートメントを実行するよりもストアド プロシージャを使用した方が高速です。ストアド プロシージャは、コマンド オブジェクトを使用して呼び出すことができます。

      インデックスの役割は何ですか?そして、その利点と欠点は何ですか?
    1. インデックスは、データベース検索エンジンがデータの取得を高速化するために使用できる特別なクエリ テーブルです。これは現実の本の目次に非常に似ており、本全体をクエリしなくても必要なデータを見つけることができます。インデックスを作成すると、単一の列または複数の列を指定できます。

    欠点は、データ入力の速度が遅くなり、データベースのサイズも大きくなることです。

      3 つのパラダイムを一般的な方法で理解するにはどうすればよいでしょうか?
    1. 第一正規形: 1NF は属性に対するアトミック制約であり、属性がアトミックである必要があり、分解できない;

    第二正規形: 2NF はレコードの一意性用です。制約では、レコードが一意の識別子、つまりエンティティの一意性を持つ必要があります。

    第 3 正規形: 3NF はフィールドの冗長性に関する制約です。つまり、どのフィールドも他のフィールドから派生することはできません。冗長性がありません。 。

    1. 基本テーブルとは何ですか?ビューとは何ですか?

    基本テーブルとは独立して存在するテーブルのことで、SQL ではリレーションシップがテーブルに相当します。

    ビューは、1 つまたは複数の基本テーブルから派生したテーブルです。ビュー自体はデータベースに独立して保存されるのではなく、仮想テーブルです。

    1. ビューの利点について説明してください。

    (1) ビューによりユーザー操作が簡素化できます

    (2) ビューにより、ユーザーは同じデータを複数の角度から表示できます;

    (3 )ビューはデータベースにある程度の論理的独立性を提供します。

    (4) ビューは機密データのセキュリティ保護を提供できます。

    1. NULL とはどういう意味ですか?

    値 NULL は UNKNOWN (不明) を表し、「" (空の文字列) を表しません。」

    NULL 値を比較すると、NULL 値が生成されます。

    値を NULL 値と比較して、論理的に答えが得られることを期待することはできません。

    NULL 判定には IS NULL を使用します

    1. 主キー、外部キー、インデックスの違いは何ですか?

    主キー、外部キー、インデックスの違い
    定義:
    主キー – レコードを一意に識別し、重複することはできず、空にすることはできません
    外部キー – テーブルの外部キーは別のテーブルの主キーです。外部キーは繰り返すことも、NULL 値を持つこともできます。
    インデックス – このフィールドには重複する値はありませんが、NULL 値を持つことができます
    機能:
    主キー – データの整合性を確保するために使用されます
    外部キー – 他のテーブルとの接続を確立するために使用されます
    インデックス – クエリのソート速度を向上させるために使用されます
    番号:
    主キー– 主キーは 1 つだけです。
    外部キー – テーブルには複数の外部キーを持つことができます。
    インデックス – テーブルには複数の一意のインデックスを持つことができます。

    1. 何に使用できますかテーブル内のフィールドが特定の範囲のみを受け入れるようにしてください?

    チェック制限の値はデータベース テーブルで定義されており、この列に入力される値を制限するために使用されます。

    1. SQL ステートメントを最適化する方法にはどのようなものがあるのか​​教えてください。 (いくつか選択してください)

    (1) Where 句内: Where テーブル間の接続は、他の Where 条件の前に書き込む必要があり、最大レコード数を除外できる条件となります。 Where 句の最後に記述する必要があります。HAVING last。

    (2) IN を EXISTS に置き換え、NOT IN を NOT EXISTS に置き換えます。

    (3) インデックス列での計算の使用を避ける

    (4) インデックス列で IS NULL と IS NOT NULL の使用を避ける

    (5) クエリを最適化する。テーブル全体のスキャンを回避するには、まず where と order by に関係する列にインデックスを作成することを検討してください。

    (6) where 句内のフィールドで null 値の判定を行わないようにしてください。そうしないと、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します。

    (7) 回避してください。 where 句を使用すると、句内のフィールドに対して式操作が実行されます。これにより、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します。

    1. 「相関サブクエリ」には違いがあります。 SQL ステートメント内の「非相関サブクエリ」と「非相関サブクエリ」の違いは何ですか?

    (1) 非相関サブクエリとは、外部クエリから独立したサブクエリで、サブクエリは合計 1 回実行され、実行後に値が外部クエリに渡されます。

    (2) 当該サブクエリの実行は外部クエリのデータに依存しており、外部クエリが行を実行する際にサブクエリが1回実行されます。

    したがって、非相関サブクエリは相関サブクエリよりも効率的です

    1. char と varchar の違いは何ですか?

    char は固定長型、varchar は可変長型です。

    違い:

    char(M) タイプのデータ列では、各値は M バイトを占めます。特定の長さが M より小さい場合、MySQL はその右側にスペースを使用します。補体。 (埋め込まれたスペース文字は検索操作中に削除されます)。

    varchar(M) 型のデータ列では、各値はその長さを記録するのに十分なバイトと 1 バイトのみを占めます (つまり、合計の長さは L 1 バイトです)。

    1. Mysql ストレージ エンジン、myisam と innodb の違い。

    MyISAM は非トランザクション ストレージ エンジンです。クエリが頻繁に行われるアプリケーションに適しています。テーブル ロックがあり、デッドロックはありません。トランザクションはサポートされていません。小規模なデータと小規模な同時実行に適しています

    Innodb はトランザクションをサポートするストレージ エンジンです。多くの挿入および更新操作を行うアプリケーションに適しています。設計が合理的であれば、行ロック (最大の違いはレベルにあります)ロックの); 大規模なデータ、大規模な同時実行に適しています。

    1. データ テーブルのタイプとは何ですか?

    MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV など。

    MyISAM: 完成度が高く、安定していて、管理が簡単で、読みやすいです。一部の関数 (トランザクションなど) はテーブルレベルのロックをサポートしていません。

    InnoDB: トランザクション、外部キーおよびその他の機能、およびデータ行ロックをサポートします。多くのスペースを占有し、全文インデックス作成などはサポートされていません。

    1. MySQL データベースを公開システムのストレージとして使用しています。1 日に 50,000 件以上のエントリが追加されます。運用保守は 3 年かかると予想されます。最適化するにはどうすればよいですか?

    (1) 効率を向上させるために、適切に設計されたデータベース構造を設計し、部分的なデータの冗長性を許可し、結合クエリを回避するように努めます。

    (2) 適切なテーブル フィールドのデータ型とストレージ エンジンを選択し、インデックスを適切に追加します。

    (3) mysql マスター/スレーブ レプリケーションの読み取り/書き込み分離を実行します。

    (4) データ テーブルを複数のテーブルに分割して、1 つのテーブル内のデータ量を減らし、クエリ速度を向上させます。

    (5) Redis、memcached などのキャッシュ機構を追加します。

    (6) 頻繁に変更されないページの場合は、静的ページ (ob キャッシュなど) を生成します。

    (7) 効率的な SQL を作成します。たとえば、SELECT * FROM TABEL は、SELECT field_1, field_2, field_3 FROM TABLE に変更されます。

    1. トラフィックの多い Web サイトの場合、トラフィックの統計の問題を解決するためにどのような方法を使用しますか?ページ訪問数は?

    (1) サーバーが現在のトラフィックをサポートできるかどうかを確認します。

    (2) データベースアクセスを最適化します。

    (3) 画像のホットリンクなど、外部からのリンクへのアクセス(ホットリンク)を禁止します。

    (4) 制御ファイルのダウンロード。

    (5) 負荷分散を行い、別のホストを使用してトラフィックをオフロードします。

    (6) 閲覧統計ソフトウェアを使用して訪問数を把握し、ターゲットを絞った最適化を実行します。

    3. オブジェクト指向の部分

    1. オブジェクト指向とは何ですか? (理解して答える)

    オブジェクト-指向とは、ある種の考え方がプロセス指向に基づいています。これは、オブジェクト指向がオブジェクトを通じて機能を実現し、機能をオブジェクトにカプセル化して、オブジェクトに特定の詳細を実装させることを意味します。

    オブジェクト指向には、カプセル化、継承、ポリモーフィズムという 3 つの大きな特徴があります。

    現在の純粋な OO 言語は主に Java と C# です。PHP と C も OO をサポートしています。C はプロセス指向です。

    2. private、protected、public 修飾子のアクセス権を簡単に説明します。

    private: プライベート メンバーにはクラス内でのみアクセスできます。

    protected: 保護されたメンバーは、クラスおよび継承されたクラス内でアクセスできます。

    public: 公開メンバー。完全に公開されており、アクセス制限はありません。

    3. ヒープとスタックの違いは何ですか?

    スタックはコンパイル中に割り当てられるメモリ領域であるため、スタックのサイズはコード内で明確に定義する必要があります;

    ヒープはプログラムの実行中に動的に割り当てられるメモリです。では、プログラムの実行状況に基づいて、割り当てるヒープ メモリのサイズを決定できます。

    4. 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 は用途が異なる 2 つの言語です。 XML は HTML を置き換えることを目的としたものではなく、実際、XML は HTML を補完するものと考えることができます。 XML と HTML の目標は異なります。HTML の設計目標はデータを表示し、データの外観に重点を置くことですが、XML の設計目標はデータを記述し、データの内容に重点を置くことです。

    (3) XML の最も適切な説明は次のとおりです。XML は、情報を処理および送信するための、クロスプラットフォームでソフトウェアおよびハードウェアに依存しないツールです。

    (4) XML は将来的にはどこにでも普及するでしょう。 XML は、データ処理とデータ送信のための最も一般的なツールになるでしょう。

    5. オブジェクト指向の特徴とは何ですか?

    主にカプセル化、継承、ポリモーフィズムが含まれます。 4 つの側面の場合は、抽象化を追加します。

    カプセル化:
    カプセル化は、ソフトウェア コンポーネントの優れたモジュール性を確保するための基礎です。カプセル化の目標は、ソフトウェア コンポーネントの高い凝集性と低い結合性を実現して、プログラムの相互依存を防ぐことです。自然による変化の影響

    継承:
    クラスを定義・実装する際は、既存のクラスをベースに行うことができます。クラスは独自のコンテンツとみなされ、新しいコンテンツを追加したり、元のメソッドを変更して特別なニーズに合わせたりすることができます。これが継承です。継承は、サブクラスが親クラスのデータとメソッドを自動的に共有するメカニズムであり、ソフトウェアの再利用性と拡張性を向上させるクラス間の関係です。

    ポリモーフィズム:
    ポリモーフィズムとは、プログラム内で定義された参照変数が指す特定の型と、参照変数を介して発行されるメソッド呼び出しが、プログラミング中に決定されるのではなく、プログラム中に決定されることを意味します。参照変数がどのクラスのインスタンス オブジェクトを指すかは、実行時に決定されます。参照変数によって発行されるメソッド呼び出しは、どのクラスに実装されたメソッドです。これは、プログラムの実行中に決定する必要があります。

    抽象化:
    抽象化とは、いくつかの物事の類似点や共通点を見つけ出し、それらをクラスに分類することです。このクラスは、これらの物事の類似点や共通点のみを考慮します。 . 現在のトピックや目標に無関係な側面は無視し、現在の目標に関連する側面に焦点を当てます。たとえば、アリとゾウを見て、それらがどのように似ているかを想像できる場合、それは抽象化です。

    6. 抽象クラスとインターフェイスの概念と違いは何ですか?

    抽象クラス: これはインスタンス化できず、他のクラスの親クラスとしてのみ使用できる特別なクラスです。 abstract キーワードを使用して宣言します。

    Interface: これは特別な抽象クラスであり、interface を使用して宣言された特別なクラスです。

    相違点:

    (1) 抽象クラスの操作は、継承キーワード extends を通じて実装されますが、インターフェイスの使用は、implements キーワードを通じて実装されます。

    (2) 抽象クラスにはデータのカプセル化を実現できるデータメンバが存在しますが、インタフェースにはデータメンバがありません。

    (3) 抽象クラスにはコンストラクターを含めることができますが、インターフェイスにはコンストラクターはありません。

    (4) 抽象クラスのメソッドは、private、protected、および public キーワードを使用して変更できます (抽象メソッドをプライベートにすることはできません)。一方、インターフェイス内のメソッドは、public キーワードを使用してのみ変更できます。

    (5) クラスは 1 つの抽象クラスからのみ継承でき、クラスは複数のインターフェイスを同時に実装できます。

    (6) 抽象クラスにはメンバ メソッドの実装コードを含めることができますが、インターフェイスにはメンバ メソッドの実装コードを含めることはできません。

    7. コンストラクター、デストラクター、およびその機能とは何ですか?

    コンストラクター (メソッド) は、オブジェクトの作成後にオブジェクトによって自動的に呼び出される最初のメソッドです。これは宣言されたすべてのクラスに存在し、特別なメンバー メソッドです。その機能は、いくつかの初期化タスクを実行することです。 Php では、__construct() を使用してコンストラクター メソッドを宣言しますが、宣言できるのは 1 つだけです。

    デストラクター (メソッド) はコンストラクターとは逆の効果を持ち、オブジェクトが破棄される前にオブジェクトによって自動的に呼び出される最後のメソッドです。これは PHP5 で新しく追加されたコンテンツで、ファイルを閉じたりメモリを解放したりするなど、オブジェクトを破棄する前に特定の操作を実行するために使用されます。

    8. 親クラスのメソッドをオーバーロードする方法、例を挙げます

    オーバーロードとは、親クラスのメソッドをオーバーライドすること、つまり、次のメソッドを使用することを意味します。親クラスから継承されたメソッドは、メソッド オーバーライドとも呼ばれます。

    親クラスのメソッドをオーバーライドする鍵は、メソッド名、パラメーター、戻り値の型を含む同じメソッドをサブクラスの親クラスに作成することです。 PHP では、メソッドの名前のみが同じである必要があります。

    9. よく使われる魔法の方法は何ですか?たとえば、

    php では、2 つのアンダースコア (__) で始まるメソッドはマジック メソッドとして予約されると規定されているため、既存のマジック メソッドをオーバーロードする場合を除き、関数名を __ で始めないことをお勧めします。 。 方法。

    __construct() は、クラスをインスタンス化するときに自動的に呼び出されます。

    __destruct() は、クラス オブジェクトが使用されるときに自動的に呼び出されます。

    __set() は、未定義のプロパティに値を割り当てるときに呼び出されます。

    #__get() は、未定義の属性が呼び出されたときに呼び出されます。

    __isset() isset() または empty() 関数を使用するときに呼び出されます。

    __unset() unset() を使用するときに呼び出されます。

    #__sleep() は、serialize を使用してシリアル化するときに呼び出されます。

    __wakeup() は、unserialize を使用してデシリアライズするときに呼び出されます。

    __call() は、存在しないメソッドを呼び出すときに呼び出されます。

    __callStatic() は、存在しない静的メソッドを呼び出します。

    __toString() は、オブジェクトを文字列に変換するときに呼び出されます。エコーなど。

    __invoke() オブジェクトをメソッドとして呼び出そうとするときに呼び出されます。

    __set_state() var_export() 関数の使用時に呼び出されます。配列パラメータを受け入れます。

    __clone() は、clone を使用してオブジェクトをコピーするときに呼び出されます。

    10. 3 つのキーワード $this、self、parent はそれぞれ何を表しますか?どのような状況で使用されますか?

    $この現在のオブジェクト

    自身の現在のクラス

    parent 現在のクラスの親クラス

    $これは現在のクラスで使用されます。 use - > プロパティとメソッドを呼び出します。

    self も現在のクラスで使用されていますが、:: を使用して呼び出す必要があります。

    parent はクラスで使用されます。

    11. クラス内で定数を定義する方法、クラス内で定数を呼び出す方法、およびクラス外で定数を呼び出す方法。

    クラス内の定数はメンバー定数でもあり、定数とは変化しない量であり、一定の値です。

    定数を定義するには、キーワード const を使用します。

    例: const PI = 3.1415326;

    クラス内でもクラス外でも、定数にアクセスできます。変数とは異なります。定数はオブジェクトをインスタンス化する必要はありません。定数にアクセスするための形式は、クラス名と呼び出すスコープ操作記号 (二重コロン) を加えたものです。

    つまり: クラス名 :: クラス定数名;

    12. スコープ演算子::使用方法?どのような状況で使用されますか?

    (1) クラス定数の呼び出し

    (2) 静的メソッド(静的で変更されたクラスメソッド)の呼び出し

    13. __autoload() メソッド 方法それは機能しますか?

    このマジック関数を使用するための基本的な条件は、クラス ファイルのファイル名がクラスの名前と一致している必要があることです。

    あるクラスをインスタンス化するプログラムを実行する際、インスタンス化前にクラスファイルが導入されていないと、__autoload()関数が自動的に実行されます。

    この関数はインスタンス化されたクラス名を元にクラスファイルのパスを検索します。クラスファイルのパスにクラスファイルが存在すると判定された場合は、

    include を実行するか、それをロードする必要があります。このクラスを入力すると、プログラムは実行を続けます。このパスにファイルが存在しない場合は、エラーが表示されます。

    自動的にロードされるマジック関数を使用すると、多くの include 関数や require 関数を記述する必要がなくなります。

    4. THINKPHP パート

    1. 一般的な PHP フレームワーク

    答え: thinkPHP、laravel、yii、ci など. .

    2. TP の単一エントリ ファイルを理解するにはどうすればよいですか?

    ThinkPHP は、プロジェクトのデプロイメントとアクセスに単一の入口モードを採用しており、どの機能が完了していても、プロジェクトには統一された (ただし、唯一であるとは限りません) 入口があります。すべてのプロジェクトはエントリ ファイルから始まり、すべてのプロジェクトのエントリ ファイルは類似していると言うべきです。

    エントリ ファイルには主に次のものが含まれます:

    (1) フレームワーク パス、プロジェクト パス、およびプロジェクト名を定義します (オプション)
    (2) デバッグ モードを定義します。実行モードの関連定数 (オプション)
    (3) フレームワーク エントリ ファイルのロード (必須)

    3. ThinkPHP の MVC 階層化とは何ですか? (理解)

    MVCはアプリケーションの論理層とプレゼンテーション層を分離する手法です。 ThinkPHP も MVC 設計パターンに基づいています。 MVC は抽象的な概念であり、特に明確な規定はありませんが、ThinkPHP における MVC の階層構造は次のように大まかに反映されています:

    Model (M): モデルの定義は Model クラスによって完了します。

    コントローラー (C): アプリケーション コントローラー (コア コントローラー App クラス) とアクション コントローラーは両方ともコントローラーの役割を担い、アクション コントローラーはビジネス プロセスの制御を完了し、アプリケーション コントローラーはスケジュール制御を担当します。

    View (V): View クラスとテンプレート ファイルで構成されており、テンプレートは 100% 分離されており、独立してプレビューおよび作成できます。

    しかし実際には、ThinkPHP は M や V に依存していないため、モデルやビューがなくても動作します。 C にも依存しません。これは、ThinkPHP には、Action の上にマスター コントローラー、つまりアプリケーション全体のスケジューリングを担当する App コントローラーがあるためです。 C が存在しない場合、ビュー V が存在する必要があります。存在しない場合、ビュー V は完全なアプリケーションではなくなります。
    全体として、ThinkPHP の MVC モデルは、MVC 自体に固執するのではなく、アジャイル開発の手段を提供するだけです。

    4. SQL を最適化するにはどうすればよいですか? (学生は以下の説明を理解して、自分の理解に基づいて一般的な意味を述べるだけで済みます)

    (1) 正しいストレージ エンジンを選択します

    MyISAM が適しています 適しています大量のクエリを必要とする一部のアプリケーションには適していますが、大量の書き込み操作にはあまり適していません。フィールドを更新するだけの場合でも、テーブル全体がロックされ、読み取り操作が完了するまで他のプロセス (読み取りプロセスであっても) が動作できなくなります。さらに、MyISAM は SELECT COUNT(*) などの計算が非常に高速です。
    InnoDB の傾向は非常に複雑なストレージ エンジンになり、一部の小規模なアプリケーションでは MyISAM よりも遅くなるでしょう。ただし、「行ロック」をサポートしているため、書き込み操作が多い場合はより優れています。さらに、トランザクションなどのより高度なアプリケーションもサポートします。

    (2) フィールドのデータ型を最適化する
    列が小さいほど高速になるという原則を覚えておいてください。テーブルに数列しかない場合 (ディクショナリ テーブル、構成テーブルなど)、主キーとして INT を使用する理由はなく、MEDIUMINT、SMALLINT、またはより小さい TINYINT を使用する方が経済的です。時間を追跡する必要がない場合は、DATETIME よりも DATE を使用する方がはるかに優れています。もちろん、拡張のための十分な余地も残しておく必要があります。

    (3) 検索フィールドにインデックスを追加する
    インデックスは、必ずしも主キーや唯一のフィールドを意味するわけではありません。テーブル内に常に検索に使用するフィールドがある場合は、そのフィールドにインデックスを作成することをお勧めします。検索するフィールドが大きなテキスト フィールドでない場合は、フルテキスト インデックスを作成する必要があります。

    (4) Select の使用を避ける データベースから読み取られるデータが増えるほど、クエリは遅くなります。また、データベースサーバーとWEBサーバーが独立した2台のサーバーの場合、ネットワーク通信の負荷も大きくなります。データ テーブル内のすべてのフィールドをクエリする場合でも、 ワイルドカード文字は使用しないでください。組み込みのフィールド除外定義をうまく利用すると、さらに便利になる場合があります。

    (5) VARCHAR の代わりに ENUM を使用する
    ENUM 型は非常に高速でコンパクトです。実際には、TINYINT を保持しますが、文字列として表示されます。このようにして、このフィールドを使用して選択リストを作成するのが非常に完璧になります。たとえば、性別、民族、部門、ステータスなどのフィールドの値が限定されており、固定されている場合は、VARCHAR ではなく ENUM を使用する必要があります。

    (6) 可能な限り NOT NULL を使用する
    NULL 値を使用する特別な理由がない限り、フィールドは常に NOT NULL にしておく必要があります。 NULL は実際には余分なスペースを必要とするため、比較を実行するとプログラムがより複雑になります。もちろん、これは NULL を使用できないという意味ではなく、実際は非常に複雑であり、NULL 値を使用する必要がある状況が依然として存在します。

    (7) 固定長テーブルの方が高速になります
    テーブル内のすべてのフィールドが「固定長」の場合、テーブル全体が「静的」または「固定長」とみなされます。たとえば、テーブルには VARCHAR、TEXT、BLOB 型のフィールドはありません。これらのフィールドのいずれかを含めている限り、テーブルは「固定長の静的テーブル」ではなくなり、MySQL エンジンは別の方法でテーブルを処理します。

    固定長テーブルを使用すると、MySQL の検索が高速になるため、パフォーマンスが向上します。これらの固定長により、次のデータのオフセットの計算が容易になるため、読み取りも自然に高速になります。また、フィールドが固定長でない場合、次のフィールドを検索するたびに、プログラムは主キーを検索する必要があります。
    また、固定長テーブルはキャッシュと再構築が容易です。ただし、唯一の副作用は、固定長フィールドは使用するかどうかに関係なく非常に多くのスペースを必要とするため、固定長フィールドによってスペースが浪費されることです。

    5. ThinkPHP 3.0 アーキテクチャー (コア動作ドライバー) の動作を理解するにはどうすればよいですか?

    (1) コア: フレームワークの中核となるコードであり、不可欠なものであり、TP 自体も MVC の考え方に基づいて開発されたフレームワークです。

    (2) 動作: 動作は、ThinkPHP の新バージョンのアーキテクチャにおいて決定的な役割を果たします。システムのコアでは、多くのタグ拡張ビットが設定されており、各タグ位置は、独自の関数を実行できます。独立した行動。このようにして動作拡張機能が誕生し、多くのシステム機能も組み込みの動作拡張機能によって完成されます。すべての動作拡張機能は置き換え可能であり、追加可能であるため、基礎となるフレームワークのアセンブリの基礎を形成します。

    (3) ドライバー: データベース ドライバー、キャッシュ ドライバー、タグ ライブラリ ドライバー、テンプレート エンジン ドライバー、および外部クラス拡張機能。

    6. 従来の構成とは何ですか?

    いわゆる従来の構成は、フレームワーク独自の構成ファイルです。このファイルはコアフレームワークディレクトリのconvention.php内にあり、設定内容は以下の通りです。このファイルはフレームワーク付属の設定ファイルなので、実際の開発では主に参考例として使用しており、このファイルの設定内容を変更することはほとんどなく、必要に応じてフィールドを設定することが多いです。モジュールまたは共通の構成コンテンツをカスタマイズするための定義と注釈。

    7. SQL インジェクションとは何ですか? (理解)

    SQL インジェクション攻撃は、ハッカーがデータベースを攻撃するために使用する一般的な手段の 1 つです。

    一部のプログラマーは、コードを記述するときにユーザー入力データの合法性を判断しません。インジェクターはデータベース クエリ コードをフォームに入力して送信でき、プログラムは送信された情報を組み合わせて完全な SQL を生成します。ステートメントを実行すると、サーバーはだまされて悪意のある SQL コマンドを実行します。インジェクターは、プログラムから返された結果に基づいて機密データを取得し、サーバー全体を制御することにも成功します (これが SQL インジェクションです)。

    8. ThinkPHP はどのようにして SQL インジェクションを防止しますか? (理解)

    (1) より安全な方法であるクエリ条件には配列モードを使用するようにしてください;

    (2) 文字列クエリ条件を最後の手段として使用する必要がある場合、プリセットの処理メカニズムを使用します;

    (3) バインディング パラメーターを使用します

    (4) データ フィールドの型検証をオンにすると、数値データ型の変換を強制できます; (フィールド型の検証はバージョン 3.1 以降は必須)

    (5) 自動検証および自動補完メカニズムを使用して、アプリケーション固有のフィルタリングをカスタマイズします。

    (6) フィールド タイプ チェック、自動検証、および自動補完メカニズムを使用して、悪意のあるデータ入力を回避します。

    9. デバッグ モードを有効にするにはどうすればよいですか?デバッグモードの利点は何ですか?

    デバッグ モードを有効にするのは非常に簡単です。定数定義コードの行をエントリ ファイルに追加するだけです:

    // デバッグ モードを有効にするには、開発フェーズでデプロイメント フェーズのコメントを有効にするか、false に設定することをお勧めします。
    define('APP_DEBUG', true);
    デバッグ モードの利点は次のとおりです。ログ、エラー情報、およびデバッグ情報 デバッグを容易にするためにすべてのレコードが詳細に記録されます。テンプレート キャッシュをオフにすると、テンプレートの変更はすぐに有効になります。SQL ログを記録して SQL 分析を容易にします。フィールド キャッシュをオフにすると、データ テーブルのフィールドの変更は行われません。キャッシュの影響を受ける; ファイルの大文字と小文字を厳密にチェックする (Windows プラットフォームでも) Linux 導入の問題を事前に発見するのに役立つ; 開発、テスト、デモなどを含む開発プロセスのさまざまな段階で便利に使用でき、独立したプロジェクト構成ファイルは、さまざまなアプリケーション モードに合わせて構成できます。

    10. TP ではどのような構成モードがサポートされていますか?優先度?

    #従来の構成 ->アプリケーション構成 ->モード構成 ->デバッグ構成 ->状態構成 ->モジュール構成 ->拡張構成 ->動的構成

    上記は設定ファイルの読み込み順序です。後続の設定は前の設定を同じ名前で上書きするため(有効にならない場合)、優先順位は右から左になります。

    11. TP の URL パターンは何ですか?デフォルトはどれですか?

    ThinkPHP は、通常モード、PATHINFO、REWRITE、互換モードを含む 4 つの URL モードをサポートしており、URL_MODEL パラメーターを設定することで定義できます。

    デフォルトのモードは: PATHINFO モード、URL_MODEL を 1

    12 に設定します。TP のシステム変数は何ですか?システム変数を取得するにはどうすればよいですか?

    (1)システム变量: S E R V E R 、 _サーバ、 #S E#RVE#R_ENV、 $_POST、 $_GET、 R E Q U E S T 、 _リクエスト、 #R EQUEST _SESSION と $_COOKIE 变量(2)取得系统变量:{

    KaTeX 解析エラー: 'EOF' が予期されましたが、取得されました'}' 位置 25: …ver.script_name}̲ // 出

    _SERVER['SCRIPT_NAME']变量

    {KaTeX 解析エラー: 'EOF' が予期されましたが、' を取得しました}' 位置 22: …session.user_id}̲ // 出

    _SESSION['user_id']变量

    {KaTeX 解析エラー: 'EOF' が予期されましたが、'} を取得しました' 位置 21: ….get.pageNumber}̲ // 出出

    _GET['pageNumber']变量

    {KaTeX 解析エラー: 'EOF' が予期されましたが、位置 18 で '}' を取得しました: …ink.cookie.name}̲ // 出力 _COOKIE['name'] 変数

    13. ThinkPHP フレームワークの D 関数と M 関数の違いは何ですか?

    M メソッドは、ユーザーが各データ テーブルのモデル クラスを定義しなくても、モデルをインスタンス化します。D メソッドは、モデル クラスを自動的に検出できます。カスタム モデル クラスが存在する場合は、カスタム モデル クラスをインスタンス化します。存在しない場合、M メソッドが自動的に呼び出され、Model 基本クラスがインスタンス化されます。同時に、インスタンス化されたモデルは繰り返しインスタンス化されません (シングル ケース モード)。

    5. スマートなテンプレート エンジン

    1. コンパイルとキャッシュの違いは何ですか?

    smarty のコンパイル プロセスは、テンプレートを取得し、内部のタグを対応する php コードに置き換えることです。これが Smarty のコンパイルです。実際には、php と html を混合するプロセスです。
    Smarty のキャッシュは手動でオンにする必要があります Smarty のキャッシュはコンパイルされたファイルを実行すると同時に静的な HTML ページを生成します 再度アクセスすると HTML ファイルにアクセスすることになるため、効率の面ではの方が高いです。

    2. Smarty とは何ですか? Smarty の利点は何ですか?

    Smarty は、PHP で書かれた PHP テンプレート エンジンです。目的は、アーティストと一緒に PHP プログラムを使用することです。分離により、プログラマはアーティストのページ デザインに影響を与えることなくプログラムの論理コンテンツを変更することができ、アーティストはプログラムのプログラム ロジックに影響を与えることなくページを再変更することができます。これは、複数人によるコラボレーション プロジェクトにおいて特に重要です。 (マルチスタイルプログラムの開発も容易です)

    スマートな利点

    (1) 高速: 他のテンプレートエンジンと比較して。

    (2) コンパイル型:smarty で書かれたプログラムは、実行時に非テンプレート技術の PHP ファイルにコンパイルする必要があります

    (3) キャッシュ技術: ユーザーが保存したコンテンツを変換できます。最終的に、HTML ファイルが静的 HTML ページにキャッシュされることがわかります。

    (4) プラグイン テクノロジ: Smarty はプラグインをカスタマイズできます。

    smartyの使用には適していません

    (1) リアルタイムで更新する必要があるコンテンツ。たとえば、在庫表示のように、頻繁なデータ更新が必要になります。

    (2) 小規模なプロジェクト。シンプルさゆえにアーティストとプログラマーの両方が必要な小規模プロジェクト

    3. {$smarty} を使用してテンプレートに変数を保持します

    {KaTeX 解析エラー: 予期された 'EOF'、位置 16 で '}' を取得しました:smarty.get.page}̲ //PHP スクリプトでのアクセスと同様 _GET[page]
    {KaTeX 解析エラー: 予期された 'EOF'、位置 16 で '}' を取得しました:smarty.cookies.}̲ {smarty.post.}
    {KaTeX 解析エラー: 予期された 'EOF'、位置 16 で '}' を取得しました:smarty.session.}̲ {smarty.server.}

    1. php のテンプレートのアクセス変数

    5、変数メディエーター

    2018 PHP クラシック面接の質問の概要 (更新) - PHP 面接の質問

    #6. php が mysql データベースにクエリを実行すると、中国語の結果をクエリすると文字化けが発生します。どうやって対処すればいいのでしょうか?

    (1) ファイルメタ(ブラウザ解析設定時)

    (2) データベース接続時のエンコード設定

    (3) PHP ファイルで使用ヘッダ関数はエンコーディングを決定します

    7. キャッシュメカニズム

    キャッシュが有効になっている場合、smarty は静的 HTML ページを同時に生成します。設定した時間内に再訪問する際にはhtmlファイルにアクセスすることになるので、データベースを読む必要が減り、効率の面では高くなります。

    8. Smarty の割り当てと読み込みテンプレート

    $Smarty->assign(name,value)

    $Smarty->display('index .html ')

    9. Marty テンプレート テクノロジーはどのような用途に使用されますか?

    php と html を分離するには、アーティストとプログラマーは互いに干渉せずにそれぞれの業務を実行する必要があります。

    10. 主な Smarty 構成は何ですか?

    (1)smarty.class.php を導入します;

    (2)smarty オブジェクトをインスタンス化します;

    (3)デフォルトのテンプレート パスを再変更します。

    (4) デフォルトのコンパイル済みファイルのパスを再変更します;

    (5) デフォルトの構成ファイルのパスを再変更します;

    (6) Re -デフォルトのキャッシュパスを変更します。

    (7) キャッシュを有効にするかどうかを設定します。

    (8) 左右の区切り文字を設定できます。

    11.smarty を使用する際に注意する必要がある点は何ですか?

    Smarty は MVC の概念に基づいたテンプレート エンジンであり、ページ プログラムをビュー層とコントロール層の 2 つの部分に分割して実装します。ユーザー UI は PHP コードから分離されています。

    このようにして、プログラマーとアーティストは、互いに干渉することなく、それぞれの業務を実行します。

    12.smarty を使用する場合は、次の点に注意してください:

    (1)smarty を正しく設定します。主にsmartyオブジェクトのインスタンス化とsmartyテンプレートファイルのパスの設定が必要です;

    (2) assign割り当てを使用してphpページに表示ページを表示します;

    (3) それは、smarty テンプレート ファイルの PHP コード スニペットに含めることはできません。すべてのコメント、変数、関数を区切り文字に含める必要があります。

    6. 二次開発システム (DEDE、ecshop)

    1. 二次開発についての理解

    二次開発とは、簡単に言うと、既存のソフトウェアをカスタマイズ・修正し、機能拡張し、目的を実現することです。元のシステムのコアを変更しないでください。

    2、MVC

    モデル (モデル) データ処理。
    テンプレート表示を表示します。
    コントローラーはプロセスを制御します。
    MVC の概念とは何ですか?各レベルの主なタスクは何ですか?
    MVC (Model-View-Controller) は、ソフトウェア設計パターンまたはプログラミングのアイデアです。
    M はモデル モデル層を指し、V はビュー層 (表示層またはユーザー インターフェイス)、C はコントローラー層を指します。
    mvc を使用する目的は、プログラムが異なるユーザー インターフェイスを簡単に使用できるように M と V を分離することです。
    Web サイト開発では、通常、モデル層はデータベーステーブル情報の追加、削除、変更、確認を担当します。
    ビュー層はページコンテンツの表示を担当します。
    コントローラー層は制御機能を果たします。 M と V の間の役割を決定するには、コントローラー層がどのモデル クラスのどのメソッドを呼び出すかを決定します。
    実行が完了した後、コントローラー層は結果をどのビュー層に割り当てるかを決定します。

    #3. インストール後に二次開発プログラムにアクセスすると、いくつかの警告とエラーが表示されます

    #エラーに従って、サーバー構成パラメーターと Baidu## を変更します。

    #4. 機能、テンプレートの置き換え、機能の追加・変更

    実はオブジェクト指向アプリケーションで使われており、テンプレートの置き換えはsmartyの使い方と似ています#5 、どのような二次開発ツールを使用しましたか?

    Dedecms phpcms ecshop、基礎がしっかりしていれば、これらの基本的なことを学ぶのは問題ありません。

    6. PHP のような一次開発と二次開発のどちらを行うのが良いでしょうか?

    一般的に中小企業では、効率化を目的として二次開発にcmsシステムを利用しています。もちろん、フレームワークの使い方を知っていて時間に余裕があれば、一気に開発しても大丈夫ですが、大企業では著作権の問題を避けるためにチームで開発を行っています。

    7. 二次開発プロセスでは、多くのクラス間のメソッドアクセスはどのように伝達されるのでしょうか?

    クラスの継承ではなくオブジェクトの結合ですインスタンス化したオブジェクトをグローバルに渡します

    8. dedecmsがディレクトリを変更するとバックグラウンドの特定の項目に入れなくなります. どうやって解決しますか?

    バックグラウンド コア設定を現在のプロジェクト ディレクトリ名に変更します

    9. dedecms のカスタム モデルを理解していますか?

    DreamWeaver システムにはコンテンツ モデルの概念があり、さまざまなコンテンツ モデルを使用して、さまざまなコンテンツ形式のサイトを構築できます。システムには次のモデルが付属しています: 通常の記事、フォト アルバム、ソフトウェア、製品、機密情報、特別なトピック。システム独自のモデルを使用して、さまざまな種類のサイトを構築できます。たとえば、地図帳を使用して画像サイトを構築したり、ソフトウェア モデルを使用してソフトウェア ダウンロード サイトを構築したりできます。

    もちろん、システムに付属する上記のモデルはシステム モデルと呼ばれ、書籍や音楽アルバムなどのいくつかのモデルをユーザーが自分で定義することができ、これらのモデルをカスタマイズすることによってのみ、より多くのコンテンツ形式を備えたサイトを構築できます。 これは、現在のニーズの変化に適応するためにテーブル構造を自動的に追加することに相当します

    10. DEDE の概念 テンプレートを設計および使用する場合、次の概念を理解する必要があります

    (1) セクション (表紙) テンプレート:

    は、Web サイトのホームページまたはより重要なコラムの表紙チャネルで使用されるテンプレートを指し、通常は「index_identification ID.htm」という名前が付けられます。ユーザーが独自に定義した単一ページまたはカスタム タグ、セクション テンプレート タグをサポートするかどうかも選択できます。サポートされている場合、システムはコンテンツを出力する前、または特定のファイルを生成する前に、セクション テンプレート タグ エンジンを使用して解析します。 (2) リスト テンプレート:

    は、Web サイトの特定の列にあるすべての記事のリストのテンプレートを指し、通常は「リスト識別 ID.htm」という名前が付けられます。


    (3) ファイルテンプレート:

    記事テンプレートなどの文書閲覧ページのテンプレートを表します。通常は「記事識別ID.htm」という名前が付けられます。


    (4) その他のテンプレート:

    一般的なシステムには、通常、ホームページ テンプレート、検索テンプレート、RSS、JS コンパイル機能テンプレートなどのテンプレートが含まれています。さらに、ユーザーはテンプレートをカスタマイズして任意のテンプレートを作成することもできます。ファイル。


    11. dede ではいくつのタグが使用されていますか?


    リスト、コンテンツ、その他のタグはそのスコープ内でのみ使用でき、リスト タグはリスト内でのみ使用でき、コンテンツ タグはコンテンツ タグ内でのみ使用できます。

    グローバル タグはすべてのページで使用できます

    12. 一般的に使用されるクラス ライブラリに精通している


    (例: dedesql.class.php)。システム関数ライブラリ (common.func.php)、カスタム関数ライブラリ (extend.func.php) に精通している、フロントエンド エントリ ファイル (common.inc.php) に精通している

    7 . WeChat パブリック プラットフォームの開発

    1. WeChat の運用メカニズム

    パブリック アカウントと php:Xml

    間の通信に使用される言語Weixin.php でパブリック アカウント データを受信します: $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//データ XML データを受信します

    2、メッセージ タイプ

    WeChat は現在、次の 7 つの基本的なメッセージ タイプを提供しています:
    (1) テキスト メッセージ (テキスト);
    (2) 画像メッセージ (画像);
    (3) 音声 (音声)
    (4) ビデオ
    (5) 地理的位置 (location);
    (6) リンク メッセージ (link);
    (7) イベント プッシュ (event)
    タイプ。さまざまな種類のメッセージを送信するときのデータ転送形式をマスターしましょう

    3. ファイル全体を文字列に読み取る関数は

    #File_get_contents

    #4. 一般的に使用される関数

    XML データをオブジェクトに解析する関数は

    simplexml_load_string( )
    文字列を配列に変換する関数は ___explode________ で、配列を変換しますinto 文字列の関数は ____implode________.
    URL 文字列をエンコードする関数は ____urlencode________.

    5. Sprintf 関数の関数

    これだけで可能な確認マニュアル。

    6. WeChat 公式アカウントがサービスを提供できないのはなぜですか?

    (1) ネットワークの理由、データ インターフェイスの理由
    (2) コードのエラー、原因の推測方法
    コードが正しいかどうか、どこを変更するかを確認します
    データを出力して、見て。 phpを使ったファイル操作
    $myfile = fopen(“newfile.txt”, “w”);
    t バツ t = 」 ある ある ある ある ある ある ある ある ある ある 」 ; f w r 私 t e ( txt ="ああああああああ"; fwrite( #txxt=aaaa aaaaaa;fwrite( マイファイル、 t バツ t ) ; f c 私 ああ s e ( TXT); fclose( ##################TXT######)###;fclose(myfile);

    7. カスタム メニューのイベント プッシュ

    クリック
    ジャンプリンクをクリックします
    QR コードをスキャンしてイベントをプッシュします
    QR コードをスキャンしてプッシュしてポップアップします
    システムの写真撮影と写真投稿のイベントをポップアップします
    ポップアップWeChat フォト アルバム投稿デバイスのイベント
    地理的位置セレクターのポップアップ イベント

    #8. トークンの役割

    セキュリティ メカニズムの検証。 WeChatサーバーとPHPサーバー間のセキュリティ検証

    9. Appidとsecretの役割

    ##APIインターフェース(メニュー操作など)をリクエストする際には、アプリケーション認証コードを取得するための appid と Secret の値

    推奨学習: 「

    PHP ビデオ チュートリアル 」 「

以上が収集する価値のある史上最も包括的な PHP 面接質問集 (面接をより効率的にする)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。