سوالات مصاحبه Java

با استفاده از ()Math.random می توانید اعداد تصادفی در محدوده بزرگتر یا مساوی 0.1 و کمتر از 1.0 تولید کنید. بااستفاده از کلاس Random در پکیج java.util نیز می توان اعداد تصادفی تولید کرد.

'چگونه می توان اعداد تصادفی را در جاوا تولید کرد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

break و continue دو کلیدواژه مهم مورد استفاده در Loops هستند. هنگامی که یک کلمه کلیدی break در یک حلقه استفاده می شود، حلقه فوراً شکسته می شود در حالی که وقتی از کلمه کلیدی continue استفاده می شود، تکرار فعلی شکسته می شود و حلقه با تکرار بعدی ادامه می یابد. در مثال اول، زمانی که شمارنده به عدد 4 برسد، حلقه شکسته می شود. در حالی که در مثال دوم وقتی شمارنده به عدد 4 می رسد، حلقه به تکرار بعدی می رود و هر عبارت پس از کلمه کلیدی ادامه برای تکرار فعلی نادیده گرفته می شود.

'تفاوت بین continue و break چیست؟','سوالات مصاحبه Java'

Example 1

for (counter = 0; counter & lt; 10; counter++)
{
    system.out.println(counter);     
    if (counter == 4)     
    {     
        break;        
     }     
}


Example 2

for (counter = 0; counter < 10; counter++)
{
    system.out.println(counter);      
    if (counter == 4)     
    {     
         continue;        
    }     
    system.out.println("This will not get printed when counter is 4");     
}
این سوال از من پرسیده شده است  + 

در جاوا، float چهار بایت در حافظه می گیرد در حالی که Double هشت بایت در حافظه می گیرد. نوع داده ای Double دقیق تر از float است. یک متغیر Double می تواند دقتی تا 15 تا 16 رقم اعشار را در مقایسه با دقت float که 6 تا 7 رقم اعشاری است ارائه دهد.

'تفاوت بین متغیرهای double و float در جاوا چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

در جاوا یک ثابت با استفاده از کلمه کلیدی final اعلام می شود. مقدار فقط یک بار قابل تخصیص است و پس از تخصیص، مقدارش قابل تغییر نیست. هنگامی که یک متد به عنوان final اعلام می شود، نمی توان آن را توسط Subclass ها بازنویسی (Override) کرد. هنگامی که یک کلاس به عنوان final اعلام می شود، نمی توان آن را Subclass قرار داد. در مثال زیر، یک ثابت با نام const_val اعلان شده و به آن مقدار داده می شود:

'کلمه کلیدی final در جاوا چه کاری انجام میدهد؟ مثال بزنید.','سوالات مصاحبه Java'

Private Final int const_val=100
این سوال از من پرسیده شده است  + 

در مثال زیر دو شی از کلاس Java.Lang.String ایجاد می شود. s1 و s3 ارجاعاتی به یک شی واحد هستند.

'در مثال زیر، چند آبجکت از نوع String ایجاد شده است؟

','سوالات مصاحبه Java'

String s1="I am Java Expert";
String s2="I am C Expert";
String s3="I am Java Expert"; 
این سوال از من پرسیده شده است  + 

در جاوا، هنگامی که یک شی در جاوا دیگر استفاده نشود، جمع آوری زباله(Garbage Collection) به صورت خودکار انجام میشود و شی از بین می رود. برای جمع‌آوری خودکار زباله، جاوا متد ()System.gc یا ()Runtime.gc را فراخوانی می‌کند.

'Garbage Collection  در جاوا چگونه انجام می شود؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

اگر سلسله مراتبی از وراثت استفاده شود، یک کلاس می تواند همزمان برای کلاس دیگر یک سوپرکلاس(پدر) و برای کلاس دیگر یک زیرکلاس(فرزند) باشد. در مثال زیر، کلاس قاره زیرکلاس کلاس جهان و سوپرکلاس کلاس کشور است.

'آیا یک کلاس می تواند همزمان سوپرکلاس(Super Class) و زیرکلاس(Sub-Class) باشد؟ مثال بزنید.','سوالات مصاحبه Java'

public class world {

..........

}
public class continenet extends world {

............

}
public class country extends continent {

......................

}
این سوال از من پرسیده شده است  + 

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

'چه زمانی سازنده (Constructor) یک کلاس فراخوانی می شود؟','سوالات مصاحبه Java'

public static void main(String args[]) {

     const_example c1 = new const_example();

     const_example c2 = new const_example();
}

public class const_example {

    const_example() {

        system.out.println("Inside constructor");
    }
}
این سوال از من پرسیده شده است  + 

در جاوا از متد ()equals برای مقایسه محتویات دو شی رشته ای استفاده می شود و اگر هر دو مقدار یکسانی داشته باشند مقدار true را برمی گرداند در حالی که عملگر == مراجع دو شی رشته ای را مقایسه می کند. در مثال زیر، ()equals مقدار true را برمی گرداند زیرا دو شی رشته ای دارای مقادیر یکسانی هستند. با این حال عملگر == مقدار false را برمی گرداند زیرا دو شی رشته ای به اشیاء مختلف ارجاع می دهند:

'تفاوت بین مقایسه انجام شده توسط متد equals و عملگر == چیست؟','سوالات مصاحبه Java'

public class equalsTest {

    public static void main(String args[]) {
        String str1 = new String("Hello World");
        String str2 = new String("Hello World");

        if (str1.equals(str2))
        { // this condition is true
            System.out.println("str1 and str2 are equal in terms of values");
        }

        if (str1 == str2) {
            //This condition is true
            System.out.println("Both strings are referencing same object");
        } else
        {
            // This condition is NOT true
            System.out.println("Both strings are referencing different objects");
        }
    }
}
این سوال از من پرسیده شده است  + 

حتی اگر جمع‌آوری خودکار زباله توسط جاوا ارائه ‌شود، اطمینان نمی‌دهد که یک برنامه جاوا out of memory نشود، زیرا این احتمال وجود دارد که ایجاد اشیاء جاوا با سرعت بیشتری نسبت به جمع‌آوری زباله انجام شود و در نتیجه تمام منابع حافظه موجود پر شود. بنابراین، Garbage Collection به کاهش احتمال از بین رفتن حافظه یک برنامه کمک می‌کند، اما تضمین نمی‌کند.

'آیا این درست است که بگوییم به دلیل مکانیزم Garbage Collection در جاوا، یک برنامه جاوا هرگز out of memory نمی شود؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

خیر، متد اصلی کلاس جاوا فقط می تواند نوع بازگشتی void داشته باشد تا برنامه با موفقیت اجرا شود. با این وجود، اگر باید حتماً یک مقدار را در تکمیل متد main برگردانید، می‌توانید از System.exit(int status) استفاده کنید.

'آیا می‌توانیم نوع بازگشت دیگری به غیر از void برای متد main داشته باشیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

خیر، در جاوا هیچ راهی برای راه اندازی مجدد یک Thread مرده وجود ندارد.

'آیا می توان یک Thread مرده را دوباره شروع کرد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

جاوا یک زبان برنامه نویسی سطح بالا، شی گرا، قوی، ایمن، مستقل از پلتفرم، با کارایی بالا، Multithreaded وپورتابل است که در ژوئن 1991 توسط جیمز گاسلینگ توسعه داده شد.

'جاوا چیست؟                        ','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

یک Inner Class کلاسی است که به صورت تودرتو در یک کلاس دیگر است. یک کلاس Inner می تواند به تمام متغیرها و متدهای تعریف شده در کلاس خارجی دسترسی داشته باشد. یک Sub-Class کلاسی است که از کلاس دیگری به نام Super class ارث می برد. Sub-class می تواند به تمام متدها و فیلدهای Public و Protected از Super class خود دسترسی داشته باشد.

'تفاوت بین Inner Class و Sub-Class چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

Specifier ها کلیدواژه هایی هستند که قبل از نام کلاس ، متغیر یا متد استفاده می شوند و محدوده دسترسی را مشخص می کنند. انواع مشخص کننده های دسترسی برای کلاس ها عبارتند از: 1. Public : کلاس، متد و فیلد از هر کجا قابل دسترسی است. 2. Protected : سطح دسترسی در داخل Package و خارج از Package از طریق کلاس فرزند است. اگر کلاس فرزند را ایجاد نکنید، متدها و فیلدها از خارج از Package قابل دسترسی نیستد. 3. Default: متد، فیلد، کلاس فقط در همان package قابل دسترسی است. 4. Private: متدها و فیلدها فقط در همان کلاسی که به آن تعلق دارند قابل دسترسی هستند.

'مشخص کننده های مختلف دسترسی(Access Specifiers) برای کلاس های جاوا کدامند؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

