نمونه سوالات استخدامی برنامه نویسی ++C به همراه جوابها
فهرست مطلب
زبان برنامهنویسی ++C یک زبان قدرتمند است که با استفاده از آن میتوانید همه کاری انجام دهید. در حال حاضر تقاضای زیادی برای این تخصص وجود دارد و برنامه نویسانی که تسلط خوبی بر این زبان داشته باشند موقعیتهای استخدام فراوانی دارند. اما در جلسه مصاحبه استخدامی از کارجویان و متقاضیان سوالاتی پرسیده میشود تا در مورد توانایی و دانش تخصصی آنها اطمینان حاصل شود. در این مقاله میخواهیم به رایجترین نمونه سوالات استخدامی برنامه نویسی ++C و جوابهای درست آنها نگاهی داشته باشیم.
برای مشاهدهی آگهیهای استخدام برنامه نویس ++C کلیک کنید.
مقدمهای بر زبان برنامهنویسی ++C
این زبان برنامهنویسی، با اختلاف زیاد، یکی از سریعترین زبانهای برنامهنویسی شیءگرا است. این زبان برنامهنویسی به دلیل سرعت و سازگاری بالا از محبوبیت زیادی برخوردار است.
از زبان ++C به طور گستردهای در توسعهی بازیها و سرورها استفاده میشود. از مهمترین کاربردهای این زبان برنامهنویسی میتوان به موارد زیر اشاره کرد:
- توسعهی سیستمهای عامل
- اپلیکیشنهای بر پایهی GUI
- سیستمهای توزیعی
- نرمافزارهای پایگاه داده
- اپلیکیشنهای بانکداری
- محاسبات و گرافیک پیچیده
- سیستمهای جاگذاری شده
در حال حاضر، بازار کار خوبی برای این زبان برنامهنویسی وجود دارد و بنابراین، قصد داریم در رابطه با نمونه سوالات استخدامی برنامه نویسی ++C صحبت کنیم. با ما همراه باشید.
برای مشاهده آگهیهای استخدام برنامه نویسی کلیک کنید.
نمونه سوال مبانی برنامه نویسی ++C
به یاد داشته باشید هر چقدر هم سطح تجربهی شما و سطح شغلی که برای آن رزومه فرستادهاید، بالا باشد، ممکن است در جلسهی مصاحبه از شما سوالات بسیار ابتدایی پرسیده شود. به همین دلیل، تصمیم گرفتیم ابتدا چندین نمونه سوال مبانی برنامه نویسی ++C را برای شما بیاوریم.
شاید پاسخ این سوالها را بدانید اما اگر بدون آمادگی ذهنی وارد جلسهی مصاحبه شوید و چنین سوالاتی از شما پرسیده شود، ممکن است غافلگیر شوید و برای پاسخ دادن به آنها، حضور ذهن نداشته باشید.
رایجترین نمونه سوال مبانی برنامه نویسی ++C به شرح زیر است:
- زبان برنامهنویسی ++C چیست؟
- منظور از شیء چیست؟
- منظور از کلاس چیست؟
- منظور از زبان برنامهنویسی شیءگرا چیست؟
- کپسولهسازی به چه معنی است؟
- منظور از کانستراکتور و دستراکتور چیست؟
خودتان را برای پاسخگویی به ابتداییترین و پایهایترین سوالات برنامهنویسی ++C آماده کنید.
نمونه سوالات استخدامی برنامه نویسی ++C
بعد از اینکه برای یک آگهی استخدام برنامه نویس ++C رزومه بفرستید، ممکن است به مصاحبه استخدامی دعوت شوید. برای اینکه شانس موفقیت خود را در مصاحبه استخدامی بالا ببرید، باید خودتان را حسابی برای شرکت در جلسه مصاحبه آماده کنید.
یکی از مهمترین کارهایی که باید در روزهای قبل از حضور در جلسه مصاحبه انجام دهید، تهیهی لیستی از نمونه سوالات استخدامی برنامه نویسی ++C به همراه جوابهای آنها است. شما باید به این جوابها مسلط باشید تا در جلسهی مصاحبه غافلگیر نشوید و به راحتی بتوانید به سوالات مصاحبهکنندگان پاسخ دهید. بیایید با هم نگاهی بیاندازیم بر رایجترین سوالاتی که معمولا در جلسهی مصاحبه استخدام برنامهنویس ++C پرسیده میشود.
مطلب مرتبط: راهنمای استخدام برنامه نویس ++C
۱- دیتا تایپهای موجود در زبان برنامهنویسی ++C کدامند؟
چهار دیتا تایپ در زبان برنامه نویسی ++C وجود دارد که به شرح زیر هستند:
- دیتا تایپ اولیه (دیتا تایپ پایه) مثل char، short، int، float، long، double، bool و …
- دیتا تایپ مشتق شده مثل array، پوینتر و …
- دیتا تایپ شمارشی مثل enum
- دیتا تایپهای تعریف شده توسط کاربر مثل ساختار، کلاس و …
۲- تفاوت بین زبان برنامهنویسی C و ++C چیست؟
یکی از رایجترین نمونه سوالات استخدامی برنامه نویسی ++C، تفاوت بین این زبان با زبان C است. در جدول زیر به این سوال پاسخ دادهایم:
زبان C | زبان ++C |
یک زبان رویهگرا است | یک زبان شیءگرا است |
از مخفیسازی دادهها پشتیبانی نمیکند | دادهها از طریق فرایند کپسولهسازی مخفی میشوند |
از اورلودینگ تابع و اپراتور پشتیبانی نمیکند | از اورلودینگ تابع و اپراتور پشتیبانی میکند |
قابلیتهای فضای نام (namespace) در زبان C وجود ندارند | فضای نام در این زبان استفاده میشود و مانعی برای ایجادپ مشکل name collision است. |
توابع را نمیتوان درون ساختارها تعریف کرد | توابع را میتوان درون ساختارها تعریف کرد |
توابع ()calloc و ()malloc برای تخصیص حافظه مورد استفاده قرار میگیرند و تابع ()free برای آزادسازی حافظه استفاده میشود | از اپراتور new برای تخصیص حافظه و از اپراتور deletes برای آزادسازی حافظه استفاده میشود |
۳- کلاس و شیء در برنامهنویسی ++C به چه معنی هستند؟
کلاس، یک دیتا تایپ تعریف شده توسط کاربر است که اعضای داده و توابع داده دارد. اعضای داده، متغیرهای داده هستند و توابع داده به توابعی گفته میشود که برای انجام عملیات روی این متغیرها استفاده میشوند.
هر شیء در زبان برنامهنویسی ++C، موردی از یک کلاس است. از آن جایی که هر کلاس یک دیتا تایپ تعریف شده توسط کاربر است، بنابراین، یک شیء را میتوان متغیری از آن دیتا تایپ نیز دانست.
۴- تفاوت بین ساختار و کلاس در زبان برنامهنویسی ++C چیست؟
یکی از مهمترین نمونه سوالات استخدامی برنامه نویسی ++C در رابطه با تفاوت ساختار و کلاس است. در این زبان برنامهنویسی، ساختار، به جزء چند تفاوت جزئی، مثل تفاوت در امنیت، شبیه به کلاس است. در جدول زیر میتوانید تفاوتهای کلاس و ساختار را ببینید:
ساختار | کلاس |
اعضای ساختار به صورت پیشفرض، عمومی هستند | اعضای ساختار به صورت پیشفرض، خصوصی هستند |
وقتی یک ساختار از یک کلاس/ساختار گرفته میشود، تعیینکنندههای دسترسی پیشفرص برای ساختار/کلاس پایه، عمومی هستند | وقتی یک کلاس از یک ساختار/کلاس گرفته میشود، تعیینکنندههای دسترسی، خصوصی هستند |
۵- اورلودینگ اپراتور چیست؟
اورلودینگ اپراتور یک عنصر بسیار مهم برای اجرای دیتا تایپهای تعریف شده توسط کاربر است. با استفاده از اورلودینگ اپراتور میتوانیم معنی پیشفرض اپراتورهایی مثل +، -، *، /، => و … را تغییر دهیم.
۶- پلیمورفیسم در برنامهنویسی ++C چیست؟
یکی از نمونه سوالات استخدامی برنامه نویسی ++C میتواند در رابطه با پلیمورفیسم باشد. اگر بخواهیم خیلی ساده بگوییم، پلیمورفیسم به معنی چندشکلی بودن است. پلیمورفیسم زمانی رخ میدهد که چندین کلاس داریم که از نظر وراثتی به هم دیگر مرتبط هستند.
برای مثال، تصور کنید که یک کلاس پایه به نام car، روشی به نام ()car brand دارد. کلاسهای مشتق شده از car میتوانند شامل Mercedes، BMW، Audi، Ford، Toyota و … باشند و همهی این کلاسها، خروجیهای تابع ()cars نیز هستند.
دو نوع پلیمورفیسم در ++C وجود دارد:
- پلیمورفیسم زمان کامپایل
- پلیمورفیسم زمان اجرا
۷- کانستراکتور را در ++C توضیح دهید؟
کانستراکتور عضوی از یک تابع است که هر زمان یک شیء ایجاد میشود، به صورت خودکار اجرا میشود. کانستراکتورها، نامهایی مشابه با کلاسی دارند که عضو آن هستند تا کامپایلر بداند که کدام عضو تابع، یک کانستراکتور است.
۸- در رابطه با تابع مجازی چه میدانید؟
تابع مجازی یک تابع عضو در کلاس پایه است که در یک کلاس مشتق شده، بازتعریف شده است. یک تابع مجازی توسط کیبورد مجازی مشخص میشود. وقتی یک تابع به صورت مجازی ساخته میشود، ++C بر اساس نوع شیئی که اشارهگر کلاس پایه به آن اشاره دارد، تعیین میکند که کدام تابع، در زمان اجرا مورد استفاده قرار بگیرد.
۹- پلیمورفیسم زمان کامپایل را با پلیمورفیسم زمان اجرا مقایسه کنید
در جدول زیر میتوانید تفاوتهای پلیمورفیسم زمان کامپایل با پلیمورفیسم زمان اجرا را مشاهده کنید:
پلیمورفیسم زمان کامپایل | پلیمورفیسم زمان اجرا |
در این روش، میتوانیم بفهمیم که در زمان کامپایل، کدام روش، فراخوانده میشود | در این روش، میتوانیم بفهمیم که در زمان اجرا، کدام روش، فراخوانده میشود |
امکان اجرای سریع را فرآهم میآورد | اجرا از پلیمورفیسیم زمان کامپایل کندتر است |
۱۰- در رابطه با کلاس دوست و تابع دوست چه میدانید؟
یک کلاس دوست (friend) میتواند به اعضای خصوصی، محافظتشده و عمومی کلاسهای دیگر که به عنوان کلاسهای دوست آن مشخص شدهاند، دسترسی داشته باشد.
تابع دوست نیز همانند کلاس دوست میتواند به اعضای خصوصی، محافظت شده و عمومی دسترسی داشته باشد اما توابع دوست، توابع عضو نیستند.
۱۱- تعیینکنندههای دسترسی ++C را توضیح دهید
در زبان ++C تعیینکنندههای دسترسی زیر وجود دارند:
- عمومی (Public): تمامی اعضای داده و توابع عضو، خارج از کلاس در دسترس هستند.
- محافظت شده (Protected): تمامی اعضای داده و توابع عضو، درون کلاس در دسترس هستند و در دسترس کلاسهای مشتق شده نیز قرار دارند.
- خصوصی (Private): هیچکدام از اعضای داده و توابع داده، خارج از کلاس در دسترس نیستند.
۱۲- تابع اینلاین چیست؟
ممکن است یکی از نمونه سوالات استخدامی برنامه نویسی ++C این باشد که تابع اینلاین (inline) را تعریف کنید.
اگر تابعی اینلاین باشد، کامپایلر، یک نسخه از کد تابع را در هر نقطهای که تابع در آن جا در زمان کامپایل فراخوانده میشود، قرار میدهد. یکی از مزیتهای مهم استفاده از تابع اینلاین، حذف فراخوانده شدن تابع در بالادست یک تابع معمولی است.
۱۳- تابع مرجع در ++C چیست؟
یک مرجع (reference) همانند یک اشارهگر است. مرجع، نام دیگر متغیری میباشد که از قبل موجود بوده است. وقتی یک نام مرجع با یک متغیر شروع میشود، میتوان از طریق نام مرجع یا نام متغیر، به آن متغیر دسترسی داشت.
۱۴- منظور از چکیدهسازی در ++C چیست؟
چکیدهسازی عبارت است از فرآیندی که در آن، جزئیات ضروری به کاربر نمایش داده میشود و جزئیاتی که نمیخواهیم به کاربر نشان داده شوند یا اطلاعاتی که ارتباطی به یک کاربر خاص ندارند، مخفی باقی میمانند.
۱۵- آیا اورلودینگ دکانستراکتور امکان پذیر است؟ اگر بله، چگونه؟ و اگر نه، چرا؟
یکی از رایجترین نمونه سوالات استخدامی برنامه نویسی ++C این است که آیا در این زبان، امکان اورلودینگ دکانستراکتور وجود دارد یا خیر؟
جواب این سوال، منفی است. دکانستراکتورها هیج آرگومانی را قبول نمیکنند و بنابراین، تنها یک روش برای تخریب یک شیء وجود دارد. به همین دلیل، اورلودینگ دکانستراکتور در زبان ++C امکانپذیر نیست.
۱۶- منظور از فراخوانی با مقدار و فراخوانی با مرجع چیست؟
در روش فراخواندن با مقدار (call by value)، فقط نسخهای از یک پارامتر به تابع ارسال میشود و خود مقدار اصلی، دست نخورده باقی میماند. یک حافظهی جدید به این نسخههای کپی شده اختصاص داده میشود و تغییراتی که در این مقادیر ایجاد میشود، روی متغیر در تابع اصلی هیچ تأثیری ندارد.
در روش فراخوانی با مرجع (call by reference)، آدرس متغیر و آدرس مورد استفاده برای دسترسی به آرگومان واقعی مورد استفاده در تابع فراخوانی را ارسال میکنیم. بنابراین، تغییرات در پارامتر، سبب تغییر در آرگومان ارسالی میشوند.
۱۷- کلاس چکیده چیست و چه زمانی از آن استفاده میکنید؟
کلاسی که اشیاء آن را هرگز نتوان ایجاد کرد، یک کلاس چکیده نامیده میشود. چنین کلاسی، به عنوان یک والد برای کلاسهای مشتق شده، موجود است. ما میتوانیم از طریق قرار دادن یک تابع مجازی خالص در کلاس، یک کلاس چکیده بسازیم.
۱۸- منظور از دستراکتور در زبان ++C چیست؟
یکی از رایجترین نمونه سوالات استخدامی برنامه نویسی ++C در رابطه با دستراکتورها است.
وقتی یک شیء برای اولین بار ایجاد میشود، یک کانستراکتور به طور خودکار، فراخوانده میشود. به طور مشابهی، وقتی یک شیء تخریب میشود، تابعی به نام دستراکتور به طور خودکار، فراخوانده میشود. نام دستراکتور با نام کانستراکتور یکسان است (و این نام، با نام کلاس یکسان است) اما قبل از آن یک تیلد قرار میگیرد.
۱۹- منظور از اعضای استاتیک و توابع عضو استاتیک چیست؟
وقتی یک متغیر در یک کلاس به صورت استاتیک مشخص میشود، فضای مختص به آن به طول عمر برنامه، اختصاص پیدا میکتند. هیچ فرقی نمیکند که چه تعداد شیء از آن کلاس ایجاد شده باشند، همیشه یک نسخه از عضو استاتیک وجود دارد. بنابراین، میتوان به وسیلهی تمامی اشیاء آن کلاس به آن عضو استاتیک دسترسی پیدا کرد.
حتی اگر هیچ شیئی از یک کلاس وجود نداشته باشد، میتوان یک تابع عضو استاتیک را فراخواند و تنها با استفاده از نام کلاس و اپراتور رزولوشن اسکوپ میتوان به تابع استاتیک، دسترسی داشت.
وراثت را توضیح دهید؟
یکی از مهمترین نمونه سوالات استخدامی برنامه نویسی ++C در رابطه با توضیح وراثت (inheritance) است.
وراثت یعنی فرآیند ایجاد کلاسهای جدید که کلاسهای مشتق شده نیز نامیده میشوند، از کلاسهای موجود. این کلاسهای موجود، کلاسهای پایه نامیده میشوند. کلاسهای مشتق شده، تمامی قابلیتهای کلاسهای پایه را به ارث میبرند اما میتوانند به خودشان، قابلیتها و اصلاحات جدید اضافه کنند.
نمونه سوالات استخدامی ++C برای برنامهنویسان سنیور
سوالاتی که در یک مصاحبه استخدامی از یک برنامهنویس جونیور پرسیده میشوند، با سوالاتی که کارفرمایان از یک برنامهنویس سنیور میپرسند، تفاوت زیادی دارند. در زیر، تعدادی از نمونه سوالات استخدامی ++C برای برنامهنویسان سنیور را آوردهایم:
- کپی کانستراکتور چیست؟
- تفاوت بین کپی سطحی (shallow copy) و کپی عمیق (deep copy) چیست؟
- تفاوت بین توابع مجازی و توابع مجازی خالص چیست؟
- اگر کلاس D از کلاس B مشتق شده باشد، وقتی یک شیء از نوع D ایجاد میکنید، تحت چه دستوری، کانستراکتورهای این کلاسها، فراخوانده میشوند؟
- آیا میتوانیم یک تابع مجازی را از یک کانستراکتور فرا بخوانیم؟
- منظور از اشارهگرهای خالی (void pointers) چیست؟
- اشارهگر this در زبان ++C چیست؟
- چگونه در ++C حافظه تخصیص میدهید و آزاد میکنید؟
جمعبندی
زبان برنامهنویسی ++C با وجود قدیمی بودن، هنوز کاربرد بسیار زیادی دارد. برای اینکه در جلسهی مصاحبهی استخدامی این زبان برنامهنویسی عملکرد خوبی داشته باشید، باید پیش از حضور در جلسهی مصاحبه، خودتان را برای پاسخگویی به سوالات مصاحبهکنندگان آماده کنید.
برای مشاهدهی فرصتهای استخدام برنامه نویس ++C و ارسال رزومه به آنها میتوانید به کاریابی آنلاین جاب ویژن مراجعه کنید.
در این مقاله، رایجترین نمونه سوالات استخدامی برنامه نویسی ++C را به همراه جواب برای شما آوردیم. به یاد داشته باشید در هر سطحی از برنامهنویسی که باشید، ممکن است در جلسهی مصاحبه، سادهترین و پایهایترین سوالات برنامهنویسی ++C از شما پرسیده شود.
منبع: InterviewBit