tgoop.com/pyHints/282
Last Update:
چندروز پیش یکی از دوستان ازم کمک خواست روی بررسی جوابی که به سوال مصاحبه داده بود؛ سوال برای سطح mid-level, senior
مطرح شده بود (ولی سطحش بالاتر از مدیور هست.)
ساده شده صورت مساله این بود :
اصل سوال بصورت توضیحات بخشی از یک پروژه بود که یادم نیست و شخص باید خودش تشخیص میداد چیکار کنه که من اون بخش رو هم توی سادهسازی گفتم دقیقا چی میخوام
پیادهسازی یک Ring Buffer
در پایتون بطوریکه بجای استفاده از لیستها از Circular Double Linked List
استفاده کنید؛ (پیاده سازی هر ۲ مورد با خود کاربر هست)
این Circular Double Linked List
شما باید یک ویژگی مهم رو داشته باشه :
پشتیبانی از اضافه کردن node
ها با استفاده از ایندکس دهی منفی.
همیشه فکر میکردم سوالات سخت همواره از مباحث درخت و ... هست (نه چیزهای ساده مثل مورد بالا) اما جوری توی پروژه واقعی گنجانده شده بود؛ صورت مساله اصلی رو میگم. که تبدیلش به اینکه دقیقا خود مساله چی میخواد حدود ۲۰ دقیقه وقت گرفت.
کل جلسه مصاحبه ۲ ساعت بود.
چندتا راهنمایی :Ring Buffer = Circular Queue
———Circular Double Linked List
رو باید اول پیادهسازی کنید؛ سریعترین راهکار اینه که اول linked list
رو پیاده سازی کنید؛ بعد همین رو تبدیل به نسخه circular
کنید بعد همین کد رو به double linked list
تبدیل کنید و در نهایت توی متد insert
ایندکسهای منفی رو هم پشتیبانی کنید.
بعد از همین مورد برای Ring Buffer
استفاده کنید (خیلی معقول بنظر نمیاد و دقیقا هم موضوع همین هست؛ قطعا چیزی که معقول نیست رو کتابی راجبش صحبت نکرده - شما هم روش تمرینی نداشتید)
واقعا بنظرم سوال پر چالشی بود و توی این مصاحبه میشد به راحتی :
۱- نحوه حل مسئله
۲- میزان تمرکز
۳- میزان دقت
۴- نحوه کد زدن
۵- سواد پایتون
۶- سواد ساختمان داده و الگوریتم
۷- کنترل فشار عصبی و ...
رو تماما امتیازدهی کرد؛ بسیار سوال هوشمندانه و زیرکانهای بود بنظر من برای همین خواستم با شما هم به اشتراک بذارم (البته یک سری شرطها و شرایط خاص هم داشت که من از اونها گذشتم که خیلی طولانی نشه متن)
BY Python Hints
Share with your friend now:
tgoop.com/pyHints/282