ホームページ  >  記事  >  バックエンド開発  >  面接の質問への回答

面接の質問への回答

不言
不言オリジナル
2018-04-21 11:48:301985ブラウズ

この記事の内容は、面接の質問に答えることに関するもので、困っている友達に共有します


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

2。 現在、プログラミングでは MVC の 3 層構造がよく採用されています。MVC とはどの 3 層を指し、その利点は何ですか?


1. コードの再利用性を実現し、コードの冗長性を回避できます。 2. M と V はコードに分離されており、同じプログラムで異なる表現を使用できます
3. echo( )、print()、print_r() の違い

答え: echo は PHP ステートメント、print と print_r は関数、ステートメントには戻り値がありません、関数は戻り値を持つことができます
print( ) 単純な型のみを出力できます 変数の値 (int、string など)
Print_r() は複合型の変数 (配列、オブジェクトなど) の値を出力できます echo は 1 つまたは文字列をもっと見る


4. トランザクションとは何か、特徴u

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


(1) 原子性: つまり、非セグメント化、実行されるか実行されないかのどちらかです。 (2) 一貫性。トランザクションの実行は、データベースをある正しい状態から別の正しい状態


(3)分離に変換します。トランザクションが正しくコミットされるまでは、トランザクションによって行われたデータへの変更を他のトランザクションに提供することはできません。トランザクションが正しく送信されると、トランザクションの送信後に他のエラーが発生した場合でも、トランザクションの処理結果はデー​​タベースに永続的に保存されます。
その後、操作は操作前の状態にロールバックされるか、操作上にノードが存在します。何かが実行されるか実行されないかを確認するには、トランザクションを使用できます。ステートメントのグループをトランザクションとして考慮するには、ACID テスト (原子性、一貫性、分離性、耐久性) に合格する必要があります。
5. ロックとは何ですか?

回答: トランザクションがデータ オブジェクトを操作するとき、まずシステムにロック要求を送信します。ロック後、データオブジェクトに対してトランザクションが実行されます 特定の制御を使用すると、トランザクションがロックを解放するまで、他のトランザクションはこのデータ オブジェクトを更新できません。
列レベルのロックと行レベルのロック。そして、その利点と欠点は何ですか?
答え: インデックスは、データベース検索エンジンがデータ取得を高速化するために使用できる特別なクエリ テーブルです。
インデックスを一意に作成すると、単一の列または複数の列を指定できます。
欠点は、データ入力の速度が遅くなり、データベースのサイズも大きくなることです。

6. MyISAM タイプと InnoDB タイプのエンジンの違い:
MyISAM タイプはトランザクション、テーブル ロックをサポートせず、断片化が起こりやすく、頻繁な最適化が必要で、読み取りと書き込みの速度が高速です。一方、InnoDB タイプはトランザクション、行ロックをサポートし、クラッシュ回復機能を備えています。読み取りおよび書き込み速度は MyISAM よりも遅くなります。
7. PHP 関数のデフォルト修飾子 static public

8. オブジェクト指向の特徴は何ですか? 答え: 主にカプセル化、継承、ポリモーフィズムが含まれます。 4 つの側面の場合は、抽象化を追加します。
以下の説明は理解のためのものです:

カプセル化: カプセル化は、ソフトウェア コンポーネントが優れたモジュール性を持つことを保証するための基礎です。
カプセル化の目標は、ソフトウェア コンポーネントの高い凝集性と低い結合性を達成することです。プログラムの相互依存による変更の影響を防ぐため 既存のクラスを元に、既存のクラスで定義された内容を独自の内容として追加し、新しい内容を追加したり、元のメソッドを変更して作成したりすることができますこれは特別なニーズに適しています。継承は、サブクラスが親クラスのデータとメソッドを自動的に共有するメカニズムであり、ソフトウェアの再利用性と拡張性を向上させるクラス間の関係です。


ポリモーフィズム: はい ポリモーフィズムとは、プログラム内で定義された特定の型の参照変数を指し、参照変数によって送信されるメソッドによる呼び出し方法は不明ですが、プログラム内でのみ決定されます。実行時に、参照変数がどのクラスのインスタンス オブジェクトを指すか。参照変数によって発行されるメソッド呼び出しは、どのクラスに実装されるメソッドか。これはプログラムの実行中に決定する必要があります。
それらの側面では、現在の目標に関連する側面に焦点を当てます。たとえば、アリとゾウを見て、それらがどのように似ているかを想像できる場合、それは抽象化です。
9.
__autoload() メソッドはどのように機能しますか?
答え: このマジック関数を使用するための基本条件は、クラス ファイルのファイル名がクラスの名前と一致している必要があることです。 特定のクラスをインスタンス化するプログラムを実行する際、インスタンス化前にクラスファイルが導入されていないと、__autoload()関数が自動的に実行されます。この関数は、インスタンス化したクラスの名前に基づいて、このクラス ファイルのパスを検索します。このクラスにファイルが存在しない場合は、実行を続行します。エラーが表示されます。

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

