有名な倧孊の卒業蚌曞なしでマむクロ゜フト、アマゟン、たたはツむッタヌにアクセスする方法

この蚘事は、仕事を探す準備をしおいる人を察象ずしおおり、スタンフォヌド倧孊のコンピュヌタサむ゚ンスの卒業蚌曞なしではトップ䌁業に入らないのではないかず心配するかもしれたせん。 圌らはおそらく、誰もあなたをFacebookやMicrosoftに連れお行かないだろうず蚀ったでしょう。 しかし、これは完党に可胜であるこずを䌝えたいず思いたす。 Twitterで自分の倢の仕事をどうやっお成し遂げたかに぀いおの私の話です。









この蚘事の内容





履歎曞



私はアむビヌリヌグ倧孊を卒業しおいたせん。 アむダホ州の公立倧孊で2幎間勉匷した埌、小さなカトリック倧孊に線入し、そこでコンピュヌタヌサむ゚ンスを卒業したした。



面癜いず思ったからずいっお、1幎目にプログラミングを始めたした。 それたでの私のコンピュヌタヌでの経隓はすべお、任倩堂のコン゜ヌルに察する䞭囜の停物で䜿い果たされ、それが死んだずしおも、カヌトリッゞを挿入するだけで十分でした。



自分を逊うために、教育を受けるたで、私は䞀床にいく぀かのアルバむトをしたした-床を掗っお、映画通で食べ物を売りたした。 卒業埌、私には仕事がありたせんでした。 できる限りすべおの䞻芁IT䌁業に履歎曞を送りたした。運がよければ、電話むンタビュヌぞの招埅状をいく぀か受け取りたした。



圓時、私はそれがどんなものかさえ想像もしおいたせんでした-技術職ぞのむンタビュヌ、さらにはその準備方法。 リンクリストたたはバむナリツリヌずは䜕かを聞かれるず思っおむンタビュヌに来たした。



圓然、これらすべおのむンタビュヌで私は䞭退したした。



次のステップ



それから、私は自分のレベルが良いかどうかに぀いおあたり考えたせんでした。 私は速く捕たっおいるこずを知っおいたした。 必芁なのは、自分自身を蚌明する機䌚だけでした。



䞀般的な知恵によれば、ネットワヌクは捚おられ、より広くされる必芁がありたす。 だから私はやった。



次の段階でやったこずに぀いお、私は特に誇りに思っおいたす。 Craigslistから欠員を収集し、特定のキヌワヌドを含む投皿を遞択し、衚に蚘茉されおいるメヌルアドレスを入力する簡単なPythonスクリプトを䜜成したした。 最も独創的な決定ではありたせんが、Craigslistに仕事を投皿する人々は驚くほど確実に投皿を呌び出しおいたす。



ただし、Craigslistは、デヌタをアップロヌドしようずする人があたり奜きではありたせん。 制限を回避するために、VPNを介しおスクリプトを実行し、数分ごずにプロセスを䞀時停止するタむマヌを蚭定したした。 完党ではありたせんが、そのようなスキヌムは機胜したした。



最終的に、サンフランシスコ、ポヌトランド、スポコン、シアトルにある組織の玄500の䜏所を収集したした。 関連性ず日付で結果をフィルタヌ凊理し、パラメヌタヌをさらに远加しお結果を最適化し続けたした。



刀明したように、Craigslistからデヌタを収集し、自動的にレタヌを送信するボットがすでに垂堎にいく぀かありたした。 ほずんどの堎合、これらは米囜垂堎に参入しようずするオフショア䌁業でした。



私が頌ったトリックの1぀は次のずおりでした。䞻題に関連するキヌワヌドが含たれるように、文字のテキストを䜜成したした。 次に、空垭のテキストに基づいお詳现を远加し、特定の芁件に合わせお提案がシャヌプに芋えるようにしたした。 私が実斜したクむックA / Bテストから刀断するず、その埌の回答の割合は倧幅に増加し、2〜3から10になりたした。



私が送った500通の手玙に玄500通の返信が来たした。 この50人のうちわずかな割合で、電話むンタビュヌを手配したした。 時間がなくなったため、500で停止したした。すでにどこかに行く必芁がありたした。 圓時の優先事項は結果であり、報道の幅ではなかった。



幞いなこずに、私はシアトルの新興䌁業でゞュニア開発者ずしお仕事に就きたした。 圌らのオフィスはカヌクランドにあったので、むンタビュヌを受けるために45分間バスに乗らなければなりたせんでした。



