چگونه برای مصاحبه در گوگل آماده شویم و در آن شکست بخوریم؟ دو برابر

چگونه برای مصاحبه در گوگل آماده شویم و در آن شکست بخوریم؟ دو برابر

عنوان مقاله مانند شکست حماسی به نظر می رسد، اما در واقعیت همه چیز به این سادگی نیست. و به طور کلی، این داستان بسیار مثبت پایان یافت، البته نه در گوگل. اما این موضوع برای مقاله دیگری است. در همین مقاله، من در مورد سه چیز صحبت خواهم کرد: روند آماده سازی من چگونه پیش رفت، مصاحبه ها در گوگل چگونه انجام شد، و چرا، به نظر من، همه چیز آنقدر که به نظر می رسد واضح نیست.

همه اینا چطور شروع شد

در یک غروب سرد زمستانی قبرس، ناگهان این فکر به ذهنم خطور کرد که دانش من از علوم کامپیوتر کلاسیک خیلی از حد متوسط ​​فاصله دارد و باید کاری در مورد آن انجام شود. اگر، اتفاقا، کسی هنوز نخوانده است که چرا عصر قبرسی و سرد است، پس می توانید در مورد آن بدانید اینجا. پس از اندکی تفکر، تصمیم گرفته شد که با گذراندن دوره آنلاین الگوریتم ها و ساختارهای داده شروع کنیم. از یکی از همکاران سابقم درباره دوره آموزشی رابرت سجویک در کورسرا شنیدم. دوره شامل دو بخش است (قسمت 1 и قسمت 2). اگر به طور ناگهانی پیوندها تغییر کردند، همیشه می توانید نام نویسنده را در گوگل جستجو کنید. هر قسمت 6 هفته طول می کشد. سخنرانی ها در ابتدای هفته برگزار می شود و در طول هفته همچنان باید تمرینات را انجام دهید. بخش اول این دوره ساختارهای داده پایه، انواع پایه مرتب سازی و پیچیدگی الگوریتم ها را پوشش می دهد. بخش دوم در حال حاضر پیشرفته تر است، با نمودارها شروع می شود و با مواردی مانند برنامه ریزی خطی و غیرقابل تحمل پایان می یابد. پس از فکر کردن به تمام موارد بالا، به این نتیجه رسیدم که این دقیقا همان چیزی است که من به آن نیاز دارم. به هر حال، یک خواننده کنجکاو ممکن است بپرسد که گوگل چه ربطی به آن دارد؟ و در واقع، تا این لحظه او اصلاً کاری با آن نداشت. اما من به یک هدف نیاز داشتم، زیرا مطالعه 12 هفته در عصرها بدون هدف تا حدودی دشوار است. هدف از کسب دانش جدید چه می تواند باشد؟ البته کاربرد آنها در عمل. در زندگی روزمره این کاملاً مشکل ساز است، اما در طول مصاحبه با یک شرکت بزرگ آسان است. یک گوگل سریع نشان داد که گوگل (می‌بخشید تاوتولوژی) یکی از بزرگترین شرکت‌های اروپا (و من به طور خاص به اروپا نگاه می‌کردم) است که چنین مصاحبه‌هایی را انجام می‌دهد. یعنی دفتر آنها در زوریخ سوئیس واقع شده است. بنابراین تصمیم گرفته شده است - بیایید مطالعه کنیم و برای مصاحبه در Google برویم.

آماده شدن برای اولین رویکرد

12 هفته به سرعت گذشت و من هر دو دوره را تمام کردم. برداشت من از دوره ها بیش از مثبت است و می توانم آنها را به هر علاقه مندی توصیه کنم. من دوره ها را به دلایل زیر دوست داشتم:

  • مدرس انگلیسی نسبتاً واضح صحبت می کند
  • مواد به خوبی ساختار یافته است
  • ارائه های زرق و برق دار که درون هر الگوریتم را نشان می دهد
  • انتخاب مناسب مواد
  • تمرینات جالب
  • تمرین ها به صورت خودکار در سایت بررسی می شوند و پس از آن گزارشی تولید می شود

کار من در دوره ها معمولا به این شکل پیش می رفت. من سخنرانی ها را در 1-2 روز گوش دادم. سپس آنها یک آزمون سریع از دانش خود را در مورد مواد. بقیه هفته تمرین را در چندین تکرار انجام دادم. بعد از اولی که 30-70% گرفتم، موارد بعدی نتیجه را به 97-100% رساندند. این تمرین معمولاً شامل اجرای برخی الگوریتم‌ها می‌شود، به عنوان مثال. کنده کاری درز یا bzip.

بعد از گذراندن دوره ها متوجه شدم که دانش زیاد همراه با غم و اندوه فراوان است. اگر قبلاً به سادگی می دانستم که چیزی نمی دانم، اکنون متوجه شدم که این من بودم که نمی دانستم.

از آنجایی که فقط اردیبهشت ماه بود و مصاحبه را برای پاییز قرار دادم، تصمیم گرفتم ادامه تحصیل بدهم. پس از بررسی شرایط لازم برای جای خالی، تصمیم گرفته شد که به طور موازی به دو جهت ادامه دهیم: ادامه مطالعه الگوریتم ها و گذراندن یک دوره ابتدایی در یادگیری ماشین. برای اولین هدف، تصمیم گرفتم از دوره ها به کتاب تغییر دهم و اثر تاریخی استیون اسکینا "الگوریتم ها" را انتخاب کردم. کتابچه راهنمای طراحی الگوریتم نه به اندازه آثار نات، اما همچنان. برای گل دوم به کورسرا برگشتم و در دوره اندرو نگ ثبت نام کردم. فراگیری ماشین.

3 ماه دیگر گذشت و دوره و کتاب را تمام کردم.

بیایید با کتاب شروع کنیم. خواندن بسیار جالب بود، اگرچه آسان نبود. در اصل، من کتاب را توصیه می کنم، اما نه فورا. به طور کلی، کتاب نگاه عمیق تری به آنچه در این دوره آموختم ارائه می دهد. به علاوه، من (از دیدگاه رسمی) چیزهایی مانند اکتشافی و برنامه نویسی پویا را کشف کردم. طبیعتاً قبلاً از آنها استفاده کرده بودم، اما نمی دانستم نام آنها چیست. این کتاب همچنین حاوی تعدادی داستان از زندگی نویسنده (داستان جنگ) است که تا حدودی ماهیت آکادمیک ارائه را کمرنگ می کند. به هر حال، نیمه دوم کتاب را می توان حذف کرد، بلکه حاوی شرحی از مشکلات موجود و روش های حل آنها است. اگر به طور منظم در عمل استفاده شود مفید است، در غیر این صورت بلافاصله فراموش می شود.

من از دوره راضی بودم. نویسنده به وضوح مطالب خود را می داند و به شیوه ای جالب صحبت می کند. به علاوه مقدار زیادی از آن، یعنی جبر خطی و اصول اولیه شبکه های عصبی را از دانشگاه به یاد آوردم، بنابراین هیچ مشکل خاصی را تجربه نکردم. ساختار دوره کاملا استاندارد است. دوره به هفته تقسیم می شود. هر هفته سخنرانی هایی همراه با تست های کوتاه وجود دارد. بعد از سخنرانی ها، یک تکلیف به شما داده می شود که باید انجام دهید، ارسال کنید و به طور خودکار بررسی می شود. به طور خلاصه، لیست موارد تدریس شده در دوره به شرح زیر است:
- تابع هزینه
- رگرسیون خطی
- نزول شیب
- مقیاس بندی ویژگی
- معادله نرمال
- رگرسیون لجستیک
- طبقه بندی چند طبقه (یک در برابر همه)
- شبکه های عصبی
- پس انتشار
- منظم سازی
- تعصب / واریانس
- منحنی های یادگیری
- معیارهای خطا (دقت، فراخوان، F1)
- ماشین‌های بردار پشتیبانی (طبقه‌بندی حاشیه بزرگ)
- K-یعنی
- تجزیه و تحلیل اجزای اصلی
- تشخیص ناهنجاری
- فیلتر مشارکتی (سیستم توصیه کننده)
- نزول های تصادفی، مینی دسته ای، شیب دسته ای
- یادگیری آنلاین
- کاهش نقشه
- تحلیل سقف
پس از اتمام دوره، درک درستی از همه این موضوعات وجود داشت. بعد از 2 سال تقریباً همه چیز به طور طبیعی فراموش شد. من آن را به کسانی توصیه می کنم که با یادگیری ماشین آشنایی ندارند و می خواهند به درک خوبی از چیزهای اساسی دست یابند.

اولین اجرا

ماه سپتامبر بود و وقت آن بود که به مصاحبه فکر کنیم. از آنجایی که درخواست از طریق سایت بسیار فاجعه آمیز است، شروع به جستجوی دوستانی کردم که در گوگل کار می کنند. انتخاب افتاد datacompboy، زیرا او تنها کسی بود که مستقیماً می شناختم (حتی اگر شخصاً نباشد). او موافقت کرد که رزومه‌ام را فوروارد کند، و به زودی نامه‌ای از استخدام‌کننده دریافت کردم که پیشنهاد می‌کرد برای اولین مکالمه یک جای تقویمش رزرو کنم. چند روز بعد تماس برقرار شد. ما سعی کردیم از طریق Hangouts ارتباط برقرار کنیم، اما کیفیت وحشتناک بود، بنابراین به تلفن تغییر دادیم. اول، ما به سرعت در مورد استاندارد چگونه، چرا و چرا بحث کردیم و سپس به غربالگری فنی رفتیم. این شامل ده ها سوال با روحیه "مشکل قرار دادن در نقشه هش چیست"، "چه درختان متعادلی را می شناسید" بود. اگر دانش اولیه ای در مورد این موارد داشته باشید کار سختی نیست. غربالگری به خوبی انجام شد و بر اساس نتایج، تصمیم گرفتند اولین مصاحبه را در یک هفته ترتیب دهند.

این مصاحبه همچنین از طریق Hangouts انجام شد. ابتدا حدود 5 دقیقه در مورد من صحبت کردند، سپس به سراغ مشکل رفتند. مشکل در نمودار بود. من به سرعت متوجه شدم که چه کاری باید انجام شود، اما الگوریتم اشتباهی را انتخاب کردم. وقتی شروع به نوشتن کد کردم متوجه این موضوع شدم و به گزینه دیگری رفتم که آن را تکمیل کردم. مصاحبه کننده چندین سوال در مورد پیچیدگی الگوریتم پرسید و پرسید که آیا می توان آن را سریعتر انجام داد. به نوعی کسل شدم و نتوانستم این کار را انجام دهم. در این مرحله زمان به پایان رسید و ما خداحافظی کردیم. سپس، پس از حدود 10 دقیقه، متوجه شدم که به جای الگوریتم Dijkstra که استفاده کردم، در این مشکل خاص می توانم از جستجوی عرضی استفاده کنم و سریعتر خواهد بود. پس از مدتی، استخدام کننده تماس گرفت و گفت که مصاحبه در کل به خوبی انجام شد و باید مصاحبه دیگری ترتیب داده شود. یک هفته دیگر توافق کردیم.

این بار اوضاع بدتر شد. اگر اولین بار مصاحبه کننده دوستانه و اجتماعی بود، این بار تا حدودی عبوس بود. من نتوانستم فوراً مشکل را بفهمم، اگرچه ایده هایی که به ذهنم رسید در اصل می تواند به حل آن منجر شود. در نهایت، پس از چندین بار تذکر مصاحبه کننده، راه حل به من رسید. این بار فقط از چند نقطه، دوباره یک جستجوی گسترده بود. راه حل ها را نوشتم، به موقع با آنها ملاقات کردم، اما موارد لبه را فراموش کردم. پس از مدتی، استخدام کننده تماس گرفت و گفت که این بار مصاحبه کننده ناراضی است، زیرا به نظر او به نکات زیادی (3 یا 4 قطعه) نیاز داشتم و مدام در حین نوشتن کد را تغییر می دادم. بر اساس نتایج دو مصاحبه، تصمیم گرفته شد که جلوتر نروم، اما اگر بخواهم مصاحبه بعدی را یک سال به تعویق بیندازم. برای همین خداحافظی کردیم.

و از این داستان چندین نتیجه گرفتم:

  • تئوری خوب است، اما باید به سرعت آن را مرور کنید
  • تئوری بدون تمرین کمکی نخواهد کرد. ما باید مشکلات را حل کنیم و کدگذاری را به حالت خودکار برسانیم.
  • خیلی چیزها به مصاحبه گر بستگی دارد. و هیچ کاری نمی توان در مورد آن انجام داد.

آماده شدن برای اجرای دوم

پس از فکر کردن به وضعیت، تصمیم گرفتم یک سال دیگر دوباره تلاش کنم. و کمی هدف را ویرایش کرد. اگر قبلاً هدف اصلی مطالعه بود و مصاحبه در گوگل مانند هویج دور بود، اکنون قبولی در مصاحبه هدف بود و مطالعه وسیله.
بنابراین طرح جدیدی تدوین شد که شامل نکات زیر بود:

  • با مطالعه کتاب و مقاله به مطالعه تئوری ادامه دهید.
  • حل مسائل الگوریتمی به مقدار 500-1000 قطعه.
  • با تماشای ویدیو به یادگیری تئوری ادامه دهید.
  • مطالعه تئوری را از طریق دوره ها ادامه دهید.
  • تجربیات دیگران از مصاحبه‌ها را در گوگل مطالعه کنید.

من طرح را در عرض یک سال کامل کردم. در ادامه توضیح خواهم داد که دقیقاً برای هر یک از نقاط چه کاری انجام دادم.

کتاب ها و مقالات

من حتی تعداد مقالاتی را که خواندم به خاطر ندارم؛ آنها را هم به روسی و هم به انگلیسی خواندم. شاید مفیدترین سایت باشد این. در اینجا می توانید شرح تعداد زیادی از الگوریتم های جالب را با مثال های کد بیابید.