10. tp3 の動作は何ですか?アクションの前に実行される動作
動作: システムコアの上に、多くのラベル拡張ビットが設定され、各ラベル位置が独自の独立した動作を実行でき、組み込みのシステム機能が順番に実行されます。動作拡張機能、すべての動作拡張機能は置き換え可能であり、追加可能です。

11.
デバッグモードを有効にする方法?デバッグモードの利点は何ですか? デバッグを有効にするing モードは非常に簡単で、エントリ ファイルに 1 行の定数定義コードを追加するだけです。

開発フェーズを完了して運用環境にデプロイした後は、デプロイメント モードに切り替えるには、デバッグ モード定義コードを削除する必要があります。その後、デバッグ モードをオンにすると、システムは最初にシステムのデフォルトのデバッグ構成ファイルをロードし、次にデバッグを容易にするためにプロジェクトの詳細レコードをロードします。
テンプレート キャッシュをオフにします。テンプレートの変更はすぐに有効になります。
3. SQL 分析を容易にするために SQL ログを記録します。 フィールドの変更はキャッシュされません。
5.
ファイルを厳密にチェックします。 6.
開発、テスト、デモンストレーションなど、開発プロセスのさまざまな段階で便利に使用できます。必要に応じて、別個のプロジェクト構成ファイルを使用します。さまざまなアプリケーション モードに合わせて構成できます。

12. TP の URL パターンは何ですか?デフォルトはどれですか?
回答: ThinkPHP は、通常モード、PATHINFO、REWRITE、互換モードを含む 4 つの URL モードをサポートしており、URL_MODEL パラメーターを設定することで定義できます。

デフォルトのモードは: PATHINFO モード、URL_MODEL を 1 に設定します
13 Smarty のコンパイルとキャッシュの違いは何ですか

Smarty のコンパイルプロセスは、テンプレートを取得し、内部のタグを置き換えることです。対応するphpコード 実際、これはPHPとHTMLを混合するプロセスです
Smartyのキャッシュは、コンパイルされたファイルを実行すると同時に静的なHTMLページを生成するために手動で開く必要があります。ファイルなので、効率の点ではより高くなります
13. Smarty キャッシュ メカニズムとは何ですか?
キャッシュがオンになっている場合、smarty は設定された時間内に有効期限が切れない場合、同時に静的な HTML ページを生成します。

再度アクセスすると、その HTML ファイルにアクセスすることになり、データベースを読み取る必要があるため、効率の点でより高くなります。
14. プログラムの開発において、プログラムの動作効率を向上させるにはどうすればよいですか?
1. SQL ステートメントを最適化し、どのフィールドのどのフィールドをチェックするために、クエリ ステートメントで * を使用しないようにします。 4. データ テーブルにインデックスを作成します。プログラムで頻繁に使用されるデータのキャッシュ
15. JSon データ形式の理解:
JSON (JavaScript Object Notation)
は軽量のデータ交換形式です。
json データ形式は固定です,
は多言語でのデータ送信に利用可能

PHPでjson形式を処理する関数
use

' s ' s ' を
' ' s ' being 's to be decode's to be decode to
's to be-be decode to be-beging to be decoded by- to

お尻oc はオブジェクトの代わりに配列を返します;
http はステートレス プロトコルであり、このプロトコルは 2 つのトランザクション間の接続を維持できません。ユーザーがあるページをリクエストし、次に別のページをリクエストした場合、http は 2 つのリクエストが同じ変数からのものであることを通知できません。セッション制御の考え方は、Web サイト内の変数を追跡できるようにすることです。変数を追跡することで、ユーザーをサポートし、認証とユーザー ID に基づいてさまざまなコンテンツやページを表示できるようになります。

17. PHP アップロード ファイル move_upload_file と is_uploaded_file は何をしますか?
move_upload_file は、アップロードされたファイルを新しい場所に移動します
is_uploaded_file は、ファイルが HTTP POST 経由でアップロードされたかどうかを決定します

18. データベース Mysql のストレージ エンジン、myisam と innodb の違い。
1 つ目: MyISAM は非トランザクション ストレージ エンジンであり、テーブル ロックが頻繁に発生するアプリケーションに適しており、小規模なデータ、同時実行性に適しています。エンジン。挿入および更新操作が多いアプリケーションに適しています。適切に設計されている場合は、行ロックになります (最大の違いはロックのレベルにあります)。 Y 2 番目のタイプ: i MyISAM タイプは、トランザクション、テーブル ロック、フラグメントの生成が容易で、頻繁に最適化され、読み取りおよび書き込み速度が速く、サポートしていません。一方、InnoDB タイプは、トランザクション、行ロック、崩壊回復機能をサポートしています。読み取りおよび書き込み速度は MyISAM よりも遅くなります。

19. char と varchar の違い
答え: char は、割り当てられるだけのスペースを必要とします。可 Varchar は可変長の文字型であり、コンテンツがどれだけのスペースを占めるかによって、スペースを効果的に節約できます。
varchar型は可変であるため、データ長が変わるとサーバー側で追加の操作が必要となり、char型に比べて効率が悪くなります。
20. MySQL データベースは、1 日あたり 50,000 件を超える増加の運用とメンテナンスにかかると予想されます。
a. 効率を高めるために、適切に設計されたデータベース構造を設計し、部分的なデータの冗長性を許可し、結合クエリを避けるようにしてください。

b. 適切なテーブル フィールドのデータ タイプとストレージ エンジンを選択し、インデックスを適切に追加します。 L C. MySQL ライブラリの所有者は読み取りと書き込みから分離されています。
d. 通常のテーブルを見つけて、1 つのテーブル内のデータ量を減らし、クエリ速度を向上させます。
e. memcached、apc などのキャッシュ メカニズムを追加します。
f. 頻繁に変更されないページは静的ページを生成します。 g. 効率的な SQL を作成します。たとえば、SELECT * FROM TABEL は SELECT field_1, field_2, field_3 FROM TABLE に変更されます。

21
オブジェクト指向の理解
オブジェクト指向 OO = オブジェクト指向分析 OOA + オブジェクト指向設計OOD + オブジェクト指向プログラミング OOP という一般的な解釈は、すべてを独立したオブジェクト (単位) の 1 つと見なすものです。 cully純粋なOO言語は、主にJavaとC ++です。 2 番目: 对 オブジェクト指向は、プログラムの再利用性を高め、プログラムの構造をより明確にするのに役立つ設計手法です。主な機能: カプセル化、継承、ポリモーフィズム。
22.
private、protected、public 修飾子のアクセス権の簡単な説明。
答え: プライベート: プライベート メンバーにはクラス内でのみアクセスできます。 T Protected: 保護メンバーは、このクラスおよび継承でアクセスできます。
パブリック: パブリックメンバー、完全にパブリック、アクセス制限なし。
23.
抽象クラスとインターフェースの概念と違いは何ですか? 答え:

抽象クラス:
これはインスタンス化できず、他のクラスの親クラスとしてのみ使用できる特別なクラスです。 abstract キーワードを使用して宣言します。
インターフェイス:
これは、インターフェイスを使用して宣言された特別な抽象クラスおよび特殊なクラスです。 ️ (1) 抽象クラスの操作は継承キーワード extends によって実現され、インターフェースの使用はimplements キーワードによって実現されます。
(2) データのカプセル化を実現できる抽象クラスにはデータメンバが存在しますが、インターフェースにはデータメンバがありません。
(3) 抽象クラスはコンストラクターを持つことができますが、インターフェイスにはコンストラクターがありません。 (4) 抽象メソッドは、Private、ProteCted、Public キーワードを使用して変更できます (抽象メソッドを Private にすることはできません)。インターフェイス内のメソッドは、Public キーワードを使用してのみ変更できます。
(5) クラスは 1 つの抽象クラスからのみ継承でき、クラスは複数のインターフェイスを同時に実装できます。
(6) 抽象クラスはメンバーメソッドの実装コードを持つことができますが、インターフェースはメンバーメソッドの実装コードを持つことができません。
2 番目の違い:
1. 抽象メソッドを持つクラスは、抽象クラスと呼ばれます。抽象クラスは、abstract キーワードを使用して抽象メソッドのみを定義する必要があります。中口 2、インターフェイスはすべて抽象メソッドであり、メソッドを ABSTRACT で定義する必要はありません。
23.
コンストラクターを使用する場合とデストラクターを使用する場合
コンストラクター (メソッド) は、オブジェクトの作成後にオブジェクトによって自動的に呼び出される最初のメソッドです。
これは宣言されたすべてのクラスに存在し、特別なメンバー メソッドです。
この機能は、いくつかの初期化タスクを実行することです。 Php では、__construct() を使用してコンストラクター メソッドを宣言しますが、宣言できるのは 1 つだけです。メソッド デストラクター (メソッド) とコンストラクターの機能的かつ構成的なメソッドはまったく逆です。これは、オブジェクトが破棄される前にオブジェクトによって自動的に呼び出される最後のメソッドです。
ファイルを閉じたりメモリを解放したりするなど、オブジェクトを破棄する前に特定の操作を実行するために使用されます。 24. Smarty とは何か、利点と欠点

