برنامه نویسی

سوالات اساسی جاوا – انجمن DEV

Summarize this content to 400 words in Persian Lang

جاوا اولین بار توسط Sun Microsystems در سال 1995 منتشر شد. توسعه جاوا در اوایل دهه 1990 به رهبری جیمز گاسلینگ و تیمش آغاز شد. این زبان در ابتدا “Oak” نامیده می شد اما بعداً پس از یک نوع قهوه به “Java” تغییر نام داد.جاوا برای رفع نیاز به یک زبان برنامه نویسی مستقل از پلتفرم ایجاد شد که بتوان از آن برای ایجاد نرم افزاری استفاده کرد که بتواند بر روی هر دستگاهی، صرف نظر از سخت افزار یا سیستم عامل اصلی اجرا شود. هدف اصلی این بود که به توسعه دهندگان اجازه داده شود «یک بار بنویسند، هر جا اجرا شوند»، به این معنی که کد نوشته شده در جاوا می تواند بر روی هر پلتفرمی که از ماشین مجازی جاوا (JVM) پشتیبانی می کند، اجرا شود. طراحی جاوا بر سادگی، قابل حمل بودن و امنیت تمرکز داشت و آن را برای طیف وسیعی از برنامه‌ها، از توسعه وب گرفته تا نرم‌افزار سازمانی، مناسب می‌سازد. به دلیل تطبیق پذیری و توانایی ساخت برنامه های کاربردی قوی و با کارایی بالا در پلتفرم های مختلف، به سرعت محبوبیت پیدا کرد.

به عنوان یکی از پرکاربردترین زبان‌ها در توسعه نرم‌افزار امروزی، و با مطالعه طولانی آن، در اینجا چند سوال و پاسخ در مورد دنیای شگفت‌انگیز جاوا جمع‌آوری کرده‌ام.

مورد نفرت بسیاری، اما مورد علاقه دیگران.

سوالات

1. تفاوت JDK و JRE چیست؟

JDK (کیت توسعه جاوا) توسط توسعه دهندگان برای ایجاد برنامه های کاربردی جاوا استفاده می شود و شامل ابزارها، کتابخانه ها و کامپایلرهای لازم است. JRE (محیط زمان اجرا جاوا) توسط کاربران نهایی برای اجرای برنامه های جاوا استفاده می شود و محیط زمان اجرا و کتابخانه های کلاس ضروری را فراهم می کند، اما شامل ابزارهای توسعه نمی شود.

2. مزایای استفاده از جاوا چیست؟

مزایای استفاده از جاوا عبارتند از:

قابلیت حمل: کد جاوا را می توان بر روی هر پلتفرمی که دارای ماشین مجازی جاوا (JVM) است اجرا کرد.
امنیت: جاوا دارای یک مدل امنیتی داخلی است که به محافظت از کاربران در برابر کدهای مخرب کمک می کند.
شی گرا: جاوا یک زبان برنامه نویسی شی گرا است که ایجاد کدهای ماژولار و قابل استفاده مجدد را آسان می کند.
قوی: جاوا یک زبان قوی است که به گونه ای طراحی شده است که قابل اعتماد و کارآمد باشد.
به طور گسترده استفاده می شود: جاوا یک زبان پرکاربرد است که جامعه بزرگی از توسعه دهندگان و منابع پشتیبانی دارد.

3. اجزای مختلف پلتفرم جاوا چیست؟

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

ماشین مجازی جاوا (JVM).
محیط زمان اجرا جاوا (JRE).
کیت توسعه جاوا (JDK).

4. انواع مختلف انواع داده جاوا چیست؟

دو نوع نوع داده در جاوا وجود دارد: انواع داده های اولیه و انواع داده های غیر ابتدایی.

انواع داده های اولیه

بولی
بایت
کوتاه
بین المللی
طولانی
شناور
ارقام اعشاری
دو برابر کردن
کاراکتر

انواع داده های غیر ابتدایی

رشته
آرایه
کلاس
رابط
Enum

5. انواع مختلف دستورات کنترل جاوا چیست؟

سه نوع دستور کنترل در جاوا وجود دارد:

بیانیه های تصمیم گیری (اگر، اگر دیگری و تغییر دهید).
عبارات حلقه زدن (while, do while & for).
بیانیه های پرش (ادامه و بازگشت).

6. انواع مختلف کلاس های جاوا و رابط های جاوا چیست؟

دو نوع اصلی کلاس جاوا وجود دارد:

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

همچنین دو نوع اصلی رابط جاوا وجود دارد:

رابط های معمولی مجموعه ای از روش های انتزاعی هستند. یک کلاس می تواند یک اینترفیس را پیاده سازی کند، در نتیجه متدهای انتزاعی رابط را به ارث می برد.
رابط های سازنده رابط هایی هستند که حاوی هیچ روشی نیستند. آنها برای نشان دادن اینکه یک کلاس دارای ویژگی یا رفتار خاصی است استفاده می شود.

7. انواع مختلف کتابخانه های جاوا و چارچوب های جاوا چیست؟