من 5 کتاب خواندم: الگوریتم‌ها، ویرایش چهارم (Sedgewick، Wayne)، مقدمه‌ای بر الگوریتم‌ها ویرایش 4 (Cormen، Leiserson، Rivest، Stein)، Cracking the Coding مصاحبه ویرایش چهارم (Gayle Laakmann)، مصاحبه‌های برنامه‌نویسی Exposure 3nd Suejan ، گیگر)، عناصر مصاحبه های برنامه نویسی (عزیز، لی، پرکاش). آنها را می توان به 4 دسته تقسیم کرد. اولی شامل کتاب های سدویک و کورمن است. این یک نظریه است. بقیه آماده شدن برای مصاحبه است. Sedgwick در مورد همان چیزی که در دوره های خود در کتاب می گوید. فقط به صورت مکتوب اگر این دوره را گذرانده اید، خواندن دقیق آن فایده ای ندارد، اما به هر حال ارزش آن را دارد. اگر دوره را ندیده اید، خواندن آن منطقی است. کورمن به نظرم خیلی خسته کننده بود. راستش را بخواهید در تسلط بر آن مشکل داشتم. همین الان از اونجا بیرون آوردمش تئوری استادو چندین ساختار داده که به ندرت استفاده می شوند (هپ فیبوناچی، درخت وان امده بواس، پشته ریشه).

خواندن حداقل یک کتاب برای آماده شدن برای مصاحبه ارزش دارد. همه آنها تقریباً بر اساس یک اصل ساخته شده اند. آنها فرآیند مصاحبه را در شرکت های بزرگ فناوری توصیف می کنند، چیزهای اساسی از علوم کامپیوتر، مشکلات این موارد اساسی، راه حل مشکلات و تجزیه و تحلیل راه حل ها را ارائه می دهند. از سه مورد فوق، احتمالاً Cracking the Coding Interview را به عنوان اصلی توصیه می کنم و بقیه اختیاری هستند.

مسائل الگوریتمی

این احتمالاً جالب ترین نقطه آماده سازی بود. البته می توانید بنشینید و مشکلات را احمقانه حل کنید. سایت های مختلفی برای این کار وجود دارد. من عمدتا از سه استفاده کردم: هکرنک, کدشف и LeetCode. در CodeChef، مشکلات بر اساس سختی تقسیم می شوند، اما نه بر اساس موضوع. در Hackerrank هم از نظر پیچیدگی و هم از نظر موضوع.

اما همانطور که بلافاصله متوجه شدم، راه جالب تری وجود دارد. و اینها مسابقات (چالش های برنامه نویسی یا مسابقات برنامه نویسی) هستند. هر سه سایت آنها را ارائه می دهند. درست است، مشکلی در LeetCode وجود دارد - یک منطقه زمانی نامناسب. به همین دلیل من در این سایت شرکت نکردم. Hackerrank و CodeChef تعداد نسبتا زیادی از مسابقات مختلف را ارائه می دهند که از 1 ساعت تا 10 روز طول می کشد. فرمت های مختلف قوانین متفاوتی دارند، اما ما می توانیم برای مدت طولانی در مورد آن صحبت کنیم. نکته اصلی که چرا مسابقات خوب هستند، وارد کردن یک عنصر رقابتی (و دوباره توتولوژی) در فرآیند یادگیری است.

در مجموع در 37 مسابقه در Hackerrank شرکت کردم. از این تعداد، 32 مورد رتبه بندی بودند، و 5 مورد یا اسپانسر شدند (حتی در یکی از آنها 25 دلار دریافت کردم) یا برای سرگرمی. در رتبه بندی 10 بار در 4 درصد برتر، 11 بار در 12 درصد برتر و 5 بار در 25 درصد برتر قرار گرفتم. بهترین نتایج 27/1459 در 3 ساعت و 22/9721 در هفته بود.

زمانی که Hackerrank کمتر میزبان مسابقات شد، به CodeChef تغییر مکان دادم. در مجموع موفق به شرکت در 5 مسابقه شدم. بهترین امتیاز در مسابقات ده روزه 426/5019 بود.

در مجموع، در مسابقات و همینطور، کمی بیش از 1000 مشکل را حل کردم که در برنامه قرار گرفت. در حال حاضر متأسفانه وقت آزاد برای ادامه فعالیت های رقابتی وجود ندارد، همانطور که هیچ هدفی وجود ندارد که بتوان زمان غیر آزاد را به خاطر آن حذف کرد. اما سرگرم کننده بود. توصیه می کنم علاقه مندان به این کار افراد همفکر خود را پیدا کنند. با هم یا در یک گروه بسیار جالب تر است. من با یکی از دوستانم از این کار لذت بردم، پس شاید خوب پیش رفت.

تماشای فیلم