私はそこで3幎半働いお、Amazon AWS、EC2、DynamoDB、SQS、Dockerなど倚くのこずを孊びたした。 この間、私はプログラマヌずしお倧きく成長したした。 モゞュラヌで保守しやすいコヌドを曞き、蚭蚈に぀いお正しく掚論し、人々ず仕事をするずきの問題を解決する方法を孊びたした。



Microsoft、Amazon、LinkedInから来た知識豊富な人々のグルヌプず䞀緒に働いお、圌らの間で「スポンゞ」の圹割を挔じようずしたした。 私は圌らが私にくれたものをすべお吞収したした。 これが私のキャリアに倧きな圱響を䞎えたず確信しおいたす。



スタヌトアップで働く



スタヌトアップでは、たれな䟋倖を陀き、DevOpsでのたれな攻撃を䌎うバック゚ンドでのみ䜜業したした。 最初は、通垞はそれほど倧きくない機胜を補完たたは倉曎する関数を䜜成したした。 しかし、コヌドベヌスに粟通し、コヌド怜蚌手順を経隓する絶奜の機䌚でした。



1幎埌、圌らはコヌドベヌスの断片党䜓を私に信頌し始め、それから䞀連の関数からサヌビスを䜜るように指瀺されたした。 スタヌトアップは、サヌビス指向アヌキテクチャぞの切り替えを始めたばかりでした。 サむトのさたざたなコンポヌネントをサヌビスに倉え始めたした。その間に、RESTful、認蚌、AWS、パブリッシャヌ/サブスクラむバヌパタヌン、分散システムなどに぀いお倚くのこずを孊びたした。



最も興味深いのは、本や倧孊の授業䞭に䜕も孊ばなかったこずです。 いく぀かの機胜を実装するか、いく぀かのボトルネックを解消する必芁がありたした。 そしお、私はこのようなものですたあ、理解したしょう



1回たたは2回以䞊、分析麻痺に陥りたした。過床に詳现な分析が問題の解決の進行を劚げおいた状態です。 開発の機䌚のほずんどが生じたのは、これらの困難な瞬間でした。 私は、機胜の範囲の定矩、亀枉、監芖、アラヌトの蚭定、文曞のコンパむルを改善したした。 このプロセスのすべおのステップで、マスタヌする必芁がある新しい抂念が発芋されたした。 この2、3幎で、プログラミングスキルの面でも人間の資質の面でも、私はこれたで以䞊に成長しおきたした。



むンタビュヌの準備



就職掻動の最初のラりンドで苊しんだ埌、私は次回面接の準備をするこずを玄束したした。



私は、自分が埗意なもの、匱いもの、匕き䞊げおよいものを曞くこずから準備を始めたした。 すべおのスキルを、デヌタ構造、アルゎリズム、システム蚭蚈の3぀のカテゎリに分けたした。



専門分野では、私は䞻にPHPで働き、倧孊ではC ++で曞いたので、むンタビュヌのためにそれほど倧きくないものを遞ぶこずにしたした。



これらの基準に基づいお、Pythonを遞択したした。 これは孊習するのに最適なオプションです。簡単に消化でき、倚くのデフォルトのデヌタ構造をサポヌトし、ボヌド䞊ですばやくコヌドを曞くこずができたす。 このような YouTubeのチュヌトリアルずドキュメントでPythonをマスタヌしたした。 個人的にはPython 2.xが奜きですが、Python 2.xずPython 3のどちらかを遞択できたす。



ずころで、私がPythonを遞んだ理由の1぀は、非垞に読みやすく、曞くずきにコンパクトになるこずです。 C ++ずPythonを比范する簡単な䟋を次に瀺したす。



C ++で降順で゜ヌトするためのプログラム



#include <bits/stdc++.h> using namespace std; int main() { int arr[] = {1,10,0,4,5} int n = size(arr)/sizeof(arr[0]); sort(arr, arr + n, greater<int>()); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; }
      
      





同じPythonプログラムず比范しおください



 a = [1,2,4,5,1000] a.sort(reverse=True) print a
      
      





むンタビュヌを行う専門家から、他のこずは同じであるため、蚀語を遞択するずきは簡朔さを重芖する方が良いず聞きたした。 割り圓おられた45分の時間のうち、タスクの解決に実際に費やすこずができる時間が長いほど、より良い結果が埗られたす。



ヒントボヌド䞊でコヌドをより速く曞くために、かさばらない蚀語を遞択しおください。



トレヌニングモヌドで



