Baidu PHP 電話面接 10 の質問

Jun 13, 2016 pm 12:50 PM
http innodb myisam nbsp url

Baidu PHP 電話面接に関する 10 の質問

[この記事の出典] http://www.16nn.com/?p=309


要約すると、百度の面接、特に一次面接で最も重要なことは基礎、基本、基礎です。幅広いトピックが取り上げられていますが、それらはすべてプログラマが知っておくべき、知っておくべき内容です。戻って再度情報を探し、次の質問をしました。回答は参考用です。


1. PHP の整数オーバーフロー問題とは何ですか
2. OOP を理解する方法
3. デザインパターンと MVC についての理解
4. HTTP プロトコル 1.0 と 1.1 の違い、および HTTP プロトコルについて簡単に説明します
5. Apache の書き換えメカニズムと PHP フレームワークの URI ルーティング メカニズムについて簡単に説明します
6. MySQL のインデックス作成メカニズムと複合インデックスを使用するための原則
7. MySQL テーブルの種類と MyISAM と InnoDB の違い
8. クイックソートアルゴリズムを簡単に説明します
9. awk、sed、sort の基本的な使用法 (例で検討)
10. Memcached と redis の使用と理解


================================================
【1】PHPの整数オーバーフロー問題とは


PHP の整数のワード長はプラットフォームに関連しており、最大の整数は 20 億を超えますが、実際には 2 の 31 乗になります。符号なし整数をサポートします。 数値が整数の範囲を超える場合、自動的に浮動小数点として解釈されます。実行された演算の結果が整数の範囲を超える場合は、浮動小数点数も返されます。 (Java と C の整数オーバーフローについてはどうですか?)


【2】OOPを理解する方法


OOP (オブジェクト指向プログラミング) には、継承、カプセル化、ポリモーフィズムという 3 つの側面が含まれています。最も基本的なのは抽象化です。
継承、つまり拡張性は、既存の親クラスの機能をサブクラスを通じて拡張します。
カプセル化では、外部がオブジェクトの内部データに自由にアクセスできないことが必要です。つまり、クラス内の特定の実装はカプセル化されており、その動作と方法を知っている限り、ユーザーは特定の内部実装を知る必要はありません。それを使ってください。
ポリモーフィズムはクラスの抽象化およびインターフェイスであり、同じクラスが複数の種類のオブジェクトを処理できる機能です。


実際には、私たちが目にするものはすべてオブジェクトと見なすことができ、クラスへのさらなる抽象化を通じて、クラスは多くの同様のオブジェクトに進化することができます。簡単な例を挙げると、私たちが目にする家を ROOM クラスに抽象化します。これには、基本的なドア、窓、テーブルなどのオブジェクトと、人の出入りなどの機能が含まれます。 現在、ROOM クラスを Classroom として継承しています。これには、ドア、大きな窓、テーブルと椅子があり、教師とクラスメートが授業に参加できるのは白と黒の教壇のみです。ここで、この Classroom クラスを Classroom_621 オブジェクトとしてインスタンス化します。これには、2 つのドア、4 つの大きな窓、30 セットのテーブルと椅子が含まれており、一部の学生は毛沢東の授業を受けています。


【3】デザインパターンとMVCについての理解


モデル-ビュー-コントローラー、モデル、ビュー、コントローラー。MVC について考えるときは、JAVA を思い浮かべるでしょう。JAVA は、Smalltalk で最初に登場した、ビューとデータを分離することだからです。モデルが異なるため、異なるプログラムで異なる表示を行うことができます。


モデル、つまりプログラマーによって作成された機能、アルゴリズム、データ モデル。これをシステム ビジネス ロジック層と呼びます。
ビュー、つまりフロントエンドのグラフィカル インターフェイス。ユーザーに表示されます。
コントローラーは主にリクエストの処理と転送を担当します。


デザイン パターンは、実際には、コード設計経験の要約と分類です。デザイン パターンは、主にオブジェクト指向プログラミングで使用される 23 のデザイン パターンを含む、初期の GoF で説明されています。いくつかの設計原則に従います: オープンとクローズの原則、単一責任の原則、リスコフ置換原則、依存性注入、インターフェース分離、ディミット原則、継承よりも合成を優先するなど。これには、創造モデル、構造モデル、動作モデルの 3 つのカテゴリが含まれます。


