競争力のあるプログラミングは、トップのインターネット企業に参加するために必須ですか?グーグルコードジャムキング試合前インタビュー(ビデオ付き)

モデレーター:あなた自身について何か教えていただけますか

インタビュイー:私が参加することに決めた競技プログラミングと同じように、私は競技プログラミングの競技に参加しただけでなく、高校で米国のGoogle Code Jamに参加しました。これは、私の一部である決勝戦に参加したためです。毎年の生活。私は数回行きました。国際大会に加えて、私はYouTubeチャンネルを持っており、アルゴリズムを非常によく教えています。GoogleCodeJamが決勝に進出するために必要なことは、基本的に準備ではなく、事前の準備さえしたことがないからです。ゲームの数日前に他のゲームに関するものがいくつかあります

モデレーター:もちろん、コンテストに参加するには、数か月間練習するのに何年もかかります

インタビュイー:あなたがとても上手いなら、予選ラウンドがいくつかあります。3回と1回の予備予選ラウンドが追加され、225人が決勝に出場します。25歳以上のチャンピオンは25人だけだと思います。 26歳昨年のチャンピオンとジェナディの勇気は過去5年間で実際に奪われました、私の良さ、彼は取る必要はありません

彼は予選で決勝に直行した

モデレーター:では、競技プログラミングとは何かについて、私に話していただけますか

インタビュイー:要するに、これは思考実験です。あなたが考えているのは、ポーカーの次のステップのための興味やカードではありません。ここでは、プログラミングの方法を検討します。特定の時間的制約の下で、解決する必要があるいくつかの問題に遭遇します。問題データの制約は、魚を発明して時間内に実装するのに十分な速さです。最も速い人が最も可能性の高い問題です。

彼らは通常、実行時間または単に複雑さを気にします。これは非常に良い質問です。1秒、1時間、または1日のランク付けには違いがあるため、複雑さは非常に重要です。通常、制限時間内であれば、次のようになります。 2秒のような制限時間。まあ、いくつかの競争は非常に重要かもしれません。あなたのプログラムの良い結果を計算するのに長い時間がかかるかもしれません。これはいくつかのnp問題だからです。正確な問題はありません。解決策はあなたが何であるかです。解決策は見つかりましたが、ほとんどの場合、それを通過してから、最後のGoogle Code Jamなど、この問題に割り当てられたポイントを取得する必要があります。主に時間や修正の観点から、プログラムをどのように比較しますか。1つしかありません。そのうちの1つは正しく、時間内に実行されます。各質問にはこの15ポイントのような特定のスコアがあり、1つは20です。難しいので、最も難しいのは、40とポイントの合計が重要であると言うことです。同点の場合、提出するときの最後の解決策は、誰かが2時間半で完了した場合、同じスコアの人よりも優れていることです。私たちも良ければ、あなたはどれくらい速いですか。

モデレーター:はい、はい、あなたはどう思いますか

インタビュイー:去年の予想通りがベストだと思います。共食いの後はクレイジーですが、これは私の人生で最高のパフォーマンスであり、繰り返したいことではありません。もちろん、願っています。

モデレーター:まあ、まあ、競技プログラミングの問題とは何かの例を教えてください

インタビュイー:はい、私はあなたにクールな例を挙げたいと思います、私はそれを解決できないかもしれません、しかし先生、あなたはそれを過大評価できると思います、それは私の側にテニスの試合があることを示しますそれはまだとても良いです私、マリソルです。それから一連の手紙が届きます。プレーヤーaまたはbの得点に関係なく、テニスにはゲームに勝つためにいくつかのポイントが必要なルールがあります。それでは、私は自分自身を知らないのです。ええ、そうです、ゲーム全体に順序があります。どのプレーヤーがゲーム全体に完全に勝ったかを言う必要があります。もちろん、もしあれば、もちろんこれらすべてを実装できます。土曜日の終わりには引き分けです。まだ長い間プレーしなければならないかもしれません。誰が4ポイントを獲得したか、すぐに獲得できるポイントは言うまでもなく、10分で達成できます。どういう意味かわかりません。やりたいことです。とてもシンプルです。バババBのような文字列があり、テニスのルールを知っているので想像します。テニスのルールを知っている場合はポイントを追加するだけで、コレクションの場合はすでにそれを設定してください、それは良いです、彼は私が正しい音だけを聞くようにそれを設定したいと思っています

モデレーター:あなたは通常これを行います。ゲーム中に起こることは、それを達成する方法についての質問について考える瞬間を見ることです。

インタビュイー: 10分を費やすのに少し時間がかかるかもしれません、あなたはリーダーボードをチェックします、それは解決されます、あなたは誰かが30秒でそれを解決するのを見ます、あなたはどのように尋ねることができますか、彼らはすでにプリセットコードのように書いているようです、C ++での貼り付けとほぼ同じで、9つの方法が含まれています

モデレーター:つまり、実行時間は30秒であるか、送信されたということです。問題を読んで解決し、フランスで送信しました。

