python爬虫類面接宝典(よくある質問)

4852 ワード

この文章は主にpython爬虫面接宝典とよくある問題のまとめを紹介しています.必要な友达はスレッドの同期と非同期を理解していますか?スレッド同期:複数のスレッドが同じリソースに同時にアクセスし、リソースアクセスが終了するのを待って、時間を浪費し、効率が低い
スレッド非同期:リソースへのアクセス時に空き待機時に他のリソースに同時にアクセスし、マルチスレッドメカニズムを実現
ネットワークの同期と非同期を理解していますか?同期:要求の発行->サーバ処理の待機->処理が完了して戻ってくる間、クライアント・ブラウザは何もできません.
非同期:要求はイベントによってトリガーされます->サーバで処理されます(これはブラウザがまだ他のことができます)->処理が完了します
チェーンテーブルとシーケンステーブルを格納する際のそれぞれの利点は何ですか?1.シーケンステーブル記憶
原理:シーケンステーブルストレージはデータ要素を連続的なメモリストレージ空間に配置し、アクセス効率が高く、速度が速い.しかし、長さを動的に増やすことはできません.
利点:アクセス速度が効率的で、下書きで直接保存
欠点:1.挿入と削除が遅い、2.長さを増やすことはできません
たとえば、エレメントを挿入または削除する場合、テーブル全体でエレメントを移動して順序を変更する必要があります.
2.チェーンテーブルストレージ
原理:チェーンテーブルストレージはプログラム実行中に動的に空間を割り当て、メモリに空間がある限り、ストレージオーバーフローの問題は発生しない.
利点:挿入と削除の速度が速く、元の物理的順序を保持します.たとえば、要素を挿入または削除する場合は、ポインタの方向を変更するだけです.
欠点:検索速度が遅い.検索時にチェーンテーブルをループする必要があるからだ.
redisを使用して分散システムを構築する場合、ネットワーク遅延とネットワーク異常をどのように処理しますか?ネットワーク異常の存在により、分散システムでのリクエスト結果には、「成功」、「失敗」、「タイムアウト(不明)」の3つのステータスの「3つのステータス」という概念があります.
「タイムアウト」が発生した場合、RPCが成功したかどうか(銀行システムのやり方など)を確認するために、データの読み取り操作を開始できます.
もう1つの簡単な方法は、分散プロトコルを設計するときに実行ステップを再試行可能に設計することです.すなわち、いわゆる「べき乗等性」があります.
データ・ウェアハウスは何ですか.データ・ウェアハウスは、トピック向け、統合された、安定した、履歴の変化を反映した、時間の経過とともに変化するデータ・セットです.主に管理者の意思決定分析をサポートします.
データ倉庫は企業関連の内部と外部の各業務システムのデータソース、アーカイブファイルなどの一連の履歴データを収集し、最後に企業が必要とする戦略決定情報に転化した.
特徴:テーマ向け:業務によって行われる内容の区分;集積特性:異なる業務ソースデータは異なるデータ特徴を持っているため、業務ソースデータがデータ倉庫に入る時、統一的な符号化フォーマットを採用してデータロードを行い、それによってデータ倉庫中のデータの唯一性を保証する必要がある.不揮発性:データ・ウェアハウスは、データの異なる履歴の様々なステータスを保存することによって、データの更新操作を行わない.≪履歴プロパティ|History Properties|emdw≫:データはタイムスタンプフィールドを保持し、各データの異なる時間における様々なステータスを記録します.ネットワークからデータを取得する頻度が速く、ローカルにデータを書き込む頻度が遅い爬虫類があるとしますが、どのようなデータ構造を使用すればいいですか?
オンラインで解く(o°ω°o)Googleのヘッドレスブラウザを知っていますか?
ヘッダレスブラウザはheadless browserであり、インタフェースのないブラウザである.ブラウザである以上、ブラウザにあるべきものはすべてあるはずですが、インタフェースが見えないだけです.
PythonのseleniumモジュールのPhantomJSはインタフェースレスブラウザ(ヘッダレスブラウザ):QtWebkitベースのヘッダレスブラウザです.
MySQLデータベースのいくつかのエンジンを知っていますか?InnoDB:InnoDBは堅牢なトランザクション型ストレージエンジンで、多くのインターネット会社で使用されており、ユーザーが非常に大きなデータストレージを操作するための強力なソリューションを提供しています.
以下の場合、InnoDBを使用するのが最適です.
1.密なテーブルを更新します.InnoDBストレージエンジンは、多重同時更新要求の処理に特に適している.
2.事務.InnoDBストレージエンジンは、トランザクションをサポートする標準MySQLストレージエンジンです.
3.災害復旧の自動化他のストレージエンジンとは異なり、InnoDBテーブルは災害から自動的にリカバリされます.
4.外部キー制約.MySQLが外部キーをサポートするストレージエンジンはInnoDBのみです.
5.自動増分列AUTO_をサポートINCREMENTプロパティ.
一般的に、トランザクションサポートが必要で、同時読み取り頻度が高い場合は、InnoDBが良い選択です.
MEMORY:MySQL Memoryストレージエンジンを使用する出発点は速度です.最も速い応答時間を得るために採用される論理記憶媒体はシステムメモリである.
メモリにテーブルデータを格納すると、確かにパフォーマンスが向上しますが、mysqldデーモンがクラッシュすると、すべてのMemoryデータが失われます.
速度を得ると同時にいくつかの欠陥ももたらした.
Memoryストレージエンジンは、一般的に次のような場合に使用されます.
1.ターゲットデータは小さく、非常に頻繁にアクセスされます.メモリにデータを格納するため、メモリの使用になります.パラメータmax_heap_table_sizeはMemoryテーブルのサイズを制御し、このパラメータを設定すると、Memoryテーブルの最大サイズを制限できます.
2.データが一時的で、すぐに使用できる必要がある場合は、メモリ・テーブルに保存できます.
3.Memoryテーブルに格納されたデータが突然失われた場合、アプリケーション・サービスに実質的な悪影響を及ぼすことはありません.
redisデータベースにはどのようなデータ構造がありますか?5種類のデータ構造
string
stringを使用する場合、redisはその意味を理解したり解析したりすることはほとんどなく、json、xml、純テキストを使用してもredisから見れば同じで、1つの文字列にすぎず、strlen、appendなどの文字列に共通する操作しかできず、その内容に対してさらに操作することはできません.基本操作コマンドはset、get、strlen、getrange、appendです.
SET key value
GET key
STRLEN key
GETRANGE key start end
APPEND key value

ほとんどの場合、stringに格納されている純粋な数字の場合、redisは、decr、decrby、incr、incrby、およびincrbyfloatを含む文字列を数字としてさらに操作することができる.
hash
hashを使用する場合、私から見ればvalue自体がkey-valueペアのセットですが、redisはここのkeyをfieldと呼びます(しかしhkeysコマンドはなぜhfieldsコマンドと呼ばないのですかハハ)、つまりvalueはfield-valueペアのセットです.基本的な操作コマンドは、hset、hget、hmset、hmget、hgetall、hkeys、hdelです.
HSET key field value
HGET key field
HMSET key field value [field value ...]
HMGET key field [field ...]
HGETALL key
HKEYS key
HDEL key field [field ...]

list
listを使用する場合、valueはstring配列であり、このstringグループを操作する場合、スタックのようにpopとpushを使用することができますが、このスタックの両端は操作できます.配列のようにindexパラメータを使用して操作することもできます.Listの操作コマンドは少し雑で、主に2種類に分けられます:Lの初めのとRの初めの、LはLEFTあるいはLISTを代表して、いくつかリストの左端から行う操作を行って、あるいはいくつか端と関係のない操作を行います;RはRIGHTを表し、リストの右端からいくつかの操作を行う.
set
setは、重複しない値のセットを格納するために使用され、数学的なセットのようにいくつかのセットの操作を行うこともできます.これは無秩序です.基本的な操作はsaddとsismemberです.
SADD key member [member ...]
SISMEMBER key member

集合操作はsinter、sunion、差sdiffを求めることです.
SINTER key [key ...]
SUNION key [key ...]
SDIFF key [key ...]

sorted set
sorted setはsetに似ていますが、sorted setには各要素にscoreがあり、このscoreはソートとランキングに使用できます.基本操作はzadd、zcount、zrankです.
ZADD key score member [score member ...]
ZCOUNT key min max
ZRANK key member

私たちのPython学習ボタンqun:774711191をお勧めします.先輩たちがどのように勉強しているかを見てみましょう.ベースのpythonスクリプトからweb開発、爬虫類、django、データマイニングなど【PDF、実戦ソース】まで、ゼロベースからプロジェクト実戦までの資料が整理されています.pythonの仲間一人一人にプレゼント!毎日、Pythonテクノロジーを定期的に説明し、学習方法や注意すべき細部を共有し、python学習者が集まってまとめています.
以上、編集者が紹介したpython爬虫面接の定番(よくある質問)ですが、皆さんの役に立つことを願っています.