100 + Java Въпроси и отговори за интервю (2026)
Java Въпроси и отговори за интервю за програмиране за първокурсници
1) Каква е разликата между вътрешен клас и подклас?
Вътрешен клас е клас, който е вложен в друг клас. Вътрешният клас има права за достъп до класа, който го влага, и може да осъществява достъп до всички променливи и методи, дефинирани във външния клас.
Подкласът е клас, който наследява от друг клас, наречен супер клас. Подкласът има достъп до всички публични и защитени методи и полета на своя супер клас.
👉 Безплатно изтегляне на PDF: Java Интервю Интервю Въпроси и отговори >>
2) За какво са различните спецификатори за достъп Java класове?
In Java, спецификаторите за достъп са ключовите думи, използвани преди име на клас, което дефинира обхвата на достъпа. Типовете спецификатори за достъп за класове са:
1) Обществен: Клас, метод, поле са достъпни отвсякъде.
2) Защитен: Method, Field може да бъде достъпен от същия клас, към който принадлежат или от подкласовете, и от класа на същия пакет, но не и отвън.
3) По подразбиране: Методът, полето, класът могат да бъдат достъпни само от същия пакет, а не извън собствения си пакет.
4) Частен: Method, Field могат да бъдат достъпни от същия клас, към който принадлежат.
3) Каква е целта на статичните методи и статичните променливи?
Когато има изискване за споделяне на метод или променлива между множество обекти от клас, вместо да създаваме отделни копия за всеки обект, ние използваме ключова дума static, за да направим метод или променлива споделени за всички обекти.
4) Какво е капсулиране на данни и какво е значението му?
Капсулацията е концепция в обектно-ориентираното програмиране за комбиниране на свойства и методи в една единица.
Капсулирането помага на програмистите да следват модулен подход за разработка на софтуер, тъй като всеки обект има свой собствен набор от методи и променливи и изпълнява функциите си независимо от други обекти. Капсулирането служи и за скриване на данни.
5) Какво е единичен клас? Дайте практически пример за използването му.
Единичен клас в java може да има само един екземпляр и следователно всички негови методи и променливи принадлежат само на един екземпляр. Концепцията за единичен клас е полезна за ситуации, когато има нужда да се ограничи броят на обектите за клас.
Най-добрият пример за сценарий за използване на сингълтон е, когато има ограничение за наличие само на една връзка към база данни поради ограничения на някои драйвери или поради проблеми с лицензирането.
6) Какво представляват циклите Java? Какви са трите вида цикли?
Цикълът се използва в програмирането за многократно изпълнение на оператор или блок от израз. Има три видове примки в Java:
1) За цикли
Циклите for се използват в java за многократно изпълнение на изрази за определен брой пъти. Циклите For се използват, когато броят пъти за изпълнение на изразите е известен на програмиста.
2) Докато цикли
Докато цикълът се използва, когато определени оператори трябва да се изпълняват многократно, докато дадено условие бъде изпълнено. В циклите while условието се проверява първо преди изпълнението на изрази.
3) Направете цикли докато
Цикълът Do While е същият като цикъла While с тази разлика, че условието се проверява след изпълнение на блок от оператори. Следователно в случай на do while цикъл, операторите се изпълняват поне веднъж.
7) Какво е безкраен цикъл? Как се декларира безкраен цикъл?
Безкраен цикъл се изпълнява без никакви условия и работи безкрайно. Един безкраен цикъл може да бъде прекъснат чрез дефиниране на всякаква логика за прекъсване в тялото на блоковете оператори.
Безкрайният цикъл се декларира, както следва:
for (;;)
{
// Statements to execute
// Add any loop breaking logic
}
8) Каква е разликата между оператора continue и break?
break и continue са две важни ключови думи, използвани в Loops. Когато се използва ключова дума break в цикъл, цикълът се прекъсва незабавно, докато когато се използва ключова дума continue, текущата итерация се прекъсва и цикълът продължава със следващата итерация.
В примера по-долу цикълът се прекъсва, когато броячът достигне 4.
for (counter = 0; counter & lt; 10; counter++)
system.out.println(counter);
if (counter == 4) {
break;
}
}
В примера по-долу, когато броячът достигне 4, цикълът прескача към следващата итерация и всички изрази след ключовата дума continue се пропускат за текущата итерация.
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");
}
9) Каква е разликата между променливите double и float в Java?
В java float отнема 4 байта в паметта, докато Double заема 8 байта в паметта. Float е десетично число с плаваща запетая с единична точност while Double е десетично число с двойна точност.
10) Какво е Final Keyword in Java? Дайте пример.
В java константата се декларира с помощта на ключовата дума Final. Стойността може да бъде присвоена само веднъж и след присвояването стойността на константа не може да бъде променяна.
В примера по-долу константа с името const_val е декларирана и й е присвоена стойност:
Частен финал int const_val=100
Когато даден метод е деклариран като окончателен, той НЕ може да бъде заменен от подкласовете. Този метод е по-бърз от всеки друг метод, тъй като се разрешават в определеното време.
Когато даден клас е деклариран като окончателен, той не може да бъде подклас. Примерни класове String, Integer и други обвиващи класове.
11) Какво е троичен оператор? Дайте пример.
Тернарен оператор, наричан още условен оператор, се използва за решаване коя стойност да се присвои на променлива въз основа на оценка на булева стойност. Означава се като?
В примера по-долу, ако рангът е 1, на състоянието се присвоява стойност „Готово“, в противен случай „Предстоящо“.
public class conditionTest {
public static void main(String args[]) {
String status;
int rank = 3;
status = (rank == 1) ? "Done" : "Pending";
System.out.println(status);
}
}
12) Как можете да генерирате произволни числа в Java?
- С помощта на Math.random() можете да генерирате произволни числа в диапазона, по-голям или равен на 0.1 и по-малък от 1.0
- Използване на Random клас в пакет java.util
13) Какво е превключване по подразбиране? Дайте пример.
В изявление за превключване, случайът по подразбиране се изпълнява, когато не съвпада друго условие за превключване. Регистрът по подразбиране е незадължителен случай. Може да се декларира само след като всички останали случаи на превключване са кодирани.
В примера по-долу, когато резултатът не е 1 или 2, се използва регистър по подразбиране.
public class SwitchExample {
public static void main(String args[]) {
int score = 4; // Declare the score variable inside the main method
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");
}
}
}
14) Какъв е основният клас Java от които са извлечени всички класове?
java.lang.object
15) Може да използва метода main(). Java може да върне някакви данни?
В java методът main() не може да върне никакви данни и следователно винаги се декларира с празен тип връщане.
16) Какви са Java Пакети? Какво е значението на пакетите?
In Java, пакетът е колекция от класове и интерфейси, които са групирани заедно, тъй като са свързани един с друг. Използването на пакети помага на разработчиците да модулират кода и да групират кода за правилна повторна употреба. След като кодът бъде пакетиран в пакети, той може да бъде импортиран в други класове и използван.
17) Можем ли да декларираме клас като абстрактен, без да имаме абстрактен метод?
Да, можем да създадем абстрактен клас, като използваме абстрактна ключова дума преди името на класа, дори ако той няма абстрактен метод. Въпреки това, ако даден клас има дори един абстрактен метод, той трябва да бъде деклариран като абстрактен, в противен случай ще даде грешка.
18) Каква е разликата между абстрактен клас и интерфейс в Java?
Основната разлика между абстрактен клас и интерфейс е, че интерфейсът може да притежава само декларация на публични статични методи без конкретно изпълнение, докато абстрактен клас може да има членове с всякакви спецификатори за достъп (публичен, частен и т.н.) със или без конкретно изпълнение.
Друга ключова разлика в използването на абстрактни класове и интерфейси е, че клас, който имплементира интерфейс, трябва да имплементира всички методи на интерфейса, докато клас, който наследява от абстрактен клас, не изисква реализация на всички методи на своя супер клас.
Един клас може да реализира множество интерфейси, но може да разшири само един абстрактен клас.
19) Какви са последиците за производителността на интерфейсите върху абстрактните класове?
Интерфейсите са с по-бавна производителност в сравнение с абстрактните класове, тъй като за интерфейсите са необходими допълнителни индиректи. Друг ключов фактор, който разработчиците трябва да вземат под внимание е, че всеки клас може да разшири само един абстрактен клас, докато класът може да реализира много интерфейси.
Използването на интерфейси също поставя допълнително бреме върху разработчиците, тъй като всеки път, когато интерфейс е имплементиран в клас; разработчикът е принуден да прилага всеки един метод на интерфейс.
20) Импортирането на пакет импортира ли и неговите подпакети Java?
В java, когато се импортира пакет, неговите подпакети не се импортират и програмистът трябва да ги импортира отделно, ако е необходимо.
Например, ако разработчик импортира пакет university.*, всички класове в пакета с име university се зареждат, но не се зареждат класове от подпакета. За да зареди класовете от неговия подпакет (да речем отдел), разработчикът трябва да го импортира изрично, както следва:
Импортиране на university.department.*
21) Можем ли да декларираме основния метод на нашия клас като частен?
В java главният метод трябва да е публичен статичен, за да може всяко приложение да се изпълнява правилно. Ако главният метод е деклариран като частен, разработчикът няма да получи никаква грешка при компилиране, но няма да бъде изпълнен и ще даде грешка по време на изпълнение.
22) Как можем да предадем аргумент към функция по референция вместо по стойност?
В java можем да предадем аргумент на функция само по стойност, а не по препратка.
23) Как обектът се сериализира в java?
В java, за да конвертирате обект в поток от байтове чрез сериализация, интерфейс с името Serializable се реализира от класа. Всички обекти на клас, изпълняващ сериализуем интерфейс, се сериализират и състоянието им се записва в поток от байтове.
24) Кога трябва да използваме сериализация?
Сериализацията се използва, когато данните трябва да бъдат предадени по мрежата. Използвайки сериализация, състоянието на обекта се запазва и преобразува в поток от байтове. Потокът от байтове се прехвърля по мрежата и обектът се създава отново на местоназначението.
25) Задължително ли е Try Block да бъде последван от Catch Block in Java за обработка на изключения?
Опитният блок трябва да бъде последван или от Catch блок, или от Finally блок, или и от двете. Всяко изключение, хвърлено от блока try, трябва или да бъде уловено в блока catch, или в противен случай всички специфични задачи, които трябва да бъдат изпълнени преди прекъсването на кода, да бъдат поставени в блока Finally.
Java Въпроси и отговори за интервю за опитни
26) Има ли някакъв начин да пропуснете блока за изключение на Finally, дори ако в блока за изключение възникне някакво изключение?
Ако се повдигне изключение в блок Try, контролът преминава към блок catch, ако съществува в противен случай, за окончателно блокиране. Блокът Finally винаги се изпълнява, когато възникне изключение и единственият начин да се избегне изпълнението на каквито и да е изрази в блока Finally е чрез принудително прекъсване на кода чрез написване на следния ред код в края на блока try:
System.exit(0);
27) Кога се извиква конструкторът на клас?
Конструкторът на клас се извиква всеки път, когато се създава обект с нова ключова дума.
Например в следващия клас два обекта се създават с помощта на нова ключова дума и следователно конструкторът се извиква два пъти.
public class const_example {
const_example() {
system.out.println("Inside constructor");
}
public static void main(String args[]) {
const_example c1 = new const_example();
const_example c2 = new const_example();
}
}
28) Може ли един клас да има множество конструктори?
Да, един клас може да има множество конструктори с различни параметри. Кой конструктор ще се използва за създаване на обект зависи от аргументите, предадени при създаването на обектите.
29) Можем ли да заменим статичните методи на клас?
Не можем да отменим статичните методи. Статичните методи принадлежат на клас, а не на отделни обекти и се разрешават по време на компилация (не по време на изпълнение). Дори ако се опитаме да заменим статичен метод, няма да получим грешка при комплициране, нито въздействието на замяната при изпълнение на код.
30) Какъв ще бъде изходът в примера по-долу?
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();
}
public static void main(String args[]) {
subclass obj = new subclass();
obj.displayResult();
}
}
Ans: Резултатът ще бъде:
Показване от подклас
Печат от суперклас
31) String тип данни в java ли е?
Низът не е примитивен тип данни в java. Когато в java се създаде низ, той всъщност е обект на Java.Lang.String клас, който се създава. След създаването на този низов обект, всички вградени методи на клас String могат да се използват върху низовия обект.
32) Колко низови обекта са създадени в примера по-долу?
String s1="I am Java Expert"; String s2="I am C Expert"; String s3="I am Java Expert";
В горния пример два обекта на Java.Lang.String клас са създадени. s1 и s3 са препратки към един и същи обект.
33) Защо струни Java се наричат неизменни?
В java низовите обекти се наричат неизменни, тъй като след като стойността е присвоена на низ, тя не може да бъде променена и ако се промени, се създава нов обект.
В примера по-долу препратката str се отнася до низов обект със стойност „Стойност едно“.
String str="Value One";
Когато му се присвои нова стойност, се създава нов String обект и препратката се премества към новия обект.
str="New Value";
34) Каква е разликата между масив и вектор?
Масивът групира данни от същия примитивен тип и е статичен по природа, докато векторите са динамични по природа и могат да съдържат данни от различни типове данни.
35) Какво е многопоточност?
Multi threading е концепция за програмиране за изпълнение на множество задачи по едновременен начин в рамките на една програма. Нишките споделят един и същ стек от процеси и работят паралелно. Помага за подобряване на производителността на всяка програма.
36) Защо се използва Runnable Interface в Java?
Runnable интерфейс се използва в Java за внедряване на многонишкови приложения. JavaИнтерфейсът .Lang.Runnable е имплементиран от клас за поддържане на многопоточна обработка.
37) Какви са двата начина за внедряване на многопоточност Java?
Могат да се разработват многонишкови приложения Java като използвате някоя от следните две методологии:
1) Чрез използване Java.Lang.Runnable интерфейс. Класовете имплементират този интерфейс, за да позволят многопоточна обработка. В този интерфейс има метод Run(), който е внедрен.
2) Като напишете клас, който се разширява Java.Lang.Thread клас.
38) Когато са необходими много промени в данните, коя от тях трябва да бъде предпочитана за използване? Низ или низBuffer?
Тъй като StringBuffers са динамични по природа и можем да променяме стойностите на StringBuffer обекти, за разлика от String, който е неизменен, винаги е добър избор да използвате StringBuffer когато данните се променят твърде много. Ако използваме String в такъв случай, за всяка промяна на данните ще бъде създаден нов String обект, което ще бъде допълнително натоварване.
39) Каква е целта на използването на Break във всеки случай на Switch Statement?
Прекъсването се използва след всеки случай (с изключение на последния) в превключвателя, така че кодът да прекъсва след валидния случай и да не тече и в продължаващите случаи.
Ако прекъсването не се използва след всеки случай, всички случаи след валидния случай също се изпълняват, което води до грешни резултати.
40) Как се извършва събирането на боклука в Java?
В java, когато даден обект вече не се препраща, събиране на боклук се извършва и обектът се унищожава автоматично. За автоматично събиране на боклука Java извиква метод System.gc() или метод Runtime.gc().
41) Как можем да изпълним всеки код дори преди главния метод?
Ако искаме да изпълним каквито и да било изрази преди дори създаването на обекти по време на зареждане на класа, можем да използваме статичен блок код в класа. Всички изрази в този статичен блок от код ще бъдат изпълнени веднъж в момента на зареждане на класа дори преди създаването на обекти в основния метод.
42) Може ли един клас да бъде супер клас и подклас едновременно? Дайте пример.
Ако има използвана йерархия на наследяване, един клас може да бъде едновременно суперклас за друг клас и подклас за друг.
В примера по-долу класът континент е подклас на световната класа и е супер клас на класа страна.
public class world {
..........
}
public class continenet extends world {
............
}
public class country extends continent {
......................
}
43) Как се създават обекти от клас, ако в класа не е дефиниран конструктор?
Дори ако в Java клас не е дефиниран явен конструктор, обектите се създават успешно, тъй като конструкторът по подразбиране се използва имплицитно за създаване на обект. Този конструктор няма параметри.
44) При многопоточност как можем да гарантираме, че даден ресурс не се използва от множество нишки едновременно?
При многопоточност достъпът до ресурсите, които се споделят между множество нишки, може да се контролира чрез използване на концепцията за синхронизация. Използване синхронизирана ключова дума, можем да гарантираме, че само една нишка може да използва споделен ресурс в даден момент, а други могат да получат контрол върху ресурса само след като той се освободи от другия, който го използва.
45) Можем ли да извикаме конструктора на клас повече от веднъж за обект?
Конструкторът се извиква автоматично, когато създаваме обект с нова ключова дума. Извиква се само веднъж за обект по време на създаването на обекта и следователно не можем да извикаме конструктора отново за обект след създаването му.
46) Има два класа, наречени classA и classB. И двата класа са в един пакет. Може ли частен член на classA да бъде достъпен от обект на classB?
Частните членове на клас не са достъпни извън обхвата на този клас и всеки друг клас дори в същия пакет няма достъп до тях.
47) Можем ли да имаме два метода в клас с едно и също име?
Можем да дефинираме два метода в клас с едно и също име, но с различен брой/тип параметри. Кой метод ще бъде извикан ще зависи от подадените параметри.
Например в класа по-долу имаме два метода за печат с едно и също име, но различни параметри. В зависимост от параметрите ще се извика подходящият:
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");
}
public static void main(String args[]) {
methodExample obj1 = new methodExample();
obj1.print();
obj1.print("xx");
}
}
48) Как можем да направим копие на java обект?
Можем да използваме концепцията за клониране, за да създадем копие на обект. Използвайки клониране, ние създаваме копия с действителното състояние на даден обект.
Clone() е метод на Cloneable интерфейс и следователно, Cloneable интерфейс трябва да бъде внедрен за създаване на копия на обекти.
49) Каква е ползата от използването на наследяване?
Основното предимство на използването на наследяване е повторното използване на кода, тъй като наследяването позволява на подкласовете да използват повторно кода на своя супер клас. Полиморфизмът (разширяемост) е друго голямо предимство, което позволява въвеждането на нова функционалност, без да се засягат съществуващите производни класове.
50) Какъв е спецификаторът за достъп по подразбиране за променливи и методи на клас?
Спецификаторът за достъп по подразбиране за променливи и метод е защитен от пакет, т.е. променливите и класът са достъпни за всеки друг клас, но в същия пакет, а не извън пакета.
51) Дайте пример за използване на указатели в Java клас.
Няма указатели Java. Така че не можем да използваме концепцията за указатели в Java.
52) Как можем да ограничим наследяването за клас, така че нито един клас да не може да бъде наследен от него?
Ако искаме даден клас да не се разширява допълнително от който и да е клас, можем да използваме ключовата дума Окончателен с името на класа.
В следващия пример класът Stone е Final и не може да бъде разширен
public Final Class Stone {
// Class methods and Variables
}
53) Какъв е обхватът на достъп на спецификатора на защитен достъп?
Когато метод или променлива е деклариран със защитен спецификатор за достъп, той става достъпен в същия клас, във всеки друг клас от същия пакет, както и в подклас.
| Промени | клас | Пакет | подклас | свят |
|---|---|---|---|---|
| обществен | Y | Y | Y | Y |
| защитени | Y | Y | Y | N |
| без модификатор | Y | Y | N | N |
| частен | Y | N | N | N |
54) Каква е разликата между стека и опашката?
Стекът и опашката се използват като контейнер за колекция от данни. Основната разлика между стека и опашката е, че стекът се основава на принципа Последен влязъл, първи излязъл (LIFO), докато опашката се основава на принципа FIFO (Пръв влязъл, първи излязъл).
55) В java, как можем да забраним сериализирането на променливи?
Ако искаме определени променливи от даден клас да не бъдат сериализирани, можем да използваме ключовата дума преходен докато ги декларира. Например променливата trans_var по-долу е преходна променлива и не може да бъде сериализирана:
public class transientExample {
private transient trans_var;
// rest of the code
}
56) Как можем да използваме примитивни типове данни като обекти?
Примитивните типове данни като int могат да се обработват като обекти чрез използването на съответните им класове обвивки. Например Integer е клас обвивка за примитивен тип данни int. Можем да приложим различни методи към клас обвивка, както към всеки друг обект.
57) Кои типове изключения се улавят по време на компилиране?
Проверените изключения могат да бъдат уловени по време на компилация на програмата. Отметнатите изключения трябва да се обработват чрез блока try catch в кода, за да се компилира успешно кодът.
58) Опишете различни състояния на нишка.
Нишка в Java може да бъде в едно от следните състояния:
- Готов: Когато се създаде нишка, тя е в състояние на готовност.
- Изпълнение: Нишка, която се изпълнява в момента, е в състояние на изпълнение.
- Изчакване: нишка, чакаща друга нишка да освободи определени ресурси, е в състояние на изчакване.
- Мъртъв: нишка, която е умряла след изпълнение, е в мъртво състояние.
59) Можем ли да използваме конструктор по подразбиране на клас, дори ако е дефиниран явен конструктор?
Java осигурява конструктор без аргумент по подразбиране, ако в a не е дефиниран изричен конструктор Java клас. Но ако е дефиниран изричен конструктор, конструкторът по подразбиране не може да бъде извикан и разработчикът може да използва само онези конструктори, които са дефинирани в класа.
60) Можем ли да заменим метод, като използваме същото име на метод и аргументи, но различни типове връщане?
Основното условие за отмяна на метода е, че името на метода, аргументите, както и типът на връщане трябва да бъдат точно същите като тези на метода, който се отменя. Следователно използването на различен тип връщане не отменя метод.
61) Какъв ще бъде резултатът от следния код?
public class operatorExample {
public static void main(String args[]) {
int x = 4;
system.out.println(x++);
}
}
В този случай се използва postfix ++ оператор, който първо връща стойността и след това се увеличава. Следователно изходът ще бъде 4.
61) Човек казва, че е компилирал успешно Java клас, без дори да има основен метод в него? възможно ли е
основният метод е входна точка на Java клас и обаче е необходим за изпълнение на програмата; клас се компилира успешно, дори и да няма основен метод. Не може да се стартира обаче.
62) Можем ли да извикаме нестатичен метод отвътре статичен метод?
Нестатичните методи се притежават от обекти на клас и имат обхват на ниво обект и за да се извикат нестатичните методи от статичен блок (като от статичен основен метод), първо трябва да се създаде обект от класа. След това, използвайки препратка към обект, тези методи могат да бъдат извикани.
63) Кои са двете променливи на средата, които трябва да бъдат зададени, за да стартирате всяка Java програми?
Java програмите могат да се изпълняват в машина само след като следните две променливи на средата са правилно зададени:
- променлива PATH
- Променлива CLASSPATH
64) Могат ли да се използват променливи в Java без инициализация?
In Java, ако променлива се използва в код без предварителна инициализация с валидна стойност, програмата не компилира и дава грешка, тъй като не е присвоена стойност по подразбиране на променливи в Java.
65) Може ли клас в Java да бъдат наследени от повече от един клас?
In Java, един клас може да бъде извлечен само от един клас, а не от множество класове. Множественото наследяване не се поддържа от Java.
66) Може ли конструктор да има различно име от име на клас в Java?
Конструктор в Java трябва да има същото име като името на класа и ако името е различно, то не действа като конструктор и компилаторът го смята за нормален метод.
67) Какъв ще бъде резултатът от Round(3.7) и Ceil(3.7)?
Round(3.7) връща 4, а Ceil(3.7) връща 4.
68) Можем ли да използваме goto in Java да отидете на определен ред?
In Java, няма ключова дума goto и java не поддържа тази функция за преминаване към определен етикетиран ред.
69) Може ли мъртва нишка да бъде стартирана отново?
В java нишка, която е в мъртво състояние, не може да бъде стартирана отново. Няма начин да рестартирате мъртва нишка.
70) Следната декларация на клас правилна ли е?
public abstract final class testClass {
// Class methods and variables
}
Отг.: Горната декларация на клас е неправилна, тъй като абстрактен клас не може да бъде деклариран като Final.
71) Изисква ли се JDK на всяка машина за изпълнение на a Java програма?
JDK е комплект за разработка на Java и се изисква само за разработка и за стартиране на a Java програма на машина, JDK не се изисква. Изисква се само JRE.
72) Каква е разликата между сравнението, направено чрез метод равенство и == оператор?
In Java, методът equals() се използва за сравняване на съдържанието на два обекта от низ и връща true, ако двата имат една и съща стойност, докато операторът == сравнява препратките на два обекта от низ.
В следващия пример, equals() връща true, тъй като двата низови обекта имат еднакви стойности. Операторът == обаче връща false, тъй като и двата низови обекта препращат към различни обекти:
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");
}
}
}
73) Възможно ли е да се дефинира метод в Java клас, но осигурете внедряването му в кода на друг език като C?
Да, можем да направим това с помощта на собствени методи. В случай на разработка, базирана на собствен метод, ние дефинираме публични статични методи в нашия Java клас без неговото внедряване и след това изпълнението се извършва на друг език като C отделно.
74) Как се дефинират деструкторите в Java?
In Java, в класа няма деструктори, тъй като няма нужда да се прави това. Java има свой собствен механизъм за събиране на боклук, който върши работата автоматично, като унищожава обектите, когато вече не се споменават.
Java Въпроси и отговори за интервю за 5+ години опит
75) Може ли една променлива да бъде локална и статична едновременно?
Не, променливата не може да бъде както статична, така и локална едновременно. Дефинирането на локална променлива като статична дава грешка при компилиране.
76) Можем ли да имаме статични методи в интерфейс?
Статичните методи не могат да бъдат отменени в нито един клас, докато всички методи в интерфейса са по подразбиране абстрактни и се предполага, че се изпълняват в класовете, които имплементират интерфейса. Така че няма смисъл да има статични методи в интерфейс Java.
77) В клас, изпълняващ интерфейс, можем ли да променим стойността на която и да е променлива, дефинирана в интерфейса?
Не, не можем да променим стойността на никоя променлива на интерфейс в имплементиращия клас, тъй като всички променливи, дефинирани в интерфейса, са по подразбиране публични, статични и Final и final променливите са като константи, които не могат да бъдат променени по-късно.
78) Правилно ли е да се каже, че поради функцията за събиране на боклук в Java, java програма никога не изчерпва паметта си?
Въпреки че автоматичното събиране на боклука се осигурява от Java, това не гарантира, че a Java програмата няма да излезе от паметта, тъй като има възможност създаването на Java обекти се извършва с по-бързо темпо в сравнение със събирането на боклук, което води до запълване на всички налични ресурси на паметта.
Така че събирането на боклука помага за намаляване на шансовете на програма да остане без памет, но не гарантира това.
79) Можем ли да имаме друг тип връщане освен void за основния метод?
Не, Java главният метод на класа може да има само празен тип връщане, за да може програмата да се изпълни успешно.
Независимо от това, ако абсолютно трябва да върнете стойност при завършване на основния метод, можете да използвате System.exit(int status)
80) Искам да достигна отново и да използвам обект, след като бъде изчистен. Как е възможно?
След като даден обект бъде унищожен от събирача на отпадъци, той вече не съществува в купчината и не може да бъде достъпен отново. Няма начин да го препоръчам отново.
81) В Java програмиране на нишки, кой метод е задължителна реализация за всички нишки?
Run() е метод на Runnable интерфейс, който трябва да бъде имплементиран от всички нишки.
82) Искам да контролирам връзките към базата данни в моята програма и искам само една нишка да може да осъществява връзка към база данни в даден момент. Как мога да приложа тази логика?
Отг.: Това може да се реализира чрез използване на концепцията за синхронизация. Кодът, свързан с базата данни, може да бъде поставен в метод, който hs синхронизирано ключова дума, така че само една нишка да има достъп до нея в даден момент.
83) Как може изключение да бъде хвърлено ръчно от програмист?
За да хвърлите изключение в блок от код ръчно, хвърлям използва се ключова дума. След това това изключение се прихваща и обработва в блока catch.
public void topMethod() {
try {
excMethod();
} catch (ManualException e) {}
}
public void excMethod {
String name = null;
if (name == null) {
throw (new ManualException("Exception thrown manually ");
}
}
84) Искам класът ми да бъде разработен по такъв начин, че никой друг клас (дори производен клас) да не може да създава своите обекти. Как мога да го направя?
Ако декларираме конструктора на клас като частен, той няма да бъде достъпен от никой друг клас и следователно никой друг клас няма да може да го инстанцира и формирането на неговия обект ще бъде ограничено само до него.
85) Как се съхраняват обектите Java?
В java всеки обект, когато е създаден, получава място в паметта от купчина. Когато даден обект бъде унищожен от събирач на отпадъци, пространството, разпределено за него от купчината, се преразпределя към купчината и става достъпно за всички нови обекти.
86) Как можем да намерим действителния размер на обект в купчината?
В java няма начин да разберете точния размер на обект в купчината.
87) Кой от следните класове ще има повече разпределена памет?
Клас A: Три метода, четири променливи, без обект
Клас B: Пет метода, три променливи, без обект
Паметта не се разпределя преди създаването на обекти. Тъй като и за двата класа няма създадени обекти, така че не се разпределя памет в купчина за който и да е клас.
88) Какво се случва, ако изключение не се обработи в програма?
Ако изключение не се обработи в програма, използваща блокове try catch, програмата се прекъсва и не се изпълнява оператор след оператора, който е причинил хвърляне на изключение.
89) Имам множество конструктори, дефинирани в клас. Възможно ли е да извикате конструктор от тялото на друг конструктор?
Ако един клас има множество конструктори, е възможно да извикате един конструктор от тялото на друг, използвайки това().
90) Какво се разбира под анонимен клас?
Анонимен клас е клас, дефиниран без име в един ред код, използващ нова ключова дума.
Например в кода по-долу сме дефинирали анонимен клас в един ред код:
public java.util.Enumeration testMethod()
{
return new java.util.Enumeration()
{
@Override
public boolean hasMoreElements()
{
// TODO Auto-generated method stub
return false;
}
@Override
public Object nextElement()
{
// TODO Auto-generated method stub
return null;
}
}
91) Има ли начин да се увеличи размерът на масив след неговата декларация?
Масивите са статични и след като сме посочили неговия размер, не можем да го променим. Ако искаме да използваме такива колекции, където може да изискваме промяна на размера (без елементи), трябва да предпочетем вектора пред масива.
92) Ако едно приложение има множество класове в него, добре ли е да има основен метод в повече от един клас?
Ако има основен метод в повече от един клас в приложение на Java, това няма да причини проблем, тъй като входната точка за всяко приложение ще бъде конкретен клас и кодът ще започне само от главния метод на този конкретен клас.
93) Искам да запазя данни за обекти за по-късна употреба. Какъв е най-добрият подход за това?
Най-добрият начин да запазите данните за бъдеща употреба е да използвате концепцията за сериализация.
94) В какво е локален клас Java?
In Java, ако дефинираме нов клас вътре в определен блок, той се нарича локален клас. Такъв клас има локален обхват и не може да се използва извън блока, където е дефиниран.
95) Низ и низBuffer и двете представляват String обекти. Можем ли да сравним String и StringBuffer in Java?
Въпреки че String и StringBuffer и двата представляват String обекти, не можем да ги сравним един с друг и ако се опитаме да ги сравним, получаваме грешка.
96) От кой API се предоставя Java за операции върху набор от обекти?
Java предоставя API за събиране, който предоставя много полезни методи, които могат да бъдат приложени върху набор от обекти. Някои от важните класове, предоставени от Collection API, включват ArrayList, HashMap, TreeSet и TreeMap.
97) Можем ли да преобразуваме всеки друг тип към булев тип с преобразуване на типове?
Не, не можем нито да преобразуваме друг примитивен тип към булев тип данни, нито можем да преобразуваме булев тип данни към друг примитивен тип данни.
98) Можем ли да използваме различни типове връщане за методи, когато са заменени?
Основното изискване за отмяна на метода в Java е, че замененият метод трябва да има същото име и параметри. Но методът може да бъде заменен с различен тип връщане, стига новият тип връщане да разширява оригинала.
Например методът връща референтен тип.
Class B extends A {
A method(int x) {
//original method
}
B method(int x) {
//overridden method
}
}
99) Какъв е основният клас на всички класове за изключения?
In Java, Java.lang.Throwable е супер класът на всички класове изключения и всички класове изключения са извлечени от този базов клас.
100) Какъв е редът на извикване на конструктори при наследяване?
В случай на наследяване, когато се създава нов обект от производен клас, първо се извиква конструкторът на суперкласа и след това се извиква конструкторът на производния клас.
Подгответе се за вашето интервю за работа!!! Минете през Java уроци да бъдем по-добре подготвени.
Това подробно Java Пробният тест тест ще ви помогне да изчистите съмненията относно Java въпроси за интервю и също така ще ви помогне да пробиете интервюто.
тези Java намлява Java 8 въпроса за интервю също ще помогне във вашата viva (орално)