Smarty は、PHP プログラムをアーティストから分離し、プログラマーがプログラムを変更できるようにすることを目的としています。論理コンテンツはアーティストのページのデザインに影響を与えません。アーティストがページを再変更しても、プログラムのプログラム ロジックには影響しません。これは、複数人によるコラボレーション プロジェクトでは特に重要です。 (マルチスタイルのプログラム開発も簡単です)
Y Smarty の利点

1. 速度が速い: 他のテンプレート エンジンと比べて。
2. コンパイルの種類: Smarty によって作成されたプログラムは、実行時に非テンプレート テクノロジの PHP ファイルにコンパイルされる必要があります

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ S 使用 使用





1. リアルタイムで更新する必要があるコンテンツ。たとえば、株式表示のように、データを頻繁に更新する必要があります
2. 小規模プロジェクト。シンプルさゆえにアーティストとプログラマーの両方がいる小規模プロジェクト
25。
一般的な HTTP ステータス コード:

200 - リクエストは成功しました 301 - リソース (Web ページなど) は永続的です。エスケープ 他の URL へ

302 - 一時的な転送は成功しました。要求されたコンテンツは新しい場所に移動されました。 401 - 不正であることを表します。
403 - 禁止されています。
404 - 要求されたリソース (Web ページなど) が存在しません 500 - 内部サーバーエラー
505 - 内部サーバーエラー
27.
php 値の転送 値による受け渡しの違いは何ですか。参照渡しはいつ使用しますか?

デフォルトでは、変数は常に値によって割り当てられます。つまり、式の値が変数に割り当てられると、式全体の値がターゲット変数に割り当てられます。これは、次のことを意味します。 1 つの変数が別の変数に割り当てられる場合、1 つの変数の値を変更しても他の変数には影響しません。PHP には、変数に値を割り当てる別の方法、参照割り当てもあります。これは、新しい変数が単に元の変数の
__references__ (つまり、エイリアスまたはポイントになる) であることを意味します。変更された新しい変数は元の変数に影響し、その逆も同様です。参照割り当てを使用するには、割り当てられる
変数 (ソース変数) に & 記号を追加するだけです。
メモリ オーバーヘッド
2 番目のタイプ:
関数の範囲内での値の変更は関数の外部では無視されます。 値で渡す場合、php は値をコピーする必要があります。特に大きな文字列やオブジェクトの場合、これは非常にコストのかかる操作になります。参照渡しでは値をコピーする必要がないため、パフォーマンスの向上に役立ちます。

28. 二重引用符と一重引用符の違い

1.
二重引用符は変数を説明し、一重引用符は変数を解釈しません 2.
変数がある場合は二重引用符の中に一重引用符を挿入します一重引用符で囲まれている場合は、変数の解釈
3. 二重引用符で囲まれた変数名の後には、数字、文字、アンダースコアではない特殊文字が続く必要があります。変数名は全体として扱われ、構文エラーが発生します
4.
二重引用符はエスケープ文字を解釈し、一重引用符はエスケープ文字を解釈しませんが、' と \ を解釈します 5.
一重引用符を使用するように単一引用符を作成できます可能な限り、単一引用符は二重引用符よりも効率的です。高くするには (双) 二重引用符は最初に通過する必要があるため、判断があり、その後操作されるため、単一引用符の数を判断する必要はありません)
29. ユーザーの行動ログのキャッシュはどこにありますか? MongoDB

1. よく使われるスーパーグローバル変数
s 's

- -- --->get メソッドと post メソッドの両方で値を受け取ることができます

