[ムー]楽しいアルゴリズムの最初の本当のレッスン章の研究ノート、パンアルゴリズムインタビュー

-------------------------------------------------- -------------------------------------------------- ---------------------

テクノロジーは、アルゴリズムの一部のみであるアルゴリズムが優れたの優れた技術表すものではありません、
優れた技術のインタビューを、あなたは提供を取得することができない場合があり、

自身正しい、唯一の相対的な概念である
我々は、職場の中に入る場合には特に、この時点の正しい理解のことができるようにする必要があり
、我々は問題ではなく、テスト、解決しなければなら
ない、我々は我々がするかどうか言われて、与える答えを。
アルゴリズムのインタビュー、インタビュアーが解決議論する問題視されている
内容や環境問題のアプリケーションのために、インタビュアーが通信できる
通信方法、および問題を解決するためにモデルの独自の仮定を作り続けて
さらに一歩の問題を、通信、非常に重要なあなたが考える方法ことが示唆された
インタビューのアルゴリズムにはいくつかの学生がテストだったこと、十分に明確に認識しています。

私たちは、ソートするデータのセットが必要?
私は個人的にこれが本当の現実的な問題だと思います。
すべての言語は、これらの人工設計されている、データ・インタフェースをソートする必要があります。
どのように我々は実際にこのインタフェースの設計を行うのですか。
私たちはしばしば、ソートデータに、実際のビジネス上の問題を解決します。
この時点で、我々はそれをソートする方法をすべきですか?
ソートアルゴリズムは、実際には、多くのアルゴリズムのための前提条件であり、そして
これは非常に徹底的に研究され、操作のために受け入れられた基礎です。
さて、どのようにやってみたいですか?
高速ソートアルゴリズムO(nlogn)
アルゴリズムとデータ構造、実際のレッスンでは、詳細な紹介をしたことが、あなたが行くと見ることができます。
このような問題に直面し、それは明らかに正解ですが、答えは必ずしも満足できるものではありません。
あなたは実際には、多くの正しい選択があり、特定の状況が非常に頻繁に使用されるアルゴリズム無視します。
我々だけでなく、への正しい必要がありますが、より良い、
そう遭遇したいくつかの状況がある、ない、我々が遭遇した中で最高は、私たちが選択する必要があり
、私たちは最小プログラム、我々はインタビュアーとの通信に必要なコストを選択するために、
このステップは非常に重要であり、インタビュアーをお願いし、データのこのセットは、すべての機能がありません。
あなたが反復要素をたくさん持っている場合は1を、3ウェイの高速ロウは、より良い選択です。
ソートの背後にあるJavaのような言語の多くの標準的なレパートリー、3ウェイ速い行に速いの行では、3ウェイ速い行を使用することで
、それから短い距離のデータのほとんどの場合はすぐに2を?それはほとんどの秩序ありますか?銀行のデータでは、それはほとんど秩序かもしれません。
最初のいずれか早い方のビジネスのほんの一握り、長い時間が重要、後から来ているが、この時間挿入ソートより良い選択である起こります。
3は、返された値のこのセットは限らソートしていますか?例えば、生徒の成績の一種に。さよならの入り口0から750まで、より良い選択を配列決定数えます。
発注の4つのペアどんな追加要件?安定したソートの必要性は、必要性の安定した場合、高速な行が良いのマージ、良いではありません。
5つのデータ保存状況は似ているのですか?クイックドレンは、ランダム・アクセス・データに依存し、リスト行速い悪い場合は、良いマージです。
データ量は、メモリキャリアに設置小さい、十分なメモリがある場合図6は、データのサイズがメモリにロードすることができるかどうか、外側をソートする必要があります。
面接の希望は、あなたは、思考のすべての側面は、これらの問題に関する詳細な反射を持つことができ
、私たちはその答えに限定することができない、我々は、より完全な答えを与える必要があり
、すべての後に、時には私たちの答えは下の状況を変更します、適用されません。