کتابخانه جاوا مجموعه ای از کلاس ها و رابط های جاوا قابل استفاده مجدد است.

** چند نمونه از کتابخانه های جاوا:**

Apache Commons
Google Guava
Joda-Time
JUnit
Mockito

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چارچوب جاوا مجموعه ای از کلاس ها، رابط ها و کدهای قابل استفاده مجدد جاوا است که عملکرد خاصی را ارائه می دهد.

چند نمونه از کتابخانه های جاوا:

بهار
خواب زمستانی
JSF
جام ها
اسکلت

8. انواع مختلف ابزار جاوا چیست؟

دو نوع نخ در جاوا وجود دارد: نخ های کاربر و رشته های شبح.

موضوعات کاربر رشته هایی هستند که توسط کاربر یا برنامه ایجاد می شوند. آنها رشته‌هایی با اولویت بالا هستند و JVM منتظر می‌ماند تا هر رشته کاربری قبل از پایان دادن به کار خود را به پایان برساند.
نخ های دیمون رشته هایی هستند که برای ارائه خدمات به موضوعات کاربر ایجاد می شوند. آنها موضوعاتی با اولویت پایین هستند و فقط در زمانی که موضوعات کاربر در حال اجرا هستند مورد نیاز هستند. هنگامی که تمام رشته‌های کاربر اجرای خود را به پایان رساندند، JVM خاتمه می‌یابد حتی اگر رشته‌های شبح هنوز در حال اجرا باشند.

9. انواع مختلف شبکه جاوا چیست؟

دو نوع اصلی شبکه جاوا وجود دارد:

شبکه مشتری-سرور نوعی شبکه است که در آن یک برنامه مشتری وجود دارد که از یک برنامه سرور درخواست خدمات می کند. سپس برنامه سرور سرویس را به برنامه مشتری ارائه می دهد.
شبکه های همتا به همتا نوعی شبکه است که در آن دو یا چند برنامه بدون نیاز به سرور مستقیماً با یکدیگر ارتباط برقرار می کنند.

10. تفاوت بین برنامه نویسی رویه ای و OOP چیست؟

برنامه نویسی رویه ای یک رویکرد از بالا به پایین برای برنامه نویسی است که در آن برنامه به مجموعه ای از توابع تقسیم می شود که هر یک وظیفه خاصی را انجام می دهند.از سوی دیگر، OOP یک رویکرد از پایین به بالا برای برنامه نویسی است، که در آن برنامه به اشیایی تقسیم می شود که هر کدام یک موجودیت واقعی را نشان می دهند.

11. مفاهیم اصلی OOP چیست؟

مفاهیم اصلی OOP عبارتند از:

12. تفاوت Overloading و Overriding چیست؟

اضافه بار به توانایی داشتن چندین روش با نام یکسان، اما پارامترهای متفاوت اشاره دارد.Overriding به توانایی داشتن متدی در یک زیر کلاس اشاره دارد که دارای امضای یکسانی با متد در یک سوپرکلاس است.

13. تفاوت بین اتصال استاتیک و دینامیک چیست؟

اتصال استاتیک و اتصال پویا دو روش متفاوت برای حل فراخوانی تابع در برنامه نویسی شی گرا (OOP) هستند.

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

-اتصال دینامیک: زمانی اتفاق می افتد که متدی که باید فراخوانی شود تا زمان اجرا مشخص نشده باشد. این برای روش های مجازی استفاده می شود که امکان چندشکلی را فراهم می کند.

14. چرا جاوا از وراثت چندگانه پشتیبانی نمی کند؟

جاوا از وراثت چندگانه پشتیبانی نمی کند زیرا می تواند به تعدادی از مشکلات منجر شود، از جمله:

ابهام.
وابستگی های دایره ای
پیچیدگی.

15. چه زمانی در جاوا از کلاس واسط و انتزاعی استفاده می کنید؟

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

کلاس های انتزاعی مشابه کلاس های عادی هستند، با این تفاوت که می توانند متدهای انتزاعی را که متدهای بدون بدنه هستند، شامل شوند. کلاس های انتزاعی را نمی توان نمونه سازی کرد.
اینترفیس ها نوعی قرارداد کد هستند که باید توسط یک کلاس بتن پیاده سازی شوند. رابط ها نمی توانند حالت داشته باشند، در حالی که کلاس انتزاعی می تواند حالت دارای متغیرهای نمونه داشته باشد.

16. چالش های استفاده از OOP در جاوا چیست؟

برخی از چالش‌های مرتبط با استفاده از OOP در جاوا وجود دارد.این چالش ها عبارتند از:

17. تفاوت بین آرایه و لیست پیوندی چیست؟

به طور کلی، آرایه ها انتخاب خوبی برای ساختارهای داده ای هستند که در آن داده ها به طور مکرر در دسترس هستند و ترتیب داده ها مهم است.

لیست های پیوندی انتخاب خوبی برای ساختارهای داده ای هستند که در آن داده ها مرتباً درج یا حذف می شوند و ترتیب داده ها مهم نیست.