【4】HTTPプロトコル1.0と1.1の違いと、HTTPプロトコルについて簡単に説明します


HTTP、ハイパーテキスト転送プロトコル。ブラウザとサーバー間の通信ルールを定義します。 HTTP プロトコルは、TCP/IP の TCP プロトコルに基づいており、その機能には、C/S モード、シンプルなリクエスト (GET/POST/HEAD)、およびあらゆるものを送信できることが含まれます。データのタイプ (HTML、XML、JSON、カスタムなど)、接続なし (接続ごとに 1 つのリクエストのみが処理され、リクエストが発行されてから 200 ステータスを受信するまで接続は切断されます)、ステートレス。


HTTP プロトコルには主に、応答メッセージの形式、要求メッセージの形式、およびステータス コードのナレッジ ポイントが含まれます。


【応答メッセージのフォーマット】
HTTP/1.1 200 0K
コネクロン:閉じる
日付: 2005 年 10 月 13 日木曜日 03:17:33 GMT
サーバー: Apache/2.0.54 (Unix)
最終更新日:1998 年 6 月 22 日月曜日 09;23;24 GMT
内容―長さ:682リットル
コンテンツ—タイプ:text/html


応答メッセージは、初期ステータス行、6 つのヘッダー行、および要求されたオブジェクト自体を含む依存関係の 3 つの部分に分かれています。ステータス行には、プロトコル バージョン フィールド、ステータス コード フィールド、および理由フレーズ フィールドの 3 つのフィールドがあります。


【リクエストメッセージフォーマット】
GET /somedir/page.html HTTP/1.1
ホスト:www.chinaitlab.com
接続:閉じる
ユーザーエージェント:Mozilla/4.0
受け入れ言語:zh-cn
(余分な復帰と改行文字)


リクエストメッセージの最初の行はリクエストラインと呼ばれ、それ以降の行はヘッダーラインと呼ばれます。リクエストラインには、メソッドフィールド、URL フィールド、HTTP バージョンフィールドの 3 つのフィールドがあります。


[ステータスコード] http://www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html
を参照してください。 1xx メッセージ
2xx 成功
3xx リダイレクト
4xx リクエスト エラー
5xx サーバー エラー


200 OK。リクエストは成功し、リクエストで予期された応答ヘッダーまたはデータ本体がこの応答とともに返されます。


301 永久に移動されました。要求された Web ページが新しい場所に完全に移動されたことを示します
302 件見つかりました。一時的にジャンプしたときにページが戻る状態を示します。
303 未変更。クライアントのキャッシュされたリソースは最新であるため、クライアントはキャッシュを使用する必要があります。


403 禁止。リクエストはサーバーによって拒否されました。
404 見つかりません。これは、サーバーが要求された Web ページを見つけることができないことを意味します。サーバー上に存在しない Web ページは、HTTP ステータス コードを返すことがよくあります。


500 内部サーバー エラー。
503 サービスは利用できません。現在サーバーはリクエストを処理できませんが、サービスはやがて復元されます。
504 ゲートウェイ タイムアウト。ステータス 408 と似ていますが、別のサーバーからの応答を待っている間にタイムアウトになったゲートウェイまたはプロキシからの応答が返されます。


【5】Apacheの書き換え機構とPHPフレームワークのURIルーティング機構について簡単に説明します

1) URL 書き換えとは、実際には、ユーザーがブラウザーを通じてリクエストした URL がバックエンドに送信され、Apache が事前に設定された書き換えルールに従ってリクエストを実際のリソース パスにポイントすることを意味します。実際のパスを再形成してユーザーに提供するというトリックですが、問題は、それを行うことに何の意味があるのか​​ということです。
1. SEO の側面。検索エンジンの要求を満たすために、動的 URL を静的にしてください。
2. アクセス制御。たとえば、ルールを書き換えた後、クライアントがバックグラウンド プログラムの種類を判断することは困難です。
3. URL リダイレクト。 Web サイトがドメイン名を変更するか、エイリアス URL を追加する場合、ルールを通じてアクセスする URL を簡単に指定できます。