右も問題、新しいアイデアのユニークな理解を有しており、言語レベル最適化アルゴリズム[レベル]、
コードの仕様、フォールトトレランスが。などなど.......
このプログラムは問題を解決するために、これらの要因が入って来含めるコードアルゴリズムを示していないだけ。

それは非常に難しい問題である場合は、あなたの競争相手は、も困難です。
だから、落胆、成功への私たちの鍵は、問題の完全な解決策も、ないかもしれません
、良好なパフォーマンスだけあなたの競合他社よりも少しだけよりますが。
鍵は、あなたが問題を解決するという考えを表明することにある
あなたの思考は、パスが、瞬間けれどもあなたは正しい解が得られないかもしれない方法です、
しかし、この解決策に近づくしようと、あなたの思考の方向を与えることも可能です。

優秀なインタビューアルゴリズムは平均優れた技術インタビューはしない
だけの技術的なインタビューインタビューアルゴリズムの一部であり、
あなたの履歴書に依存し、ジョブに適用する、インタビュアーは、あなたの技術的な部分について検討する
、解決するためにあなたの能力をプロジェクトマネージャーやプロジェクトが直面した現実的な問題をどのように。
あなたは、単に完了するまで、あなたはまだ考えるために継続する必要があり、過去の経験を見ることができる
非常に重要である主なポイントを抽出する必要があり、あなたのプロジェクトを経る必要があります。

あなたは何が発生した最も印象的なバグ?
人それぞれ違う答えて、非常に単純なように見える、あなたが競争するために一人一人のレベルを見ることができます。
この質問のために、あなたがあなた自身の経験に基づいている必要があり、仕上げ見直しを行います。
多くの分野での問題は、技術面で発生する可能性のある
デザインモード、ネットワーク関連、セキュリティ関連、メモリ関連、同時の関連に向け
、システム設計、スケーラビリティ、グラフィックス関連
から学ぶ、実際には、システムの設計部門、従来のアイデアがあります。
興味のある学生は、さらなる研究のために見るためにオンラインで確認することができます。

我々はまた、時々 、優れた技術インタビューは、オファーを取得することができない可能性があることを認めなければならない
技術的な面接のために、優れた技術は、大きな利点ですが。
技術的なインタビューはインタビューの一部でしかありません、面接は自分のスキルレベルを調べ、されていない
か、あなたの過去の行動と形成について考えます。

技術的なインタビューは、いくつかの質問をすることが、正式にのみ、あなたの能力を調べるれます。
あなたの方法の単純な評価。
しかし、あなた自身の最高の評価は、あなたの過去のプロジェクトの方法です。

私は単純なものにプロジェクトのいくつかを言いたいと思います。
仕事は、プロジェクトが問題ではありません、人のために
大学院生のために、プロジェクトの経験が自分の研究室では問題ではありませんが、どこへ行くのプロジェクトに参加する
大学生のために、プロジェクトマネージャーは、必ずしもプロジェクトに関与していない行かなければなりません、実際には、それは卒業プロジェクトで、実際には、カリキュラムの設計は、また、プロジェクト経験として機能することができます。学部学生は、自分自身にクラスベース+少し良くパッケージの完全なセットを与える必要がありますすることができます。かなりことがあります。
非コバンのために、どのようにプロジェクトにそれを見つけるには?
1つのインターンシップの途中、
一部の学生は、あなたが実践的なコースに参加することができ、それがインターンシップを見つけることは非常に困難であると感じ、多くのコースで実践的な学習コースを提供するために、多くの教育機関は、長いダウン学生として、それはプロジェクト、ムークラスネットワークすることができようがあります実際、多くのプロジェクトがあります。
コーセラも多く、そのようなコースは、学生がこれらのリソースを見つけることができ、現在、非常に多くのオンライン教育されています
知識2学生の基本を学び、その後、自分のプロジェクト、スケジュール、メモ、プレーヤーを作成することができます。
IOS、アンドロイドは、いくつかの小さなプロジェクトを開発しました。
独自のシステム、簡単な登りサイトのデータ爬虫類、いくつかの小さな問題を解決するため
のデータ分析のためのいくつかのウェブサイト上で、データ分析を、自身のブログに書いて
、いくつかの単語頻度統計行うには
優れた技術書、プロジェクトがないのプロジェクトの多くはまた、非常に優れていますコード仕上げが.......これは実際には非常に良いプロジェクトである、あなた自身の履歴書に書くことができます。
など、その技術ブログ、githubのを、共有し、それが可能です。
一部の企業は、あなただけでなく、出席した学校、教師、研究室、インターンシップは、あなたのプロジェクトを与える、と思うだろう
あなたはあなたに余分なポイントの多くを与える、独自のプロジェクトを持っています。
3あなたが遭遇した最大の課題は何ですか?
あなたは間違っていましたか?
あなたは、障害が発生しましたか?
最も楽しいは失敗しますか?
出会いの競合解決?
最も特徴的なことは何ですか?
それほど一般的ではありません、あなたが遭遇した最大の課題は、私が困難なアルゴリズムの問題に遭遇したことが一般的である言わないで
、特定のプロジェクトは、特定のアルゴリズムの問題を満たし、あなたは具体的な例を挙げることができ、以上であってもよいです手紙には、より多くのあなたの経験を豊かにします。

あなたが面接していると同時に、あなたは面接を聞いて適切な質問準備が整いました。
我々はすべて探検し、インタビュアーができる多くのものがあります。
ここで私は開始し
、チーム全体としては似ている、おそらく実行モード?
プロジェクトのフォローアップ計画はどのように?長期計画はどのように?
この製品は、問題がどのように解決するのですか?いくつかの詳細が解決される方法を、私は、問題が発生する可能性のあるものをと思いますか?
なぜ特定の技術?規格?
私は、この技術をさらにする機会を持っているだろうかあなたのグループでは、技術的に興味がありますか?
これらはあなたがインタビュアーの質問をすることができ、私の意見で非常に優れています。

実際には、アルゴリズムのインタビューは楽しいアルゴリズムとのインタビューの底から、まだ重要な側面です。

-------------------------------------------------- -------------------------------------------------- -----------------------

インタビュー、面接の準備アルゴリズムのために準備すると、2つの概念である
インタビューアルゴリズム、面接の知識の一部。

アルゴリズムのインタビューはかなりKenwanを必要としない「アルゴリズム入門」、それほど難しいことではありません
それは古典的だったが、面接の目的のために、実際には、いくつかの欠点がある「アルゴリズム入門」、
あまりにも実際には、インタビュー、導出と証明論に焦点を当てました役員自身が完全に導出し、証明論を把握ません。
ランダム化このステップは、我々は数学を導き出す数学的期待値を計算することは非常に困難であるが、迅速な派生列を証明し、
我々は、それから、あなたはこの本を読むために興味を持っている場合は、当然のことながら、完全にこの部分を把握する必要はありません。
最初のパスの読みは、最初のパスを読み込むための選択肢を持っていることに結論、覚えておく必要がある
か、他初めて、我々は巨大な不満を持っている可能性があり、良いよりも害を。
本書は、実際に我々が学ばなければならないことがたくさんあり、実際には、これらは非常に役に立たない理論的な知識は、
アルゴリズムは、感情と、その後、理論的な証明を読むためにバックアップした後、学生が練習することができ、収穫はさらに大きくなります。
私たちはゆっくりと堪能、我々はそれを何回も理解しようとしている、一歩、たくさんの本、多くの知識を追求することはできません
完璧主義を学ばなければならないことを覚えて、彼の心の中に内在化されるまで。
高確率インタビューが低いデータ構造とアルゴリズム述べた
FFT、フィボナッチヒープは赤黒木、Bツリー計算幾何学、数論、を含む、
これらの問題、面接の質問の最初のラウンドで、過剰準備財団にする必要はありませんがコンセプトの下準備ができ
そう特別に準備を必要としない、めったにこれらの問題をテストしていません。
さてあなたは、インフォマティクスコンテストのレベルに到達する必要はありません。
さてあなたは、情報の競争のこのレベルに到達する必要はありません。
あなたはACMコンテストに参加していない場合インフォマティクスコンテストを持つすべてのアルゴリズムインタビューはまだ差がある後、落胆されていません。
ない基本的なアルゴリズムとデータ構造の怠慢、そして唯一の「面白い」のトピックに関係しています。
まだベースを囲む実際のアルゴリズムのインタビューの質問

