از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
آماده شدن برای مصاحبه با برنامه نویس پایتون
سرفصلهای مطلب
معرفی
در این مقاله نظرات و پیشنهادات خود را برای قرار دادن خود در بهترین موقعیت برای عملکرد بهتر از نامزدهای رقیب در مصاحبه برنامه نویسی پایتون ارائه خواهم کرد تا بتوانید به عنوان یک توسعه دهنده پایتون شغلی پیدا کنید.
ممکن است فکر کنید، با کمبود برنامه نویس در بازار کار، تنها کاری که باید انجام دهم این است که حاضر شوم و به چند سوال در مورد سینتکس پایه پایتون پاسخ دهم و اجازه دهم مدرک یا گواهی بوت کمپ من بقیه کارها را انجام دهد. خب اجازه دهید من اولین نفری باشم که به شما بگویم که این احتمال بسیار کم است، و حتی اگر این اتفاق بیفتد، زمانی که سایر اعضای تیم شما متوجه شوند که شما برای برش کاری ندارید، احتمالاً برای مدت طولانی در کار باقی نخواهید ماند. آی تی روی تیم آنها
بنابراین، اگر به دنبال ورود به فضای برنامهنویسی پایتون هستید یا حتی به سمت یک نقش توسعهدهنده ارشد پایتون میروید، از شما دعوت میکنم که به خواندن ادامه دهید تا نکات مهمی را برای رقابت تا حد امکان در بازی مصاحبه ارائه میدهم. به خاطر داشته باشید که بیشتر، اگر نه همه، این نکات در مورد آنها نیز صدق می کند مشاغل از راه دور، که معمولاً فرآیندهای استخدامی مشابهی دارند که شما را ملزم به کار می کند روی-سایت.
راه خود را در مورد پایتون بشناسید
اگر برای یک نقش توسعهدهنده Python که احتمالاً باید Python را بشناسید، برای فهرست شغلی درخواست داده باشید، واضح به نظر میرسد. با این حال، اگر این کار را نکردید و بدون دانش لازم از پایتون توانستید راه خود را در یک مصاحبه بلوف کنید، باید تلاش جدی انجام دهید. بهتر است فوراً زمان قابل توجهی را مسدود کنید تا به سرعت عمل کنید. روی حداقل اصول اولیه پایتون را در نظر بگیرید و بدانید که اگر سال ها تجربه در یک زبان برنامه نویسی سطح بالا و شی گرا دیگر (مانند جاوا، جاوا اسکریپت، سی شارپ و غیره) نداشته باشید، احتمالاً شانس بسیار کمی دارید که به اندازه کافی خوب عمل کنید. این مصاحبه برای رسیدن به شغل بابت خبر بد متاسفم… دروغ نگو روی درخواست های شغلی
حداقل باید بتوانید برخی از ساختارهای اصطلاحی پایتون مانند حلقهها، ساختارهای جریان را کنترل کنید، درک فهرستها، و چند کلاس پایه را تعریف کنید. اگر هر یک از اینها آشنا به نظر نمی رسد، توصیه می کنم به مقاله آموزش پایتون اسکات رابینسون برای مبتدیان مطلق مراجعه کنید. روی rasanegar.
پروژه های نمونه خود را به نمایش بگذارید
من متوجه هستم که شما مشغول مدرسه، یک بوت کمپ برنامه نویسی یا شغل فعلی / قبلی خود بوده اید، اما نمی توانم به اندازه کافی بر اهمیت این موضوع تاکید کنم. هنگامی که برای یک شغل توسعهدهنده پایتون درخواست میدهید، به طور موثر سعی میکنید مدیر استخدام را متقاعد کنید که مهارتهایی را دارید که برای کمک قابل توجهی به محصول یا پروژهای که روزی محصولی برای آن شرکت خواهد بود، نیاز دارد.
از تجربه من، بهترین راه برای اثبات اینکه شما می توانید کدنویسی کنید، تحویل مقدار معقولی کد است که توانایی شما را در تولید یک نرم افزار قابل استفاده نشان می دهد. این می تواند یک برنامه وب ساده، اسکریپت پردازش داده یا حداقل برنامه دسکتاپ باشد. نکته کلیدی در اینجا این است که ایده ای از توانایی خود برای نوشتن کدی که به خوبی سازماندهی شده، اصطلاحی و خوانا باشد ارائه دهید.
بهترین راه برای انجام این کار، داشتن یک مخزن عمومی GitHub، BitBucket یا GitLab است که پروژه(های) نمونه شما را در خود جای دهد. این چند کار را برای شما انجام می دهد:
- این شما را در جامعه منبع باز قرار می دهد که به خودی خود یک چیز عالی است.
- این نشان می دهد که شما اصول اولیه کنترل نسخه Git را نیز می دانید.
- نام شما را نشان می دهد و شانس شما را برای تماس با شما برای مشاغل نیز افزایش می دهد.
با توجه به نکته دوم، زمانی که در حال ساخت پروژه کد نمونه خود هستید، با آن مانند یک پروژه واقعی رفتار کنید. تکه های کوچکی از عملکرد را در یک زمان کامل کنید و سپس آنها را با commit های توصیفی به کنترل نسخه متعهد کنید. از تاثیر این کار شگفت زده خواهید شد. مدیران استخدام ارزش بالایی قائل هستند روی درک و توانایی شما در استفاده از کنترل نسخه Git.
مسواک بزنید روی ساختار داده ها و الگوریتم ها
ابتدا باید ساختارهای داده رایج پایتون مانند لیست ها، دیکشنری ها، تاپل ها و روش ایجاد کلاس ها را بشناسید.
در مرحله بعد، باید ساختارهای داده تعمیمیافتهتری مانند لیستهای پیوندی، پشتهها و صفها را بشناسید که لزوماً در کتابخانه استاندارد پایتون پیادهسازی نمیشوند، اما میتوانند با استفاده از زبان پیادهسازی شوند.
همچنین باید بتوانید ساختارهای داده پایه پایتون را با ساختارهای داده تعمیم یافته فوق مقایسه و مقایسه کنید و توضیح دهید که چگونه می توانید از ساختارهای داده موجود پایتون مانند لیست ها برای اجرای عملکرد یک پشته استفاده کنید، یا روی از طرف دیگر، پیاده سازی سفارشی یک کلاس مانند LinkedList را انجام دهید.
در زیر نمونه ای از پیاده سازی سفارشی یک لیست پیوندی است که از یک استفاده می کند Element
(همچنین به عنوان Node نامیده می شود) کلاس داخلی برای مدیریت عناصر داده.
class Element:
def __init__(self, value):
self.value = value
self.next = None
class LinkedList:
def __init__(self, head=None):
self.head = head
def append(self, value):
if self.head is None:
self.head = Element(value)
else:
current = self.head
while current.next is not None:
current = current.next
current.next = Element(value)
def pop(self):
if self.head is None:
return None
if self.head.next is None:
value = self.head.value
self.head = None
return value
current = self.head
while current.next.next:
current = current.next
value = current.next.value
current.next = None
return value
def peek(self):
if self.head is None:
return None
current = self.head
while current.next:
current = current.next
return current.value
def remove(self, value):
if self.head is None:
return None
if self.head.next is None:
if self.head.value == value:
self.head = None
return True
return None
if self.head.next.next is None:
if self.head.next.value == value:
self.head.next = None
return True
current = self.head
while current.next.next:
if current.next.value == value:
current.next = current.next.next
return True
current = current.next
return None
def insert_first(self, value):
next_element = self.head
self.head = Element(value)
self.head.next = next_element
def delete_first(self):
if self.head:
new_first = self.head.next
self.head = new_first
شما باید بتوانید مواردی را شناسایی کنید که در آن استفاده از یک ساختار داده خاص مانند یک لیست پیوندی مفید است.
برای مثال، اگر میدانید که اغلب موارد را از جلوی یک لیست درج و حذف میکنید، استفاده از چیزی مانند LinkedList نسبت به لیست استاندارد پایتون بسیار کارآمدتر است. با این حال، شایان ذکر است که چنین عملیاتی معمولاً با یک صف یا پشته استفاده میشود که میتوان از LinkedList برای آن استفاده کرد، اما ماژول مجموعههای Python از قبل یک ساختار داده داخلی دارد که برای این کار مفید است. دکه که مطرح کردن آن در طول بحث با مصاحبه کنندگان نیز مهم است.
هدف اصلی از پیادهسازی سفارشی LinkedList در مصاحبه پایتون، نشان دادن توانایی شما در کدنویسی یک کلاس سفارشی و توصیف تفاوتهای بین لیست استاندارد پایتون و مکانیک یک LinkedList است.
همچنین از برخی الگوریتم های اساسی که برای انجام کارهای رایج مانند مرتب سازی و جستجو استفاده می شود، آگاه باشید.
به عنوان مثال، خوب است توضیح دهیم که چگونه و چرا یک جستجوی دودویی به طور قابل توجهی بهتر از جستجوی خطی در یک لیست است. به طور خاص، جستجوی خطی همیشه O(n) خواهد بود در حالی که جستجوی دودویی O(log n) است. همچنین میخواهید توضیح دهید که چه زمانی مناسب است از جستجوی باینری بر روی یک جستجوی خطی استفاده کنید. در مواردی که انتظار دارید چندین بار در یک لیست نسبتاً بزرگ جستجو کنید، احتمالاً برای مرتب کردن یک لیست و ایجاد قابلیت جستجوی باینری ارزش هزینههای متحمل شده را دارد، اما اگر قرار باشد فهرستی فقط چند بار جستجو شود، ممکن است اینطور نباشد. ارزش مرتب کردن آن را دارد
همچنین شایان ذکر است که در مواردی که کلیدی که در جستجوی آن هستید، بهتر است فقط از ساختار داده دیگری مانند فرهنگ لغت استفاده کنید. روی یک ساختار قابل هش است که اساساً به شما امکان جستجو و درج موارد O(1) را می دهد.
توانایی درک و حل مسائل
توسعهدهنده ستاره راک بودن بسیار بیشتر از به خاطر سپردن سینتکس یک زبان خاص یا ساختارهای داده و الگوریتمهای رایج مورد استفاده است، هر چقدر هم که ارزشمند باشد. چیزی که شما را از بقیه متمایز می کند توانایی شما در درک یک مشکل، استفاده از مورد، فرصتی برای پیاده سازی در نرم افزار یا هر چیز دیگری است که ممکن است به مواردی که از ما خواسته می شود به کد تبدیل کنیم اشاره کنید.
آنچه برای این کار لازم است ترکیبی از مهارت های سخت و نرم است. شما باید بتوانید به طور فعال به الزامات ویژگی یا توضیحات اشکال گوش دهید و حقایق مربوطه را شناسایی کنید و برای حذف جنبه های کلیدی اضافی سؤال بپرسید. سپس باید بتوانید تمام آن اطلاعات را به وظایف یا اجزای فردی تقسیم کنید که می توان آنها را انجام داد و سپس به طور جمعی برای انجام عملکرد مورد نظر با هم کار کرد.
باور کنید، این در نهایت چیزی است که یک کارفرما می خواهد شما را آزمایش کند روی، روش برخورد شما با یک کار یا مشکل برنامه نویسی و توانایی شما در شناسایی قطعات کلیدی اطلاعات و استفاده از آن برای ابداع راه حل.
گفتن این کار آسان تر از انجام آن است. با این حال، چند چیز وجود دارد که احتمال موفقیت شما را افزایش می دهد، یعنی قرار دادن مقدار زیادی تمرین و قرار گرفتن در معرض انواع مشکلات. هرچه بیشتر در معرض مشکلات قرار بگیرید، می توانید الگوهای رایج در مشکلات و راه حل های تکرار شونده را که اغلب فقط به مقدار کم متفاوت هستند، تشخیص دهید. یک راه عالی برای کسب تجربه در حل مشکلات برنامه نویسی استفاده از سرویسی مانند است مشکل کدنویسی روزانه.
مشکل روزانه کدنویسی سرویسی است که می توانید در آن ثبت نام کنید و هر روز یک مشکل برنامه نویسی متفاوتی را که در پایتون ارائه می شود برای شما ایمیل می کند تا آن را حل کنید. مثلا خانه page مشکل برنامهنویسی روزانه نمونهای از انواع مشکلاتی را که میتوانید انتظار دریافت آنها را داشته باشید، ارائه میکند، مانند: “یک پله با N پله وجود دارد، و میتوانید همزمان از 1 یا 2 پله بالا بروید. با توجه به N، تابعی بنویسید که مقدار را برمیگرداند. تعداد راههای منحصربهفردی که میتوانید از پلهها بالا بروید. ترتیب مراحل مهم است.»
جالب توجه است، جایگشت ترکیبهای گامهای مختلف به جمعبندی ترکیبهای گامها برای (N – 1) + (N – 2) ساده میشود که ممکن است بهعنوان منطق اولیه برای اجرای الگوریتم برای یک دنباله فیبوناچی عدد Nام تشخیص دهید.
بگذارید بیشتر توضیح بدهم روی این.
از چند راه مختلف می توانید از یک پله (N = 1) با 1 یا 2 پله بالا بروید؟ مجموعه ای از دقیقا یک (1).
N = 1 => (1)
حالا دو پله (N = 2) چطور؟
N = 2 => (1, 1), (2)
سپس برای فرمول f(N) = f(N – 1) + f (N – 2) تا زمانی که N > 0
(1) + ((1,1), (2)) = (1,1,1), (1,2), (2,1)
همانطور که قبلاً اشاره کردم، این پیاده سازی بازگشتی دنباله فیبوناچی است و در پایتون به این شکل است.
def step_combinations(stairs):
if stairs <= 1:
return 1
return step_combinations(stairs - 1) + step_combinations(stairs - 2)
با مشکل کدنویسی روزانه، نه تنها مشکلات تمرینی را هر روز دریافت خواهید کرد، بلکه می توانید راه حل های دقیق دریافت کنید به این مشکلات، در ازای یک هزینه با تخفیف کوچک، به شما کمک می کند تا مشکلات اضافی را حل کنید یا به شما اجازه می دهد راه حل های خود را با راه حل های ارائه شده توسط سرویس مقایسه کنید.
آیسینگ روی کیک
از آنجایی که این یک مقاله است روی مصاحبه برای یک شغل پایتون که روی آن تمرکز کرده ام روی مهارتهای فنی اختصاصی پایتون، با این حال، طبق تجربه من، به ندرت یک توسعهدهنده پایتون فقط در پایتون کدنویسی میکند. در واقع، احتمالاً حتی از دیدگاه بلندمدت استخدام ایده خوبی نیست که فکر کنید فقط با یک فناوری یا زبان برنامه نویسی کار خواهید کرد.
توصیه من این است که به فناوری های جانبی که اغلب هستند توجه کنید روی فهرست مشاغل در بخشهایی مانند «دارا بودن خوب است»، که ممکن است مواردی مانند جاوا اسکریپت، CSS، جاوا و غیره را فهرست کند و آماده باشید که به آرامی در آنها نیز تحقیق کنید. این نشان می دهد که شما قادر و مایل به یادگیری چیزهای دیگری هستید که برای شرکتی که برای آن درخواست می کنید ارزش ایجاد می کند.
یکی دیگر از کارهای مفید این است که کمی از شرکت دانش داشته باشید. یک تحقیق اساسی انجام دهید روی شرکتی که برای کار در آن درخواست داده اید. تمرکز روی مواردی مانند شناسایی جریان های درآمدی کلیدی و هر هویت فرهنگی که شرکت ممکن است داشته باشد یا در تلاش است ایجاد کند.
آخرین اما نه کم اهمیت، من می خواهم لمس کنم روی لباس پوشیدن برای مصاحبه ناگفته نماند که برای تحت تأثیر قرار دادن لباس پوشیدن ارزش دارد، اما من در واقع شنیده ام و دیده ام که توسعه دهندگان با شلوار جین و هودی در مصاحبه ها حاضر شده اند… Doinke! حداقل، اگر فرهنگ شرکت به اندازه کافی گشاد است، باید لباس غیر رسمی تجاری بپوشید، اما من همچنان کت و شلوار را توصیه می کنم.
شما قبلاً تلاش کرده اید تا بتوانید مهارت های دیوانه وار پایتون خود را به نمایش بگذارید و آنها را با دانش خود در مورد شرکت شگفت زده کنید، بنابراین با گذاشتن این تصور ماندگار در آن ها اینطور به نظر نرسید که “بله، به نظر می رسید او از برنامه نویسی می دانست. ، اما N کاندیدای دیگر که به نظر میرسیدند فقط از آرکید سرگردان نبودند، همینطور».
به زبان ساده، به ظاهر خود افتخار کنید و نه فقط به مهارت های پایتون.
نتیجه
در این مقاله سعی کردهام آنچه را که میدانم متمایزکنندههای کلیدی پیدا کنم که میتوانند هنگام مصاحبه برای نقش توسعهدهنده پایتون، شما را از رقبا پیشی بگیرند، بیان کنم. من به اهمیت دانستن واقعی Python، سودمندی ساختارهای داده و الگوریتم های رایج، تبدیل شدن به حلال بهتر مشکل با قرار گرفتن در معرض بسیاری از مشکلات از طریق سرویس هایی مانند The Daily Coding Problem، و حتی اصول اولیه مانند تحقیقات شرکتی و لباس مناسب اشاره کرده ام. امیدوارم مقداری ارزش در این مقاله پیدا کرده باشید، اما بیشتر از همه امیدوارم به شما کمک کند تا مصاحبه آینده پایتون را انجام دهید.
مثل همیشه از شما برای خواندن و استقبال از نظرات و انتقادات زیر تشکر می کنم.
منابع
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-27 08:16:04