پس از خواندن کتاب اسکینا، به کاری که او انجام می داد علاقه مند شدم. او نیز مانند سدویک استاد دانشگاه است. در همین راستا، ویدئوهای دوره های او را می توان به صورت آنلاین یافت. تصمیم گرفتم دوره را مرور کنم COMP300E - چالش های برنامه نویسی - 2009 HKUST. نمی توانم بگویم که خیلی دوستش داشتم. اول اینکه کیفیت فیلم خیلی خوب نیست. ثانیاً من سعی نکردم مشکلات مطرح شده در دوره را خودم حل کنم. بنابراین نامزدی خیلی زیاد نبود.
همچنین در حین حل مسائل و تلاش برای یافتن الگوریتم مناسب با ویدیوی توشار روی مواجه شدم. او در آمازون کار می کرد و اکنون در اپل کار می کند. همانطور که بعداً برای خودم فهمیدم، او دارد کانال یوتیوب، جایی که او تحلیلی از الگوریتم های مختلف را ارسال می کند. در زمان نگارش این مقاله، این کانال شامل 103 ویدیو است. و باید بگویم که تحلیل او بسیار خوب انجام شد. سعی کردم نویسندگان دیگر را تماشا کنم، اما به نوعی کار نکرد. بنابراین من قطعا می توانم این کانال را برای مشاهده توصیه کنم.

گذراندن دوره ها

من اینجا کار خاصی نکردم ویدیویی از Nanodegree توسعه‌دهنده اندروید گوگل را تماشا کردم و دوره‌ای را از ITMO گذراندم چگونه در مسابقات کدنویسی برنده شویم: اسرار قهرمانان. Nanodegree بسیار خوب است، اگرچه من طبیعتاً چیز جدیدی از آن یاد نگرفتم. دوره از ITMO از نظر تئوری کمی کج است، اما مشکلات جالب بودند. من شروع کردن با آن را توصیه نمی کنم، اما در اصل زمان به خوبی صرف شده بود.

از تجربیات دیگران درس بگیرید

البته افراد زیادی سعی کردند وارد گوگل شوند. برخی متوجه شدند، برخی نه. برخی در این باره مقالاتی نوشته اند. از چیزهای جالبی که احتمالاً ذکر خواهم کرد این یکی и این یکی. در مورد اول، فرد برای خودش فهرستی از چیزهایی که برای تبدیل شدن به یک مهندس نرم افزار و ورود به گوگل باید یاد بگیرد، آماده کرد. در نهایت در آمازون به پایان رسید، اما این دیگر آنقدر مهم نیست. کتابچه راهنمای دوم توسط مهندس گوگل، لاریسا آگارکووا (لار). علاوه بر این سند، می توانید مطالعه کنید وبلاگ او.

خواندن نظرات مصاحبه ها در Glassdoor منطقی است. همه آنها کم و بیش شبیه به هم هستند، اما می توانید اطلاعات مفیدی به دست آورید.

من پیوندی به سایر مقالات کوچک ارائه نمی کنم؛ شما می توانید آنها را به راحتی در Google پیدا کنید.

اجرای دوم

و حالا یک سال گذشت. از نظر مطالعاتی بسیار شدید بود. اما من با دانش نظری بسیار عمیق تر به پاییز جدید نزدیک شدم و مهارت های عملی را توسعه دادم. هنوز چند هفته تا پایان سالی که برای آماده سازی در اختیار من قرار داده شده بود باقی مانده بود، که ناگهان نامه ای از طرف یک استخدام کننده از گوگل به ایمیل فرستاده شد که در آن از من پرسید که آیا هنوز تمایلی به کار در گوگل دارم و می خواهم بدم میاد باهاش ​​حرف بزنم طبیعتاً بدم نمی آمد. قرار گذاشتیم تا یک هفته دیگر تماس بگیریم. همچنین از من یک رزومه به روز شده خواستند که شرح مختصری از کارهایی که در طول سال در محل کار و به طور کلی انجام داده ام را به آن اضافه کردم.

پس از برقراری ارتباط مادام العمر، تصمیم گرفتیم که یک هفته دیگر مانند سال گذشته یک مصاحبه Hangout داشته باشیم. یک هفته گذشت زمان مصاحبه فرا رسید اما مصاحبه کننده حاضر نشد. 10 دقیقه گذشت، داشتم عصبی می شدم که ناگهان یکی وارد چت شد. همانطور که کمی بعد مشخص شد، مصاحبه کننده من به دلایلی نتوانست ظاهر شود و فوراً جایگزینی برای او پیدا شد. فرد هم از نظر راه اندازی کامپیوتر و هم از نظر انجام مصاحبه تا حدودی آمادگی نداشت. اما بعد همه چیز خوب پیش رفت. من مشکل را به سرعت حل کردم، توضیح دادم که در آن دام ها ممکن است، و چگونه می توان آنها را دور زد. ما چندین نسخه مختلف از مسئله و پیچیدگی الگوریتم را مورد بحث قرار دادیم. سپس 5 دقیقه دیگر صحبت کردیم، مهندس برداشت خود را از کار در مونیخ به ما گفت (ظاهراً جایگزین فوری در زوریخ پیدا نکردند) و سپس از هم جدا شدیم.