ソートアルゴリズムの様々な
ヒープ、バイナリツリー、図:データ構造とアルゴリズム2根底実施
三つの基本的なデータ構造を使用して、リンクされたリスト、スタック、キュー、ハッシュテーブル、グラフ、トライ、互いに素なセット
4基本的なアルゴリズム、深さ優先の、幅優先、バイナリ検索、再帰的な、
5つの基本的なアルゴリズムのアイデア:再帰、分割統治、検索、貪欲、動的プログラミングをバックトラック、
これらは実際にはあまりにもアドバンスドコンテンツをベースとされません。1,2-特に2個、特に塩基性です。

-------------------------------------------------- -------------------------------------------------- ------------------------

1スタック細根がスタック場合建設が完了すると、ヒープソート用いて初期シーケンス番号18625473の集合である、二分木に対応するスタック
にあるものトラバーサル配列。
2 20数つのバイナリ検索オブジェクト、1 A比較参考始まる配列添字[2]の数は?

-------------------------------------------------- -------------------------------------------------- -----------------------

これらの質問は、私たちが感じることができる、非常に基本的な質問です。
また、インタビューの質問の有名な企業、アルゴリズムとデータ構造の基礎を過小評価しないでください。

-------------------------------------------------- -------------------------------------------------- -----------------------

適切なOJを選択し、実践と多くの時間が必要です
オンライン判事、オンライン裁判官
のアルゴリズムインタビュープロセスを学習し、ちょうど本に滞在していないが、実際のペンコードで実装する必要があります。
codeforces、トップコーダー、codeechef、これらは競争志向、適切でないアルゴリズムのインタビューです
、あなたがメンバーであれば、あなたが現れる頻度を、この質問は、どの会社の面接の質問で見るために支払うことができ、ITはインタビューのためのオンラインポータル。
私たちのビデオ「楽しいアルゴリズムコンテスト」も抜粋問題の多くは、
http://www.leetcode.comは、あなたが自分自身のアカウントにサインアップするために行くことを示唆している
HackerRank別のウェブサイトは、科学界は、サイトの担当者を募集してい
ます。http:// WWW .hackerrank.comは、どこ非常に詳細な分類、登録したアカウントにタイトルを行くことができ、サブ問題は
いくつかの問題をHackerRank、競争が問題のようなものになる傾向がある、問題は、補助として使用する必要があり、実際の面接の質問の多くではありません。
HackerRankはスキルツリーのスキルポイントのすべてのセグメントのように、質問を行います。

-------------------------------------------------- -------------------------------------------------- ------------------------

質問の間で行うための研究と実践では、我々はバランスをマスターする必要があり、
このバランスは誰もが同じでない場合伝えることが困難であり、
私たちはタイトルを行い、効果が明らかにされていません、
私たちは、アルゴリズムの背後に質問を磨きますアイデアが悪い、マスターしている
いくつかのアイデアを追加することを学ぶ、実際は非常に重要です。
時には私たちは、実際には、収穫はありませんが、多くの問題を通じてOJにあるように見える
肉体労働に陥るしないように、
何の会社は、あなたが質問を磨くどのくらいで、あなたのスキルのレベルを決定するために見て見ないだろう
量より質に焦点を当てることを。

-------------------------------------------------- -------------------------------------------------- -----------------------

