سؤلاتی که دولوپرهای جاوا باید پاسخ مناسبی برای آن‌ها در روز مصاحبه داشته باشند


در این مقاله قصد داریم اغلب پرسش‌هایی که از یک دولوپر زبان جاوا در حین مصاحبه پرسیده می‌شوند، از سؤالات ساده تا سخت، را مورد بررسی قرار می‌دهیم.

1. تفاوت بین متدهای استاتیک و غیراستاتیک را توضیح دهید و همچنین نوع معماری حافظه که برای آن‌ها در نظر گرفته می‌شود را شرح دهید.

2. دلیل استفاده از کلیدواژۀ final را در کلاس‌ها و متغیرها توضیح دهید و موقعیت‌هایی را بیان کنید که می‌بایست از این کلیدواژه استفاده نمایید.

3. مفهوم Casting را در زبان جاوا توضیح دهید. فرض کنید یک داده از نوع عدد اعشاری (double) داریم؛ حال چگونه می‌توانیم این داده را در قالب دیتاتایپی از جنس عدد صحیح (int) نشان دهیم؟

4. مزایای اصلی استفاده از Polymorphism (چندریختی) چیست و چه جایگزینی می‌توان برای آن یافت؟

5. کانستراکتور را به کمک مفهوم وراثت در زبان جاوا توضیح دهید.

6. مفهوم Constructor Chaining در جاوا چیست؟

7. کلیدواژۀ super برای دسترسی به ویژگی‌های سوپرکلاس استفاده می‌شود اما هنگامی که شما مجاز به استفاده از آن نیستید، چگونه می‌توانید به ویژگی‌های سوپرکلاس دسترسی پیدا کنید؟

8. فرض کنید کتاب‌های کلاس یازدهم و دوازدهم خود را در اختیار دارید. حال چگونه از مفهوم ارث‌بری برای نشان دادن رابطۀ بین آن‌ها استفاده می‌کنید؟

9. چرا کامپایلر جاوا فقط به یک متد اصلی از جنس استاتیک نیاز دارد؟

10. کاربرد آرایه یا آبجکت به اصطلاح Anonymous (بی‌نام) در جاوا چیست؟

11. چه زمانی از کلاس‌های استاتیک یا غیراستاتیک استفاده می‌کنید؟

12. منظور از اصطلاح Abstraction در واقع پنهان‌ کردن اطلاعات است. حال این مفهوم چگونه در زبان جاوا شکل می‌گیرد و همچنین برنامه‌ای بنویسید که در آن Abstraction (انتزاع) را نشان دهید سپس این برنامه را بدون استفاده از انتزاع نیز بازنویسی کنید.

13. انواع روش‌های ایجاد یک آبجکت را توضیح دهید و بگویید که در حین ایجاد آبجکت چه زمانی به آن حافظه اختصاص خواهد یافت.

14. مراحل یک برنامه، از نوشتن کد تا اجرای آن بر روی سیستم، را توضیح دهید.

15. مفهوم تخصیص حافظۀ هیپ در جاوا را توضیح دهید. همچنین تفاوت میان حافظۀ اِستک و هیپ را شرح دهید.

16. توضیح دهید چگونه JVM برنامۀ شما را تفسیر می‌کند به علاوه اینکه چرخۀ اجرای کد را در زبان جاوا شرح دهید.

17. تفاوت بین کلدواژه‌های private ،public و protected را بیان کنید.

18. اگر در یک برنامهٔ جاوا متد اصلی private شود، چه نتیجه‌ای خواهد داشت؟

19. چگونه می‌توان به یک برنامۀ جاوا دستور داد تا عملیات خواندن فایل را با استفاده از آرگومانی در کامندلاین اجرا کند؟

20. در چه مواقعی به سوپر کانستراکتور نیاز دارید؟

21. در زبان جاوا یک برنامه را می‌توان هم از طریق اینترفیس و هم اَبستِرکت کلاس نوشت؛ بنابراین چرا نیاز به اینترفیس داریم؟

22. وراثت چندسطحی (Multilevel Inheritance) در جاوا چیست و آیا جاوا ارث‌بری چندگانه (Multiple) را پشتیبانی می‌کند؟

23. جاوا زبانی شییٔ‌گرا (OOP) است. این اصطلاح را توضیح دهید.

24. مفهوم الگوهای طراحی (Design Patterns) را در جاوا را توضیح دهید. اگر ملزم به طراحی الگوهای اختصاصی خود باشید، به چه پارامترهایی بیشتر توجه خواهید کرد؟

25. برنامه‌های زیر را بنویسید:

- برنامه‌ای بنویسید که یک رشته یا عدد را از کاربر دریافت کرده و اگر از هر دو سمت به طور یکسان خوانده می‌شد، به کاربر نشان دهد.
- یک رشته از کاربر دریافت کرده و در خروجی معکوس آن را نشان دهید.
- آرایه‌ای از اعداد را از کاربر دریافت کرده، مینیمم و ماکسیمم آن را بیابید.
- فرض کنید یک آرایۀ خالی با اندازه‌ای ثابت برای نام شهر و نام فرد دارید. حال برنامه‌ای بنویسید که این اطلاعات را در زمان اجرا (Runtime) از کاربر دریافت کند.
- برنامه‌ای بنویسید که دو ماتریس را در هم ضرب کند.
- برنامه‌ای بنویسید که یک آرایه را به دو بخش مساوی با در نظر گرفتن تمام حالات ممکن تقسیم کند.
- برنامه‌ای با استفاده از سوئیچ بنویسید که در آن نام یک روز از هفته را از کاربر دریافت کرده و سه حرف اول آن روز را با حروف بزرگ به کاربر نشان دهد.
- یک رشته به عنوان ورودی از کاربر دریافت کرده سپس تعداد حروف تکراری را در خروجی نمایش دهید.
- برنامه‌ای بنویسید که هر عددی را به فرمت باینری تبدیل کند.
- برنامه‌ای بنویسید که یک متن را از یک فایل خوانده، تمام حروف کوچک را به حروف بزرگ و تمام حروف بزرگ را به حروف کوچک تبدیل کند سپس متن تغییر یافته را در خروجی نمایش دهد. 
- برنامه‌ای بنویسید که نام، سن، آدرس و نام دانشگاه را از کاربر دریافت کرده و اطلاعات را به او نشان دهد و اگر دوباره نام مشابه‌ای را وارد شد، اطلاعات موجود بازگردانده شوند.

26. انواع حلقه را به همراه سینتکس آن‌ها معرفی کنید.

27. دربارۀ کلیدواژه‌های break و continue در ارتباط با لوپ‌ها چه می‌دانید؟

28. تفاوت میان حلقۀ for و while را بیان کنید و توضیح دهید در چه شرایطی استفاده از یک حلقه نسبت به دیگری برتری دارد؟

29. مفهوم Variable Scope را در جاوا توضیح دهید. 

30. مفسر (Interpreter) در جاوا چیست به علاوه اینکه تفاوت کامپایل کردن و تفسیر کردن در جاوا را توضیح دهید.

31. فرض کنید شما باید داده‌ای از جنس عدد صحیح را return کنید اما تایپ خروجی متد یک عدد اعشاری است؛ توضیح دهید آیا در این شرایط کد شما اجرا خواهد شد یا خیر؟

32. آیا می‌توانید متدهای سوپرکلاس و متغیرها را به اصطلاح Override کنید؟

33. منظور از Object Chaining در جاوا چیست؟

34. تفاوت بین آرگومان و پارامتر را در جاوا توضیح دهید.

35. یک کلاس از جنس سینگلتون در زبان جاوا بنویسید و توضیح دهید چه زمانی استفاده از این کلاس مناسب است.

36. از آنجایی که جاوا یک زبان به اصطلاح Multi-thread است، ابتدا این مفهوم را توضیح داده و بیان کنید چرا در توسعهٔ برخی نرم‌افزارها به آن نیاز دارید. همچنین منظور از Thread Sleeping و Thread Pooling را در زبان جاوا توضیح دهید. 

37. آیا جاوا یک زبان Procedural است یا Functional و هر کدام از این مفاهیم به چه معنی هستند؟

38. چه پارامترهایی زبان جاوا را از سایر زبان‌های برنامه‌نویسی متمایز می‌کند؟ 

39. چرا Exception Handling در جاوا معرفی شده است؟

40. فرض کنید در زبان جاوا مکانیسم مدیریت خطاها وجود ندارد؛ با این تفاسیر تابعی بنویسید که به کمک آن بتوانید ارور ArrayIndexOutOfBoundException را مدیریت کنید.

41. تفاوت میان catch ،try و finally را توضیح دهید.

42. بدن خود را به عنوان یک تَسک در نظر بگیرید؛ حال هر یک از اعضای بدن خود را با توجه به مفهوم شییٔ‌گرایی طراحی کنید.

اگر دولوپر جاوا هستید و تجربهٔ شرکت در مصاحبه‌های استخدامی مختلفی را دارید، در بخش نظرات می‌توانید سؤالاتی که تاکنون از شما پرسیده‌اند را با دیگر کاربران سکان آکادمی به اشتراک بگذارید. همچنین جهت شروع یادگیری این زبان می‌توانید به دورهٔ رایگان آموزش زبان جاوا در سکان آکادمی مراجعه نمایید.

منبع