Pythonの顔の質問3

成功したPythonのバックエンドの開発エンジニアにする方法
は非常に価値を感じ、大きな牛のリストから、この質問に「インタビューPythonがエンジニアをバックエンドどのように」という質問を参照してください。今、継続的に更新され、これらの質問に対する答えを見つけるために場所を覚えておいてください。

#################################################
A言語
1.最高のpythonの本を見てお勧めしますa've?まあがらくた蹴ったトピック

今、見て知っている「Pythonのコアプログラミング」(第2版)、「フラスコ」


Pythonのデコレータ、イテレータ、収量約2での話?

2.1デコレータは、このブログは、一般的に、言うことは非常に慎重である、デコレータ機能へのユニバーサルアプローチです。

http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html

2.2イテレータ、発電機

http://www.cnblogs.com/kaituorensheng/p/3826911.html

関数は、Pythonのジェネレータにおける収率(発電機)と呼ばれています

xrangeの使用量と同じ範囲が、違いは、リストオブジェクトが、発電機を発生しません。

 

2.3収量

https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/

関数はyield文を持って、この関数は、「ジェネレータ関数」です。各呼び出しは、ファンクション・ジェネレータです。

例えばDEF F、fは関数であるが、F(1)、F(2)は、2つの異なるジェネレータです。

Builderは、繰り返しオブジェクト、省メモリの目的を返します。

 

 

3. 1標準ライブラリのスレッドセーフなキュー?安全でないどれ?ロギングはスレッドセーフですか?

そのスレッドの安全性のスレッド同期問題解決。

 

キューは、(FIFO)を達成するために、標準ライブラリのスレッドセーフなキューです。

ロギングはスレッドセーフではなく、「プロセス・安全」、プロセス安全ですか?

 

4.pythonシーン何のため?計算集約型のタスクに直面したときにどのように行うには?

2.迅速なシーン1.科学技術計算のため3.ウェブサイト4. Pythonスクリプトを試作。すべての方向に実際には、多くのアプリケーションでは、いくつかの火災、それの比較的最前線を持っています。計算集約型のタスクは、C / C ++で行うためのモジュール。マルチプロセスは、マルチスレッドでは、わずかに一部を増やすことができます。


並行性の高いソリューション5.python?私はツイスト・> tornado-> gevent、golangをさまようことができ、より良いアーランを聞くことを願っています

 

 ################################################## ####################

II。オペレーティングシステム、直接Linuxは、すべての後に、バックエンドに従事考慮し、多くの場合Linuxを扱うことができます。

1. TCP / UDPの違い?TCPスティックパッケージは、それがどのように、どのように対処するのですか?粘着性の袋をUDP?

信頼性が高く、信頼性のないTCP / UDP、; 3ウェイハンドシェイク、4波;ウィンドウの輻輳制御をスライディング。

TCPスティックパッケージ:http://blog.chinaunix.net/uid-429659-id-5207848.html


2. TIME_WAIT状況は何ですか?CLOSE_WAITの過度の数が理由かもしれませんか?

参考文献:

http://blog.csdn.net/yusiguyuan/article/details/21445883

http://www.cnblogs.com/Jessy/p/3535612.html

CLOSE_WAIT

開始は、TCP接続が閉じられた当事者はパッシブサーバーと呼ばれるパーティダウンクライアント、シャットと呼ばれています。パッシブは、FINを受け取った後、サーバーを閉鎖し、

しかし、TCP ACK状態がCLOSE_WAITで発行していません。このような状況は、通常、問題があるため、サーバー側のコードが原因で発生します

多数のCLOSE_WAITがサーバー上に表示されている場合は、コードをチェックし検討すべきです。

TIME_WAIT

アクティブソケット閉じたソケットがTIME_WAIT状態のいずれかを入力します開始する所定の切断によって定義された3ウェイハンドシェイクTCPプロトコル。

TIME_WAIT状態は2 MSL(最大セグメントライフタイム)、Windowsで4分のデフォルト、つまり240秒続くだろう。

TIME_WAIT状態のソケットを再利用することができない。現象は、サーバプロセスへの短い接続のための特に大きいです、

サーバはクライアントによる接続を閉じた場合は、サーバーのソケットTIME_WAIT状態の多数の存在になり、

さらに設立された状態のソケットに比べて、真剣にサービスのうち、サーバの処理能力、利用可能であっても疲れソケットに影響を与えます。


3.epoll、違いを選択?エッジトリガ、トリガレベルの違いは?

 

、投票を選択し、ファイルディスクリプタは、IO多重化メカニズムです。

I / Oの機構を通してそれを多重化し、複数のディスクリプタを監視することができ、準備ができて一度記述子(準備ができて、一般的に読み取りまたは書き込み対応)、プログラムを通知することができ

それぞれの読み取りおよび書き込み操作。彼らは読んで、イベント後の書き込みは、このことを、自分自身の読み込みと書き込みのための責任準備ができている必要があるので、しかし、世論調査、epollを基本的に同期I / Oを選択

読み取りと書き込みのプロセスがブロックされ、および非同期I / Oを読み書きするために自分の責任には必要ではありませんが、非同期I / Oは、カーネルからユーザ空間へコピーデータの実装を担当します。

トリガレベル(レベルトリガ、また、トリガ条件として知られている)LTは:限りの条件を満たしているとして、それは(データが取得されていない限り、カーネルはあなたをお知らせしていきますように)イベントをトリガします。トリガ条件の一部を選択します。

エッジトリガ(エッジトリガ)ET:たびに状態変更イベントをトリガーします。

 

 ################################################## ####################

3つの記憶

ストレージは、RDBMS、NoSQLのキャッシングを含むことができ、私のMySQLでは、例をのRedis。

mysqlのmysqlのは、人気のRDBMSリレーショナルデータベースに関連しています

 

1. MySQLは文字セットと照合について話をしますか?

 


差2.var炭とチャーは何しているのですか?サイズ制限?varchar型は、UTF8文字セットの下での最大文字数を格納することができます

炭化長は不変であり、そして「CSDN」にデポジットし、次にcharが依然として長さによって占有されている場合、VARCHARは、変数、即ち、CHAR [10]の定義およびVARCHAR [10]であります必要とvarcharされていない)(使用トリミングするデータ、char型のフェッチ余分なスペースを削除しながら、10、それはVARCHARの長さに飛んだが、6つのスペースに続く文字「CSDN」外部に加えて4となります。

それにもかかわらず、その長さのはるかに高速varchar型またはcharよりもアクセス数は、固定され、コンビニエンスストアプログラムと見て、だけでなく、賃金へのチャーは、その固定長の、スペースのコストであるので、彼らは次のようになりますプレースホルダは、スペースを占有し、余分なスペースがある、それは時間効率とスペース効率のためのスペースは、varchar型確かに最初の場所です。

ストレージvarchar型は、英語の文字のそれぞれについて、2バイト、漢字もある;さらに、char型のストレージモードは、(ASCII)が文字の1つのバイトは2つのバイトを占有占有英語の文字です2つのバイトには、両方の非Unicode文字データのためのデータが記憶されています。

MySQLは最初に、50のバイトを指し、バージョン4.0以下、VARCHAR(50)を決定しなければならない記憶UTF8文字場合、(各文字に対して3バイト)16を記憶することができます

5.0(50)VARCHAR、上記50は、格納された数字、文字または文字UTF8(各文字のための3バイト)かどうか、文字を意味50を格納することができます。

 

3.primaryキーとユニークな違いは?

 

 


4.外部キーを持つかどうか、使用する外部キーとは何ですか?外部キーインデックスは、それを必要としなければなりませんか?


InnoDBの違いを5.myisam?二相ロックプロトコルInnoDBの状況は何ですか?


6.使用率、大体何の原則とは何ですか?設計指標は何の注意事項?

Redisの関連

1. Redisのと何のシーン、MySQLはなぜ合いませんか?

メモリ内のすべてのデータをRedisの、メモリデータベース。NoSQLの(だけでなく、永続することができ、永続的な使用RDBやAOF方法。)

MySQLデータまたはインデックスがハードディスクにあるかどうか、はるかに多くのメモリの総量よりもデータを処理することができるメモリにスワップを使用する場合。

MongoDBは、それは、インメモリ・データベース、メモリ内のデータです。永続性:すべてのデータは、実際にすべてのデータがmmapを経由してメモリの領域にマッピングされて動作するように、MongoDBのハードドライブに保存されています。その後、データは断片的なハードディスク操作を回避、この領域内のMongoDB進行を変更されます。

データと性能の量:
十分な物理メモリがある場合は、Redisの>のMongoDB> mysqlの
物理メモリが十分でない場合、RedisのとMongoDBの仮想メモリを使用します。
あなたはRedisの仮想メモリを開始したい場合は実際には、メモリを追加するか、データベースを変更するいずれかのことは明らかです。
しかし、MongoDBのない同じ、限り、保証サービス、リードデータ、物理メモリ内のそのような熱データ、以下MMAP交換よりホットとコールド。
MongoDBは性能を保証することができました。一部の人々は、MongoDBのTの上にデータを保存するために使用します。
mysqlの、mysqlのは、メモリとの関係の下でのデータの量を心配する必要はありません。しかし、熱データを有するメモリの量との関係を大幅に性能に影響を与えるであろう。
物理メモリと仮想メモリが十分でない場合には、それはあなたのmysql何も選択肢に加えて、推定されています。
実際には、ビューのデータ・ストレージ・原則の観点から、私は、ハード・ディスク・データベースに分類するMongoDBに好むが、用途はそれを促進する手段として、mmapさ。

 

 

 

2. Redisのは、事務の話しますか?アトミック+1との取引のシミュレーション?アトミックオペレーション他の解決策はありますか?


MULTI、EXEC、DISCARDとWATCHコマンドはRedisの基礎情勢関数です。
Redisのトランザクションは、別のステップでコマンドを実行することができますし、2つの重要な問題を以下のようにすることができます:

1.すべてのコマンドはトランザクションのシリアル化をRedisの、その後、順番に実行されます。Redisのは、トランザクションの実行中に挿入することは不可能Redisの
別のクライアントから送信された要求。Redisのを確実にすることができる。このようにこれらのコマンドを実行する別の操作として単離しました。
2. Redisの取引で、またはRedisのは、これらのすべてのコマンドを実行し、実行したり、何もします。このように、Redisのトランザクションは、原子性を確保します。

3.redisメモリのフルはどうなりますか?

あなたは、ファイルを設定して、Deleteキーまたはいくつかの直接のエラーを選択することができます。

 

################################################## ################

4つのセキュリティ

Webセキュリティ関連の
1.SQLインジェクションを防ぐためにどのように生成する方法ですか?

いわゆるSQLインジェクションは、SQLコマンドまたはクエリ文字列入力ドメイン名またはページ要求が提出したWebフォームに挿入され、

そして、最終的に悪質なSQLコマンドを実行するサーバーを欺くの目的を達成します。

どのように防ぐために:

1.決して信頼ユーザの入力。正規表現により、ユーザの入力を確認するために、又は長さを制限するために、単一引用符と

ダブル「 - 」変換インチ
2.あなたが直接パラメータ化されたSQLを使用するか、またはデータ照会アクセスのためのストアドプロシージャを使用することができ、動的アセンブリのSQLを使用しないでください。
3.は、個々のアプリケーションのデータベース上の制限された権限で接続し、データベース管理者権限を使用しないでください。
4.パスワードや機密情報出て暗号化やハッシュを直接保存された機密情報を入れないでください。
情報はいくつかのプロンプトとして与えられるべきである5.アプリケーション例外が、それが元の梱包エラーに自己定義されたエラーメッセージを使用するのが最善である
一般的な、検出するためのソフトウェアやWebプラットフォームをサポートする、一般的に使用されるソフトウェアSQLの検出方法の6.sql注入インジェクション検出ツールは、Webプラットフォームをjsky、そこにサイトのセキュリティ検出プラットフォームツールの億思考。MDCSOFT SCANのように。使用して効果的な防衛SQLインジェクション、XSS攻撃をMDCSOFTは-IPS。

 

2.xssどのように防ぐために?HTMLエスケープ後XSSを防ぐことができますか?


それは何3.csrf?どのようにDjangoは予防でありますか?

 

################################################## #######

ファイブ暗号化

1.ブロック暗号とは何ですか?どのような暗号化モード?CBCやECBモードの違いは何ですか?なぜ静脈ベクトル?


HTTPSのプロセスについて2.単純な話?

HTTPはTCPの上で動作し、データはクリアテキストで送信されます。HTTPSは、SSL / TLS上で動作し、SSL / TLSは、このようにHTTPSトランスポートTCP、暗号化プロトコルを、上で動作します

暗号化されたデータは、対称暗号化を使用して暗号化されています。しかし、非対称暗号化証明書サーバー側を使用して対称暗号鍵。

SSL / TLSは、非対称暗号化、対称暗号とハッシュアルゴリズムで使用されています。

http://www.cnblogs.com/binyue/p/4500578.html

HTTPS暗号化アルゴリズムと、次のようにハッシュは、一般的に使用さ:
非対称暗号化アルゴリズム:RSA、DSA / DSS
対称暗号化アルゴリズム:AES、RC4,3DESの
ハッシュアルゴリズム:MD5、SHA1、SHA256を

 

3.対称暗号化と非対称暗号化の違いは?

  

 対称暗号化手段と、互いに同一の鍵を用いて暗号鍵解読、または計算することができます。

対称暗号化アルゴリズムは、暗号化のための単純な、暗号化及び復号化効率、小さなシステムのオーバーヘッド、大量のデータという利点を有します。

欠点は、その使用は、暗号化され、安全な鍵交換とどのキーが失われた場合、リモート通信の場合を考慮することを復号に同じ鍵であります

いわゆる暗号化と復号化は無効になります。

 

 非対称暗号化と復号鍵が同じ鍵、外の世界に開かものを使用していない、唯一の所有者は、他のを知って、公開鍵と呼ばれ、

秘密鍵と呼ばれます。
情報のみのロックを解除することができ、公開鍵で暗号化された秘密鍵を使用して、逆に、情報の必須のロックを解除することができ、秘密鍵とパブリックで暗号化されました。

4.どのように共有秘密鍵を生成するには?middle攻撃で男を防ぐためにどのように?

おすすめ

転載: www.cnblogs.com/andy0816/p/12013917.html