Table of Contents
クリアゴールとタイムリミットを設定する
タイム ド コーディング セッションを開始する前に、特定の、測定可能な目標を定義します。 漠然とした目的の代わりに、「実践アルゴリズム」を破壊します。それぞれ25分以内に3つの中分間隔の配列の問題を解決するか、40分以内に1つの動的プログラミング問題を完了します。 明確な目標は、あなたの練習を集中し、問題セットを通して必然的にさまざまにさまざまにさまざまに防ぎます。
平等に重要なのは、厳格な時間制限を設定しています。 多くの志望のエンジニアは、問題を解決できないためではなく、非必須の詳細は時間を無駄にするため、時間制限の設定で失敗します。 各問題のカウントダウンタイマーを使用して、ハードの期限としてそれを処理します。 時間が経つにつれて、この規律は、脳を精神的リソースを効率的に割り当てるのに失敗します。 例えば、単一のアプローチで10分以上自分自身が立ち往生しているのを見つけた場合は、自分自身をピボットまたはブルトフォースに強制して、後で最適化します。
正しい実践環境を選択
物理的なデジタル設定は、パフォーマンスに直接影響します。 できるだけ近いように、実際のテスト条件を模倣します。 クリーンなワークスペースを使用して、最小限のクラスター。 電話通知をオフにし、関連のないブラウザタブを閉じ、Slackまたはメールを無効にします。 あなたが自宅で練習する場合、ノイズキャンセリングヘッドフォンまたは背景の白いノイズを使用して検討してください。
組み込みタイマーとライブフィードバックを提供するコーディングプラットフォームを選択します。 [LeetCode]と]HackerRankは、リアルタイムのコンテストとモックのインタビューを提供し、実際の評価環境を密接にシミュレートします。 競争プログラミングのために、 ]コードフォースは、定期的なラウンドを提供します。 キーは、実際のテストの圧力を再現することです。 実際のテストは、ノーマチックにチェックしません。
現実的な問題の実践
現行のスキルレベルに合った問題から始めます。テクニカルインタビューの準備(例:FAANG)なら、最もよく寄せられたトピックに焦点を合わせます。配列、文字列、ハッシュマップ、ツリー、グラフ、ダイナミックプログラミング、および再帰。非常に難しい問題に飛び込むことを避けてください。それは自信と無駄な時間を粉砕できます。代わりに、各パターンをマスターするにつれて、徐々に難しさを高めます。
問題を選択する際に、重要な思考とアルゴリズムの選択を必要とするものを優先します。 バイトの問題を解決できる些細な問題を避けてください。 適切なタイム プラクティスの問題は、時間の複雑さ、スペースの複雑さ、および可読性の間の取引オフを量る力を必要とします。 例えば、繰り返す文字なしで最も長いサブストリングを見つけるように求める問題は、スライドウィンドウO(n)アプローチで解決できますが、Native O(n2)ソリューションは制約時間に失敗します。
過去の試験とモックテストを使用する
実際の試験のシミュレーションを完全に理解できるものはありません。多くのプラットフォームは、過去の競争の問題やモックインタビュースイートを提供しています。ターゲットテストの正確な期間をタイマーに設定し、休憩なしで問題の完全なセットを完了します。セッションの後、すべてのソリューションを見直し、正しいと誤った。
レビュー中、自分自身に尋ねてください: 時間を無駄にしましたか? 問題ステートメントを上書きしましたか? 私はエッジケースを逃しましたか? 言語の不当性のために、私はあまりにもゆっくりとコードをしましたか? あなたの戦略を調整するために、これらの洞察を使用してください。 たとえば、あなたが常にプロンプトを再読んだ最初の5分を費やすと気付いた場合は、自分自身を訓練して1分以内にキー制約を抽出します。
マスタータイムマネジメント戦略
効果的な時間管理はタイマーの設定だけではありません。 単一の問題の中であなたの時間を賢く割り当てることを学びます。 コーディングインタビューで使用される一般的なルールは5〜10分のルールです。 問題の理解と高レベルの計画で最初の5分の時間を費やします。 明確な計画がある場合は、15〜20分のコードは、テストとデバッグのために最終5〜10分を保存します。 デッドエンドに遭遇した場合は、あなたのアプローチを掻き取り、新鮮な開始を恐れないでください。 多くの場合、私たちはより迅速に解決します。
困難による問題の優先順位付け
複数の確率でテスト(ハッカーランや競争のプログラミングラウンドのような)、すぐにすべての問題をスキャンします。最も簡単なものを最初に解決して、ポイントを保護し、勢いをビルドします。その後、問題が困難に陥ります。この戦略は、テーブルに簡単なポイントを残しながら、苦労している問題に40分を費やすことを防ぐことができます。多くのトップの競合他社はこの「easy-medium-hard」の注文に従います。
「ツーパス」技術を使う
複雑な問題については、2 パスのアプローチを検討してください。まず、遅くても正しく機能する brute フォース ソリューションを実装します。その後、時間許せば、最適化します。作業 (しかし遅い) ソリューションを持つことは、未完成の最適なものよりもはるかに優れています。インタビューでは、インタビュー担当者は、正しい brute 力を受け入れ、そして、貴重なコーディング時間を節約する、最適化を口頭で議論します。
精神的準備と圧力の処理
時折ある環境は、認知能力を低下させることができるストレスを誘発します。これを反対に、精神的な準備をあなたのルーチンに組み込んでいます。各セッションの前に、深い呼吸の演習や簡単なマインドフルネス瞑想を練習します。タイムドテスト中に、パニックが上昇していると感じた場合、10秒間は、深い呼吸をとり、問題に再焦点を合わせます。
別の技術は、友人がコードを見たり、自分自身を記録するためにウェブカムを使用しているなどの外部圧力に練習することによって、正確な圧力をシミュレートすることです。 あなたが見ている感じに自分自身をexposes、実際のインタビューが感じることを脅かすほど。
プレセッションの儀式を開発する
毎回セッションの前に一貫した儀式を作成します。いくつかの簡単なヒントをレビューし、活気に満ちた歌を聴くか、または1つの些細なウォームアップ問題を解決します。時間をかけて、この儀式は、あなたの脳が「フォーカスモード」に入るように信号を鳴らす。これは、プロのアスリートやミュージシャンの間で一般的な慣行であり、それはよくコーディングに翻訳します。
深く見直し、反映
ポストセッションレビューは、実際の成長が起こる場所です。各問題については、以下の点を挙げます。
- どこで立ち往生したのですか?
- まずは、どのようなアプローチを試みたのか? 最適だったのか?
- 構文エラーを気にしないと?
- エッジケース(空入、大口数など)を扱いますか?
- デバッグと新しいコードを書くのにどれくらいの時間費やしたのですか?
スプレッドシートやジャーナルを使用して、これらのメトリックを時間をかけて追跡します。 10〜20セッションの後、パターンが現れます。 例えば、変数の悪いネーミングで一貫して5分を失うか、null入力を処理するのを忘れることがわかります。 次の練習ブロックで特に弱点をアドレスしてください。
ソリューションとディスカッションから学ぶ
問題解決後、公式の編集者とトップクラスのコミュニティソリューションでソリューションを比較します。 コーディングスタイル、アルゴリズムの選択肢、およびエッジケースの処理に注意を払います。 あなたが知らない技術を見たら、次のセッションの前にそれを分離で勉強してください。 このターゲティングされた学習はギャップを迅速に満たします。
一貫性と重大な増加の困難を滞在
一貫性は強度を上回ります。週5日間の毎日30分のタイムタイムプラクティスセッションは、週末に単一の4時間マラソンよりも優れた結果を生み出します。毎日、セッションをスケジュールして習慣を構築します。カレンダーまたは習慣追跡アプリを使用して、自分の責任を保ちましょう。
快適になれば、徐々にチャレンジを増加させます。問題ごとの許された時間を減らします。 簡単なから中程度の難易度に移動します。 慣れていない新しいトピックを導入してください。 「外部ライブラリなし」や「使用しない言語でコード」などの制約を追加します。 この進行中の過負荷は、あなたの脳を適応させ、高原を防ぐことができます。
レバレッジコードテンプレートとスニペット
タイム環境では、毎秒数。 再使用可能なコードパターンの精神ライブラリを構築:バイナリ検索テンプレート、ユニオン検索実装、ウィンドウボイラープレートの滑走、ツリーのトロール、およびグラフBFS / DFS。 問題を開始すると、すぐにそれを再導き出すことなくスケルトンを書くことができます。 これは、問題のユニークな側面を解決するための認知負荷を解放します。
ほとんどの近代的なIDEとオンラインエディタでは、プライベートスニペットファイルを維持することができます。 多くのタイムテストでは、外部リソースを禁止し、テンプレートを心から知ることができます。 ウォームアップセッション中にこれらのパターンを迅速に入力して、筋肉の記憶になるように練習します。
性能メトリック分析
痛感に頼らないでください。練習セッションからデータを使用して弱点を特定します。各問題のメトリックを追跡します。
- 初めてのコード文字(計画スピード)
- 初回の正しい投稿(コーディング速度)
- 失敗した試みの数(デバッグ効率)
- 失敗ごとのデバッグを費やした時間
[InterviewBitのようなプラットフォームは、多くの場合、時間ごとに確率でステータスを生成します。 これらのインサイトを使用して優先順位を付けます。 例えば、デバッグ時間が高ければ、クリーナーコードを記述し、プリントステートメントやコンソールログをスパースリーに使用してください。 計画時間が高ければ、問題をすばやく読み、パターンを識別する作業がすぐに行われます。
タイムドコーディングのマスターの最終単語
時間の圧力でコーディングをマスターすることは、非生の才能ではありません。それは、非審美的な練習によって構築されたスキルです。明確な目標を設定し、実際の環境をシミュレートし、複数のレベルにあなたの時間を管理し、各セッションで厳格に反映します。時間をかけて、あなたの速度と精度が向上し、時計は敵ではなく味方になります。
追加のリソースについては、 ] インタビュークラッシュコース をフリーコードキャンプと]] で、フロントエンドの特定の時間の問題のためのBigFrontEndプラットフォームを探索してください。 制限を押し続けると、任意の時間コーディングのシナリオで繁栄します。