最後に、私たちにインタビューの質問は、アルゴリズムの全体的なアイデアについて何か言う
話に皆のための全体的なマクロの視点で始まるを。
対象の状態に注意してください。
例えば、規則的な配列、この秩序キーワードに注意を払う、バイナリサーチ与えられた
が条件でいくつかの問題があり、基本的には暗黙の、O(nlogn)LOGNおそらく分割統治を分離できない、達成するために木を探索
かかわらず、余分なスペースの最適化は、この時間は引き換えに空間と時間を開放することで
データ量が約10,000であり、この時点で、我々はそれにN ^ 2を設計しました、

-------------------------------------------------- -------------------------------------------------- -----------------------

何のアイデアは、パニックしないしない場合、
1は、自分自身にいくつかのテストケースといくつかの簡単なテストケース、テストも、遊びを与え、自然に思考の特定の方法があるでしょう
2は、暴力的な解決策を無視しないでください、これは通常の思考の開始点であり、理論的にはすべての問題、解決策は暴力で、そこにある
あなたが分からない場合は、いくつかの暴力的な解決策を言うかもしれないが、何の解決策はありません言うことはありません。

LeetCode3は
、文字列で最長のサブ文字列の重複手紙を見つけていない
結果abcabcbbあるABC
BBBBBBあなたはそれを解決するため、この問題は、あなたが考えることができbの結果は
、[すべてのサブ文字列s文字列sのため、使用の暴力法に望むことを考えませんI .... j]は
O(N ^ 2)すべてのサブストリング得るトラバーサルアルゴリズムI、J用い
O(長さ(S [I .... j]は)) 重複文字に対して決定される
(Oのこの計算の複雑さをN ^ 3)
このような複雑ではなく、良い十分なの、あなたは文字列を扱う場合には、最長の言葉、これが唯一の100の実行可能なアルゴリズムである
次善の策だけ。たぶんすることができます。

最も難しい部分は、提案された最適化アルゴリズムは、唯一の暴力的な解決策は非常に簡単です。
学生の基本的な品質が優れている場合、
実際には、我々はいくつかの最適化された方法を使用することができます。
1つのトラバーサルアルゴリズムの一般的な考え方
当社は、分類アルゴリズム、インデックスポインタ、再帰、貪欲、動的プログラミング、作るために与えることを
共通のデータ構造補助トラバース2
スタック、キュー、スタック、木、グラフ
定期的な交流の3空間と時間を、アイデアも大幅にアルゴリズムの時間複雑さの向上、新しい宇宙レコードデータを熟考することができ
、それが最も一般的に表しているハッシュを。
4プリコーディング情報(ソーティング)、更に、非常に単純な並べ替えの問題の多くを解決している
ボトルネックO(nlogn)+ O(Nで5件の回答 ^ 2)、O(N ^ 3)

-------------------------------------------------- -------------------------------------------------- ------------------------

問題の実際の準備
書き込みには、時々 、エディタ上で書きます、ホワイトボードに書き込むために
書き込みの時間を、裁判官は、極端な条件に注意を払う必要があります。
配列が空の場合、文字列は空である、配列は0であり、ポインタがNULLであります

変数名は、それがセマンティックを持っていることが最善であります

モジュール性、再利用性。私たちは、インタビュアーは良い印象を持っているかもしれません置くために注意を払う必要があります。

あなたは、基本的な最大スタック、最も小さいスタック、高速の行を達成することができ、多くの場合、面接の質問では、
私はあなたが準備に時間がかかる、あなたが学位ホワイトボードをプログラミング行うことができます願っています。

-------------------------------------------------- -------------------------------------------------- -----------------------

将来は、実際のアルゴリズムを導入し、かつます
現在はC ++の開発を使用しています。私はあなたがアルゴリズムについてのあなたの身近な言語を使用することができます願っています。

-------------------------------------------------- -------------------------------------------------- -----------------------

 

おすすめ

転載: www.cnblogs.com/Koaler/p/11986652.html