زمانی که نیاز به اشتراک گذاری یک متد یا یک متغیر بین چندین شی از یک کلاس وجود دارد به جای ایجاد کپی جداگانه برای هر شی، از کلمه کلیدی Static برای ایجاد یک متد یا متغیر به اشتراک گذاشته شده برای همه اشیا استفاده می کنیم.

'هدف از متد ها و متغیرهای ایستا (Static) چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

Encapsulation مفهومی در برنامه نویسی شی گرا است که به برنامه نویسان کمک می کند تا از یک رویکرد مدولار برای توسعه نرم افزار پیروی کنند یعنی هر شی مجموعه ای از متدها و متغیرهای خاص خود را دارد و عملکردهای خود را مستقل از سایر اشیاء انجام می دهد. کپسوله سازی همچنین به منظور پنهان کردن داده ها مورد استفاده قرار می گیرد.

'کپسوله سازی اطلاعات (Data Encapsulation)  چیست و چه اهمیتی دارد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

یک کلاس Singleton در جاوا فقط می تواند یک نمونه داشته باشد و از این رو تمام متدها و متغیرهای آن فقط به یک نمونه تعلق دارند. مفهوم کلاس Singleton برای شرایطی که نیاز به محدود کردن تعداد اشیاء برای یک کلاس وجود دارد مفید است. بهترین مثال از سناریوی استفاده از Singleton زمانی است که محدودیتی برای داشتن تنها یک اتصال به پایگاه داده به دلیل برخی محدودیت‌های درایور یا به دلیل هر گونه مسائل مربوط به مجوز وجود دارد.

'کلاس Singleton چیست؟ یک مثال عملی از کاربرد آن بیاورید.','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

یک حلقه بی نهایت بدون هیچ شرطی اجرا می شود و بی نهایت باراجرا می شود. یک حلقه بی نهایت را می توان با قرار دادن break در بدنه بلوک های کد شکست. حلقه بی نهایت به صورت زیر اعلام می شود:

'حلقه بی نهایت چیست و چگونه ایجاد می شود؟','سوالات مصاحبه Java'

for (;;)
{
    // Statements to execute

    // Add any loop breaking logic
}
این سوال از من پرسیده شده است  + 

عملگر ternary که عملگر شرطی نیز نامیده می‌شود، برای تصمیم‌گیری در مورد اینکه کدام مقدار به یک متغیر بر اساس ارزیابی یک شرط داده شود، استفاده می‌شود. این عملگر با استفاده از علامت ؟ اعلان میشود. در مثال زیر، بر حسب اینکه رتبه ۱ باشد یا خیر، به status مقدار «Done» و «Pending» اختصاص داده می‌شود.

'عملگر ternary چیست؟ مثال بزنید.','سوالات مصاحبه Java'

status = (rank == 1) ? "Done" : "Pending"
این سوال از من پرسیده شده است  + 

در دستور سوئیچ، Default زمانی اجرا می شود که هیچ شرط سوییچ دیگری مطابقت نداشته باشد. Default یک مورد اختیاری است. در مثال زیر، زمانی که امتیاز 1 یا 2 نباشد، از حالت Default استفاده می شود:

'Default switch case چیست؟ مثال بزنید.','سوالات مصاحبه Java'

public class switchExample {
    int score = 4;
    public static void main(String args[]) {
        switch (score) {
            case 1:
                system.out.println("Score is 1");
                break;
            case 2:
                system.out.println("Score is 2");
                break;
            default:
                system.out.println("Default Case");
        }
    }
}
این سوال از من پرسیده شده است  + 

در جاوا، متد ()main نمی تواند هیچ داده ای را برگرداند و از این رو، همیشه با یک نوع بازگشتی void اعلام می شود.

'آیا متد ()main در جاوا می تواند داده ای را برگرداند؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'Packageهادر جاوا چه هستند؟ ','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