در همان روز کارگزینی با من تماس گرفت و گفت که مصاحبه به خوبی پیش رفته است و حاضرند من را برای مصاحبه در دفتر دعوت کنند. روز بعد از طریق Hangouts تماس گرفتیم و درباره جزئیات صحبت کردیم. از آنجایی که باید برای ویزا اقدام می کردم، تصمیم گرفتیم یک ماه دیگر برای مصاحبه برنامه ریزی کنیم.

در حالی که داشتم مدارک را آماده می کردم، همزمان در مورد مصاحبه آتی با استخدام کننده صحبت کردم. یک مصاحبه استاندارد در گوگل شامل 4 مصاحبه الگوریتمی و یک مصاحبه طراحی سیستم است. اما، از آنجایی که برای کار به عنوان توسعه دهنده اندروید درخواست می دادم، به من گفته شد که بخشی از مصاحبه مختص اندروید خواهد بود. من نمی‌توانستم آن را از استخدام‌کننده بی‌تفاوت کنم که دقیقاً چه چیزی و چه مشخصاتی دارد. تا جایی که من متوجه شدم این نسبتاً اخیراً مطرح شده است و خودش هم زیاد آگاه نبود. من همچنین برای دو جلسه آموزشی ثبت نام کردم: نحوه قبولی در مصاحبه الگوریتمی و نحوه قبولی در مصاحبه طراحی سیستم. جلسات در حد متوسط ​​بود. در آنجا نیز هیچ کس نتوانست به من بگوید که از توسعه دهندگان اندروید چه می پرسند. بنابراین، آمادگی من برای این ماه به موارد زیر خلاصه شد:

  • خرید یک تابلو نشانگر و نوشتن 2-3 دوجین از محبوب ترین الگوریتم ها روی آن از حافظه. هر روز 3-5 عدد. در مجموع هر کدام چندین بار نوشته شده است.
  • حافظه خود را از اطلاعات مختلف در Android که هر روز استفاده نمی کنید، تازه کنید
  • تماشای چند ویدیو درباره Big Scale و مواردی از این قبیل

همانطور که قبلاً گفتم همزمان در حال تهیه مدارک برای سفر بودم. برای شروع از من اطلاعاتی خواستند تا دعوت نامه تهیه کنند. سپس برای مدت طولانی تلاش کردم تا بفهمم چه کسی در قبرس ویزای سوئیس را صادر می کند، زیرا سفارت سوئیس به این موضوع رسیدگی نمی کند. همانطور که مشخص شد، کنسولگری اتریش این کار را انجام می دهد. زنگ زدم و قرار گذاشتم. آنها یکسری مدارک خواستند، اما چیز خاصی جالب نبود. عکس، پاسپورت، اجازه اقامت، یک سری گواهی های مختلف و البته دعوت نامه. در ضمن نامه نرسید. در نهایت با یک پرینت معمولی رفتم و خیلی خوب کار کرد. خود نامه 3 روز بعد رسید و فدرال اکسپرس قبرس نتوانست آدرس من را پیدا کند و من مجبور شدم خودم بروم آن را دریافت کنم. در همان زمان، من یک بسته از همان فدکس دریافت کردم که آنها نیز نتوانستند به من تحویل دهند، زیرا آدرس را پیدا نکردند و از ژوئن (5 ماهگی، کارل) آنجا بود. از آنجایی که من در مورد آن نمی دانستم، طبیعتاً، تصور نمی کردم که آنها آن را داشته باشند. من ویزای خود را به موقع دریافت کردم و پس از آن برایم هتل رزرو کردند و گزینه های پرواز را به من پیشنهاد دادند. من گزینه ها را برای راحت تر کردن آن تنظیم کرده ام. دیگر پرواز مستقیم وجود نداشت، بنابراین من در نهایت از طریق آتن به آنجا پرواز کردم و از طریق وین برگشتم.

بعد از تمام شدن تشریفات سفر، چند روز دیگر گذشت و من در واقع به زوریخ پرواز کردم. بدون حادثه به آنجا رسید. از فرودگاه به شهر قطار را سوار کردم - سریع و راحت. بعد از کمی گشت و گذار در شهر، هتلی پیدا کردم و تحویل گرفتم. از آنجایی که هتل بدون غذا رزرو شده بود، شام را همسایه خوردم و به رختخواب رفتم، زیرا پرواز صبح بود و از قبل می خواستم بخوابم. روز بعد در هتل صبحانه خوردم (با پول اضافی) و به دفتر گوگل رفتم. گوگل چندین دفتر در زوریخ دارد. مصاحبه من در مرکز نبود. و به طور کلی، دفتر کاملاً معمولی به نظر می رسید، بنابراین من فرصتی برای نگاه کردن به تمام خوبی های یک دفتر "عادی" گوگل نداشتم. با ادمین ثبت نام کردم و منتظر نشستم. بعد از مدتی کارگزینی بیرون آمد و برنامه روز را به من گفت و بعد از آن مرا به اتاقی که قرار بود مصاحبه ها انجام شود برد. در واقع این طرح شامل 3 مصاحبه، ناهار و 2 مصاحبه دیگر بود.