18. مفهوم جدول هش را توضیح دهید.

جدول هش یک ساختار داده است که کلیدها را به مقادیر نگاشت می کند. این یک ساختار داده بسیار کارآمد برای ذخیره و بازیابی داده است، زیرا می تواند در زمان ثابت به داده ها دسترسی داشته باشد.

قرار دادن (کلید، مقدار): این روش جفت کلید-مقدار را در جدول هش ذخیره می کند.
دریافت (کلید): این روش مقدار مربوط به کلید را برمی گرداند.
حذف (کلید): این روش جفت کلید-مقدار را از جدول هش حذف می کند.

19. پیچیدگی زمانی عملیات مختلف در درخت جستجوی دودویی (BST) چقدر است؟

پیچیدگی زمانی عملیات مختلف در درخت جستجوی دودویی (BST) به ارتفاع درخت بستگی دارد. ارتفاع یک BST تعداد گره هایی است که در طولانی ترین مسیر از گره ریشه تا یک گره برگ قرار دارند.

جدول زیر پیچیدگی زمانی عملیات مختلف در یک BST را نشان می دهد:

Operation—————Time complexity

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

20. تفاوت بین الگوریتم های جستجوی عرضی (BFS) و جستجوی اول عمقی (DFS) را شرح دهید.

در اینجا جدولی وجود دارد که تفاوت های کلیدی بین BFS و DFS را خلاصه می کند:

21. مفهوم صف اولویت را توضیح دهید و مثالی از کاربرد آن ارائه دهید.

صف اولویت یک ساختار داده ای است که عناصر را همراه با اولویت های مرتبط با آنها ذخیره می کند. این امکان بازیابی موثر عنصر با بالاترین (یا کمترین) اولویت را فراهم می کند. اولویت ترتیب پردازش یا دسترسی به عناصر را تعیین می کند.

22. مفهوم برنامه نویسی پویا را توضیح دهید و مثالی از مسئله ارائه دهید که در آن قابل اعمال باشد.

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

23. چگونه یک HashSet به صورت داخلی در جاوا کار می کند؟

یک HashSet به صورت داخلی از HashMap برای ذخیره عناصر خود استفاده می کند. هنگامی که یک عنصر را به HashSet اضافه می کنید، ابتدا با استفاده از متد ()hashCode هش می شود.سپس کد هش برای یافتن سطل مربوطه در HashMap استفاده می شود. اگر سطل خالی نباشد، عنصر با استفاده از متد ()quals با سایر عناصر موجود در سطل مقایسه می شود. اگر عنصر برابر با هر یک از عناصر دیگر در سطل باشد، به HashSet اضافه نمی شود.

24. پیچیدگی زمانی عملیات مختلف در جدول هش چقدر است؟

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

ایزرشن: O(1) به طور متوسط، O(n) در بدترین حالت.

جستجو: O(1) به طور متوسط، O(n) در بدترین حالت.

حذف: O(1) به طور متوسط، O(n) در بدترین حالت.

25. Multithreading چیست و چرا در جاوا اهمیت دارد؟

Multithreading یک مفهوم برنامه نویسی است که به شما اجازه می دهد تا چندین کار را همزمان اجرا کنید. در جاوا، multithreading با استفاده از کلاس thread پیاده سازی می شود. یک شی thread نشان دهنده یک رشته واحد از اجرا است.

دلایل زیادی وجود دارد که چرا multithreading در جاوا مهم است.برخی از مهمترین دلایل عبارتند از:

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

26. چگونه می توان یک موضوع در جاوا ایجاد کرد؟

دو راه برای ایجاد یک موضوع در جاوا وجود دارد:

با گسترش کلاس Thread
با پیاده سازی رابط Runnable

27. تفاوت بین یک فرآیند و یک نخ چیست؟

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

برخی از تفاوت های کلیدی بین فرآیندها و رشته ها:- فرآیندها مستقل از یکدیگر هستند.- فرآیندها از نخ ها سنگین تر هستند.- ایجاد و مدیریت فرآیندها نسبت به رشته ها دشوارتر است.

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

همگام سازی در جاوا مکانیزمی است که به چندین رشته اجازه می دهد تا به منابع مشترک به طور ایمن دسترسی داشته باشند. هنگامی که یک رشته روی یک منبع همگام می شود، تنها رشته ای است که می تواند به آن منبع دسترسی داشته باشد.این از شرایط مسابقه جلوگیری می‌کند، یعنی موقعیت‌هایی که دو یا چند رشته سعی می‌کنند به طور همزمان به یک منبع دسترسی پیدا کنند.

دو راه برای همگام سازی در جاوا وجود دارد:

استفاده از روش های همگام
استفاده از بلوک های همگام شده

روش های هماهنگ:

یک متد همگام روشی است که تنها می تواند توسط یک رشته در یک زمان اجرا شود. برای اعلام یک روش به عنوان همگام، باید از کلمه کلیدی همگام سازی شده استفاده کنید.

بلوک های همگام شده

