س.مرتضی موسوی
س.مرتضی موسوی
خواندن ۵ دقیقه·۵ سال پیش

53 سؤال و پاسخ در یک مصاحبه شغلی پایتون(قسمت اول)

با سلام و درود

چند روز پیش من نقش جدیدی رو به عنوان مهندس داده شروع کردم که چندان توش موفق نبودم.

خیلی از کسانی که این نقشو بازی میکنن تا حالا کدهای زیادی زدن ولی تا حالا سوالای زیرم به گوششون نخورده :))))))



1- تفاوت بین لیست و یک تاپل(یا توپل) چیست؟

این سوال خیلی مهم است، اگر تقلبی در کار است این این در اول سطر بنویسید!

- لیست ها قابل تغییر هستند.

- تاپل ها تغییر ناپذیر هستند.

- لیست ها نظم دارند، آنها توالی مرتب شده ای هستن به طور معمول از همان نوع ابجکت. یعنی: 0 1 2.

[&quotMorteza&quot, &quotAhmad&quot, &quotEli&quot]


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

(2, &quotAhmad&quot, &quot2020–04–27&quot) #(تاریخ, نام, آیدی)



2. تفاوت بین "is" و "==" چیست؟

این is هویت را بررسی می کند و == برابری را بررسی می کند.

a = [1,2,3] b = a c = [1,2,3] print(a == b) #True print(a == c) #True print(a is b) #True print(a is c) #False



3- دکوراتور چیست؟

خب دکوراتور اینه که بتونیم از طریق یک تابع، کارکرد یک تابع دیگه رو تغییر بدیم و یا بهتر بگیم که یه تابع رو گسترش بدیم. 

تصور کنید تابع ۱ رو دارید و تابع ۲ … حالا می‌خواید از طریق تابع ۱، کاری بکنید که تابع ۲ کارهای بیشتری رو انجام بده. 

def func1(): print(&quotHello Morteza!&quot) def func2(func1): print('--------------------') func1() print('--------------------') func2(func1)



4- فانکشن range رو توضیح بدین.

تابع range در زبان پایتون یک بازه از اعداد صحیح از start تا end-1 بر میگرداند و در صورتی که start ذکر نشود، بصورت پیشفرض 0 است . step نیز مشخص میکند که فاصله‌ی اعدادی از هم چقدر باشد و بصورت پیشفرض 1 هست.

for i in range(9): print(i) #[0 1 2 3 4 5 6 7 8]
for i in range(0, 11, 2): print(i) #[0 2 4 6 8 10]



5- یک کلاس به نام car با دو ویژگی color و speed تعریف کنید. سپس یک instance ایجاد کنید و سرعت را بدست آورید.

class Car : def init(self, color, speed): self.color = color self.speed = speedcar = Car('red','100mph') car.speed #'100mph'



6- تفابیت بین متدهای instance و static در چیه؟

نوع Static پارامتر ورودی قبول نمی کند و حتی Access Modifier هم نمی پذیرد. اما Instance برعکس اینه.



7- تفاوت بین “func” و “func()” در چیه؟

هدف از این سوال این است که ببینند آیا می فهمید که همه فانکشنها مثل ابجکتها هستند.

def func(): print('Im a function') func #function main.func>func() # Im a function



8 فانکشن map چجوری کار میکنه؟

نقشه لیستی از مقادیر برگشتی را از اعمال یک تابع به هر عنصر در یک توالی باز می گرداند.

def add_three(x): return x + 3li = [1,2,3][i for i in map(add_three, li)] #[4, 5, 6]



9. فانکشن reduce چجوری کار میکنه؟

ای بابا! خیلی پیچیدست...

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

from functools import reducedef add_three(x,y): return x + yli = [1,2,3,5]reduce(add_three, li) #11



10. کار فانکشن filter چجوریه؟

کار فیلتر مانند معنیشه. اعداد از فیلتر عبور میکنن و براساس این true یا false برگشت داده میشه.

def add_three(x): if x % 2 == 0: return True else: return Falseli = [1,2,3,4,5,6,7,8][i for i in filter(add_three, li)] #[2, 4, 6, 8]

در بالا اعداد زوج جدا شده اند توسط این تابع.



11. آیا پایتون با مرجع ارتباط می گیرد یا با مقدار؟

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

name = 'chr'def add_chars(s): s += 'is' print(s) add_chars(name) #chria print(name) #chr



12. چجوری یه لیستو برعکس کنیم؟

چه سوالایی :/

با استفاده از تابع reverse



13. هه! ضرب یه رشته یا یک لیست چجوری کار میکنه؟

به راحتی:

'cat' * 3 #'catcatcat' [1,2,3] * 2 #[1, 2, 3, 1, 2, 3]



14. عبارت "self" در کلاس به چه معناست؟

این نحوه دسترسی به متدها و امکان آپدیت آبجکت متعلق به آنها است. در این مثال با استفاده از __init__() کاری میکنیم که رنگ رو در ابتدا بتونیم ست کنیم:

class Shirt: def init(self, color): self.color = color s = Shirt('yellow') s.color #'yellow'



15. چجوری یه لیست رو در پایتون جمع بزنیم؟

a = [1,2] b = [3,4,5] a + b #[1, 2, 3, 4, 5]



بقیه سوالات در پست بعدی...

پایتونjobsبرنامه نویسیمصاحبه شغلیحال خوبتو با من تقسیم کن
mortezamosavi@yahoo.com
شاید از این پست‌ها خوشتان بیاید