مصاحبه شماره یک

اولین مصاحبه فقط در اندروید بود. و اصلا ربطی به الگوریتم ها نداشت. با این حال تعجب. خوب، خوب، این روش حتی رایج تر است. از ما خواسته شد که یک مؤلفه رابط کاربری خاص بسازیم. ابتدا درباره چیستی و چگونگی آن بحث کردیم. او پیشنهاد ساخت راه حلی را با استفاده از RxJava داد و توضیح داد که دقیقاً چه کاری انجام خواهد داد و چرا. آنها گفتند که این مطمئناً خوب است، اما بیایید آن را با استفاده از چارچوب Android انجام دهیم. و همزمان کد را روی برد می نویسیم. و نه فقط یک مؤلفه، بلکه کل Activity که از این مؤلفه استفاده می کند. این چیزی است که من برای آن آماده نبودم. نوشتن یک الگوریتم خط 30-50 روی برد یک چیز است، و نوشتن نودل کدهای اندروید، حتی با اختصارات و نظرات با روح "خب، من آن را نمی نویسم، زیرا از قبل واضح است" چیز دیگری است. نتیجه نوعی وینیگرت برای 3 تخته بود. آن ها من مشکل را حل کردم، اما به نظر احمقانه بود.

مصاحبه شماره دو

این بار مصاحبه در مورد الگوریتم ها بود. و دو نفر مصاحبه کننده بودند. یکی مصاحبه کننده واقعی است و دومی یک پادوان جوان (مصاحبه کننده در سایه). لازم بود یک ساختار داده با ویژگی های خاص ارائه شود. ابتدا طبق معمول مشکل را مطرح کردیم. من سوالات مختلفی پرسیدم، مصاحبه کننده پاسخ داد. پس از مدتی از آنها خواسته شد تا چندین روش از ساختار اختراع شده را روی تخته بنویسند. این بار من کم و بیش موفق بودم، البته با چند خطای جزئی که به درخواست مصاحبه کننده تصحیح کردم.

مصاحبه شماره سه

این بار System Design که ناگهان معلوم شد آن هم اندروید است. لازم بود یک برنامه کاربردی با عملکرد خاصی ایجاد شود. ما در مورد الزامات برنامه، سرور و پروتکل ارتباطی صحبت کردیم. در مرحله بعد، شروع کردم به توضیح اینکه از چه مؤلفه‌ها یا کتابخانه‌هایی در هنگام ساخت برنامه استفاده خواهم کرد. و سپس، هنگام ذکر کردن Job Scheduler، سردرگمی وجود داشت. نکته این است که من هرگز از آن در عمل استفاده نکردم، زیرا در زمان انتشار آن به تازگی به برنامه های پشتیبانی تغییر داده بودم که در آن هیچ وظیفه ای برای استفاده از آن وجود نداشت. همین اتفاق در هنگام توسعه موارد بعدی رخ داد. یعنی از نظر تئوری میدونم این چیه، کی و چطوری استفاده میشه ولی تجربه استفاده ازش رو ندارم. و به نظر می رسید که مصاحبه کننده چندان آن را دوست نداشت. سپس از من خواستند که یک کد بنویسم. بله، هنگام توسعه یک برنامه، باید بلافاصله کد بنویسید. دوباره کد اندروید روی برد. دوباره ترسناک شد

ناهار

قرار بود یک نفر دیگر بیاید، اما نیامد. و گوگل اشتباه می کند. در نتیجه من با مصاحبه کننده قبلی، همکار او، به ناهار رفتم و کمی بعد مصاحبه کننده بعدی به آن ملحق شد. ناهار کاملا مناسب بود. باز هم، از آنجایی که این دفتر اصلی در زوریخ نیست، اتاق غذاخوری کاملاً معمولی به نظر می رسید، اگرچه بسیار زیبا.

مصاحبه شماره چهار

در نهایت، الگوریتم ها در خالص ترین شکل خود. من اولین مشکل را خیلی سریع و بلافاصله به طور مؤثر حل کردم، اگرچه یک مورد لبه را از دست دادم، اما با درخواست مصاحبه کننده (او همین مورد لبه را ارائه کرد) مشکل را پیدا کردم و آن را اصلاح کردم. البته باید کد را روی برد می نوشتم. سپس کار مشابهی داده شد، اما دشوارتر. برای آن، چند راه‌حل غیربهینه پیدا کردم و تقریباً راه‌حل بهینه را پیدا کردم، 5-10 دقیقه برای تکمیل فکر کافی نبود. خوب، من وقت نداشتم برای آن کد بنویسم.

مصاحبه شماره پنج