インタビュイー:彼らが質問を聞いたと思うなら、それは簡単なアイデアをすぐに思いつくことです。ここでのアイデアは、最後の手紙を印刷することです、ケーシー、はい、あなたがすでに自分自身を望んでいるなら、それであり、あなたは知っていますこのグラスワインはIDであり、リバースシャフトで何が起こっても、ストリングが正しいと仮定しましょう。これは、競争力のあるプログラミングに慣れている人々の不利な点は、常に一致したシーケンスを説明するデータが正しいか、またはステートメントが数字のシーケンスを取得することを示しているかどうかを確認するために、それらはこの間隔内にあり、間違った文字を気にせず、一部の数字はそうではない可能性があります整数の場合、操作のプロンプトに従うだけなので、ユーザーが間違った日付を教えてくれた場合はどうすればよいかを尋ねられたときに、実際の作業を見逃す可能性があります。これは非常に賢明です。はい、文字列の最後の文字を見てください。はい私が好きなクールなものはありません、それは楽しいです、大丈夫です

モデレーター:それでは、競争力のあるプログラマーはより優れたソフトウェアエンジニアになると思いますか、それとも問題ではないのでしょうか。

インタビュイー:それは難しいです。スマートであることを保証するためにサイズ間に負の相関関係がある記事を見ました。たとえば、競争の激しいプログラマーは非常に賢いですが、一方で、技術的にはそうではないかもしれません。それは仕事で非常に重要です。 。これらをデバッグできるように注意深く実装することが重要です。競争力のあるプログラマーは間違いを犯しやすいと思うので、常に正しく収集する必要がありますが、持っていないものもあります。スキルは優れています。候補者。彼らの中には偉大な打者になる人もいれば、不合理な人もいるでしょう。これは理にかなっています。それで、最大の競争とプラットフォームは何ですか?競技プログラミングのコードについてはすでに述べました。それはロシア語のプラットフォームと日本の広告です。コーダー。米国のトップコーダー。これはほぼ20年間のプラットフォームです。これは最初のもので、他の2つはかなり若いです。毎週オンラインでコンテストを開催しているので、これらすべてのプラットフォームといくつかのプラットフォームを組み合わせると、言うまでもなく、2日ごとにコンテストに参加し、Google CultureTopCoderがFacebookHacker Cupを開くなど、重要な洞察を得ることがあります。大企業が主催するだけです。熟練した参加者を引き付けるかもしれません。彼らを雇うGoogleCode Jamは、実際には慎重に準備され、多くの広告があると思うプロのストリームです。彼らが今年の広告ストリームでGoogle stadiaを宣伝することを知っているだけでなく、プログラマーにとっても

モデレーター:それで、私たちと一緒に働いているクリップがたくさんあります。これはエコインターンです、教えてください

インタビュイー:好きですか、なぜグーグルが好きですか?はい、これは大きな広告のようなものです。他の強力な競争相手と競争でき、お金を稼ぐチャンスがあるので、私はまだ文句を言いません。私も旅行したいです。アメリカ合衆国。

モデレーター:はい、はい、彼はあなたのフライトの料金を支払うためにここにいます

インタビュイー:はい、担当者です。これが担当ホテルの問題です。5つ星ホテルの場合もあるので、1位と2位という理由で5つ星ホテルに行ってきました。価格はいくらですか

今では、ヨーロッパの豊かな国ではなくポーランドにある場合、特に燃料の場合、約10,000または15,000米ドルですが、実際には100,000ドル以上かかります。今では長い間考えていますが、それは私の足です。多分それが多額のお金を意味すると、あなたは会社で働く動機がないからです

モデレーター:はい、はい

インタビュイー: Googleは最高の才能を引き付けたいので、事前にお金を渡すべきではありません。まあ、それは単なる副次的な問題かもしれません。

モデレーター:過去に数学をよくしますか

インタビュイー:私は高校まで高校の大会に参加しませんでした。情報学の代わりに地図を作成しました。いくつかの国際的なウェブサイトにもアクセスしました。GoogleCodeJamほど大きくはないかもしれませんが、私は最高の1人だと思います。 。ポーランドと多くの競争の激しい人々の1年

プログラミングは数学がとても上手です

モデレーター:はい、コンピューターを勉強したことがない人もいれば、数学や経済学を勉強した人もいますね。

インタビュイー:これらの数学の問題はコーディングの問題と非常に似ています。理解するには、この知識をすべて理解するスキルが必要だと思います。何かが機能することを証明する論理的な意味は似ていると思います。多くの知識が必要です。この知識アルゴリズムにのみ適用されますが、同じ人が両方に適しています。人々は通常、競争力のあるプログラミングカレッジに通っていますが、誰もがまだ若いように見えるために停止します。会社のプログラミングがほとんどないためかもしれません。20年前に存在していました。リストのトップに立ったのはほんの数人で、ICPCコンテストでアイオワの準備をしている場合、または大学で競争が激しく、スキルが特定の会社に行く場合、30人以上のほとんどの人が高校でたくさん勉強します。アルゴリズム。競争力のあるプログラミングは、自分自身を他の人と比較することを学ぶための場所である可能性があり、Googleのような競争はプログラマーの主流になっています。