ファイルをアップロードするには、
$_SERVER -----> システム環境変数

using
use '' '' ‐ ‐ off off-out-out ‐‐‐‐‐‐‐> & gt; セッション制御中、
$_env ---------- & gt; 環境変数

2. バージョン管理ツール SVN と git
1. git が配布されていますスタイル、svn は中央集中型です
2. svn には中央サーバーが必要ですが、git は必要ありません
3. git はインターネットがなくても使用できますが、svn はオンラインである必要があります
4. Git は中央サーバーを必要とします。ブランチ間の分岐
5. git の整合性は svn

よりも優れています
3.
isset() と empty() の違いIsset は変数が存在するかどうかを決定します。変数の 1 つが存在しない場合は false を返し、変数が空の場合は false を返します。 trueを返します。
4. 分割された文字列を分解および分解し、配列を接続します
5. file_get_contents は、ファイルの内容を文字列に読み取るためにどのようなプロセスを経ますか? 6. make と make install の違いは何ですか?リナックス? コンパイルしてインストールします
7. オブジェクト指向では、インターフェイスはインターフェイスを継承できますか? はい、ただしインターフェイスはカテゴリを継承できません
8. Memcache と Redis は異なります
1. データ型

Redis データ型は豊富なデータ型で、SET リストやその他の型をサポートします
Memcache は単純なデータをサポートしますクライアント自体が必要なタイプ 複雑なオブジェクトの処理
2. 永続性
redis はデータ永続ストレージをサポートします
memcache はデータ永続ストレージをサポートしません
3. 分散ストレージ
Redis はマスタースレーブレプリケーションをサポートしますモード
Memcache は一貫性のあるハッシュを使用して分散できます
4. 値のサイズが異なります
Memcache はメモリ キャッシュであり、キーの長さは 250 文字未満で、単一アイテムのストレージは 250 文字未満です仮想マシンには適していない1M 5. data dataの一貫性は異なります。Redisは単一スレッドモデルを使用して、データが順番に送信されるようにします。
Memcache はデータの一貫性を確保するために cas を使用する必要があります。 CAS (Check and Set) は、同時実行の一貫性を確保するためのメカニズムであり、「オプティミスティック ロック」のカテゴリに属します。原理は非常に単純です。バージョン番号を取得し、操作し、バージョン番号を比較し、一貫性がある場合は操作します。一貫性がないため、操作を中止します
6 Redis シングルスレッド モデルでは CPU は 1 つだけ使用でき、複数の Redis プロセスをオンにすることができます
9 シリアル化とは何ですか?機能は何ですか?
- ‐ ‐ ‐ ‐‐‐‐‐‐‐‐‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ csdn.net/pangchengyong0724/article/details/49246847)
2. CI の構築原理?使用しているバージョン (3.1.7 安定バ​​ージョン)
プログラムが実行される前に、フレームワークは主に構成でフックが有効になっているかどうかを判断するためにフックをロードします
有効になっている場合は、構成をロードします。 /hoos.php 設定ファイル、フック設定情報
次に、フレームワークは、hooks->call メソッドを呼び出してフックを呼び出し、フック クラスは call_hook を通じて設定を解析し、フック クラスの run_hook を通じて関数を呼び出します。
4. phpとは何ですか?
は英語のハイパーテキスト前処理言語PHP: Hypertext Preprocessorの略称です。 PHP は HTML 埋め込み言語であり、サーバー側で実行される HTML ドキュメントに埋め込まれたスクリプト言語です。言語のスタイルは C 言語に似ており、広く使用されています。

5. include と require の違い E導入されたファイルが存在しない場合は、[警告]を報告して、導入されていない場合はリクエストし、致命的なエラーを報告します最初の関数によって返される配列には値のみが含まれるため、配列の添字
を使用してデータを読み取ることができます。返された配列には、最初のタイプとキーと値のペアの形式の両方が含まれており、次のようにデータを読み取ることができます (データベース フィールドがユーザー名、パスワードの場合): $row['username']$row ['passwd']
7. セッションをデータベースに保存できますか?
形式は何ですか?変換には何を使用しますか? Z Serialize () シリアル化配列はキーと値の構造で括弧で囲まれた文字列になります

// unSserialize () 逆シリアル化は配列 (-1) になります12. js は cookie を操作できますか?はい、cookie を設定します: setcookie; cookie を取得します: getcookie

13. jQ でカプセル化された $$ 関数は、jQ の jquery を表します関連する推奨事項:
php インタビューの概要

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。