tgoop.com/pyHints/196
Create:
Last Update:
Last Update:
هیچ چیز به اندازه دیدن ویدئو خوب آخر شب حال نمیده :
Software Engineering Mock Interview (Python3)
پ.ن : چیزایی که بنظرم طرف اشتباه میکنه رو هم بذارم :
مثلا همین ابتدای دقیقه ۶ باید میپرسید آیا یک یوزر میتونه چندین
Active bookداشته باشه ؟ (یک سری سوالات پرسیده نمیشه چون مثال
kindle
زده شده اما اگر طرف با این سرویس آشنایی نداشته باشه میتونه اعلام کنه و درخواست اطلاعات بیشتر کنه)دقیقه ۱۱ این سوال رو میپرسه و طرف اعلام میکنه بله باید اینطوری باشه (این موضوع دید کلی و همه جانبه داشتن خیلی خیلی مهمه بخصوص اگر برای سطوح بالاتر دارید مصاحبه میکنید)
دقیقه ۹: برای
page/content
ساختمان داده list
رو پیشنهاد میده و دلیل میاره که چرا باقی موارد نه؛ اما بنظرم من tuple
درست تر بود (چون محتوای یک صفحه از کتاب بعد از انتشار تغییر نمیکنه و البته tuple
از نظر حافظه بسیار بصرفه تر از list
هست)جلوتر یادش افتاد و اشاره کرد؛ برای راحتی لیست رو انتخاب کرد (بله این هم اتفاق درستی هست توی مصاحبه) شما درست ترین راهکار رو اول ارائه میدی بعد میتونه بپرسی آیا اجازه داری که راهکاری که سادهتر هست رو استفاده کنی توی پیادهسازی یا خیر
دقیقه ۱۲: من بودم بجای گرفتن
id
برای هر کتاب از isbn
استفاده میکردم دلیلش هم این هست که هم روی فیچری برای جستجو کمک میکنه و هم unique
هست و نیازمندی لازمه برای active books
رو هم برطرف میکنه؛ پس ی اشتباه دیگه طرف راجب فیچرهایی مثل
Recommendation, Searchسوالی نکرده و فیلدی هم درنظر نگرفته تا اینجا
دقیقه ۱۵: از اونجایی که توی پایتون ساختار داده
dict
دیگه بصورت دیفالت order
هم داره میشه ازین ساختار هم برای نگهداری صفحات کتاب استفاده کرد (بخصوص اینکه اینجا تعداد سرچ ممکنه زیاد باشه)هرچند من نیاز ویژهای نمیبینم اما گفتن این نکته نشون میده شما به فیچرهای جدیدتر زبانی که باهاش کد میزنید هم آشنا هستید و تغییراتش رو دنبال میکنید (این موضوع رو توی مصاحبه با آمازون داشتم و براش امتیاز قائل بودند)
دقیقه ۱۵ : شروع کرد به کد زدن و با فیلدهای کمینه شروع کرد متاسفانه کیندل تصویر اصلی کتاب رو بصورت
thumbnail
نمایش میده؛ اسم نویسنده میتونست موضوع جذابی برای جستجو باشه؛ میشد به این نکته اشاره کرد که آیا نیاز به جستجو بر اساس متن داخل کتاب داریم ؟ یا اینکه برای سادهسازی میتونید ازش بگذریم و ....اضافه کنم این بسیار مهم هست که پروژه رو بیش از حد سخت و سنگین نبینید (خود این هم امتیاز منفی داره) و این موضوعات رو بسیار سریع بهش اشاره کنید و ازش بگذرید مخصوصا تو این مرحله که
system desing
نیست (هرچند این لول از جزئیات رو من بیشتر با اسم micro-service desin
g باهاش موافق هستم توی طراحی سیستم هم نباید انقدر درگیر جزئیات بشید و واقعا یک تله هست.)دقیقه ۱۷:۵۰ : ازش متدی برای ورق زدن کتاب خواسته شد
turn_page
که خب طرف فراموش کرد برای برگشت به عقب کدی بزنه (یعنی این ویژگی در واقع نیاز به ۲ تا متد داشت با توجه به مدل پیاده سازی این خانوم)توی دقیقه ۲۰ که داره
Library
رو میسازه؛ بنظرم ۲ تا سوال رو جا انداخت؛ چرا من زودتر به این اشاره نکردم ؟ چون طرف گفت kindle
من رفتم سمت نسخهی قدیمی که میشناختم و همه چیز رو روی دیوایس هر نفر ذخیره میکرد اما این خانم به API
هم اشاره کرد پس :۱- میتونست ی نسخه جامعتر از
Library
در نظر بگیره که شامل همه کتابها باشه؛ باز چون گفته شد اطلاعات کتاب بهش داده میشه فرض میکنم اون بخش روی یک سرویس دیگه که اسمش رو بذاریم core
پیاده سازی شده۲- با فرض اینکه مورد قبلی تایید بشه پس نیازی به
Authorization
توی این سرویس نداریم پس میتونه Add to collection
همینطوری پیاده سازی بشه (هر کاربر یک کپی از کتاب نه مجوزی برای دسترسی به کتاب)
الان دیگه مطمئن شدم که سطح مصاحبه
midlevel
هست چون طرف تو این دقیقه از مصاحبه نباید دیگه از API
حرف میزد (ازون جایی که mock interview
ها همیشه یک بکگراند قبلی داره فکر میکردم بسته شده که قرار نیست API یا microservice
باشه)این خیلی مهمه توی مصاحبه هر فرضیهای که تایید نگیرد غلط هست و شما دارید مسیر اشتباه رو میرید؛ برای همین من به همه شاگردام و دوستانی که باهاشون مصاحبه کار میکردم همیشه گفتم یاد بگیرید توی جلسه مصاحبه بلند بلند فکر کنید اهمیت این موضوع
10/10
هست یعنی از خود کدهاتون هم با ارزش ترچون شاید شما نرسید توی تایم مصاحبه کد رو تکمیل کنید (که خب چیز اشتباهی نیست مگر در شرایط خاص) اما اگر بلند بلند تفکر کرده باشید و مصاحبه کننده بدونه به چی فکر کردید؛ نوع کد زدنتون رو هم که تا اینجا دیده احتمالش بسیار زیاد هست که نمره کامل رو براتون رد کنه و خدا میدونه که این امتیاز چقدر مهم و کمک کننده هست.
باقی در کامنتها :
BY Python Hints

Share with your friend now:
tgoop.com/pyHints/196