و دوباره مصاحبه اندروید. من تعجب می کنم که چرا در تمام سال الگوریتم ها را مطالعه کردم؟
در ابتدا چند سوال ساده وجود داشت. سپس مصاحبه کننده کدی را روی تخته نوشت و از او خواست تا اشکالاتی را در آن پیدا کند. پیداش کرد، توضیح داد، درستش کرد. بحث شد. و سپس برخی از سؤالات غیرمنتظره با روحیه "متد Y در کلاس X چه می کند"، "چه چیزی داخل روش Y است"، "کلاس Z چه می کند" آغاز شد. البته یه چیزی جواب دادم ولی بعد گفتم اخیراً در کارم با این کار مواجه نشده ام و طبیعتاً یادم نمی آید که چه کسی چه کاری و چگونه انجام می دهد. بعد از آن، مصاحبه کننده پرسید که الان چه کار می کنم؟ و سوالات در مورد این موضوع ادامه یافت. من قبلا اینجا خیلی بهتر جواب دادم.

بعد از پایان آخرین مصاحبه پاس مرا گرفتند و برایم آرزوی موفقیت کردند و من را به راه انداختند. کمی در شهر قدم زدم، شام خوردم و به هتل رفتم و در آنجا خوابیدم، چون پرواز دوباره صبح زود بود. روز بعد به سلامت به قبرس رسیدم. به درخواست استخدام کننده، بازخورد مصاحبه را نوشتم و فرمی را در یک سرویس ویژه پر کردم تا پول خرج شده را برگردانم. از بین تمام هزینه‌ها، گوگل مستقیماً فقط برای بلیط پرداخت می‌کند. هزینه هتل، غذا و سفر به عهده داوطلب می باشد. سپس فرم را پر می کنیم، رسیدها را ضمیمه می کنیم و به دفتر مخصوص می فرستیم. آنها این را پردازش می کنند و نسبتاً سریع پول را به حساب منتقل می کنند.

پردازش نتایج مصاحبه یک هفته و نیم طول کشید. پس از آن به من اطلاع دادند که "کمی پایین تر از نوار" هستم. یعنی کمی کوتاه آمدم. به طور خاص، 2 مصاحبه خوب پیش رفت، 2 مصاحبه کمی خوب نبود، و طراحی سیستم خیلی خوب نبود. حالا اگر حداقل 3 تا خوب پیش می رفت، می توانستیم رقابت کنیم وگرنه شانسی نیست. آنها پیشنهاد دادند که یک سال دیگر برگردند.

البته در ابتدا ناراحت بودم، زیرا تلاش زیادی برای آماده سازی انجام شده بود و تا زمان مصاحبه از قبل به ترک قبرس فکر می کردم. پیوستن به گوگل و مهاجرت به سوئیس گزینه بسیار خوبی به نظر می رسید.

نتیجه

و در اینجا به قسمت پایانی مقاله می رسیم. بله، من دو بار در مصاحبه گوگل شکست خوردم. آن غم انگیز است. احتمالاً کار در آنجا جالب خواهد بود. اما، شما می توانید از یک طرف دیگر به موضوع نگاه کنید.

  • در یک سال و نیم، چیزهای زیادی در رابطه با توسعه نرم افزار یاد گرفتم.
  • از شرکت در مسابقات برنامه نویسی بسیار لذت بردم.
  • چند روزی به زوریخ رفتم. کی دوباره به آنجا بروم؟
  • من یک تجربه مصاحبه جالب در یکی از بزرگترین شرکت های فناوری اطلاعات در جهان داشتم.

بنابراین، تمام اتفاقاتی که در این یک سال و نیم رخ داده است را می توان به سادگی آموزش یا تمرین در نظر گرفت. و نتایج این آموزش خود را احساس کرد. ایده من برای ترک قبرس به بلوغ رسید (به دلیل برخی شرایط خانوادگی)، چندین مصاحبه را با یک شرکت معروف دیگر با موفقیت پشت سر گذاشتم و پس از 8 ماه نقل مکان کردم. اما این یک داستان کاملا متفاوت است. با این حال، فکر می کنم هنوز هم باید از گوگل برای یک سال و نیمی که روی خودم کار کردم و هم برای 2 روز جالب در زوریخ تشکر کنم.

بالاخره چی بگم اگر در زمینه IT کار می کنید، خود را برای مصاحبه در گوگل (آمازون، مایکروسافت، اپل و غیره) آماده کنید. شاید روزی برای رسیدن به آنجا به آنجا بروید. حتی اگر نمی خواهید، باور کنید، چنین آماده سازی شما را بدتر نمی کند. لحظه ای که متوجه می شوید که می توانید (حتی با شانس) با یکی از این شرکت ها مصاحبه کنید، راه های بسیار بیشتری نسبت به قبل از شروع آماده سازی برای شما باز خواهد شد. و تنها چیزی که در این راه نیاز دارید هدف، پشتکار و زمان است. آرزو می کنم موفق شوی :)

منبع: www.habr.com

اضافه کردن نظر