- هر یک از آنها اشیا متفاوتی هستند که قابلیت های متفاوتی دارند و داده های خود را به روش های مختلف ذخیره می کنند. - یک آرایه (System.Array) پس از تخصیص، اندازه آن ثابت می شود. شما نمی توانید مواردی را به آن اضافه کنید یا مواردی را از آن حذف کنید. همچنین ، همه عناصر باید از یک نوع باشند. در نتیجه type-safe است و همچنین از نظر حافظه و عملکرد ، کارآمدترین این سه مورد است. همچنین ، System.Array از چندین بعد پشتیبانی می کند، در حالی که List و ArrayList این کار را نمی کنند (اگر بخواهید می توانید یکList از List ها یا یک ArrayList از ArrayListها ایجاد کنید). - ArrayList یک آرایه انعطاف پذیر است که شامل لیستی از اشیاء است. می توانید مواردی را به آن اضافه و از آن حذف کنید و به طور خودکار با تخصیص فضا سروکار دارد. اگر انواع مختلفی از داده ها را در آن ذخیره می کنید درگیر boxing و unboxing میشوید که ممکن است کمی ناکارآمد باشد. همچنین Type-safe نیست. - لیست یک کلاس Generic است که می توانید اشیائی از یک نوع را در آن ذخیره کنید. در اصل یک نسخه امن از نوع ArrayList است. این بدان معناست که هیچ نوع boxing و unboxing وجود ندارد (که عملکرد را بهبود می بخشد) و اگر بخواهید یک آیتم از نوع اشتباه را اضافه کنید ، خطای زمان کامپایل ایجاد می کند.

'تفاوت بین Array ، ArrayList  و List را توضیح دهید.','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'Thread چیست؟               ','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا می‌توانیم یک کلاس را بدون داشتن متد انتزاعی به عنوان Abstract اعلام کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

تفاوت اصلی بین یک کلاس انتزاعی و اینترفیس در این است که یک اینترفیس فقط می‌تواند دارای اعلان متدهای استاتیک عمومی بدون پیاده سازی مشخص باشد، در حالی که یک کلاس Abstract می‌تواند اعضایی با هر access specifier (public، private و غیره) با یا بدون پیاده سازی مشخص داشته باشد. تفاوت کلیدی دیگر در استفاده از اینترفیس و کلاس‌انتزاعی این است که کلاسی که یک رابط را پیاده‌سازی می‌کند باید تمام متدهای اینترفیس را پیاده‌سازی کند، در حالی که کلاسی که از یک کلاس انتزاعی به ارث می‌برد، نیازی به پیاده‌سازی تمام متدهای کلاس پدر خود ندارد. یک کلاس می تواند چندین اینترفیس را پیاده سازی کند اما می تواند تنها یک کلاس انتزاعی را گسترش دهد.

'تفاوت بین کلاس انتزاعی(Abstract) و اینترفیس(Interface) در جاوا چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

در جاوا، هنگامی که یک پکیج import می شود، sub-package های آن import نمی شوند و توسعه دهنده باید در صورت نیاز آنها را جداگانه import کند.

'آیا با  import کردن یک پکیج sub-package  های آن نیز در جاوا import میشوند؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا می توانیم متد main را private اعلام کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

در جاوا، برای تبدیل یک شی به byte stream با سریال سازی، یک اینترفیس با نام Serializable توسط یک کلاس پیاده سازی می شود. تمام فیلدهای کلاسی که اینترفیس Serializable را پیاده‌سازی می‌کنند، سریال‌سازی می‌شوند و وضعیت آنها به صورت byte stream ذخیره می‌شود.

'چگونه یک شی در جاوا سریال سازی (Serialized) می شود؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

سریال سازی زمانی استفاده می شود که داده ها باید از طریق شبکه منتقل شوند. با استفاده از سریال سازی، یک شی به جریانی از بایت ها(byte stream) تبدیل می شود. جریان بایت از طریق شبکه منتقل می شود و شی در مقصد دوباره ایجاد می شود.

'چه زمانی باید از سریال سازی(Serialization) استفاده کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا حتما لازم است که در جاوا یک بلوک کد try با یک بلوک کد catch  برای مدیریت Exception ها دنبال شود؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

بلوک finally همواره اجرا خواهد شد، چه زمانی که یک خطا رخ دهد یا ندهد. تنها راه برای جلوگیری از اجرای هر دستوری در بلوک finally، لغو اجباری کد با نوشتن خط کد زیر در انتهای بلوک try است:

'آیا راهی برای رد شدن از بلوک finally  در مدیریت خطا وجود دارد، حتی اگر خطایی در بلوک try رخ دهد؟','سوالات مصاحبه Java'

System.exit(0);
این سوال از من پرسیده شده است  + 

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

'آیا یک کلاس می تواند چندین سازنده(Constructor) داشته باشد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا می توانیم متدهای استاتیک یک کلاس را Override کرد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