http://httpd.apache.org/docs/current/mod/mod_rewrite.html
mod_rewrite は正規表現を使用して、受信リクエストの URL を動的に変更します。 URL をファイル システム パスにマッピングしたり、ある URL を別の URL にマッピングしたりできます。 URL を操作するために無制限のルールが使用され、各ルールには無制限の追加条件を含めることができます。サーバー変数、環境変数、HTTP ヘッダー、タイムスタンプなど、さまざまな方法で検出できます。
mod_rewrite は、path-info 部分を含む URL パス全体を操作します。書き換えルールは http.conf または .htaccess で設定できます。書き換えルールによって生成されるパスには、リクエスト文字列、内部サブルーチン処理、外部リクエストのリダイレクト、または内部プロキシの侵入が含まれる場合があります。


2) PHP フレームワークの URI ルーティング メカニズムは Apache の書き換えに似ており、通常はワイルドカードと通常のルールが含まれます。ユーザーが独自のルーティング ルールを設定して URI ハンドラーをリダイレクト (再マップ) できるようにします。


【6】MySQLのインデックスの仕組み、複合インデックスの使用原理


(書籍「入門 MySQL in a Simple Way」では、インデックスの使用法について詳しく説明しています)
一般に、書籍の目次は、インデックス作成メカニズムを導入するために使用されます。実際、一部の書籍には、データベースのインデックスによく似た特別なクイック検索付録が付いています。
MySQL のインデックスには、主キー インデックス、一意のインデックス、通常のインデックス、およびフルテキスト インデックスの 4 つのカテゴリが含まれます。 table_name のインデックスを表示 -- テーブル内のインデックスを表示します
「Handler_read%」のようなステータスを表示 -- インデックスの使用状況を表示


複合インデックスは通常、最も左のプレフィックスの原則に従います。たとえば、table_a の 3 つの列 a b c を使用して複合インデックスを構築します
table_a(a,b,c) にインデックス ind_table_a を作成します;
その後、新しく作成された複合インデックスは、条件で a、または a、b、または a、b、c が使用される場合にのみ使用されます。


【7】MySQLテーブルの種類とMyISAMとInnoDBの違い


一般的な MySQL テーブル タイプ (つまり、ストレージ エンジン) には、次のエンジンが含まれます: MyISAM/Innodb/Memory/Merge/NDB


その中で、MyISAM と Innodb は最もよく使用される 2 つのテーブル タイプであり、それぞれに独自の利点があります。ニーズに応じて適切なテーブル タイプを選択できます。
[マイサム]
1) 各データベース ストレージには 3 つのファイルが含まれています: .frm (テーブル定義)、MYD (データ ファイル)、MYI (インデックス ファイル)
2) データ ファイルまたはインデックス ファイルは複数のディスクを指すことができます
3) Linux のデフォルト エンジン、Win のデフォルトは InnoDB
4) 非トランザクション型の場合、トランザクション型の追加のオーバーヘッドを回避します
5) 選択と挿入が集中的に行われるテーブルに適しています
6) MyISAM のデフォルトのロック スケジュール メカニズムは書き込み優先度であり、LOW_PRIORITY_UPDATES
を通じて設定できます。 7) MyISAM タイプのデータ ファイルはさまざまなオペレーティング システムでコピーできます。これは非常に重要であり、展開がより便利になります。


[Innodb]
1) トランザクションアプリケーションの場合
2) 更新と削除の集中的な操作に適しています。 select count(*) from table を実行する場合、InnoDB はテーブル全体をスキャンして行数を計算する必要がありますが、MyISAM は単に保存された行数を読み取るだけで済みます。 count(*) ステートメントに where 条件が含まれている場合、2 つのテーブルの操作は同じであることに注意してください。 DELETE FROM テーブルの場合、InnoDB はテーブルを再作成せず、行ごとに削除します。
3) 行レベルのロックと外部キー制約を導入します
4) InnoDB は FULLTEXT 型インデックスをサポートしていません


【8】クイックソートアルゴリズムの簡単な紹介


