نحوه مصاحبه Coinbase برای نقش های مهندسی

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

کد خبر : 101648
تاریخ انتشار : چهارشنبه 8 سپتامبر 2021 - 8:53
نحوه مصاحبه Coinbase برای نقش های مهندسی


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

در این پست ما بر آنچه که در یک کاندیدای مهندسی به دنبال آن هستیم تمرکز می کنیم. برخی از این توصیه ها در مورد سایر موقعیت ها نیز صدق می کند ، اما اگر می خواهید به عنوان مهندس به ما بپیوندید ، بسیار مفید است.

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

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

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

مراحل مصاحبه (معمولاً اما نه همیشه) عبارتند از:

  • گفتگوی اولیه با شخصی از منابع انسانی در مورد نقش
  • یک مشکل برنامه نویسی 60 دقیقه ای
  • یک یا دو مصاحبه 60 دقیقه ای مدیر مهندسی
  • یک یا دو مصاحبه برنامه نویسی 60 یا 90 دقیقه ای
  • یک یا دو مصاحبه 60 دقیقه ای طراحی سیستم

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

برنامه نویسی جفت

در مصاحبه (های) برنامه نویسی جفت ، با یکی از مهندسان ما مشکلی را حل می کنید. برای شروع ، مصاحبه کننده مختصری از مشکل را در اختیار شما قرار می دهد. حالا این شما هستید که باید راه حلی برای این مشکل کدگذاری کنید.

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

ما فراتر از کامل بودن و صحت راه حل شما را بررسی خواهیم کرد. ما کیفیت و قابلیت نگهداری کد شما را نیز ارزیابی می کنیم. آیا کد شما برای زبان انتخابی شما اصطلاحی است؟ آیا خواندن و درک آن آسان است؟ نامگذاری متغیرها چطور؟ آیا از ابزاری که در IDE و ترمینال شما در دسترس است استفاده می کنید؟ چگونه می توانیم مطمئن باشیم که کد شما درست است؟ تستش کردی؟

چقدر مشکل را درک می کنید؟ آیا س questionsالات روشن کننده مربوطه می پرسید؟ نظرات مصاحبه کننده را چقدر خوب می پذیرید؟

اگر به پایان مشکل نرسیدید ناامید نشوید. ما مشکلات مصاحبه خود را طوری طراحی می کنیم که بیش از زمان تعیین شده پر شود. مصاحبه کننده مصاحبه را پس از گذشت 90 دقیقه یا زمانی که به ارزیابی خود اطمینان داشته باشد متوقف می کند. پایان زودهنگام مصاحبه همیشه نشانه بدی نیست.

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

بیایید به یک مثال عملی نگاه کنیم. فرض کنید مشکل این است:

با توجه به لیستی که شامل تمام اعداد صحیح از 1 تا n – 1 است ، لیست مرتب نشده است. یک عدد صحیح دو بار در این لیست رخ می دهد. یک تابع بنویسید که تعیین کند کدام است.

در اینجا اولین نمونه راه حل (خطاها وجود دارد!)

def duplicates(integers):
"""duplicates takes a list of integers and returns the first duplicate value or None if all values are unique"""
 if not isinstance(integers, list):
  raise ArgumentError(“expected list as input”)
sorted_integers = integers.sort()
previous_value = nil
for x in sorted_integers:
 if x == previous_value:
  return x
 previous_value = x
 return None
def test_duplicates():
 assert duplicates([]) == None, "empty array is considered unique"
 assert duplicates([1, 2]) == None , "array of unique values returns None"
 assert duplicates([1, 2, 2]) == 2, "duplicate returns the duplicate integer"
 assert duplicates([1, 2, 2, 1]) == 2, "multiple duplicates returns the first duplicate"

و راه حل دوم (در اینجا نیز اشتباهاتی وجود دارد!):

def dupilcateIntegers(l ):
 n = len(l)
 return sum(l) - ((len(l)+1) * len(l))/2

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

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

در نهایت ، همچنین به خاطر داشته باشید که فقط 90 دقیقه برای تکمیل مشکل وقت دارید. مشکلات ما در واقع هیچ ترفندی در خود ندارند و راه حل ساده لوحانه معمولاً به اندازه کافی خوب است. ما از شما نمی خواهیم که درخت دوتایی را وارونه کنید ، بلکه از شما می خواهیم که یک نسخه ساده شده از یک مشکل زندگی واقعی را حل کنید. ما به دنبال کد های تولیدی هستیم نه راه حل های هک شده.

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

طراحی سیستم

در مصاحبه طراحی سیستم ما از شما خواسته می شود تا معماری کلی یک سرویس دنیای واقعی را طراحی کنید. مثلا: چگونه می توانید یک فید توییتری طراحی کنید؟

خلاصه به طور معمول کوتاه است ، و این به شما بستگی دارد که از مصاحبه کننده بخواهید در مورد الزامات توضیح دهد.

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

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

اگر از ویژگی های یک جزء خاص در طراحی خود مطمئن نیستید ، بهتر است سعی کنید مصاحبه کننده خود را مطلع کرده و به او بگویید که چگونه می توانید جواب را پیدا کنید. به آن اعتراض نکنید – اشتباه با اعتماد به نفس یک علامت منفی است ، در حالی که تواضع یک نشانه مثبت است. یک پاسخ خوب ممکن است این باشد: “من نمی دانم که آیا الگوی پرس و جو و سایر الزامات با پایگاه داده SQL در اینجا به خوبی مطابقت دارد ، اما بیشترین تجربه را با MariaDB دارم ، بنابراین این گزینه پیش فرض من است. با این حال ، قبل از تصمیم گیری باید در مورد عملکرد آن در این مورد خاص تحقیق کنم. من همچنین برخی از جایگزین های NoSQL مانند MongoDB و شاید یک فروشگاه گسترده ای مانند Cassandra را مورد تحقیق قرار می دهم. “

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

نکات کلی

در طی فرایند مصاحبه ، ما به دنبال سیگنال هایی هستیم که به ما کمک می کند بفهمیم آیا یک مهارت وجود دارد اما مهمتر از همه تناسب فرهنگی است. برخی از سیگنال هایی که ما به دنبال آنها هستیم:

  1. صادق باشید – صداقت همیشه مزد می دهد. اگر قبلاً س questionال را دیده اید ، بهتر است مصاحبه کننده خود را مطلع کنید تا در مورد س questionال دیگری بحث شود. به طور مشابه ، اغراق در مورد محدوده/مسئولیت های فعلی یک پرچم قرمز محسوب می شود.
  2. حرف دلتو بزن– حتی اگر سوال سخت به نظر می رسد یا برای تفکر به زمان نیاز دارید ، افکار خود را بیان کنید تا مصاحبه کننده بتواند در این زمینه به شما کمک کند. به دست آوردن پاسخ درست به اندازه داشتن یک فرآیند فکر منطقی مهم نیست.
  3. قبل از پاسخگویی درک کنید– بهتر است قبل از پاسخگویی به س listenال گوش دهید و درک کنید. اگر مطمئن نیستید ، بخواهید مفروضات خود را روشن یا بیان کنید. ما به دنبال پاسخ سریع نیستیم ، اما همیشه از پاسخ متفکرانه قدردانی می کنیم. اگر س theال اولین بار واضح نبود ، با خیال راحت از مصاحبه کننده بخواهید آن را تکرار کند.
  4. راه اندازی خوب– مصاحبه های ما به عنوان اولین شرکت از راه دور ، در Google Meet مجازی است. جلسه را در محلی برگزار کنید که اتصال اینترنت و صدا/تصویر شما خوب است. اگر تنظیمات شما عالی نیست ، بهتر است از قبل برنامه ریزی کنید. در نهایت ، میکروفون و دوربین خود را یک ساعت قبل از پیوستن به تماس آزمایش کنید. ما دوربین های خود را در کل مصاحبه نگه می داریم و انتظار داریم شما نیز همین کار را انجام دهید.
  5. آماده باش– توصیه می کنیم پیوندهایی را که استخدام کننده شما به عنوان بخشی از دعوت مصاحبه با شما به اشتراک می گذارد ، مرور کنید. آنها حاوی اطلاعاتی در مورد نحوه عملکرد همه افراد در Coinbase و ارزش آنها هستند.
  6. از آنچه در ذهن دارید بپرسید– داوطلبان ما همیشه برای سوالات داوطلبان وقت می گذارند. از این فرصت استفاده کنید و س questionsالاتی را مطرح کنید که به شما کمک می کند به جای پرسیدن سوالات عمومی (که اکثر آنها در وبلاگ ما پاسخ داده شده است) در سفر Coinbase خود تصمیم بگیرید. شما با مهندسان و مدیران مصاحبه می کنید ، بنابراین سوالات خود را با دیدگاه های منحصر به فرد ارائه شده توسط هر نقش تنظیم کنید.
  7. دانش رمزنگاری یا صنعت– مگر اینکه به طور خاص برای نقشی که نیاز به دانش عمیق رمزنگاری/بلاک چین دارد مصاحبه کنید (استخدام کننده شما می تواند این را با شما به اشتراک بگذارد) ، ما به دنبال این دانش به عنوان یک مهارت اجباری نیستیم. تا زمانی که مایل به یادگیری هستید ، ما می خواهیم با شما صحبت کنیم – حتی اگر کاملاً در زمینه رمزنگاری تازه کار هستید. همه ما در یک نقطه نیز جدید بودیم!

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


چگونه مصاحبه های Coinbase برای نقش های مهندسی در The Coinbase Blog on Medium منتشر شد ، جایی که مردم مکالمه خود را با برجسته سازی و پاسخ دادن به این داستان ادامه می دهند.



لینک منبع : هوشمند نیوز

برچسب ها :

ناموجود
ارسال نظر شما
مجموع نظرات : 0 در انتظار بررسی : 0 انتشار یافته : 0
  • نظرات ارسال شده توسط شما، پس از تایید توسط مدیران سایت منتشر خواهد شد.
  • نظراتی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • نظراتی که به غیر از زبان فارسی یا غیر مرتبط با خبر باشد منتشر نخواهد شد.