'خروجی کد زیر چه خواهد بود؟','سوالات مصاحبه Java'

public static void main(String args[]) {

        subclass obj = new subclass();

        obj.displayResult();

    }


public class superclass {

    public void displayResult() {

        system.out.println("Printing from superclass");

    }

}

public class subclass extends superclass {

    public void displayResult() {

        system.out.println("Displaying from subClass");

        super.displayResult();

    }
}

Ans:
Displaying from subClass
Printing from superclass
این سوال از من پرسیده شده است  + 

String یک نوع داده اولیه(primitive) در جاوا نیست. هنگامی که یک رشته در جاوا ایجاد می شود، در واقع یک شی از کلاس Java.Lang.String است که ایجاد می شود. پس از ایجاد این شی رشته ای، تمام متدهای داخلی کلاس String را می توان روی شی رشته استفاده کرد.

'آیا String یک نوع داده در جاوا است؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

در جاوا، اشیاء رشته ای Immutable نامیده می شوند، زیرا زمانی که مقدار به یک رشته اختصاص داده شد، قابل تغییر نیست و در صورت تغییر، یک شی جدید ایجاد می شود. در مثال زیر str به یک شی رشته با مقدار Value One اشاره دارد. هنگامی که یک مقدار جدید به آن اختصاص داده می شود، یک شی String جدید ایجاد می شود.

'چرا رشته ها در جاوا Immutable نامیده می شوند؟','سوالات مصاحبه Java'

String str="Value One";
str="New Value";
این سوال از من پرسیده شده است  + 

یک آرایه داده هایی از نوع اولیه(primitive) را گروه بندی می کند و ماهیت ایستا دارد در حالی که بردارها ماهیت پویا دارند و می توانند داده هایی از انواع مختلف را در خود نگه دارند.

'تفاوت بین آرایه(array) و بردار(vector) چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

Multi Threading یک مفهوم برنامه نویسی برای اجرای چندین کار به صورت همزمان در یک برنامه واحد است. Thread ها به صورت موازی اجرا می شوند و این کار به بهبود عملکرد هر برنامه کمک می کند.

'Multi Threading چیست؟         ','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

رابط Runnable در جاوا برای پیاده سازی برنامه های Multi-Thread استفاده می شود. رابط Java.Lang.Runnable توسط یک کلاس برای پشتیبانی از Multi-Threading پیاده سازی می شود.

'چرا از اینترفیس Runnable در جاوا استفاده می شود؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

برنامه های Multi-Thread را می توان با استفاده از یکی از دو متدولوژی زیر در جاوا توسعه داد: 1. با استفاده از اینترفیسJava.Lang.Runnable : کلاس ها این رابط را برای فعال کردن Multi-Threading پیاده سازی می کنند. یک متد Run() در این رابط وجود دارد که باید پیاده سازی شود. 2. با نوشتن کلاسی که کلاس Java.Lang.Thread را گسترش دهد.

'دو روش پیاده سازی Multi-Threading در جاوا چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

از آنجایی که StringBuffer ماهیتی پویا دارد و می‌توانیم مقادیر اشیاء StringBuffer را برخلاف String که تغییر ناپذیر(Immutable) است تغییر دهیم، استفاده از StringBuffer زمانی که داده‌ها بیش از حد تغییر می‌کنند همیشه انتخاب خوبی است. اگر در چنین حالتی از String استفاده کنیم، برای هر تغییر داده یک شی String جدید ایجاد می شود که یک سربار اضافی خواهد بود.

'هنگامی که تغییرات زیادی در داده ها مورد نیاز است، کدام یک باید ترجیح داده شود؟ String یا StringBuffer؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

Break بعد از هر Case (به جز مورد آخر) استفاده می‌شود تا کد بعد از Case معتبر شکسته شود و Case های بعدی اجرا نشوند در غیر اینصورت منجر به نتایج اشتباه می‌شود.

'هدف از استفاده از Break در هر Case از دستور Switch  چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'اگر هیچ سازنده ای(Constructor) در کلاس تعریف نشده باشد، اشیاء یک کلاس چگونه ایجاد می شوند؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

در Multi-threading، دسترسی به منابعی که در بین Thread های متعدد به اشتراک گذاشته شده اند را می توان با استفاده از مفهوم همگام سازی (Synchronization) کنترل کرد. با استفاده از کلمه کلیدی synchronized ، می‌توانیم اطمینان حاصل کنیم که تنها یک Therad می‌تواند در یک زمان از منبع مشترک استفاده کند و دیگران می‌توانند تنها زمانی کنترل منبع را در اختیار بگیرند که آن منبع توسط Threadدیگری که از آن استفاده می‌کند آزاد شود.