基本的な考え方: 1 回の並べ替えパスで並べ替えるシーケンスを 2 つの部分に分割し、一方の部分には他方の部分よりも小さいレコードが含まれます。その後、順序を達成するために 2 つの部分を別々にすばやく並べ替え続けます。
アルゴリズムの実装: low と high の 2 つのポインターがあり、初期値は low=1、high=n であり、参照値はキー (通常は最初の値が選択されます) であり、最初に高い位置から前方に検索して見つけます。最初のレコード key より小さいレコードを key と交換し、次に下位から逆方向に検索して key より大きい最初のレコードを見つけてベース値と交換し、low=high になるまで繰り返します。


最初のソート結果では、キー前のレコード値がキー後のレコード値より小さくなります。


11 25 9 3 16 2 //キーとして 11 を選択
2 25 9 3 16 11
2 11 9 3 16 25
2 3 9 11 16 25


【9】awk、sed、sortの基本的な使い方(例で解説)


【例】:以下のようなファイルテストがあります。各URLの出現回数をカウントし、シェルを使用して実装してください。
a www.baidu.com 20:00
b www.qq.com 19:30
c www.baidu.com 14:00
d www.baidu.com 23:00
e www.qq.com 20:30
f www.360.com 20:30


cat テスト| awk -F' '{print $2}' |sort -n |uniq -c


【10】Memcachedとredisの使い方と理解
Memcached と redis はどちらもキーと値のメモリ ストレージ システムであり、ハッシュ テーブルを通じて検索結果を保存し、強力なキャッシュ メカニズムを実現します。新浪の微博や淘宝網などのトラフィックの多いサイトでは、これらを使用する必要があります。
以下は百科事典からの抜粋です。具体的な実践方法や使い方については、後ほど詳しくご紹介します。
Memcache は、メモリ内に統合された巨大なハッシュ テーブルを保持することで、画像、ビデオ、ファイル、データベースの検索結果などのさまざまな形式のデータを格納する、高性能の分散メモリ オブジェクト キャッシング システムです。簡単に言うと、データがメモリに呼び出されてからメモリから読み取られるため、読み取り速度が大幅に向上します。
Redis はキーと値のストレージ システムです。 Memcached と同様に、string (文字列)、list (リンク リスト)、set (セット)、zset (順序付きセット) など、比較的多くの保存された値の型をサポートします。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11で明るさを調整する10の方法 Windows 11で明るさを調整する10の方法 Dec 18, 2023 pm 02:21 PM

画面の明るさは、最新のコンピューティング デバイスを使用する上で不可欠な部分であり、特に長時間画面を見る場合には重要です。目の疲れを軽減し、可読性を向上させ、コンテンツを簡単かつ効率的に表示するのに役立ちます。ただし、設定によっては、特に新しい UI が変更された Windows 11 では、明るさの管理が難しい場合があります。明るさの調整に問題がある場合は、Windows 11 で明るさを管理するすべての方法を次に示します。 Windows 11で明るさを変更する方法【10の方法を解説】 シングルモニターユーザーは、次の方法でWindows 11の明るさを調整できます。これには、ラップトップだけでなく、単一のモニターを使用するデスクトップ システムも含まれます。はじめましょう。方法 1: アクション センターを使用する アクション センターにアクセスできる

iPhoneのSafariでプライベートブラウジング認証をオフにする方法は? iPhoneのSafariでプライベートブラウジング認証をオフにする方法は? Nov 29, 2023 pm 11:21 PM

iOS 17 では、Apple はモバイル オペレーティング システムにいくつかの新しいプライバシーおよびセキュリティ機能を導入しました。その 1 つは、Safari のプライベート ブラウジング タブに対して 2 段階認証を要求する機能です。その仕組みとオフにする方法は次のとおりです。 iOS 17 または iPadOS 17 を実行している iPhone または iPad では、Safari でプライベート ブラウズ タブを開いていて、再度アクセスするためにセッションまたはアプリを終了する場合、Apple のブラウザでは Face ID/Touch ID 認証またはパスコードが必要になります。言い換えれば、ロックが解除されている iPhone または iPad を誰かが手に入れても、パスコードを知らなければプライバシーを閲覧することはできません。

http ステータス コード 520 は何を意味しますか? http ステータス コード 520 は何を意味しますか? Oct 13, 2023 pm 03:11 PM

HTTP ステータス コード 520 は、サーバーがリクエストの処理中に不明なエラーに遭遇し、より具体的な情報を提供できないことを意味します。サーバーがリクエストを処理しているときに不明なエラーが発生したことを示すために使用されます。サーバー構成の問題、ネットワークの問題、またはその他の不明な理由が原因である可能性があります。これは通常、サーバー構成の問題、ネットワークの問題、サーバーの過負荷、またはコーディング エラーが原因で発生します。ステータス コード 520 エラーが発生した場合は、Web サイト管理者またはテクニカル サポート チームに連絡して詳細情報と支援を得ることが最善です。

Win10/11 デジタル アクティベーション スクリプト MAS バージョン 2.2 がデジタル アクティベーションを再サポート Win10/11 デジタル アクティベーション スクリプト MAS バージョン 2.2 がデジタル アクティベーションを再サポート Oct 16, 2023 am 08:13 AM

有名なアクティベーション スクリプト MAS2.2 バージョンでは、デジタル アクティベーションが再びサポートされています。このメソッドは @asdcorp とそのチームが考案したもので、MAS 作成者はそれを HWID2 と呼んでいます。 https://github.com/massgravel/Microsoft-Activation-Scripts から Gatherosstate.exe (オリジナルではなく、変更されたもの) をダウンロードし、パラメータを指定して実行し、AuthenticTicket.xml を生成します。まず元のメソッド: Gatherosstate.exePfn=xxxxxxx;DownlevelOriginalState=1 を確認し、次に最新のメソッド: Gatheros と比較します。

e からの NameResolutionError(self.host, self, e) の理由とその解決方法 e からの NameResolutionError(self.host, self, e) の理由とその解決方法 Mar 01, 2024 pm 01:20 PM

エラーの理由は、urllib3 ライブラリの例外タイプである NameResolutionError(self.host,self,e)frome です。このエラーの理由は、DNS 解決が失敗したこと、つまり、ホスト名または IP アドレスが試みられたことです。解決できるものが見つかりません。これは、入力された URL アドレスが間違っているか、DNS サーバーが一時的に利用できないことが原因である可能性があります。このエラーを解決する方法 このエラーを解決するにはいくつかの方法があります。 入力された URL アドレスが正しいかどうかを確認し、アクセス可能であることを確認します。 DNS サーバーが利用可能であることを確認します。コマンド ラインで「ping」コマンドを使用してみてください。 DNS サーバーが利用可能かどうかをテストします。プロキシの背後にある場合は、ホスト名の代わりに IP アドレスを使用して Web サイトにアクセスしてみてください。

htmlとurlの違いは何ですか htmlとurlの違いは何ですか Mar 06, 2024 pm 03:06 PM

相違点: 1. 定義が異なります。URL はユニフォーム リソース ロケーターであり、HTML はハイパーテキスト マークアップ言語です。 2. HTML には多数の URL を含めることができますが、URL 内に存在できる HTML ページは 1 つだけです。 3. HTML は is を指します。 Web ページ、url は Web サイトのアドレスを指します。

httpステータスコード403とは何ですか? httpステータスコード403とは何ですか? Oct 07, 2023 pm 02:04 PM

HTTP ステータス コード 403 は、サーバーがクライアントの要求を拒否したことを意味します。 http ステータス コード 403 の解決策は次のとおりです: 1. 認証資格情報を確認します。サーバーが認証を必要とする場合は、正しい資格情報が提供されていることを確認します。2. IP アドレス制限を確認します。サーバーが IP アドレスを制限している場合は、クライアントの IP アドレスは制限されています。ホワイトリストに登録されているか、ブラックリストに登録されていません。3. ファイルのアクセス許可設定を確認します。403 ステータス コードがファイルまたはディレクトリのアクセス許可設定に関連している場合は、クライアントがこれらのファイルまたはディレクトリにアクセスするための十分なアクセス許可を持っていることを確認してください。等

Web ページのリダイレクトの一般的なアプリケーション シナリオを理解し、HTTP 301 ステータス コードを理解する Web ページのリダイレクトの一般的なアプリケーション シナリオを理解し、HTTP 301 ステータス コードを理解する Feb 18, 2024 pm 08:41 PM

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実装されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

See all articles