レベル1:書き込みカーネル
尋ねるインタビュアー一部の企業では、このアルゴリズムの中核機能を実現するために面接のアルゴリズム中に書き込み、他のヘッダファイル、書き込みに必要とされていませんmain()関数、ということです。コードのインタビュー最低難易度のこの形限り、ライン上の書き込み機能が、彼らはまた、単に一般的な考え方を見るために面接を見て。
私は、ときにそのような質問を筆記試験に会った、という疑問のバイナリツリーを覚えているので、あなたは最大幅を求めていること、そしてその答えは、ゾーンでテキストボックス(試運転ではありません)
LeetCodeに関する質問は、唯一の関数インタフェース(API)を書くためにあなたを求めています
レベル2:書き込み完全なプログラム
私たちはインタビュー時にLeetCodeだけあなたは、プラットフォームの機能、例ので、80%の書き込みに集中させて、これを経験していない多くの時間、:トピックインタビュアー、その後、それらが提供するプラットフォーム上であなたを聞かせて(同様のIDE、しかし、一般的にコードヒントを持っていない)含まれているこの問題を解決するために、完全なプログラムを書き#include <iostream> int main ...
、そしてあなた自身をテストする必要があり、その結果がインタビュアーを見に出てきました
それは大丈夫ですので、我々は通常、OJの形で行いますが、バイナリツリーに遭遇した問題は、あなたがあなた自身のバイナリツリー、バイナリツリーを構築するために必要なものである。このフォームは、コードが少し長くなります。あなたは通常、書き込みそうLeetCode上の顔の質問に慣れている場合は、我々は完全なトレーニングプログラムを作成する方法を見なければなりません
たとえば:中LeetCode 1367.バイナリツリーのリストこのトピックでは、私はIDEで完全なプログラムを書いて
、一般的に使用するテンプレート
// 情况一
// create an array
// 5
// 1 2 3 2 2
vector<int> arr;
int n, d;
cin >> n;
while (n-- && cin >> d) {
arr.push_back(d);
}
// 情况二
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x)
: val(x)
, left(NULL)
, right(NULL) {
}
};
// create tree by preorder, -1 means NULL
TreeNode *createTree() {
int d;
cin >> d;
if (d == -1) return NULL;
TreeNode *root = new TreeNode(d);
root->left = createTree();
root->right = createTree();
return root;
}
// 情况三
struct ListNode {
int val;
ListNode *next;
ListNode(int x)
: val(x)
, next(NULL) {
}
};
// create linked list, -1 means NULL
ListNode *createList() {
int d;
cin >> d;
if (d == -1) return NULL;
ListNode *head = new ListNode(d);
head->next = createList();
return head;
}
レベル3:ホワイトボードの手書きコード
この形式は、(Googleのように、バイト、アリババなどを暴行する)ホワイトボードに手書きのコードが必要になります一般的なメーカーで、最も困難です
ここではホワイトボードには、メモ帳、Word文書であるかもしれない、またはそれはあなたがアルゴリズムの枠組みにペンを使用するので、あなたの白紙状態、A4の紙を与えるために現場にあってもよく、インタビュアーのために書かれたコードを見て
伝統的なプログラミング環境と比較すると、ホワイトボードには、自分の好きなツールが存在しない場合にインタビューを不慣れな環境での書き込みコードをあなたに強制されます。これは、あなたが緊張インタビュープロセスで簡単にミスを犯すする可能性があり、あなたは奇妙な環境で問題に会ったときに近づくと考え方企業の一つは、あなたの基準を検討し、またなります
ホワイトボードインタビューが効果的にインタビュアーの全体的な品質を調べることができ、インタビュアーは、より一般的な関心事である:あなたは新しい問題が発生した考える力、他人と通信する能力;あなたは時間回復力挫折に遭遇し、あなたが受け取りますフィードバック能力のタスクは、あなたの思考は、コードの構造は、構造化するかどうか、明らかであり、あなたのコードの可読性、保守性などを
ホワイトボードのトレーニングメソッドをインタビュー
細切りのアルゴリズム・ステップ:
- タイトルの意味を確認するために面接で、タイトルを取得するには、トリッキーな質問を避けるため、あなたが補助スペースを使用できるかどうか、どのような要件などでどのくらいの時間複雑さと尋ねます
- 思考の後、思考アルゴリズムの枠組みは書かれており、インタビュアーと通信します
- 自分のアイデアを書き込むようにコメントで、関数を宣言
- 違法な入力、境界を分析、
- フォーマル問題解決、コメントへの重要なステップ
- 筆記試験
- 見て面接に動作して書かれたテスト手順、
多くの場合、あなたはコードヒントに合わせたコードのフレームワークに慣れているため、あなたは、混同されることがありますが、紙の上でアルゴリズムを記述することができ、閉じられたコンピュータを見つけるだろう
ホワイトボードや白い紙の上にコードを記述、メモリプログラミング語彙を向上させる、それが大幅にあなたのプログラミングのスキルを強化されますが、また、ヘルプは思考のあなたの方法を訓練しますメモリの全体テーマにご理解やアイデアを深めます