'در Multi-Threading چگونه می توانیم اطمینان حاصل کنیم که یک منبع توسط چندین Thread به طور همزمان استفاده نمی شود؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

هنگامی که یک شی را با استفاده از کلمه کلیدی new ایجاد می کنیم، سازنده به طور خودکار فراخوانی می شود. سازنده فقط یک بار برای یک شی در زمان ایجاد شیء فراخوانی می شود، از این رو نمی توانیم پس از ایجاد یک شی دوباره سازنده را فراخوانی کنیم.

'آیا می توانیم سازنده(Constructor) یک کلاس را بیش از یک بار برای یک شیء فراخوانی کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

اعضای خصوصی یک کلاس خارج از محدوده آن کلاس قابل دسترسی نیستند و هر کلاس دیگری حتی در همان Package نمی تواند به آنها دسترسی داشته باشد.

'دو کلاس به نام های ClassA و ClassB وجود دارد. هر دو کلاس در یک Package هستند. آیا می توان به یک عضو  private کلاس A توسط یک شی از کلاس B دسترسی پیدا کرد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

ما می توانیم در یک کلاس دو متد را با نام یکسان اما با تعداد / نوع پارامترهای مختلف تعریف کنیم. اینکه کدام متد باید فراخوانی شود به پارامترهای ارسال شده بستگی دارد. به عنوان مثال در کلاس زیر دو متد print با نام مشابه اما پارامترهای متفاوت داریم. بسته به پارامترها، متد مناسب فراخوانی می شود:

'آیا می توانیم در یک کلاس دو متد با نام مشابه داشته باشیم؟','سوالات مصاحبه Java'

public static void main(String args[]) {

        methodExample obj1 = new methodExample();

        obj1.print();

        obj1.print("xx");

    }

public class methodExample {

    public void print() {

        system.out.println("Print method without parameters.");

    }

    public void print(String name) {

        system.out.println("Print method with parameter");

    }
}
این سوال از من پرسیده شده است  + 

می توانیم از مفهوم Cloning برای ایجاد کپی از یک شی استفاده کنیم. ()Clone یک متد از رابط(Interface) Cloneable است از این رو، رابط Cloneable باید برای ایجاد کپی از اشیاء پیاده سازی شود.

'چگونه می توانیم یک  کپی از یک شی در جاوا ایجاد کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

مزیت اصلی استفاده از وراثت، قابلیت استفاده مجدد از کد است، زیرا وراثت به کلاس‌های فرعی امکان می‌دهد تا از کد کلاس پدر خود استفاده مجدد کنند.

'استفاده از وراثت چه فایده ای دارد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

Access Modifier پیش‌فرض برای متغیرها و متدهاِی یک پکیج(Package) protected است، یعنی متدها و متغیرهای یک کلاس برای هر کلاس دیگری در همان پکیج در دسترس است نه خارج از پکیج.

'مشخص کننده دسترسی(Access Modifier) پیش فرض برای متغیرها و متدهای یک کلاس چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'مثالی از استفاده از اشاره گرها در کلاس جاوا بزنید.','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

اگر بخواهیم کلاسی توسط هیچ کلاسی گسترش نیابد، می توانیم از کلمه کلیدی final با نام کلاس استفاده کنیم. در مثال زیر کلاس Stone نهایی است و قابل وراثت نیست:

'
چگونه می توانیم وراثت را برای یک کلاس محدود کنیم تا هیچ کلاسی از آن به ارث برده نشود؟
','سوالات مصاحبه Java'

public Final Class Stone {
	// Class methods and Variables
}
این سوال از من پرسیده شده است  + 

هنگامی که یک متد یا یک متغیر با کلمه protected اعلان می شود، در همان کلاس، هر کلاس دیگر از همان پکیج(Package) و همچنین یک زیر کلاس قابل دسترسی می شود.

'مشخص کننده دسترسی(Access Modifier) protected را توضیح دهید؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

پشته و صف هر دو مکانی برای نگهداری مجموعه ای از داده ها هستند. تفاوت اصلی بین یک پشته و یک صف این است که پشته بر اساس اصل Last in First out (LIFO) است در حالی که یک صف بر اساس اصل FIFO (First In First Out) است.

'تفاوت بین پشته و صف چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

اگر بخواهیم متغیرهای خاصی از یک کلاس سریال سازی نشوند، می‌توانیم در حین اعلان از کلمه کلیدی transient استفاده کنیم. به عنوان مثال، متغیر trans_var را نمی توان سریال کرد:

'در جاوا چگونه می توانیم از سریال سازی(Serialization) متغیرها جلوگیری کنیم؟','سوالات مصاحبه Java'

public class transientExample { 
     private transient trans_var; 
    // rest of the code 
}
این سوال از من پرسیده شده است  + 

انواع داده‌ای اولیه مانند int را می‌توان با استفاده از کلاس‌های wrapper مربوطه به‌عنوان آبجکت در نظر گرفت. برای مثال، Integer یک کلاس wrapper برای نوع داده اولیه int است. (نکته: در صورتی که نیاز دارید نوع داده ای شما مقدار null را بپذیرد، از کلاس wrapper آن استفاده کنید. به عنوان مثال به جای int از Integer استفاده کنید!)

'چگونه می توانیم از انواع داده ای اولیه(primitive) به عنوان اشیا استفاده کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

یک Thread در جاوا می تواند در یکی از حالت های زیر باشد: - Ready: یک Thread پس از ایجاد - Running: یک Thread در حال اجرا - Waiting: یک Thread در حال انتظار برای Thread دیگر - Dead: یک Thread پس از اجرا

'حالات مختلف یک Thread را توصیف کنید.','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا می توانیم از سازنده(Constructor) پیش فرض یک کلاس استفاده کنیم حتی اگر  سازنده دیگری به طور صریح تعریف شده باشد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا می‌توانیم یک متد را با استفاده از نام و آرگومان‌های یکسان اما انواع برگشتی متفاوت، بازنویسی(override) کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

در این قطعه کد از عملگر postfix "++" استفاده شده است که ابتدا مقدار را برمی گرداند و سپس افزایش می دهد. بنابراین خروجی آن 4 خواهد بود.

'خروجی قطعه کد زیر چیست؟         ','سوالات مصاحبه Java'

public class operatorExample {

    public static void main(String args[]) {

        int x = 4;

        system.out.println(x++);
	}
}
این سوال از من پرسیده شده است  + 

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

'آیا می توانیم یک متد غیر استاتیک را از داخل یک متد استاتیک فراخوانی کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا می توان از متغیرها در جاوا بدون مقداردهی اولیه استفاده کرد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا یک کلاس در جاوا می تواند از بیش از یک کلاس ارث بری کند؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

خیر، چون کلاس Abstract را نمی توان به عنوان final اعلان کرد.

'آیا کد زیر صحیح است؟             ','سوالات مصاحبه Java'

public abstract final class testClass {
	// Class methods and variables
}
این سوال از من پرسیده شده است  + 

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

'آیا برای اجرای یک برنامه جاوا به JDK در هر دستگاه نیاز است؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'Destructor در جاوا چگونه تعریف می شود؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا یک متغیر می تواند همزمان local و static باشد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

متدهای استاتیک را نمی‌توان در هیچ کلاسی بازنویسی(Override) کرد. از طرفی هر متد در یک رابط به طور پیش‌فرض انتزاعی(Abstract) است و قرار است در کلاس‌هایی که رابط را پیاده‌سازی می‌کنند، پیاده‌سازی شوند. بنابراین منطقی نیست که متدهای static را در یک رابط داشته باشیم.

'آیا می توانیم متدهای استاتیک در یک رابط(Interface) داشته باشیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

خیر، نمی‌توانیم مقدار هیچ متغیری از یک رابط را در کلاس فرزند تغییر دهیم، زیرا همه متغیرهای تعریف شده در رابط به‌طور پیش‌فرض public، static و final هستند و متغیرهای final نیز مانند ثابت‌هایی هستند که بعداً قابل تغییر نیستند.

'در کلاسی که یک رابط(Interface) را پیاده سازی می کند، آیا می توانیم مقدار متغیرهایی را که در اینترفیس تعریف شده است تغییر دهیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

می توان با استفاده از مفهوم همگام سازی(Synchronization) آن را پیاده سازی کرد. کدهای مرتبط با پایگاه داده را می توان در متدی قرار داد که دارای کلمه کلیدی synchronized است به طوری که تنها یک Thread می تواند در یک زمان به آن دسترسی داشته باشد.

