تجربه شرکت در مسابقه برنامه نویسی گوگل Google Code Jam 2017 و دعوت به شرکت در Google Code Jam 2018

اگه چالش برنامه نویس بودن رو دوس دارین؟ و میخواین با حل الگوریتم حسش کنین؟ اگه میخواین خودتون رو محک بزنین و مسئله و الگوریتم هایی رو در فضای رقابتی با هزاران نفر از سراسر دنیا بصورت آنلاین حل کنین و از اینکه تونستین یه الگوریتم با زمان اجرای بهینه برای مسئله ای که توسط کارشناسان گوگل نوشته شده رو حل کنین و امتیاز بگیرین؟ حتی شاید بتونین جایزه برنده بشین و استخدام گوگل هم بشین! :)))
بهتون توصیه می کنم در این مسابقه برنامه نویسی شرکت کنین :)

من خودم برحسب علاقه م سال قبل 2017 در این مسابقه ثبت نام کردم (البته قبل از اون هم سابقه شرکت در مسابقه برنامه نویسی اندروید گوگل، و همچنین شرکت در مسابقه برنامه نویسی شرکت اپل رو هم داشتم : بزودی شاید راجبشون بنویسم البته داخل کانال تلگرامم گذاشتم
https://t.me/Hamed_jaliliani<br/>ولی متاسفانه با توجه به مشکلی که برامون پیش اومد(تصادف) بیشتر وقت رو از دست دادم و تازه با ایمیل گوگل فهمیدم اون روز مسابقه در حال برگزاری هست!
حالا با وقتی هم که داشتم تونستم یه بخش از یه مسئله رو حل کنم و امتیازش رو بگیرم که همونم برام جالب بود ( 5 امتیاز) در ادامه توضیحات در خصوص مسابقه و تجربیات خودم رو به اشتراک میزارم.

توضیحات مسابقه:

1- برای ثبت نام در مسابقه میتونید به لینک زیر برید https://code.google.com/codejam/

2-شرکت در مسابقه برای ایرانی ها هم امکان پذیره و اگه جایی دیدن که صفحه عدم دسترسی میاره از قندشکن استفاده کنین

3-هزینه نداره و رایگان هست

4-تمام مراحل مسابقه بصورت آنلاین هست بجز مرحله آخر که شرکت کنندگان رو به یکی از شعب گوگل دعوت میکنن(با هزینه گوگل) و اونجا مرحله اخر برگزار میشه! امسال 2018 در شعبه گوگل Toronto, Canada هستش.

5-به نفرات برتر جایزه $15,000 پرداخت میشه! با امکان استخدام توی گوگل و..

6-مسابقه شامل چندین مرحله هست که در هر مرحله تعدادی مسئله در اختیارتون قرار می گیره که باید ضمن رعایت نکات مسابقه در خصوص نوشتن کد مربوطه اقدام کنین!

7-مرحله ابتدایی که اسمش Qualification Round هست در Friday, April 6 at 23:00 UTC شروع میشه و 27hr وقت میدن برای حل حدود 5 تا مساله که هرکدومش دارای 2 نوع ورودی کوچک و بزرگ هست!

8- من سال قبل با زبان #C در مسابقه شرکت کردم! ولی امسال میخوام با Java کد بزنم! در انتخاب زبان برنامه نویسی دستتون باز هست تقریبا و میتونید طبق مهارتتون اقدام کنید.

9- برای هر سوال پس از نوشتن کد سوال بهتون 2 نوع فایل ورودی میدن که باید بدی به برنامه ت و در برنامه در سریع ترین زمان ورودی ها رو از فایل ها بخونه و فایل خروجی رو تولید کنه! فایل سورس کد رو بهمراه فایل نمونه خروجی ارسال می کنید برای گوگل! که بهشون میگن Small input و large input .

10- توصیه میشه الگوریتم برنامه رو برای داده های بزرگ پیاده سازی کنین که برای هر جور ورودی جواب بده و مجبور به نوشتن 2 تا برنامه با ساختار متفاوت وصرف زمان زیاد برای یک مسئله یکسان نشید.

11- تسلط کافی به مفاهیم ساختمان داده و طراحی و پیاده سازی الگوریتم برای پیاده سازی مسئله در زمان بهینه رو اینجا خیلی احساس می کنین در طی مسابقه.

12- می تونید نمونه سوالات سال قبل رو اینجا ببینید: https://codejam.withgoogle.com/codejam/contest/3264486/dashboard#s=p2

13- اشتباهات من رو تکرار نکنید:
الف) حتما شرایط مسابقه رو قبلش اینجا https://codejam.withgoogle.com/codejam/terms بخونین که با روند و مراحل و ... آشنا بشین و متوجه بشین Small input و.. یعنی چی و مثل من کلی وقت تلف نکنین حین اجرای مسابقه برا فهمیدن خیلی از قوانین و جزییات!

ب) با حل کردن سوالات با بیشترین امتیاز شروع کنین! و صرفا بدلیل چینش سوالات از اولی شروع نکین که ممکنه وقت زیادی بزارین و امتیاز کمتری داشته باشه!

پ) هربار روی یک سوال تمرکز کنید. همزمان روی نوشتن کد برای چند تا سوال کار نکنید که هم تمرکزتون رو از دست می دید و هم با بازکردن چند instance از محیط برنامه نویسی باعث کند شدن و هنگ کردن سیستمتون میشه!
ت) با اعلام آمادگیتون برای ارسال جواب ! گوگل بهتون فایل ورودی رو میده و یه ددلاین میده که کدتون رو تست کنید و خروجی رو ارسال کنید براشون! به این ددلاین ها توجه کنید.

ث) حتما قبلش سوالات دوره های قبلی رو ببینین و سعی کنین نسبت به حل اون ها و تمرین اقدام کنین که آشنایی کافی پیدا کنین.

و در آخر امیدوارم تجربه موفقیتتون رو بزودی بشنویم :)