مصاحبه شغلی همیشه یکی از موقعیت های مهم و شاید استرس زا در زندگی کاری هر فرد است. مصاحبه استخدامی برنامه نویسی پایتون نیز از این قاعده مستثنی نیست. اگر شما به تازگی یک دوره آموزش برنامه نویسی پایتون را پشت سر گذاشته اید و می خواهید در این حوزه شروع به فعالیت کنید، دیر یا زود با این مرحله رو به رو خواهید شد.
همانطور که می دانید، امروزه پایتون یکی از محبوب ترین زبان های برنامه نویسی است. از مهم ترین دلایل محبوبیت پایتون می توان به موارد زیر اشاره کرد:
- یادگیری پایتون برای تمامی افراد حتی کسانی که آشنایی قبلی با برنامه نویسی ندارند، آسان است.
- زبان برنامه نویسی پایتون جزو آن دسته از زبان هاست که یک عملکرد را می توان با تعداد کمتر کد اجرا کرد.
- تعداد مشاغلی که در آن ها از برنامه نویسی پایتون استفاده می شود به شدت در حال افزایش است.
- با توجه به پر رنگ شدن هوش مصنوعی و یادگیری ماشین در صنایع و حتی زندگی روزمره ما، شرکت ها و سازمان های بزرگ دنیا به دنبال تقویت نیروهای متخصص برنامه نویسی پایتون هستند.
- مشاغل برنامه نویسی پایتون، جزو آن دسته از مشاغل هستند که درآمد بسیار مناسب و بالایی دارند.
در مقاله ” ۱۳ دلیلی که چرا باید پایتون را بیاموزید“، به سایر مزایای یادگیری برنامه نویسی پایتون، پرداخته شده است.
تمامی این دلایل زبان پایتون را به یک زبان محبوب و البته پر رقابت تبدیل می کند. با توجه به علاقه ی بالای برنامه نویسان به یادگیری برنامه نویسی پایتون و همچنین افزایش استخدام متخصص و برنامه نویس پایتون توسط سازمان ها و شرکت ها، این حوزه تبدیل به یک حوزه پر رقابت شده است. این جاست که اهمیت مصاحبه استخدامی پایتون برای شما روشن می شود. زیرا هرچه مصاحبه با موفقیت بیشتری انجام شود، شانس استخدام شما در شرکت معتبر و مورد علاقه تان و در نتیجه کسب درآمد بالا نیز افزایش می یابد.
در این مقاله لیستی از مهم ترین سوالات مصاحبه استخدامی پایتون به همراه پاسخ، برای شما گردآوری شده است. سوالاتی که در این مقاله جمع آوری شده، از ساده به پیشرفته مرتب شده است. پیشنهاد می کنیم که ابتدا هر سوال را بدون نگاه کردن به جواب، پاسخ دهید و سپس با پاسخ خود را به جواب ارائه شده بررسی کنید.
آنچه در این نوشته خواهیم داشت
١. پایتون چیست؟ مزایای استفاده از پایتون چیست؟
پایتون یک زبان برنامه نویسی سطح بالا، تعاملی، شیء گرا و تفسیری یا interpreted است. منظور از تفسیری بودن این است که زبان پایتون برخلاف زبان های دیگر مانند زبان C، قبل از اجرا، نیازی به کامپایل شدن ندارد. علاوه بر این، پایتون از اشیاء، ماژولها، رشتهها، مدیریت خطا و مدیریت حافظه خودکار پشتیبانی می کند که به مدل سازی مسائل و مشکلات دنیای واقعی و ساخت برنامههای کاربردی برای حل این مشکلات کمک می کند.
٢. مدیریت حافظه در پایتون چگونه است؟
پایتون از فضای پشته خصوصی یا private heap space برای مدیریت حافظه استفاده می کند. در واقع تمامی اشیاء و ساختارهای داده در فضای پشته خصوصی ذخیره می شوند. حتی برنامه نویس هم نمی تواند به این فضای خصوصی دسترسی داشته باشد زیرا مفسر یا interpreter از این فضا مراقبت می کند. پایتون همچنین دارای یک جمع کننده زباله داخلی است که تمام حافظه استفاده نشده را بازیافت و حافظه را آزاد می کند و آن را در فضای پشته در دسترس قرار می دهد.
٣. PEP 8 چیست؟
PEP 8 مخفف Python Enhancement Proposal، مجموعه قوانینی است که نحوه نوشتن و طراحی کد پایتون را برای حداکثر خوانایی مشخص می کند.
۴. تفاوت Mutable datatype و Immutable datatype چیست؟
داده های قابل تغییر یا Mutable datatype را می توان ویرایش کرد، یعنی می توانند در زمان اجرا تغییر کنند. مانند فهرست، دیکشنری، و غیره.
داده های تغییرناپذیر یا Immutable datatype قابل ویرایش نیستند، یعنی در زمان اجرا نمی توانند تغییر کنند. مانند رشته، تاپل، و غیره.
۵. تفاوت بین لیست و تاپل چیست؟
لیست ها و تاپل ها هر دو از انواع داده های دنباله ای هستند که می توانند مجموعه ای از اشیاء را در پایتون ذخیره کنند. اشیاء ذخیره شده در هر دو دنباله می توانند انواع داده های مختلفی باشند. لیست ها با کروشه نشان داده می شوند [abc’, 6, 0.19′]، در حالی که تاپل ها با پرانتز نمایش داده می شوند (abc’, 5, 0.97′).
از اصلی ترین تفاوت میان لیست و تاپل، می توان به موارد زیر اشاره کرد:
لیست
- داده های لیست قابل تغییر هستند.
- لیست ها حافظه بیشتری مصرف می کنند.
- لیست ها معمولا کندتر از تاپل ها هستند
- مثال: list_1 = [10, ‘abc’, 20]
تاپل
- داده های تاپل غیر قابل تغییر هستند.
- Tuple در مقایسه با لیست حافظه کمتری مصرف می کند.
- تاپل ها سریع تر از لیست ها هستند
- مثال: tup_1 = (10, ‘abc’ , 20)
۶. چگونه یک فایل را با استفاده از پایتون حذف کنیم؟
ما می توانیم یک فایل را با استفاده از روش های زیر حذف کنیم:
- ()os.remove
- ()os.unlink
٧. دکوراتورها چیست؟
دکوراتورها در پایتون توابع بسیار قدرتمند و مفیدی هستند، که بدون تغییر ساختار تابع، به افزودن قابلیت به یک تابع موجود کمک می کنند. دکوراتورها با @decorator_name نمایش داده می شوند و در قالبی از پایین به بالا فراخوانی می شوند.
# decorator function to convert to lowercase
def lowercase_decorator(function):
def wrapper():
func = function()
string_lowercase = func.lower()
return string_lowercase
return wrapper
# decorator function to split words
def splitter_decorator(function):
def wrapper():
func = function()
string_split = func.split()
return string_split
return wrapper
@splitter_decorator # this is executed next
@lowercase_decorator # this is executed first
def hello():
return 'Hello World'
hello() # output => [ 'hello' , 'world' ]
٨. تفاوت بین مجموعه (set) و دیکشنری (dictionary) چیست؟
set مجموعه ای نامرتب از داده ها است که قابل تکرار و تغییرپذیر است و هیچ عنصر تکراری ندارد. مثال
my_set = {1, 2, 3, 4, 3, 2}
خروجی : {1,2,3,4}
دیکشنری مجموعه ای نامرتب از داده ها است که برای ذخیره مقادیر داده استفاده می شود. عناصر در دیکشنری به صورت کلید (Key) و مقدار ذخیره می شوند. به عنوان مثال، در زیر یک دیکشنری شامل دو کلید، کشور و پایتخت، به همراه مقادیر متناظر آن ها، است.
dict={‘Country’:’Iran’,’Capital’:’Tehran’, }
خروجی : Country: Iran, Capital: Tehran
٩. ماژول های پایتون چیست؟
فایل های حاوی کدهای پایتون با پسوند “py.” ماژول های پایتون نامیده می شوند. این کدها می توانند کلاس، توابع یا متغیر باشند که در صورت نیاز با ارائه قابلیت های از پیش تعریف شده، در زمان برنامه نویسی صرفه جویی کنند.
ماژول های رایج و معمول در برنامه نویسی پایتون عبارتند از:
- os
- sys
- data time
- math
- random
- JSON
١٠. لیترال پایتون چیست؟
Literals به داده هایی اشاره دارد که به یک متغیر یا ثابت داده می شود. لیترال های پشتیبانی شده توسط پایتون عبارتند از:
رشته: مقادیر رشته بین دو”” قرار می گیرند. مثلا: “amanjacademy” یا “65383”
اعداد: لیترال های عددی پشتیبانی شده در پایتون شامل موارد زیر هستند.
- اعداد صحیح: I=10
- اعداد شناور: i=5.2
- اعداد مختلط: 1.73j
- اعداد بولین: نمایش این اعداد به صورت True و False است.
١١. Namespace پایتون چیست؟
Namespace یک سیستم نامگذاری است که برای اطمینان از منحصربه فرد بودن نامها و جلوگیری از بروز تضاد در نامگذاری ها استفاده می شود. در این جا چند نمونه از Namespace را معرفی کرده ایم:
- Local Namespace: از نام های محلی در داخل یک تابع تشکیل شده است که به طور موقت برای فراخوانی تابع ایجاد می شود و پس از بازگشت تابع پاک می شود.
- Global Namespace: شامل نامهایی از ماژولهای مختلف است که در پروژه استفاده میشوند.
- Built-in Namespace: شامل توابع داخلی پایتون و نامهای داخلی اختصاصی است.
١٢. رگرسیون چیست؟
رگرسیون یک تکنیک الگوریتم یادگیری ماشین نظارت شده (supervised) است که برای یافتن همبستگی بین متغیرها و کمک به پیش بینی متغیر وابسته (y) بر اساس متغیر مستقل (x) استفاده می شود. رگرسیون عمدتاً برای پیشبینی، مدلسازی سریهای زمانی، پیشبینی و تعیین رابطه علی-معلولی بین متغیرها استفاده میشود. برای پیاده سازی رگرسیون و همه الگوریتم های یادگیری ماشین از کتابخانه Scikit استفاده می شود.
الگوریتم های رگرسیون در یادگیری ماشین به 2 دسته تقسیم می شوند:
- رگرسیون خطی: زمانی استفاده می شود که متغیرها دارای ماهیت پیوسته و عددی باشند.
- رگرسیون لجستیک: زمانی استفاده می شود که متغیرها ماهیت پیوسته و طبقه بندی شده داشته باشند.
١٣. Pandas چیست؟
Pandas یک کتابخانه پایتون متن باز است که از ساختارهای داده برای تجزیه و تحلیل داده ها و دستکاری داده ها پشتیبانی می کند. pandas با مجموعهای از ویژگیهای غنی خود در هر نقشی از عملیات دادهها، چه مربوط به پیادهسازی الگوریتمهای مختلف باشد و چه برای حل مشکلات پیچیده، مناسب است.
١۴. تابع lambada چیست؟
تابع Lambda یک تابع ناشناس و بدون نام است. تابع lambada یک تابع کوچک و محدود است که بیش از یک خط ندارد. تابع لامبدا می تواند هر تعداد آرگومان را بگیرد، اما فقط می تواند یک عبارت یا expression داشته باشد. مثال:
x = lambda a: a + 10
print(x(5))
خروجی : 15
١۵. تفاوت بین تابع ()xrange و ()range چیست؟
()range و ()xrange دو تابعی هستند که می توانند برای تکرار تعداد مشخصی از حلقه های for در پایتون استفاده شوند.
تابع range()
- در پایتون 3، ()xrange پشتیبانی نمی شود. در عوض، از تابع ()range برای تکرار در حلقههای for استفاده میشود.
- خروجی این تابع یک لیست است.
- استفاده از این تابع حافظه بیشتری می گیرد زیرا کل لیست اعداد تکرار شونده را در حافظه نگه می دارد.
تابع ()xrange
- تابع ()xrange در پایتون 2 برای تکرار در حلقههای for استفاده میشود.
- این تابع در زمان اجرا یک لیست ثابت ایجاد نمی کند و یک شی مولد را برمی گرداند.
- حافظه کمتری می گیرد زیرا هر بار فقط یک عدد را در حافظه نگه می دارد.
بیشتر بخوانید: “معرفی زبان برنامه نویسی پایتون و مقایسه پایتون ۲ و ۳“
١۶. تابع ()map در پایتون چیست؟
تابع ()map در پایتون دارای دو پارامتر function و iterable است. تابع ()map یک تابع را به عنوان یک آرگومان می گیرد و سپس آن تابع را بر روی تمام عناصر یک iterable اعمال می کند و به عنوان آرگومان دیگر به آن ارسال می شود. یک لیست شی از نتایج را برمی گرداند. مثال
def calculateSq(n):
return n*n
numbers = (2, 3, 4, 5)
result = map( calculateSq, numbers)
print(result)
خروجی: (25, 16, 9, 4)
١٧. معماری Django را توصیف کنید.
جنگو یک وب سرویس است که برای ساخت صفحات وب شما استفاده می شود. معماری آن به شرح زیر است:
- Template: قسمت جلویی صفحه وب یا فرانت اند.
- Model: بک اند و جایی که داده ها در آن ذخیره می شوند.
- View: با Template و Model تعامل دارد و آن را به URL نگاشت می کند.
- Django: صفحه را به کاربر ارائه می دهد.
بیشتر بخوانید: “راهنمای جامع کتابخانه Django در زبان پایتون“
١٨. تابع zip چیست؟
تابع ()zip عناصر دو یا چند لیست را متناظر می کند. مثال:
a = (1, 2, 3)
b = (4, 5, 6)
x = zip(a, b)
خروجی: ((1, 4), (2, 5), (3, 6))
١٩. خروجی کد زیر چیست؟
def f(x,l=[]):
for i in range(x):
l.append(i*i)
print(l)
f(2)
f(3,[3,2,1])
f(3)
پاسخ :
[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0, 1, 4]
٢٠. کدام پایگاه داده توسط پایتون پشتیبانی می شود؟
MySQL (Structured) و MongoDB (Unstructured) پایگاه های داده برجسته ای هستند که در پایتون پشتیبانی می شوند.
٢١. PIP چیست؟
PIP مخفف Python Installer Package است که یک رابط یکپارچه برای نصب ماژول های مختلف پایتون فراهم می کند. این یک ابزار خط فرمان است که می تواند بسته ها را از طریق اینترنت جستجو کرده و بدون هیچ گونه تعامل کاربر نصب کند.
٢٢. docstring در پایتون چیست؟
منظور از docstring در پایتون همان رشته هایی هستند که درست بعد از تابع، متد یا ماژول ظاهر می شوند. برای تعریف docstring می توان از سه کوتیشن (“””) استفاده کرد.
def my_function():
'''Demonstrates triple double quotes
docstrings and does nothing really.'''
return None
print("Using __doc__:")
print(my_function.__doc__)
print("Using help:")
help(my_function)
خروجی:
Demonstrates triple double quotes
docstrings and does nothing really.
Using help:
Help on function my_function in module __main__:
my_function()
Demonstrates triple double quotes
docstrings and does nothing really.
٢٣. کدام یک از موارد زیر برای ایجاد مجموعه در پایتون دستور صحیحی نیست؟
- مجموعه ([[1،2]، [3،4]، [4،5]])
- مجموعه ([1،2،2،3،4،5])
- {1،2،3،4}
- مجموعه ((1،2،3،4))
پاسخ: مجموعه ([[1،2]، [3،4]، [4،5]])
٢۴. فریم های داده چیست؟
یک دیتافریم به یک ساختار داده تغییرپذیر دو بعدی یا داده هایی اشاره دارد که به شکل جدولی با محورهای برچسب دار (ردیف ها و ستون ها) تراز شده اند.
٢۵. Data Abstraction چیست؟
فرآیندی که در آن دادهها و توابع به گونهای تعریف میشوند که فقط جزئیات اساسی قابل مشاهده باشد و پیادهسازیهای غیر ضروری را پنهان شود، Data Abstraction نامیده میشود.
# Python program showing
# abstract base class work
from abc import ABC, abstractmethod
class Polygon(ABC):
@abstractmethod
def noofsides(self):
pass
class Triangle(Polygon):
# overriding abstract method
def noofsides(self):
print("I have 3 sides")
class Pentagon(Polygon):
# overriding abstract method
def noofsides(self):
print("I have 5 sides")
class Hexagon(Polygon):
# overriding abstract method
def noofsides(self):
print("I have 6 sides")
class Quadrilateral(Polygon):
# overriding abstract method
def noofsides(self):
print("I have 4 sides")
# Driver code
R = Triangle()
R.noofsides()
K = Quadrilateral()
K.noofsides()
R = Pentagon()
R.noofsides()
K = Hexagon()
K.noofsides()
خروجی:
I have 3 sides
I have 4 sides
I have 5 sides
I have 6 sides
٢۶. monkey patching در پایتون چیست؟
در پایتون، اصطلاح monkey patching به تغییرات پویا یک کلاس یا ماژول در زمان اجرا اشاره دارد.
import monk
def monkey_f(self):
print ("monkey_f() is being called")
# replacing address of "func" with "monkey_f"
monk.A.func = monkey_f
obj = monk.A()
# calling function "func" whose address got replaced
# with function "monkey_f()"
obj.func()
خروجی: monkey_f() is being called
٢٧. self در پایتون چیست؟
self نشان دهنده یک نمونه از کلاس است. با استفاده از self می توانیم به ویژگی ها و متدهای کلاس در پایتون دسترسی داشته باشیم. تابع self این ویژگی ها را با آرگومان های داده شده پیوند می دهد.
class check:
def __init__(self):
print("Address of self = ",id(self))
obj = check()
print("Address of class object = ",id(obj))
خروجی:
Address of self = 140124194801032
Address of class object = 140124194801032
٢٨. تفاوت بین متدهای ()append و ()extend چیست؟
هر دو متد append() و extend() متدهایی هستند که برای افزودن عناصر در انتهای لیست استفاده می شوند.
- append(element): عنصر داده شده را در انتهای لیستی که متد ()append را فراخوانی می کند، اضافه می کند.
- extend(another-list): عناصر لیست دیگری را در انتهای لیست اضافه می کند که متد ()extension را فراخوانی می کند.
٢٩. یک برنامه پایتون بنویسید که تعداد کل خطوط یک فایل متنی را بشمارد؟
def file_count(fname):
with open(fname) as f:
for i, 1 in enumerate(f):
paas
return i+1
print(“Total number of lines in the text file: ”, file_count(“file.txt”))
٣٠. برنامه ای در پایتون برای اجرای الگوریتم مرتب سازی حبابی (Bubble sorting) بنویسید؟
def bubbleSort(x):
n = len(x)
# Traverse through all array elements
for i in range(n-1):
for j in range(0, n-i-1):
if x[j] > x[j+1] :
x[j], x[j+1] = x[j+1], x[j]
# Driver code to test above
arr = [25, 34,47, 21, 22, 11,37]
bubbleSort(arr)
print ("Sorted array is:")
for i in range(len(arr)):
print ("%d" %arr[i]),
خروجی:
11,21,22,25,34,37,47
بیشتر بخوانید: “راهنمای جامع بازارکار و درامد برنامه نویسی پایتون“
نتیجه گیری
موفقیت در مصاحبه شغلی مستلزم تسلط بر مهارت و دانش و آمادگی شما در نحوه ارائه و بیان است. تعداد فرصت های شغلی در حال ظهور که نیازمند مهارت در پایتون است، در حال افزایش است. از آنجایی که سازمان ها و شرکت ها به دنبال افراد حرفهای با مهارتهای مرتبط هستند، باید اطمینان حاصل کنید که دانش کاملی از اصول پایتون و توانایی پاسخ دادن به تمام سوالات مصاحبه پایتون دارید. قطعا سوالات مصاحبه استخدامی پایتون با توجه به شرکت و سابقه کاری متقاضیان متفاوت است و نمی توان لیست دقیقی از سوالات مصاحبه لستخدامی پایتون ارائه داد. اما در این مقاله تلاش بر این بود تا با طرح سوالات متنوع در سطوح مختلف، دید کاملی از شیوه سوالات مصاحبه استخدامی پایتون ارائه دهیم.
برای تهیه این مقاله از منابع زیر استفاده شده است: