2021年PHP面接問題集

烟雨青岚
リリース: 2023-04-09 08:32:02
転載
4324 人が閲覧しました

2021年PHP面接問題集

1. PHP の基本部分

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

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

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

2 つのメソッドの取得と投稿

相違点:

(1) URL の可視性: get メソッドの URL パラメーターが表示されます。 post は表示されません

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

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

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

提案:

1. get タイプは Post タイプよりも安全性が低く、これには機密情報が含まれるため、Post データ送信タイプを使用することをお勧めします。

##2. データ クエリには Get メソッドを使用することをお勧めします。データの追加、変更、削除には Post メソッドを使用することをお勧めします。

Baidu で使用される get メソッドは、マスター PHP のフレームワーク、テンプレート エンジン、システムなどは何ですか?

フレームワーク: CI、Yii、Laravel など、多くのフレームワークがあります。私たちが学んだことは、thinkphp

です。テンプレート エンジン: 教科書にも、たくさんあります。私たちが学んだことは、smart

システムです。次のようなものがたくさんあります。 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 データ形式は固定されており、複数の言語でのデータ転送に使用できます。

PHP で json 形式を処理する関数は 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.セッションとクッキーの違いは何ですか?

(1) 保存場所: セッションはサーバーに保存され、Cookie はブラウザに保存されます

(2) セキュリティ: セッションのセキュリティは Cookie よりも高いです

(3) セッションは「セッション サービス」です。サービスを使用する場合はサービスを有効にする必要があります。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 など。

2. SQL 言語にはどのような部分が含まれますか?各セクションのアクションキーワードは何ですか?

回答: SQL 言語には、データ定義 (DDL)、データ操作 (DML)、データ制御 (DCL)、およびデータ クエリ (DQL) の 4 つの部分が含まれています。

データ定義: テーブルの作成、テーブルの変更、テーブルの削除、インデックスの作成/ドロップなど

データ操作: 選択、挿入、更新、削除、

データ コントロール:grant、revoke

データクエリ:select

3. 整合性制約とは何ですか?

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

含まれるもの:

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

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

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

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

4. トランザクションとは何ですか?そしてその特徴は?

トランザクション: 一連のデータベース操作であり、データベース アプリケーションの基本的な論理単位です。

特徴:

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

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

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

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

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

5. ロックとは何ですか?

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

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

6. ビューとは何ですか?カーソルとは何ですか?

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

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

7. ストアド プロシージャとは何ですか?何と呼べばいいでしょうか?

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

8. インデックスの役割は何ですか?そして、その利点と欠点は何ですか?

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

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

3 つのパラダイムを一般的な方法で理解するにはどうすればよいでしょうか?

第一正規形: 1NF は属性に対する原子性制約であり、属性が原子的である必要があり、分解できない;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

NULL判定にはIS NULLを使用してください

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

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

インデックス – テーブルには複数の一意のインデックスを持つことができます。

テーブル内のフィールドのみを確​​実に使用するには何を使用すればよいですか?特定の範囲の値を受け入れますか?

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

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

(1) Where 句内: where テーブル間の接続は、他の where 条件より前に記述する必要があり、レコードの最大数を除外できる条件は、 where sub に書かれています。文の終わ​​りにあります。最後にあります。

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

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

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

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

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

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

「相関サブクエリ」と「非相関サブクエリ」の違いは何ですかSQL文の中で?

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

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

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

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

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

違い:

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

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

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

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

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

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

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

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

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

公開システムのストレージとして 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 に変更されます。

トラフィックの多い 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) システム変数: ##SERVER_SERVER、 ##REQU #EST_REQUEST、{KaTeX 解析エラー: 'EOF' が予期され、位置 22 で '}' が取得されました: …session.user_id}̲ // 出力_SESSION['user_id']Variable

{

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

_GET ['pageNumber']Variable {

KaTeX 解析エラー: 'EOF' が予期されましたが、位置 18 で '}' を取得しました: …ink.cookie.name}̲ // Output

_COOKIE[' name']Variable

1

3. 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 プログラムはアーティストから分離する必要があります。これにより、プログラマーがプログラムのロジック コンテンツを変更しても、アーティストのページ デザインに影響を与えず、アーティストがページを再変更しても、ページのプログラム ロジックに影響を与えません。このプログラムは、複数人で協力するプロジェクトに特に当てはまります。特に重要です。 (マルチスタイルプログラムの開発も容易です)


Smarty の利点

(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.}

4. テンプレート内の 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 二次開発、簡単に言うと、既存のソフトウェアをカスタマイズしたり修正したり、機能を拡張したりして、必要な機能を実現することですが、基本的には元のシステムの根幹は変わりません。

2、MVC

モデル (モデル) データ処理。

ビュー テンプレート表示。

Controller(コントローラー)はプロセスを制御します。

MVC の概念とは何ですか?各レベルの主なタスクは何ですか?

MVC (Model-View-Controller) は、ソフトウェア設計パターンまたはプログラミングのアイデアです。

M はモデル モデル層を指し、V はビュー層 (表示層またはユーザー インターフェイス)、C はコントローラー層を指します。

mvc を使用する目的は、M と V を分離して、プログラムで異なるユーザー インターフェイスを簡単に使用できるようにすることです。

Web サイト開発では、

モデル レイヤーは通常、データベース テーブル情報の追加、削除、変更、確認を担当します。

ビュー レイヤーはページ コンテンツの表示を担当します。 、および

control コントローラー層は 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) 地理的位置 (場所);

(6) リンク メッセージ ( link);

(7) イベントプッシュ(イベント)

## タイプ。さまざまな種類のメッセージを送信するときのデータ転送形式をマスターしましょう

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

#File_get_contents

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

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

#simplexml_load_string()

文字列を配列に変換する関数は___explode_____ です。配列を文字列に変換する関数は ____implode________.

URL 文字列をエンコードする文字列は ____urlencode________.

5 です。Sprintf 関数の役割

#これについてはマニュアルを確認してください。

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

(1) ネットワークの理由、データ インターフェイスの理由(2) コード エラー、原因の推測方法

コードが次の場合、修正箇所を確認します。正しい

データを出力して確認できます。 phpを使ってファイルを操作

$myfile = fopen(“newfile.txt”, “w”);
txt="aaaaaaaaaa";fwrite(txt ="aaaaaaaaaa";
fwrite(txt="aaaaaaaaaa";fwrite(myfile, txt);fclose(txt);
fclose(txt);fclose(myfile);
ログイン後にコピー

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

クリッククリックしてリンクへジャンプ

イベントをプッシュするコード

コードをスキャンしてプッシュしてポップアップ表示します

システムの写真撮影イベントをポップアップ表示し、写真を投稿します

WeChat のイベントをポップアップ表示しますアルバム ポスター

場所セレクターの地理イベントをポップアップ

8、トークンの役割

セキュリティ メカニズムの検証、WeChat サーバー間のセキュリティ検証に使用されます。およびPHPサーバー

9. Appidとsecectの役割

APIインターフェース(メニュー操作など)をリクエストする際には、appidとsecectの値を渡す必要があります。アプリケーション認証コードを取得するには

読んでいただいた皆様、ありがとうございます。皆様の面接がスムーズに進むことを願っています

推奨チュートリアル: 「php チュートリアル#」 ##"

以上が2021年PHP面接問題集の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート