Python、PHP、Golang、DevOpsのテスト:HighloadでのAvitoQuizクイズの解析

Highload ++ 2017カンファレンスが開催され、いつものようにクールでした。 レポートを確認し、同僚の経験を最大限に活用し、レポートエリア外で行われたさまざまな活動を喜んで思い出します。







たとえば、当社のブースでは、プログラミング言語(Python、Go、PHP)のいずれかの知識のテストまたはDevOpsのテストに合格して、カラフルなテーマ別Tシャツを手に入れることができます。 今日は、もう一度会議の雰囲気に浸り、テストからの最も高い負荷の問題に対する回答を解析することをお勧めします。 または、ネタバレを見ずにそれらを解決できますか?







お楽しみください!













トピック別の上位3つの質問



Python



1.プログラムの実行中に目的のメソッドが検索される基本クラスの順序を取得する方法は?







cls.get_bases()
      
      





 cls.__mro__
      
      





 cls.__bro__
      
      





  
      
      





正解
 cls.__mro__
      
      







2. my_module.__all__



シーケンスで指定されていない場合、my_moduleモジュールからobjオブジェクトをインポートする方法







  
      
      





 from my_module import *
      
      





 import my_module; obj = my_module.obj
      
      





 from my_module import obj
      
      





正解
 from my_module import obj
      
      







3. Python 2は、z [x == y]を返しますか?







 x = x[0] = [0] y = y[0] = [1] z = {(2-1, ): 'equal', (1-1, ): 'not equal'}
      
      





 equal
      
      





 not equal
      
      





 RuntimeError
      
      





 KeyError
      
      





正解
 RuntimeError
      
      







ゴラン



1. GOMAXPROCS = 5で実行されているプログラムの正しいステートメントを選択します。







  1. プログラムは5つ以上のOSスレッドを作成できません。
  2. ストリームごとのゴルチンの量は5を超えてはなりません。
  3. プログラムは、5つ以上のOSスレッドで同時に実行できません。
  4. プログラムは、排他的実行のために5つのOSスレッドを予約します。


正解
プログラムは、5つ以上のOSスレッドで同時に実行できません。


2. Goでメモリの場所に直接アクセスする方法は?







  1. Goのポインターは、使用時に常に逆参照されます。直接メモリアクセスはできません。
  2. 安全でないパッケージを利用してください。
  3. 組み込みのreadMemory()関数を使用します。
  4. アクセスは、特別なシステムgorutinでのみ可能です。


正解
安全でないパッケージを利用してください。


3.プログラムのボトルネックを見つけるのにどのチームが役立ちますか?







 go tool pprof
      
      





 go vet
      
      





 go tool objdump
      
      





 go profile
      
      





正解
 go tool pprof
      
      









Php



1.ガベージコレクションにPHPで使用されるアルゴリズムは何ですか?







  1. ベイカーアルゴリズム。
  2. 素朴なマークアンドスイープ。
  3. バランスの取れた二分木。
  4. 参照カウント、3色マーキング。


正解
参照カウント、3色マーキング。


2. 7番目のバージョンでPHPから消えたものは何ですか?







  1. 配列への内部ポインター。
  2. グローバル内の変数での変数のサポート。
  3. ParseErrorクラスの例外。
  4. リスト()関数。


正解
グローバル内の変数での変数のサポート。


3.コード内の最初のエコー呼び出しの後にHTTPヘッダーを記述する必要がある場合、誰が保存しますか?







  1. 出力バッファリング。
  2. ACL
  3. SPL
  4. オペコードキャッシュ。


正解
出力バッファリング。


Devops



1.権限ディレクトリrwxrwS-t、aliceの所有者、ユーザーグループ。 ACLは使用されません。 正しいステートメントを選択してください。







  1. rootユーザーがこのディレクトリにファイルを作成する場合、このファイルにはrootとして所有者とグループが含まれます。
  2. usersグループのメンバーではないユーザーbobは、このディレクトリ内のファイルの内容を表示できませんが、ディレクトリ自体の内容は表示できます。
  3. aliceユーザーは、このディレクトリからルートユーザーに属するファイルを削除できます。
  4. ユーザーグループのメンバーであるユーザーチャーリーは、このディレクトリに新しいファイルを作成できますが、ユーザーアリスによって作成されたファイルを削除することはできません。


適切なオプション
aliceユーザーは、このディレクトリからルートユーザーに属するファイルを削除できます。


2.イーサネットプロトコルで物理アドレスが使用されるのはなぜですか?







  1. 他のネットワーク上のデバイスとデータを交換するため。
  2. フレーム(2ネットワーク層)とパケット(3ネットワーク層)を区別するため。
  3. 衝突ドメインでのデータ転送の順序を決定します。
  4. 同じネットワーク上のデバイスがデータを交換するため。


正解
同じネットワーク上のデバイスがデータを交換するため。


3. nginxがDNSを使用してIPのバックエンドサーバーの名前を再解決するには、何をする必要がありますか?







  1. resolverディレクティブでDNSサーバーを指定し、バックエンドサーバーの名前を変数に入れます。
  2. リゾルバーディレクティブでDNSサーバーを指定し、バックエンドサーバーの名前をアップストリームに配置します。
  3. アップストリームでバックエンドサーバーの名前を作成し、アップストリームにresolve_dynamicディレクティブを追加します。
  4. resolverディレクティブでDNSサーバーを指定すると、nginxはバックエンドサーバーの名前を自動的に再解決します。


適切なオプション
resolverディレクティブでDNSサーバーを指定し、バックエンドサーバーの名前を変数に入れます。


トップレベルユーザー



結果は次のとおりです。 テストは273人をパスし始めました。 終了しなかった人もいます(終了が許可されていないと言うことはできません-興味深い報告、自己疑念、または弱いコミュニケーション)。 4つの方向すべてで獲得できるポイントの最大数は60です。













さて、ここにトップ5の本当のヒーローがいます。 みんな、あなたは知っている-あなたはすべての中で最もクールです。







  1. Svyatoslav Dumchenko-39ポイント
  2. ヴャチェスラフ・ズロデエフ-37ポイント
  3. ウラジミール・プロタソフ-24ポイント
  4. スヴェトラーナシャガリーナ-24ポイント
  5. イリヤ・レベデフ-22ポイント


すべての方向でトップ50を獲得したTシャツは次のとおりです。













ネタバレを見ずに問題を解決できましたか? コメントを書いてください。

そして、もちろん、次回まで!








All Articles