産業用プログラミングにおけるオリンピアードの道

友達、 サーシャ・クプリンのファイナルへの旅、Yandexの知り合い、卒業証書、そして一晩のオフィスでの話を聞いています。 著者の許可を得て、私はあなたと共有しています!


Yandexはオリンピアードのプログラマーに長い間興味を持っています。 2年生の時、ミーシャ・レビンのスピーチであるシャッド・グリゴリー・コンダコフに関する話を聞きました。 ワールドカップ準々決勝および準決勝でTシャツとパンフレットを受け取りました。 しかし、オリンピアード時代だけでは、仕事の質問、さらに追加のトレーニングの質問はまったく心配していませんでした。 さて、とりあえず、とりあえず。



4年目には、州のチーム(Orel STU)がACM ICPCファイナルに進出しました。 控えめに言っても、魅力的な成功でした-結局、私たちは空から星を摘むことはなく、選択は今日よりも深刻でした。 私たちの落ち着きのない喜びに、エジプトで革命が起こり、決勝戦がシャルム・エル・シェイクからアメリカの晴れた州のオーランド市に移されました。



そして、そこで短い会話が起こりました。 ある晩、寒冷地帯で、ダンスユニットについてミーシャレビンとおしゃべりしました。突然、未知のセリョーザチェルニシェフが私のところに来て、Tシャツで決勝の参加者を認識し、「ヤンデックスに行きたいですか?」と尋ねました。 =)



すべてがなんとなく驚くほどシンプルになりました。 いくつかの手紙を広げます。 彼らはある種の官僚制度を確立しました-アンケートに記入し、日付を調整します。 私は1人の正式なボスと複数の本物のボスが同時にいました。



夏のインターンシップスキームは私にぴったりでした。夏の真ん中に到着し、食事と住居を提供し、2か月半トレーニングし、9月末にバードシティに戻り、最終年度を終えて卒業証書を守ります。



おもしろいですが、最初の「仕事」の日は、ShADの閉鎖とYandex.Algorithmの要約と一致しました。 とにかく私はモスクワに来ました。 =)営業日が好きだった。 夕方の4時まで、私は友人と一緒にエクストロポリスのオリンピック選手と遊び、鶏の串焼きを食べました。 建物を離れることなく、「開発部」という重大な碑文が記されたバッジを受け取りました。



一般的に、私は真剣に心配していたことに注意すべきです。 いつ、いつ彼らは私の最初の割り当てをくれますか? 私の貧弱なオリンピックの知識はそれに対処するのに十分でしょうか? 2か月半はかなり長いので、ヨーロッパではギャロップのようなものではないとしても、少なくともテンポワルツモードがオンであると予想していました。



しかし、誰もそれを傷つけませんでした。 そうですね。 レシャ・ミルゾヤンは、さまざまな成功を収めて私を安心させました。「さようなら、何をしているの? 最初の週は、当局、関係者、事務所に精通します。 気にしないでください!」一般的に、一日の終わりはビリヤードまたは音楽室で交互に通過しました。 ;)



最大の驚きは私のハウスメイトでした。 数年にわたりICQの問題について話し合ったサーシャプルダエフは、遠く離れたチュメニから首都に移りました。 そして、彼は私より二日早く仕事に行きました。 それがニュース、それが会議です! 私の他の隣人は、ダニエル・ブルダコフで、非常に頭の良い男でした。 したがって、会社は必要なものを選択しました。 私たちはナゴルナヤから徒歩2分の場所に住んでいて、円形のカルチャーパークが修理のため閉鎖されているという事実を考慮して、道路を片道約40分過ごしました。



翌日、ラップトップが手元にありました。 Windowsで。 人生でLinuxを使用していなかったので、すでに素晴らしい。 ボスは魂でタスクを拾いました。 文書の類似性を比較し、類似性の定義を導入し、それを十分に迅速に行うことを学習する必要がありました-10個以上の文書があるという前提で。



しかし、すべてについて順番に話しましょう。 私はインターンシッププロジェクトのヤブラカダブラで記録されました。彼らはゼロから新しい検索エンジンに従事していました。 それに基づいて、あなたは自信を持ってあらゆる検索エンジンのアーキテクチャを研究および実証し、情報検索などの原理を説明することができます。



理論的には、すべてがそれほど怖くはありませんでした。 実際には怖かったです。 あまりにも多くの不慣れなことが私に降りかかったので、ギターを使う必要すらありませんでした。 今後は、夏のインターンシップの最終日に、上司のメールにコードを送信しましたが、どこかに実装しなかったと言います。 おそらく、これらの行を読んだ経験のある人は、笑いながらお腹を抱えて床を転がります。



すぐに、産業用プログラミングにはOOPと変数名の2つの問題があることに気付きました。 悲しみを半分にし、神の助けを借りて問題を分解し、解決策を見つけました。 連中は、実際には知られていない英語のさまざまな記事、そしてsimhashとminhashについてアドバイスしました。 しかし、本当のオリンピアードは何をすべきでしょうか? もちろん、あなた自身のものを考え出してください! (欠けている唯一のものは、モップ付きの漫画です)。



私は記事を読み、約一週間考えました。 もちろん、環境に精通することをやめることなく。 サシャプルデエフや他のスポーツプログラマーとのコーヒーポイントでの集まりで、きれいなオフィスで就業日が明るくなりました。 それからターニングポイントがありましたが、それを今でも誇りに思っています。解決策を思いつきました。 今覚えているように、それは地下鉄の電車の中にありました。 =)将来的には、実務はそれがアナログよりも悪くないことを確かに示しました。



その結果、最初のレビューで、300行以上のコードで構成される何かを「送信」しました。 私の弁護では、これらの300行以上がタスクを完全に解決したと言えます。 =)



男たちはヒステリーで戦った。 Artyom Babenkoは血まみれの涙で泣き、5回以上は私のコードを受け入れないと言いました。 別の非常に面白い瞬間は、プリントアウト(およびレビューはそれだけでした-私はコードを印刷し、群衆でそれを読みに行きました)「... / cadabra / kpr / hash.cpp」のようなパスが上に示されていることでした 対応する質問に適切に回答し、Artyomは長い間、そして定期的に涙を流しながらCuprinhashを思い出しました。 [Alex_KPRは私のニックネームです]。



その後、私のコードが成長し、拡大しました。 機能が変わらなかったことを考えると、なんとなく愚かで奇妙なものでした。 すぐに5回疲れ果て、別のボスであるYegor Samosvatがかなりの時間を私と過ごしました。 私は馬鹿のように感じ、賢く見えないという事実にもかかわらず、私は何が起こっているのが好きでした。 実際、私は快適な状態と戦闘状態の両方で勉強しました。



夏のインターンシップの楽しさを伝えるために、軽くて良いもの(取り消し線)を持って来るために、ヤンデックスから行くように頼まれた夏のペトロザヴォーツクトレーニングキャンプの時間でした。 人々はあまり喜んで反応しなかったので、私はジュニアコースで自分自身を思い出しました。本物のオリンピアードはオリンピアードのタスクを無限に処理します。 紳士、あなたの時間は来ます。 ;)



それまでの間、ベラルースカヤの別のアパートに移動しました。 Park Kultury駅はまだ閉鎖されており、インターンシップの2か月目の終わりまでに、政権はついに立ち去りました。 1日1時間半は道路で過ごすにはあまりにも面倒だったので、私はオフィスで24時間近く過ごし、柔らかい会議室、ハンモック、プーフで寝ました。 本当に素晴らしかった。 私は音楽室で多くの時間を過ごすことができました-夜、シンセサイザーとギターを苦しめました。 夜、オフィスを歩き回って警備員を当惑させましたが、なんと雰囲気です!



一方、作業はゆっくりと終わりました。 「Kuprinhash」は新しい名前を取得しました。FirstLetterHashは1つのファイルから1ダースに成長し、同じインターフェースを持つ新しい機能と兄弟を持ち、「存在の問題」に関する統計が収集されました。



全体的に私が管理したように思えます。 可能な限り素晴らしいものではありませんが、管理されています。 連絡先を失うことのないように、彼らは私を冬のどこかに遠く連れて行くと約束した。



そして、彼の母国の大学では、論文のトピックに関する議論と戦いが本格的でした。 Yandexのメンバーと事前に合意したので、卒業証書の監督者にFirstLetterHashの無限の哀れみと実用性を納得させることができました。 だから、ある意味では、私はポケットに卒業証書を持っていた-それは説明のメモに水を注ぐために残っていますが、それは数週間の問題であることが判明しました。



2月1日、私は再び「出かけ」ました。 これは、git、パテ、および他の多くの未知の人生の喜びを必要としていた場所です。 ミッションは再びクールであることが判明しました。 今回は、スニペットを作成するためにキーワードが必要でした。これは、多くのキーワードを同時に含み、フレーズをカットするのではなくドキュメントからの抽出物として知覚されるソーステキストの断片の小さな接着です。



ダイナミックプログラミングが助けになります! 今回の解決策はほとんど表面にあることが判明し、問題は時間とメモリの制限でした。 2時間の勤務日は嫌な形式であることが判明したため、通常は1か月に1週間を選択し、その間は実りある仕事をし、残りの時間はビジネスに取り組みました。



自分のデバイスに任せられているように感じ、とてもリラックスできました。 そして、私は正直にタスクを完了し、テストし、コミットしましたが、フリーロードしたようです。 作業の90%が完了した4月から5月のどこかで、妥当なタスクが終了しました。ここでは、ロジックはかなり単純でした。新しい大きなタスクに対処する時間はありませんが、まだ時間があります。



卒業証書を成功裏に防衛した後、Yandex ShADと組み合わせたプログラムでHSEの行政に参加しました。つまり、実際に一度に2か所で勉強しました。 思いやりのあるHSEは、Dubkiと呼ばれる静かで居心地の良い森の村に将来のマスターを定住させました。 ほぼすぐに、私は1日5時間をパートタイムの勤務日とオフィスの近くに住んでいる時間と交換できるという結論に達しました。



すぐに素晴らしい機会が生まれました。ShADの出口で、ACM ICPCの金メダリストである友人のPasha Shishkinが、Yandex.Picturesが開発者を探していると発表しました。 ほら、これが私のチャンスです!



すぐにインタビューが行われ、「純粋な悪c ++テスト2」と呼ばれるテストの質問に非常に困難に答えました。何らかの理由で、2回目の試行で理論の単純なタスクを正しく解決しましたが、一方で、産業的なスタイルでアルゴリズムタスクを書くことでそれをすばやく殺しました。



確かに、パートタイムのポジションはありませんでした-フルタイムのみ。 しかし、おそらくこれはさらに優れています。 私は10月1日から写真を撮り続けています。ちょうど5か月が過ぎました。 そして、内なる感覚によると、すべてが本当に素晴らしいです。



それで、1回の短い会話で、オリンピックの産業用プログラミングへの道が始まりました。 そして、これはほんの始まりに過ぎないと確信しています。 だから、みんな、先に進んで、勉強して、訓練して、すべてが確かにうまくいくでしょう!



All Articles