モデレーター:非常に良いです。Googleはあなたを良い面接に招待するかもしれません。大学を卒業した後、あなたはすでに仕事を持っています。多分あなたは家族なしで始めて、週に数時間練習する時間があります。それならなぜ続けるのですか。

インタビュイー:好きだから好きな人もいると思いますが、それほど多くはありませんが、個人的にはこれらの仕事にしか当てはまらず、勝ちやすいと思います。

モデレーター:面接のコーディングの質問は競技プログラミングの質問に似ていると思いますか、それとも最初の質問について話すほうが簡単ですか?

インタビュイー:競争に勝つことはどれほど簡単ですか?トップ200または500に招待されるために、Googleキックスタートのように勝つ必要があるわけではありません。応募すると言うことができます

他の分野が苦手な方でもすぐに決勝に出場できるので、初めて面接の機会になるかもしれませんが、何千人もの人と比べると認められるチャンスです。問題も同様です。競技プログラミングはもっと難しい必要があるために訓練されることがあるので、競技プログラミングはもっと難しいですが、競技プログラミングにはいくつかの違いしかありません

複雑なアルゴリズムコーディングが必要です。インタビューでは、コンピューターでテストできない質問が寄せられることがあります。たとえば、数千台のコンピューターが並列計算を実行する場合、主催者はそうすることを望まないため、競技プログラミングの問題に対処できません。取得する

プログラムをテストするための数千台のマシン。Googleは、プログラムについて数百台のマシンと競合するように競合他社を組織しましたが、制限は分散型カルチャーコールコーディングインタビューと呼ばれ、他の解決できない問題がある場合もあります。アルゴリズムの発明などの競合プログラミングバイナリ検索で数値を指定すると、配列がソートされているため、競合するプログラミングを使用してテストすることは困難です。配列を取得する必要があるため、コンピュータトラッカーは少なくとも線形の複雑さを必要とします。とにかく、面接中に誰かと話すと、彼らはこれについて何を尋ねるか、メモリを少なくすることができ、一定のメモリを取得しようとするかもしれません。自動的に判断する優れたプログラムは、2つの複雑さを区別できないなどの制限があります。重要なので、すべてのコンテンツがテストされます。欠点は、すべてを区別できることですが、利点もあります。すべてが公平です。目的は、インタビュアーがあなたを好きではないことです。

モデレーター:簡単な質問を評価したほうがいいので、競技プログラミングではそれを行いますか?

インタビュイー:たまたま、対数が小さいため、複雑さが高いほど実際には優れています

モデレーター:申し訳ありませんが、複雑さが増しています。複雑さが増した場合はどうすればよいですか。

インタビュイー: like定数がlikeに対して高すぎるので、より速く、より良いでしょう。より低いコンテキストは、そうです、そうなるかもしれません。いつ競争プログラミングに焦点を合わせるかを理解する必要があります。たとえば、それを理解する必要があります。 hashlibは、値がまだ小さい場合、可能であれば高い定数係数を持ち、それらは適合し、

すべてのコンテンツが常時アクセスされる代わりに配列を使用しますか?これはより高速なので、これは例です。もう一方は理論的に少し複雑かもしれませんが、実際にはnが二乗されていても、非常に小さなデータであるためです。 、nが非常に小さいので、気にする必要はなく、どこかでnを何度も発明する必要がないので、検査中に他の人がコードをチェックしないので、ゲームは正しいです。 、そして彼らはテストすることさえできます、たとえテストが非常に弱いとしても彼らはいくつかの状況をカバーしていません、それはエッジケースかもしれません、またはあなたのアルゴリズムは二次かもしれません、しかしデータがランダムであるとき、いくつかの同様のアルゴリズムがあります、主催者はやろうとします悲観的な実行時間のこの時点までに、彼らはテストケースを作成しようとします。悪意のあるテストケースですが、すべての状況を予測することは必ずしも不可能ではありません。興味深いことに、彼らはカードワークを持っているので、人々はそれを認識しているので勝ちますテストはあまり良くないので、極端な場合もすべてカバーしないようにコードを作成することはできますが、発生する可能性があるため、特にゲームの最後の数分間で勝ちます。これで、次のことができる時間がないことがわかります。それを理解するので、学校で書くなど、可能なことは何でも試してみる必要があります。はい、私はここでランダムに作業しています。CBIは合格する可能性があり、10または100プロジェクトごとに合格します。楽しいでしょうか。今年も直接会うために、これは私のチームが得ることができない私が所有する権利です

競争力のあるプログラミングは、トップのインターネット企業に参加するために必須ですか?Google CodeJamコンテストチャンピオンのインタビュー

 

 

おすすめ

転載: blog.csdn.net/linuxguitu/article/details/112361066