箄1週間ほどで、LeetCode、HackerRank、Project Eulerの簡単なタスクを実行しお、これらのサむトのむンタヌフェむスに粟通し、Pythonで曞くこずに慣れたした。 この間、私はいく぀かのプログラミング蚀語で自分のレベルをより良く評䟡するこずができたした。 別の週は、できるだけ広い範囲をカバヌし、可胜な限り深く朜りながら、タスクの蚭蚈に取り組みたした。



非垞に゚キサむティングでした。倚くの堎合、iOSアプリケヌションを䜿甚しお、それらがどのように䜜成されるかを芋たした。 Instagramをれロから䜜成する方法を考えおみたしょうこれはたさにFacebookで尋ねられた質問です。



私のポヌトフォリオには、APIずサヌビス指向アヌキテクチャに関する仕事がありたす。 したがっお、私は喜んでこの機䌚に自分のバヌゞョンのInstagramをどのように蚭蚈したかを䌝えたした。 サむドプロゞェクトのおかげで、iOSでの開発経隓もあるので、同時にコヌルバック、プルテクノロゞヌ、長期投祚に関する蚀葉を台無しにしたした。



Instagramの自分のバヌゞョンで芋たい機胜をリストアップするこずから始めたしたいいね、写真のアップロヌド、簡単なフィヌド。 関数の範囲を定矩するこずで、これらのシナリオはすべお銎染みがあるため、非垞に匷固なAPIを構築できたした。



次に、ナヌザヌがバック゚ンドず察話する方法ず、デヌタがそこに栌玍される方法を瀺すいく぀かの高レベルの図を描きたした。 私は必芁最小限のコンポヌネントを埐々に远加し、ボトルネックを積極的に怜玢したした。 芁件が䜕であり、このテクノロゞヌたたはそのテクノロゞヌがどのように適合するかに぀いお、合理的な仮定を立おたした私は匷調したす 正圓化 。 たた、これず同じくらい重芁なのは、どのテクノロゞヌもたったく適合しないこずです。



たずえば、特定の皮類のデヌタヒントスケヌル、開発速床、スキヌマレビュヌを保存するためにMySQLではなくCassandraを䜿甚する䟡倀があるのはなぜですかOAuthは単玔な認蚌よりも優れおおり、デヌタをキャッシュするずきのRedisずMemcached、ストリヌミングたたはバッチ凊理などよりも優れおいたす。



ここでは、さたざたな゚リアを探玢できたす。通垞、1時間ごずのセッションでは十分ではありたせん。 このような質問に適切に答えるためには、業界のさたざたな技術のトレヌドオフ、賛吊䞡論の問題を培底的に研究する必芁がありたす。 このため、 HighScalabilityなどのサむトをお勧めしたす。



これを同僚ずの通垞のブレヌンストヌミングセッションずしお扱い、可胜な限り幅広いアプロヌチず詳现な研究に努めおください。



これらのデザむンセッションは、あなたが知っおいるこずずどれだけうたくいくかを匕き出すように蚭蚈されおいるこず、そしおこれがあなた自身を良い光で瀺す機䌚であるこずに泚意するこずが䞍可欠です。 元Facebookデザむナヌがデザむンタスクにアプロヌチする方法に぀いおこのビデオを芋たした。 圌の掚薊はむンタビュヌの間に私を倧いに助けた。 私がそこから孊んだ2぀の䞻な考えは次のずおりです。自分自身のデザむンに぀いおの䌚話の方向を定め、あなたができるこずを瀺すこずです。



そこで、特定の蚀語のデヌタ構造リンクリスト、ハッシュマップ、バむナリツリヌ、バむナリ怜玢ツリヌ、ヒヌプ、配列、アルゎリズムバむナリ怜玢、ハッシュ、動的プログラミング、䞊べ替え、および構文ずラむブラリの芳点からスキルを描きたした。 Pythonのラムダ関数、append、index。 それから私は物事が最悪だった゚リアを遞択し、それに取り組み始めたした。 これらはアルゎリズムであるこずが刀明したした。



アルゎリズムは私の埗意ではありたせんでした。 倧孊からはすでに倚くの氎が流れおいたす。仕事のために、バむナリ怜玢に頻繁に察凊する必芁はあたりありたせんでした。 各アルゎリズムがどのように機胜し、どのようなシナリオでそれらを䜿甚するかに぀いおの䞀般的な考えがありたした。 しかし、10分未満でバむナリ怜玢を綎る胜力に100パヌセント自信はありたせんでした。 ボヌド䞊。 面接を行っおいる人の前で。



同時に、私はAmazonでたくさんのマヌカヌを賌入したした。 わからない、たぶん私だけかもしれたせんが、䜕らかの理由でオフィスのマヌカヌが垞に䜿い果たされおいたす。 通垞、2〜3分でマヌカヌを敎理し、法線を探したす。これは、このように時間を分散できる状況ではありたせん。 そしおもう1぀、薄いマヌカヌを䜿甚するず、通垞のボヌドに5〜8行のコヌドを通垞よりも倚く収めるこずができたす。



ヒント独自のマヌカヌセットを取埗したす。



コストコで50ドルでボヌドを賌入し、Amazonで本を入力し蚘事の最埌にある掚奚セクションにリストされおいたす、緎習を始めたした。 特に、バむナリ怜玢、再垰、動的プログラミング、幅ず深さの怜玢をクリックしようずしたした。 むンタビュヌでの倚くの質問は、再垰ずバむナリ怜玢、たたはそのバリ゚ヌションに関するものです。



私が出䌚った最高のタスクには倚くの異なる解決策がありたすが、この事実も準備プロセスで考慮する必芁がありたす。



Googleで私に尋ねられた質問の1぀は、ファむルシステムディレクトリずその暪断方法に぀いおでしたヒント再垰。 私はすぐに解決策を玹介し、むンタビュアヌはファむルがフォルダヌにないかどうかを刀断する方法を尋ねたした。 それはもっず耇雑な質問でしたが、私はなんずかしたした。 その埌、ディレクトリを再コンパむル、シリアラむズ、デシリアラむズする方法に぀いお話し、長い間、ディレクトリが内郚でどのように機胜するかを議論したした。 このセッションは本圓に楜しかったです。



トップ䌁業ぞのむンタビュヌ



経隓は、控えめに蚀っおも、刺激的です。 それらはただゞェットコヌスタヌです。



私は次のように時間を配分したした。履歎曞の20、䌁業ず知り合うための20、面接の準備のための60。



履歎曞の情報の曎新に20の時間を費やしたしたが、3幎以䞊も觊れおいたせん。 過去に行ったすべおのこずを泚意深く芋お、耇雑さのレベルに関係なく、最初から最埌たで実行したプロゞェクトを遞択したした。



これには2぀の理由がありたした。 第䞀に、プロゞェクトを終わらせるには、芏埋ずリヌダヌシップの質、぀たり雇甚䞻ず結び付けたいず思う正確な特性が必芁です。



第二に、プロゞェクトぞのこの皋床の関䞎は、私がそれに぀いお非垞に詳现か぀有益に話すこずができるこずを意味したす。 Twitterでのむンタビュヌでは、この状況が重芁であるこずが刀明したした。そこでは、デザむンのさたざたな偎面だけでなく、圌らがこの方法で実装するこずに決めた理由に぀いおもバむアスをかけられたした。



さらに20が情報を怜玢したした。 これにより、私は䌁業に十分な泚意を払い、掚奚のリク゚ストを送信したこずを意味したす。 掚奚事項により、コヌルバックされる可胜性が倧幅に高たりたす。



私自身の経隓からスタヌトアップや䞭芏暡䌁業に玄20通の「冷たい」手玙を送りたしたが、そのうちのほんの数人が私に答えたした。 しかし、埓業員の1人が私に蚀葉をかけた䌁業のうち、倧倚数は1週間以内に私に手玙を曞きたした。 もちろん、これは特定の1぀のケヌスにすぎたせんが、それでも圌は䜕かに぀いお語っおいたす。



私は瀟亀的ではなく、興味のある䌚瀟に私を掚薊できる人はあたり知りたせんでした。 この問題を解決するために、LinkedInに向かいたした。 圌らの怜玢゚ンゞンの助けを借りお、私は第1レベルず第2レベルの぀ながりを芋぀けたした。 2番目のサヌクルの぀ながりは、友達のサヌクルからわずか1歩離れた人々です。 蚀い換えれば、あなたは圌らを保蚌できる共通の友人を持っおいたす。











これは非垞に重芁です。なぜなら、特に珟代垂堎の珟実では、「冷たい」方法でむンタビュヌを受けるこずは非垞に、非垞に難しいからです。 そのような堎合、人々は泚意するこずを奜みたす。 LinkedInは、情報収集フェヌズに非垞に圹立぀こずが実蚌されおいたす。



振り返っおみるず、むンタビュヌした䌁業の印象は次のずおりです。





最初に私のお気に入りに぀いお



Twitterぞのむンタビュヌは倚くの点で難しいず思いたす。 しかし同時に、この経隓は他の䌁業ずのミヌティングよりも個人的で興味深いものでした。



むンタビュヌの最初の段階は、技術マネヌゞャヌず知り合うための電話での䌚話です。 その埌、電話で1〜2回の技術面接が行われたす。金額は結果によっお異なりたす。 すべおが順調であれば、圌らはあなたが仕事に応募したオフィス、私の堎合はシアトルのオフィスに飛ぶように誘いたす。 そこでは、それぞれ2人の埓業員が参加する1時間15分の3぀のセッションを通過したす。



技術職の通垞のスキヌムに埓っお、2぀の電話むンタビュヌが行われたす。共同コヌド線集モヌドでタスクを解決したす。



ただし、オフィスでのセッションは、フォヌマルではなく、怖いものではありたせん。 以前のプロゞェクトず、これたでに行ったすべおのこずに぀いお培底的に質問されたす。 特定のプロゞェクトに参加したず宣蚀する堎合は、そのプロゞェクトに぀いお詳しく話す準備をしおください。 ゜リュヌションの゜ヌスずしお、たたはアむデアをテストするためにそれらを䜿甚するこずをお勧めしたす。



私は圌らが私にプレッシャヌをかけおいるず感じたこずは䞀床もありたせん。 それどころか、埓業員は非垞に忠実であるように芋えたした。



そしお今、他のみんなに぀いお



Twitterず比范しお、FacebookずGoogleのむンタビュヌは私にずっおより機械的なものに思えたした。 圌らは1〜2回の電話むンタビュヌず5〜6回のオフィスでのセッションで構成されおいたした。 各セッションでは、ボヌドにコヌドを曞く必芁がありたしたが、ほが完璧な゜リュヌションが必芁でしたが、十分な時間が䞎えられたした。



Facebookには2぀のプログラミングセッションがありたした。1぀はデザむン甚で、もう1぀は個人の質を評䟡するためのものです。 䞀日の終わりに、远加の「シャドり」セッションを行いたしたが、その結果は党䜓のスコアに圱響したせんでした。



Googleには5぀のセッションがあり、すべおプログラミング甚でした。 デザむンにはたったく䜕もなかったし、私の過去のプロゞェクトに぀いお誰も話したこずがなかった。 これが絶察に悪いず蚀っおいるわけではありたせん。 しかし、このようなアプロヌチはコンベダヌ感芚を残し、開発者が自分の胜力を適切に瀺すこずができないように思えたす。 䞀郚の人にずっおは、この圢匏が適しおいたす-孊生や詊隓のようなものです。



Pinterestでのむンタビュヌは奜きではありたせんでした。 補品自䜓は興味深いようで、チヌムは非垞に興味深いタスクに取り組んでいるようです 。 しかし、申請者ずしおの私の経隓は明らかに吊定的でした。



Pinterestは3぀のプログラミングセッションを開催したす。1぀はデザむンです。 これら4぀のうち、最埌の1぀は私を倱望させたした。 そしお、ここに理由がありたす。



むンタビュアヌが遅れお来お、最初の数分間私の履歎曞を読んだだけです。 その埌、圌はボヌドにAPIを描き、圌がすべきこずを簡単に説明し、どのように実装するかを尋ねたした。 機胜に぀いお議論し、ボヌド䞊で゜リュヌションを曞き始めたした。 箄5分埌、私は振り向いお、圌が居眠りしおいるのを芋たした



クヌルじゃない。



むンタビュヌの埌、アンケヌトでこれに぀いお曞いたが、他の誰も私に連絡しなかった。



私はむンタビュヌでどのような質問をされたのかに぀いおは詳しく説明したせん。 代わりに、準備の過皋で埗たいく぀かの有甚な結論ず掚奚事項をリストしたす。



私が孊んだこず





その他のヒント



技術面接は非垞に耇雑で、結果を予枬するのが難しい堎合がありたす。 しかし、最善の機䌚は準備ができおいる人たちです。









私のメモ



面接のために思慮深く準備するのに玄2ヶ月かかりたした。 メむンの仕事に加えお、週に20時間、぀たり月に80時間を過ごしたした。



良い履歎曞を曞くのに3幎半の懞呜で思慮深い仕事が必芁でした。 , , . IT-, , , . , , .



: , .



: , , . , .





Elements of Programming Interviews —

Cracking The Coding Interview — CS

OneNote —

Evernote — —

CodeRunner — Mac! / Python, .

Jobscan — . , .

Refdash — Google. — . , , Google , Google. .

CodePath — , IT-. — , . , - .

— , .



, Cracking The Coding Interview , : hash map, . Elements of Programming Interviews , . : - , , , Cracking The Coding Interview . Elements of Programming Interviews — .



All Articles