'می‌خواهیم اتصالات به پایگاه‌داده را در برنامه‌ کنترل کنیم و می‌خواهیم فقط یک Thread بتواند در یک زمان اتصال پایگاه داده را ایجاد کند. چگونه می توانیم این منطق را پیاده کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'چگونه می توان یک Exception را به صورت دستی توسط یک برنامه نویس ایجاد کرد؟','سوالات مصاحبه Java'

public void topMethod() {

    try {
        excMethod();
    } catch (ManualException e) {}
}

public void excMethod {

    String name = null;

    if (name == null) {
        throw (new ManualException("Exception thrown manually ");
        }

    }
این سوال از من پرسیده شده است  + 

اگر سازنده (Constructor) یک کلاس را private اعلام کنیم، هیچ کلاس دیگری به آن دسترسی نخواهد داشت و از این رو، هیچ کلاس دیگری قادر به نمونه سازی آن نخواهد بود و ایجاد شی آن فقط به خودش محدود می شود.

'می خواهیم یک کلاس به گونه ای توسعه یابد که هیچ کلاس دیگری (حتی کلاس فرزند) نتواند اشیاء آن را ایجاد کند. چگونه می توانم این کار را انجام دهم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

در جاوا، هر شی در هنگام ایجاد یک فضای حافظه از یک پشته دریافت می کند. هنگامی که یک شی توسط یک Garbage Collector از بین می رود، فضای اختصاص داده شده به آن مجدداً به پشته اختصاص داده می شود و برای هر شی جدید در دسترس می شود.

'چگونه اشیاء در جاوا ذخیره می شوند؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'حافظه اختصاص داده شده به کدام یک از کلاس های زیر بیشتر است؟
کلاس A: سه متد، چهار متغیر، بدون شی
کلاس B: پنج متد، سه متغیر، بدون شی
','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

اگر یک Exception در برنامه ای با استفاده از بلوک های try catch مدیریت نشود، اجرای برنامه قطع می شود و هیچ دستوری بعد از دستوری که باعث ایجاد Exception شده است اجرا نمی شود.

'اگر یک Exception در یک برنامه مدیریت نشود چه اتفاقی می افتد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

اگر یک کلاس چند سازنده داشته باشد، می توان با استفاده از ()this یک سازنده را از بدنه سازنده دیگر فراخوانی کرد.

'. آیا می توان یک سازنده (Constructor) را از داخل سازنده دیگری در یک کلاس فراخوانی کرد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'آیا راهی برای افزایش اندازه یک آرایه پس از اعلان آن وجود دارد؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

اگرچه String و StringBuffer هر دو نشان دهنده اشیاء رشته ای هستند، نمی‌توانیم آنها را با یکدیگر مقایسه کنیم و اگر سعی کنیم آنها را مقایسه کنیم، با خطا مواجه می‌شویم.

'String و StringBuffer هر دو نشان دهنده اشیاء رشته ای(String) هستند. آیا می توانیم String و StringBuffer را در جاوا با هم مقایسه کنیم؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

جاوا یک Collection API ارائه می دهد که متدهای مفید زیادی را ارائه می دهد که می توانند روی مجموعه ای از اشیاء اعمال شوند. برخی از کلاس های مهم ارائه شده توسط مجموعه Collection API عبارتند از ArrayList، HashMap، TreeSet و TreeMap.

'کدام API توسط جاوا برای عملیات روی مجموعه ای از اشیاء ارائه شده است؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

در جاوا Java.lang.Throwable پدر تمام کلاس های Exception است و تمام کلاس های Exception از این کلاس پایه مشتق شده اند.

'کلاس پایه همه کلاس های Exception چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 

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

'ترتیب فراخوانی سازنده ها (Constructors) در ارث بری چیست؟','سوالات مصاحبه Java'

این سوال از من پرسیده شده است  + 




افزودن سوال مصاحبه Java


سوالی هست که اینجا نمیبینیش و از نظر تو مهمه؟ خودت سوالی داری که دنبال جوابشی؟ جواب بهتری واسه یکی از سوالای بالا داری؟ پس واسمون بفرست.


این مباحث هم مرتبط اند:

React JS


React چیست؟
ویژگی های React چیست؟
JSX چیست؟
چرا مرورگرها نمی توانند JSX را...

برو به همه سوالات
مصاحبه یار