بلوک همگام‌سازی شده بلوکی از کد است که تنها می‌تواند توسط یک رشته در یک زمان اجرا شود. برای اعلام یک بلوک کد به‌عنوان همگام‌سازی شده، باید از کلمه کلیدی همگام‌سازی شده استفاده کنید و شیئی را که بلوک روی آن همگام‌سازی شده است، مشخص کنید.

29. بن بست چیست و چگونه می توان از آن جلوگیری کرد؟

بن بست وضعیتی است که در آن دو یا چند رشته در انتظار اتمام یکدیگر هستند. این می تواند زمانی اتفاق بیفتد که دو رشته هر کدام در تلاش برای به دست آوردن یک قفل در یک منبع هستند.

برای جلوگیری از بن بست، می توانیم این کار را انجام دهیم:

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

30. هدف از کلمه کلیدی فرار در جاوا چیست؟

کلمه کلیدی volatile برای اطمینان از اینکه همه رشته ها مقدار یکسانی از یک متغیر را می بینند استفاده می شود، حتی اگر مقدار توسط رشته دیگری تغییر کند.

31. تفاوت بین زمانبندی پیشگیرانه و برش زمانی را در زمینه زمانبندی نخ توضیح دهید.

برنامه ریزی پیشگیرانه زمانی است که سیستم عامل می تواند به زور یک Thread را از CPU حذف کند و آن را به Thread دیگری بدهد. زمان برش زمانی است که به هر رشته زمان مشخصی برای اجرا در CPU داده می شود.

تفاوت اصلی این است که در زمان‌بندی پیشگیرانه، سیستم عامل می‌تواند در هر زمانی یک رشته را قطع کند، در حالی که در زمان‌بندی، موضوع تنها زمانی قطع می‌شود که زمان تعیین شده خود را تمام کرده باشد.

32. استثنا در جاوا چیست و چرا مدیریت استثنا مهم است؟

در جاوا، استثنا رویدادی است که در حین اجرای یک برنامه رخ می دهد و جریان عادی دستورالعمل ها را مختل می کند. این یک شی است که در زمان اجرا پرتاب می شود.

در اینجا برخی از مزایای مدیریت استثنا وجود دارد:

از خراب شدن برنامه جلوگیری می کند.
به شما امکان می دهد از خطاها بازیابی کنید.
اطلاعات مربوط به خطا را ارائه می دهد.
کد شما را قوی تر می کند.
کد شما را برای خواندن و درک آسان تر می کند.

33. جاوا چگونه استثناها را مدیریت می کند.

جاوا با استفاده از مکانیزمی به نام انتشار استثناها را مدیریت می کند. هنگامی که یک استثنا پرتاب می شود، در پشته تماس منتشر می شود تا زمانی که دستگیر شود. در صورت عدم وجود استثناء، برنامه از کار می افتد.

34. بلوک try-catch-finally و هدف آن را در مدیریت استثنا شرح دهید.

بلوک try-catch-finally یک دستور زبان جاوا است که به شما امکان می دهد استثنائات را به خوبی مدیریت کنید. از سه بخش تشکیل شده است:

بلوک try.
بلوک گرفتن.
بلوک نهایی

در اینجا برخی از مزایای استفاده از بلوک های try-catch-finally آورده شده است:

از خراب شدن برنامه جلوگیری می کند.
به شما امکان می دهد از خطاها بازیابی کنید.
اطلاعات مربوط به خطا را ارائه می دهد.
کد شما را قوی تر می کند.
کد شما را برای خواندن و درک آسان تر می کند.

35. تفاوت بین کلمات کلیدی پرتاب و پرتاب در جاوا چیست؟کلمات کلیدی throw و throws در جاوا برای رسیدگی به استثناها استفاده می شود.

کلمه کلیدی throw برای پرتاب کردن یک استثنا استفاده می شود
کلمه کلیدی throws برای اعلام اینکه یک متد می تواند یک استثنا ایجاد کند استفاده می شود.

36. چگونه می توان استثناهای سفارشی را در جاوا ایجاد کرد؟

برای ایجاد یک استثنای سفارشی در جاوا، باید کلاسی ایجاد کنید که کلاس Exception را گسترش دهد. کلاس استثنای سفارشی می تواند سازنده، متدها و فیلدهای خاص خود را داشته باشد.

مراجع: https://medium.com/@spinjosovsky/practical-comparison-between-depth-first-search-dfs-vs-breadth-first-serch-bfs-bf360240cf72https://docs.oracle.com/en/java/https://www.algotutor.io/campus-program

جاوا اولین بار توسط Sun Microsystems در سال 1995 منتشر شد. توسعه جاوا در اوایل دهه 1990 به رهبری جیمز گاسلینگ و تیمش آغاز شد. این زبان در ابتدا “Oak” نامیده می شد اما بعداً پس از یک نوع قهوه به “Java” تغییر نام داد.
جاوا برای رفع نیاز به یک زبان برنامه نویسی مستقل از پلتفرم ایجاد شد که بتوان از آن برای ایجاد نرم افزاری استفاده کرد که بتواند بر روی هر دستگاهی، صرف نظر از سخت افزار یا سیستم عامل اصلی اجرا شود. هدف اصلی این بود که به توسعه دهندگان اجازه داده شود «یک بار بنویسند، هر جا اجرا شوند»، به این معنی که کد نوشته شده در جاوا می تواند بر روی هر پلتفرمی که از ماشین مجازی جاوا (JVM) پشتیبانی می کند، اجرا شود.
طراحی جاوا بر سادگی، قابل حمل بودن و امنیت تمرکز داشت و آن را برای طیف وسیعی از برنامه‌ها، از توسعه وب گرفته تا نرم‌افزار سازمانی، مناسب می‌سازد. به دلیل تطبیق پذیری و توانایی ساخت برنامه های کاربردی قوی و با کارایی بالا در پلتفرم های مختلف، به سرعت محبوبیت پیدا کرد.

به عنوان یکی از پرکاربردترین زبان‌ها در توسعه نرم‌افزار امروزی، و با مطالعه طولانی آن، در اینجا چند سوال و پاسخ در مورد دنیای شگفت‌انگیز جاوا جمع‌آوری کرده‌ام.

مورد نفرت بسیاری، اما مورد علاقه دیگران.

توضیحات تصویر

سوالات

1. تفاوت JDK و JRE چیست؟

JDK (کیت توسعه جاوا) توسط توسعه دهندگان برای ایجاد برنامه های کاربردی جاوا استفاده می شود و شامل ابزارها، کتابخانه ها و کامپایلرهای لازم است. JRE (محیط زمان اجرا جاوا) توسط کاربران نهایی برای اجرای برنامه های جاوا استفاده می شود و محیط زمان اجرا و کتابخانه های کلاس ضروری را فراهم می کند، اما شامل ابزارهای توسعه نمی شود.

2. مزایای استفاده از جاوا چیست؟

مزایای استفاده از جاوا عبارتند از:

  • قابلیت حمل: کد جاوا را می توان بر روی هر پلتفرمی که دارای ماشین مجازی جاوا (JVM) است اجرا کرد.

  • امنیت: جاوا دارای یک مدل امنیتی داخلی است که به محافظت از کاربران در برابر کدهای مخرب کمک می کند.

  • شی گرا: جاوا یک زبان برنامه نویسی شی گرا است که ایجاد کدهای ماژولار و قابل استفاده مجدد را آسان می کند.

  • قوی: جاوا یک زبان قوی است که به گونه ای طراحی شده است که قابل اعتماد و کارآمد باشد.

  • به طور گسترده استفاده می شود: جاوا یک زبان پرکاربرد است که جامعه بزرگی از توسعه دهندگان و منابع پشتیبانی دارد.

3. اجزای مختلف پلتفرم جاوا چیست؟

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

  • ماشین مجازی جاوا (JVM).

  • محیط زمان اجرا جاوا (JRE).

  • کیت توسعه جاوا (JDK).

4. انواع مختلف انواع داده جاوا چیست؟

دو نوع نوع داده در جاوا وجود دارد: انواع داده های اولیه و انواع داده های غیر ابتدایی.

انواع داده های اولیه

  • بولی
  • بایت
  • کوتاه
  • بین المللی
  • طولانی
  • شناور
  • ارقام اعشاری
  • دو برابر کردن
  • کاراکتر

انواع داده های غیر ابتدایی

  • رشته
  • آرایه
  • کلاس
  • رابط
  • Enum

5. انواع مختلف دستورات کنترل جاوا چیست؟

سه نوع دستور کنترل در جاوا وجود دارد:

  • بیانیه های تصمیم گیری (اگر، اگر دیگری و تغییر دهید).
  • عبارات حلقه زدن (while, do while & for).
  • بیانیه های پرش (ادامه و بازگشت).

6. انواع مختلف کلاس های جاوا و رابط های جاوا چیست؟

دو نوع اصلی کلاس جاوا وجود دارد:

  • کلاس های معمولی رایج ترین نوع کلاس در جاوا هستند. آنها می توانند فیلدها، متدها و سازنده داشته باشند.

  • کلاس های انتزاعی کلاس هایی هستند که نمی توانند نمونه سازی شوند. آنها فقط می توانند به عنوان یک کلاس پایه برای سایر کلاس ها استفاده شوند.

همچنین دو نوع اصلی رابط جاوا وجود دارد:

  • رابط های معمولی مجموعه ای از روش های انتزاعی هستند. یک کلاس می تواند یک اینترفیس را پیاده سازی کند، در نتیجه متدهای انتزاعی رابط را به ارث می برد.

  • رابط های سازنده رابط هایی هستند که حاوی هیچ روشی نیستند. آنها برای نشان دادن اینکه یک کلاس دارای ویژگی یا رفتار خاصی است استفاده می شود.

توضیحات تصویر

7. انواع مختلف کتابخانه های جاوا و چارچوب های جاوا چیست؟

کتابخانه جاوا مجموعه ای از کلاس ها و رابط های جاوا قابل استفاده مجدد است.

** چند نمونه از کتابخانه های جاوا:**

Apache Commons
Google Guava
Joda-Time
JUnit
Mockito
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چارچوب جاوا مجموعه ای از کلاس ها، رابط ها و کدهای قابل استفاده مجدد جاوا است که عملکرد خاصی را ارائه می دهد.

چند نمونه از کتابخانه های جاوا:

  • بهار
  • خواب زمستانی
  • JSF
  • جام ها
  • اسکلت

8. انواع مختلف ابزار جاوا چیست؟

دو نوع نخ در جاوا وجود دارد: نخ های کاربر و رشته های شبح.

  • موضوعات کاربر رشته هایی هستند که توسط کاربر یا برنامه ایجاد می شوند. آنها رشته‌هایی با اولویت بالا هستند و JVM منتظر می‌ماند تا هر رشته کاربری قبل از پایان دادن به کار خود را به پایان برساند.

  • نخ های دیمون رشته هایی هستند که برای ارائه خدمات به موضوعات کاربر ایجاد می شوند. آنها موضوعاتی با اولویت پایین هستند و فقط در زمانی که موضوعات کاربر در حال اجرا هستند مورد نیاز هستند. هنگامی که تمام رشته‌های کاربر اجرای خود را به پایان رساندند، JVM خاتمه می‌یابد حتی اگر رشته‌های شبح هنوز در حال اجرا باشند.

9. انواع مختلف شبکه جاوا چیست؟

دو نوع اصلی شبکه جاوا وجود دارد:

  • شبکه مشتری-سرور نوعی شبکه است که در آن یک برنامه مشتری وجود دارد که از یک برنامه سرور درخواست خدمات می کند. سپس برنامه سرور سرویس را به برنامه مشتری ارائه می دهد.

  • شبکه های همتا به همتا نوعی شبکه است که در آن دو یا چند برنامه بدون نیاز به سرور مستقیماً با یکدیگر ارتباط برقرار می کنند.

10. تفاوت بین برنامه نویسی رویه ای و OOP چیست؟

برنامه نویسی رویه ای یک رویکرد از بالا به پایین برای برنامه نویسی است که در آن برنامه به مجموعه ای از توابع تقسیم می شود که هر یک وظیفه خاصی را انجام می دهند.
از سوی دیگر، OOP یک رویکرد از پایین به بالا برای برنامه نویسی است، که در آن برنامه به اشیایی تقسیم می شود که هر کدام یک موجودیت واقعی را نشان می دهند.

11. مفاهیم اصلی OOP چیست؟

مفاهیم اصلی OOP عبارتند از:

12. تفاوت Overloading و Overriding چیست؟

اضافه بار به توانایی داشتن چندین روش با نام یکسان، اما پارامترهای متفاوت اشاره دارد.
Overriding به توانایی داشتن متدی در یک زیر کلاس اشاره دارد که دارای امضای یکسانی با متد در یک سوپرکلاس است.

13. تفاوت بین اتصال استاتیک و دینامیک چیست؟

اتصال استاتیک و اتصال پویا دو روش متفاوت برای حل فراخوانی تابع در برنامه نویسی شی گرا (OOP) هستند.

اتصال استاتیک: زمانی اتفاق می افتد که کامپایلر متدی را که باید در زمان کامپایل فراخوانی شود را تعیین می کند. این رایج ترین نوع اتصال در OOP است و برای هر دو روش استاتیک و غیر مجازی استفاده می شود.

اتصال دینامیک: زمانی اتفاق می افتد که متدی که باید فراخوانی شود تا زمان اجرا مشخص نشده باشد. این برای روش های مجازی استفاده می شود که امکان چندشکلی را فراهم می کند.

توضیحات تصویر

14. چرا جاوا از وراثت چندگانه پشتیبانی نمی کند؟

جاوا از وراثت چندگانه پشتیبانی نمی کند زیرا می تواند به تعدادی از مشکلات منجر شود، از جمله:

  • ابهام.
  • وابستگی های دایره ای
  • پیچیدگی.

15. چه زمانی در جاوا از کلاس واسط و انتزاعی استفاده می کنید؟

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

  • کلاس های انتزاعی مشابه کلاس های عادی هستند، با این تفاوت که می توانند متدهای انتزاعی را که متدهای بدون بدنه هستند، شامل شوند. کلاس های انتزاعی را نمی توان نمونه سازی کرد.

  • اینترفیس ها نوعی قرارداد کد هستند که باید توسط یک کلاس بتن پیاده سازی شوند. رابط ها نمی توانند حالت داشته باشند، در حالی که کلاس انتزاعی می تواند حالت دارای متغیرهای نمونه داشته باشد.

16. چالش های استفاده از OOP در جاوا چیست؟

برخی از چالش‌های مرتبط با استفاده از OOP در جاوا وجود دارد.
این چالش ها عبارتند از:

17. تفاوت بین آرایه و لیست پیوندی چیست؟

به طور کلی، آرایه ها انتخاب خوبی برای ساختارهای داده ای هستند که در آن داده ها به طور مکرر در دسترس هستند و ترتیب داده ها مهم است.

لیست های پیوندی انتخاب خوبی برای ساختارهای داده ای هستند که در آن داده ها مرتباً درج یا حذف می شوند و ترتیب داده ها مهم نیست.

توضیحات تصویر

18. مفهوم جدول هش را توضیح دهید.

جدول هش یک ساختار داده است که کلیدها را به مقادیر نگاشت می کند. این یک ساختار داده بسیار کارآمد برای ذخیره و بازیابی داده است، زیرا می تواند در زمان ثابت به داده ها دسترسی داشته باشد.

  • قرار دادن (کلید، مقدار): این روش جفت کلید-مقدار را در جدول هش ذخیره می کند.

  • دریافت (کلید): این روش مقدار مربوط به کلید را برمی گرداند.

  • حذف (کلید): این روش جفت کلید-مقدار را از جدول هش حذف می کند.

19. پیچیدگی زمانی عملیات مختلف در درخت جستجوی دودویی (BST) چقدر است؟

پیچیدگی زمانی عملیات مختلف در درخت جستجوی دودویی (BST) به ارتفاع درخت بستگی دارد. ارتفاع یک BST تعداد گره هایی است که در طولانی ترین مسیر از گره ریشه تا یک گره برگ قرار دارند.

جدول زیر پیچیدگی زمانی عملیات مختلف در یک BST را نشان می دهد:

               Operation---------------Time complexity
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

20. تفاوت بین الگوریتم های جستجوی عرضی (BFS) و جستجوی اول عمقی (DFS) را شرح دهید.

در اینجا جدولی وجود دارد که تفاوت های کلیدی بین BFS و DFS را خلاصه می کند:

توضیحات تصویر

21. مفهوم صف اولویت را توضیح دهید و مثالی از کاربرد آن ارائه دهید.

صف اولویت یک ساختار داده ای است که عناصر را همراه با اولویت های مرتبط با آنها ذخیره می کند. این امکان بازیابی موثر عنصر با بالاترین (یا کمترین) اولویت را فراهم می کند. اولویت ترتیب پردازش یا دسترسی به عناصر را تعیین می کند.

22. مفهوم برنامه نویسی پویا را توضیح دهید و مثالی از مسئله ارائه دهید که در آن قابل اعمال باشد.

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

23. چگونه یک HashSet به صورت داخلی در جاوا کار می کند؟

یک HashSet به صورت داخلی از HashMap برای ذخیره عناصر خود استفاده می کند. هنگامی که یک عنصر را به HashSet اضافه می کنید، ابتدا با استفاده از متد ()hashCode هش می شود.
سپس کد هش برای یافتن سطل مربوطه در HashMap استفاده می شود. اگر سطل خالی نباشد، عنصر با استفاده از متد ()quals با سایر عناصر موجود در سطل مقایسه می شود. اگر عنصر برابر با هر یک از عناصر دیگر در سطل باشد، به HashSet اضافه نمی شود.

24. پیچیدگی زمانی عملیات مختلف در جدول هش چقدر است؟

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

  • ایزرشن: O(1) به طور متوسط، O(n) در بدترین حالت.
  • جستجو: O(1) به طور متوسط، O(n) در بدترین حالت.
  • حذف: O(1) به طور متوسط، O(n) در بدترین حالت.

25. Multithreading چیست و چرا در جاوا اهمیت دارد؟

Multithreading یک مفهوم برنامه نویسی است که به شما اجازه می دهد تا چندین کار را همزمان اجرا کنید. در جاوا، multithreading با استفاده از کلاس thread پیاده سازی می شود. یک شی thread نشان دهنده یک رشته واحد از اجرا است.

دلایل زیادی وجود دارد که چرا multithreading در جاوا مهم است.
برخی از مهمترین دلایل عبارتند از:

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

26. چگونه می توان یک موضوع در جاوا ایجاد کرد؟

دو راه برای ایجاد یک موضوع در جاوا وجود دارد:

  • با گسترش کلاس Thread
  • با پیاده سازی رابط Runnable

27. تفاوت بین یک فرآیند و یک نخ چیست؟

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

برخی از تفاوت های کلیدی بین فرآیندها و رشته ها:
– فرآیندها مستقل از یکدیگر هستند.
– فرآیندها از نخ ها سنگین تر هستند.
– ایجاد و مدیریت فرآیندها نسبت به رشته ها دشوارتر است.

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

همگام سازی در جاوا مکانیزمی است که به چندین رشته اجازه می دهد تا به منابع مشترک به طور ایمن دسترسی داشته باشند. هنگامی که یک رشته روی یک منبع همگام می شود، تنها رشته ای است که می تواند به آن منبع دسترسی داشته باشد.
این از شرایط مسابقه جلوگیری می‌کند، یعنی موقعیت‌هایی که دو یا چند رشته سعی می‌کنند به طور همزمان به یک منبع دسترسی پیدا کنند.

دو راه برای همگام سازی در جاوا وجود دارد:

  • استفاده از روش های همگام
  • استفاده از بلوک های همگام شده

روش های هماهنگ:

یک متد همگام روشی است که تنها می تواند توسط یک رشته در یک زمان اجرا شود. برای اعلام یک روش به عنوان همگام، باید از کلمه کلیدی همگام سازی شده استفاده کنید.

بلوک های همگام شده

بلوک همگام‌سازی شده بلوکی از کد است که تنها می‌تواند توسط یک رشته در یک زمان اجرا شود. برای اعلام یک بلوک کد به‌عنوان همگام‌سازی شده، باید از کلمه کلیدی همگام‌سازی شده استفاده کنید و شیئی را که بلوک روی آن همگام‌سازی شده است، مشخص کنید.

29. بن بست چیست و چگونه می توان از آن جلوگیری کرد؟

بن بست وضعیتی است که در آن دو یا چند رشته در انتظار اتمام یکدیگر هستند. این می تواند زمانی اتفاق بیفتد که دو رشته هر کدام در تلاش برای به دست آوردن یک قفل در یک منبع هستند.

برای جلوگیری از بن بست، می توانیم این کار را انجام دهیم:

  • از استفاده بی مورد از قفل خودداری کنید.
  • از قفل ها به ترتیب ثابت استفاده کنید.
  • از ابزارهای تشخیص و پیشگیری از بن بست استفاده کنید.

30. هدف از کلمه کلیدی فرار در جاوا چیست؟

کلمه کلیدی volatile برای اطمینان از اینکه همه رشته ها مقدار یکسانی از یک متغیر را می بینند استفاده می شود، حتی اگر مقدار توسط رشته دیگری تغییر کند.

31. تفاوت بین زمانبندی پیشگیرانه و برش زمانی را در زمینه زمانبندی نخ توضیح دهید.

برنامه ریزی پیشگیرانه زمانی است که سیستم عامل می تواند به زور یک Thread را از CPU حذف کند و آن را به Thread دیگری بدهد. زمان برش زمانی است که به هر رشته زمان مشخصی برای اجرا در CPU داده می شود.

تفاوت اصلی این است که در زمان‌بندی پیشگیرانه، سیستم عامل می‌تواند در هر زمانی یک رشته را قطع کند، در حالی که در زمان‌بندی، موضوع تنها زمانی قطع می‌شود که زمان تعیین شده خود را تمام کرده باشد.

32. استثنا در جاوا چیست و چرا مدیریت استثنا مهم است؟

در جاوا، استثنا رویدادی است که در حین اجرای یک برنامه رخ می دهد و جریان عادی دستورالعمل ها را مختل می کند. این یک شی است که در زمان اجرا پرتاب می شود.

در اینجا برخی از مزایای مدیریت استثنا وجود دارد:

  • از خراب شدن برنامه جلوگیری می کند.
  • به شما امکان می دهد از خطاها بازیابی کنید.
  • اطلاعات مربوط به خطا را ارائه می دهد.
  • کد شما را قوی تر می کند.
  • کد شما را برای خواندن و درک آسان تر می کند.

33. جاوا چگونه استثناها را مدیریت می کند.

جاوا با استفاده از مکانیزمی به نام انتشار استثناها را مدیریت می کند. هنگامی که یک استثنا پرتاب می شود، در پشته تماس منتشر می شود تا زمانی که دستگیر شود. در صورت عدم وجود استثناء، برنامه از کار می افتد.

34. بلوک try-catch-finally و هدف آن را در مدیریت استثنا شرح دهید.

بلوک try-catch-finally یک دستور زبان جاوا است که به شما امکان می دهد استثنائات را به خوبی مدیریت کنید. از سه بخش تشکیل شده است:

  • بلوک try.
  • بلوک گرفتن.
  • بلوک نهایی

در اینجا برخی از مزایای استفاده از بلوک های try-catch-finally آورده شده است:

  • از خراب شدن برنامه جلوگیری می کند.
  • به شما امکان می دهد از خطاها بازیابی کنید.
  • اطلاعات مربوط به خطا را ارائه می دهد.
  • کد شما را قوی تر می کند.
  • کد شما را برای خواندن و درک آسان تر می کند.

35. تفاوت بین کلمات کلیدی پرتاب و پرتاب در جاوا چیست؟
کلمات کلیدی throw و throws در جاوا برای رسیدگی به استثناها استفاده می شود.

  • کلمه کلیدی throw برای پرتاب کردن یک استثنا استفاده می شود
  • کلمه کلیدی throws برای اعلام اینکه یک متد می تواند یک استثنا ایجاد کند استفاده می شود.

36. چگونه می توان استثناهای سفارشی را در جاوا ایجاد کرد؟

برای ایجاد یک استثنای سفارشی در جاوا، باید کلاسی ایجاد کنید که کلاس Exception را گسترش دهد. کلاس استثنای سفارشی می تواند سازنده، متدها و فیلدهای خاص خود را داشته باشد.

مراجع: https://medium.com/@spinjosovsky/practical-comparison-between-depth-first-search-dfs-vs-breadth-first-serch-bfs-bf360240cf72
https://docs.oracle.com/en/java/
https://www.algotutor.io/campus-program

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا