ええと、私はできる限り本を読んでいます。ソフトウェアエンジニアのポジションについて、最初に電話でのインタビューがあります。私はすべてのブログ投稿を読んだし、インタビュー(かなり古い)のすべての説明を読んだし、Google自体も本の読書リストを提案していた。それでも、しばらく準備をしていても、広い土台があるという気持ちは揺るがせず、深みと幅のどちらがいいのかわからない。私は自分がcompsciのすべての領域を再学習していることに気付きましたが、次へ移るときに重要な詳細のほとんどを忘れてしまいました。
ですから、この質問に適切な答えがあるかどうかはわかりませんが、面接の前に残りの数週間に取り組む方法に関する実用的なアドバイスを探しています。私の脳の一部は詰め込みに疲れており、もちろん残りの部分は私の現在の就職先でのいくつかの困難な問題に利用する必要があります。
知っておくべきこと
グーグルはあなたを雇いたいと思っています!
ソフトウェア企業の生命線は従業員であり、Googleも例外ではありません。優秀で優秀な人材を採用することを目指しており、面接を実施する人々は、あなたと同じくらい成功することを望んでいます。
Googleは、できる限り正確にあなたを評価することをお勧めします。それは彼らの仕事です。
Googleはデータ駆動型の企業です。採用決定はマネージャーの法定によって決定されません。代わりに、各インタビュアーは、パケットに結合されるインタビュー中に広範なメモをとります。その後、そのパケットは個別の委員会によって審査され、最終的に決定を下します。したがって、面接担当者の1人と「ゲル化」していなかったとしても、心配する必要はありません。重要なのは、面接でどれだけ上手くいくかです。
必要なスキル
面接の前に、次のスキル/テクニックを復習してください。これらについて直接質問されなくても、それらを確認することは確かにあなたの頭を正しい考え方に導くことができます。
データ構造
配列とリンクリストの違いは何ですか?ツリーとグラフ?いつどちらを使用しますか?速度とメモリのトレードオフにどのような影響がありますか?
インタビューの質問は実用的な解決策で終わりません。アプローチの実行時間と、どのようなトレードオフが可能かを説明できるようにします。たとえば、「すべてをキャッシュすると、RAM)のXギグがかかりますが、次の理由により高速に実行されます...」、または「操作を実行しながらバイナリツリーをソートしたままにした場合、X遅くなる、Yが速くなる、など」
アルゴリズム
基本的なグラフトラバーサルアルゴリズム、ツリートラバーサルアルゴリズム、および数値をソートするための2つの優れたアプローチ。
動的プログラミングを使用して、重要な問題の解決を練習してください。タフなインタビューの質問になると、それは穴の中であなたのエースです!
ハッシュテーブル
これは巨大です。ハッシュテーブルについて知っておくべきこと、ハッシュ関数について知ってから、バケット数を素数にする理由など、ハッシュテーブルについて知っておくべきことをすべて知ってください。ハッシュテーブルに関する概念は、コンピュータサイエンスのほぼすべての領域に関連しています。
あなた自身についての論点
インタビュアーとの最初の数分間のおしゃべりは、あなたを際立たせるあらゆる種類の経験を説明する重要な時間です。関連プロジェクト、重要な技術的成果など。インタビューを実施している人が、あなたと同じように何百人とは言わないまでも数十人の賢い人々にインタビューしたことを覚えておいてください。それで、彼らを驚かせることは何と言えますか?
たとえば、インタビューで、大学で囲碁のゲームをプレイするために書いたプログラムについて面接担当者に話しました。囲碁のゲーム用にAIを書くのは非常に難しく、それを証明する恐ろしい囲碁ボットがあります。肝心なのは自分自身であり、プログラミング方法を知っている賢い人だけではありません。
あまりストレスを感じないでください。他のインタビューと同じです。誰もあなたにマンホールの蓋や山について愚かな質問をすることはありませんのでご安心ください。富士。
あなたのインタビューが私のようなものである場合、インタビュアーはあなたを提出するためにそこにいるわけではありません、彼はそこにいますあなたの考えを参照してください。
編集:これは最初の電話インタビューであり、それ以上はわかりません...そして私が知っていたとしても、とにかくあなたに言うことはできませんでした!
http://get-that-job-at-google.blogspot.in/ から次の記事を借用しました
コーディングの知識C/C++およびJavaは、Googleインタビュアーに推奨されるプログラミング言語です。少なくとも1つは知っている必要があります。電話スクリーンインタビューやオンサイトインタビューでもコードを書くことが求められます。
CSインタビューの推奨書籍:アルゴリズムの概要-コーメン
公開されたプログラミングインタビュー
コーディングインタビューの解読
インタビューのアルゴリズム
コーディングの実践に推奨されるWebサイト:InterviewStreet、Topcoder
Big-Oこれは、アルゴリズムインタビューの準備の開始点になるはずです。採用されないことを保証するため、基本的な複雑さの分析に苦労してはいけません。 O、Θ、およびΩの表記についてよく理解している必要があります。データ構造とアルゴリズムの本の複雑さ分析に関するセクションを読むことをお勧めします。
ソートQuickSortやMergeSortのようなアルゴリズムO(n * lgn)を簡単に書くことができるはずです。最良、最悪、および平均のケースの複雑さを比較して理解します。私はwikiのこの表が非常に便利だと思いました。すべてのソートアルゴリズムの重要なプロパティをリストします。バブルソートや挿入ソートなどの基本的なO(n ^ 2)アルゴリズムを無視しないでください。他のアルゴリズムがこれらのアルゴリズムを改善します。インタビューは基本的なアイデアを改善するためのものです。並べ替えアルゴリズムはこのプロセスに役立ちます。
ハッシュテーブル疑問がある場合は、ハッシュテーブルを考えてください。これらはほとんどの問題で役立ち、結果をキャッシュすることで、いくつかの問題の時間の複雑さを改善するのに役立ちます。
Trees基本的なツリー構築、全探索、および操作アルゴリズムを実行します。二分探索木に基づくアルゴリズムを実装できるはずです。 AVLツリー、Red-Blackツリー、Trie、n-aryツリーなど、インタビューでそれらのコードを記述することは期待されていませんが、バランスツリーに精通している必要があります。これらのトラバーサルの1つに簡単な変更を加えることで、多くのツリー問題を解決できます。
グラフグラフは、コンピュータサイエンスにおいて非常に重要な概念です。グラフの3つの基本的な表現(オブジェクトとポインター、行列、隣接リスト)を練習し、長所と短所を理解します。インタビュー中は時間があまりないので、非常に複雑なことは期待しないでください。ただし、基本的なグラフトラバーサルアルゴリズム(DFSおよびBFS)は必須であり、すべての基本的な表現で実装する必要があります。 DijkstraまたはFloyd-Warshallアルゴリズム、および最小スパニングツリーアルゴリズム(KruskalおよびPrim)を実装できる必要があります。トポロジーソーティングについて学んでください。トポロジーソーティングは、多くの順序付け問題で意外にも非常に役立ちます。
動的プログラミング実装が小さいため、これはおそらく最も重要なテーマです。 35〜40分の間に2〜3個の動的アルゴリズムを実装できるはずです。このブログまたはWebでリソースを確認すると、インタビューごとに少なくとも1つの動的プログラミングの質問が予想されるはずです。
オペレーティングシステムプロセス、スレッド、同時実行の問題について学びます。ミューテックス、セマフォ、モニター、およびそれらがどのように機能するかについて理解します。デッドロックとライブロックとは何か、およびそれらを回避する方法を理解します。コンテキストの切り替え、スケジューリングなどについて学びます。
数学カウント、組み合わせ論、確率について理解する必要があります。
Googleの出版物時間がある場合は、下記のGoogleの画期的な出版物を読んでください。 Googleファイルシステム
Google Bigtable
Google MapReduce
過去2か月をキャリアカップで過ごしたなら、リラックスする余裕があります。インタビューでその瞬間に何が起こるかは計画できませんが、リラックスして、ラウンドを継続するエネルギーを持っている方がよいでしょう。