Прегледайте тези 50 въпроса, за да пропуснете интервюто си за програмиране на Java

Списък с често задавани въпроси за Java от програмиране на интервюта за работа.

Здравейте всички! През последните няколко години споделям много въпроси и интервюта за Java интервюта поотделно. Много от моите читатели поискаха да ги събера, за да могат да ги имат на едно и също място. Тази публикация е резултат от това.

Тази статия съдържа повече от 50 въпроса за интервю за Java, обхващащи всички важни теми като основни основи на Java, Java Collection Framework, Java Multithreading and Concurrency, Java IO, JDBC, JVM Internals, проблеми с кодирането, обектно-ориентирано програмиране и др.

Въпросите също са взети от различни интервюта и в никакъв случай не са много трудни. Може би сте ги виждали вече в телефона си или в интервюта директно в лице.

Въпросите също са много полезни за преглед на важни теми като многопоточност и колекции. Също така споделих някои полезни ресурси за по-нататъшно обучение и подобряване като The Complete Java MasterClass, за да изчистя и запълня пропуските във вашите Java умения.

И така, какво чакаме? Ето списъка с някои от най-често задаваните въпроси за Java в интервюта както за начинаещи, така и за опитни Java разработчици.

50+ въпроси за интервю за Java за 2 до 3 години опитни програмисти

Така че, без да губите повече време, ето списъкът ми с някои от често задаваните въпроси за интервюта за Java Java за начинаещи програмисти. Този списък се фокусира върху начинаещи и по-малко опитни разработчици, като някой с 2 ​​до 3 години опит в Java.

1) Как Java постига независимост от платформата? (отговор)

подсказка: байт код и виртуална машина Java

2) Какво има ClassLoaderв Java? (отговор)

подсказка: част от JVM, която зарежда байт кодове за класове. Можете да напишете своя.

3) Напишете програма за Java, за да проверите дали числото е четно или нечетно? (отговор)

подсказка: можете да използвате побитов оператор, като побитово И, не забравяйте, че дори числото има нула в края в двоичен формат, а нечетното число има 1 в края.

4) Разлика между ArrayListи HashSetв Java? (отговор)

подсказка: всички разлики между Listи Setса приложими тук, например подреждане, дубликати, произволно търсене и др. Вижте Основи на Java: Колекции от Ричард Уорбъртън, за да научите повече за ArrayList, HashSet и други важни колекции в Java.

5) Какво е двойно проверено заключване в Singleton? (отговор)

подсказка: проверете два пъти дали екземплярите са инициализирани или не, първо без заключване и второ със заключване.

6) Как се създава безопасен за нишки Singleton в Java? (отговор)

подсказка: много начини, като използване на Enum или чрез двойно проверен шаблон за заключване или използване на вложен статичен клас.

7) Кога да използвам летливата променлива в Java? (отговор)

подсказка: когато трябва да инструктирате JVM, че дадена променлива може да бъде модифицирана от множество нишки и да дадете подсказка на JVM, която не кешира стойността си.

8) Кога да използвам преходна променлива в Java? (отговор)

подсказка: когато искате да направите променлива несериализуема в клас, който реализира сериализуемия интерфейс. С други думи, можете да го използвате за променлива, чиято стойност не искате да запазвате. Вижте Пълния Java MasterClass, за да научите за преходните променливи в Java.

9) Разлика между преходната и летливата променлива в Java? (отговор)

намек: напълно различен, единият се използва в контекста на сериализацията, докато другият се използва в паралелност.

10) Разлика между Serializable и Externalizable в Java? (отговор)

подсказка: Externalizable ви дава повече контрол над процеса на сериализация.

11) Можем ли да заменим частния метод в Java? (отговор)

подсказка: Не, тъй като не се вижда в подкласа, основно изискване за заместване на метод в Java.

12) Разлика между Hashtableи HashMapв Java? (отговор)

подсказка: няколко, но най-важното е Hashtable, което е синхронизирано, докато HashMapне е. Освен това е наследено и бавно в сравнение с HashMap.

13) Разлика между Listи Set в Java? (отговор)

намек: Listе подреден и позволява дублиране. Setе неподредена и не позволява дублиращи се елементи.

14) Разлика между ArrayListи Vectorв Java (отговор)

подсказка: Много, но най-важното е, че ArrayListе несинхронизирано и бързо, докато Vectorе синхронизирано и бавно. Това също е стар клас като Hashtable.

15) Разлика между Hashtableи ConcurrentHashMapв Java? (отговор)

подсказка: по-мащабируема. Вижте Основи на Java: Колекции от Ричард Уорбъртън, за да научите повече.

16) Как се ConcurrentHashMapпостига мащабируемост? (отговор)

подсказка: чрез разделяне на картата на сегменти и заключване само по време на операцията по запис.

17) Кои два метода ще замените, за Objectда се използва както Keyв HashMap? (отговор)

подсказка: е равно и hashcode

18) Разлика между чакане и сън в Java? (отговор)

подсказка: wait()Методът освобождава ключалката или монитора, докато сънят не.

19) Разлика между notifyи notifyAllв Java? (отговор)

подсказка: notifyуведомява, че една случайна нишка чака това заключване, докато notifyAllинформира всички нишки, чакащи монитор. Ако сте сигурни, че чака само една нишка, използвайте notify, или notifyAllе по-добре. Вижте мини-курс Threading Essentialsот Java Champion Heinz Kabutz, за да научите повече за основите на резбите.

20) Защо замествате hashcode, заедно с equals()Java? (отговор)

подсказка: да бъде в съответствие с equals и hashcode договор, което се изисква, ако планирате да съхранявате вашия обект в класове за събиране, например HashMapили ArrayList.

21) Какъв е коефициентът на натоварване на HashMapсредствата? (отговор)

подсказка: Прагът, който задейства преоразмеряването, HashMapобикновено е 0,75, което означава да се HashMapпреоразмерява, ако е пълен със 75 процента.

22) Разлика между ArrayListи LinkedListв Java? (отговор)

подсказка: същото като масив и свързан списък, един позволява произволно търсене, докато другият не. Вмъкването и изтриването е лесно в свързания списък, но търсенето е лесно в масив. Вижте Основи на Java: Колекции , Курсът на Ричард Уорбъртън по Pluralsight, за да научите повече за основната структура на данните за Collection в Java.

23) Разлика между CountDownLatchи CyclicBarrierв Java? (отговор)

подсказка: Можете да използвате повторно, CyclicBarrierслед като бариерата е счупена, но не можете да използвате повторно, CountDownLatchслед като броят достигне нула.

24) Кога използвате Runnablevs Threadв Java? (отговор)

намек: винаги

25) Какво е значението на Enum да бъде безопасен за тип в Java? (отговор)

подсказка: Това означава, че не можете да присвоите екземпляр от различен тип Enum на променлива Enum. напр. ако имате променлива като DayOfWeekday, тогава не можете да й присвоите стойност от DayOfMonthenum.

26) Как работи Autoboxing на Integer в Java? (отговор)

подсказка: С помощта на valueOf()метода в Java.

27) Разлика между PATHи Classpathв Java? (отговор)

подсказка: PATHизползва се от операционната система, докато Classpathсе използва от JVM за намиране на Java двоичен файл, например JAR файлове или файлове от клас. Виж Java Основи на основната платформа , за да научат повече за PATH, Classpathи друга променлива Java среда.

28) Разлика между претоварването на метода и заместването в Java? (отговор)

подсказка: Заменянето се случва в подклас, докато претоварването се случва в същия клас. Освен това заместването е активност по време на изпълнение, докато претоварването се разрешава по време на компилиране.

29) Как предотвратявате подкласирането на клас в Java? (отговор)

съвет: просто направете неговия конструктор частен

30) Как ограничавате вашия клас да не се използва от вашия клиент? (отговор)

подсказка: направете конструктора частен или изхвърлете изключение от конструктора

31) Разлика между StringBuilderи StringBufferв Java? (отговор)

подсказка: StringBuilderне е синхронизиран, докато StringBufferе синхронизиран.

32) Разлика между полиморфизма и наследяването в Java? (отговор)

подсказка: Наследяването позволява повторно използване на кода и изгражда връзката между класа, което се изисква от Полиморфизма, който осигурява динамично поведение. Вижте Основи на Java: Обектно-ориентиран дизайнза да научите повече за OOP функциите.

33) Можем ли да заменим статичния метод в Java? (отговор)

подсказка: Не, защото заместването се разрешава по време на изпълнение, докато извикването на статичен метод се разрешава по време на компилация.

34) Можем ли да получим достъп до частния метод в Java? (отговор)

подсказка: да, в същия клас, но не извън класа

35) Разлика между интерфейса и абстрактния клас в Java? (отговор)

подсказка: от Java 8 разликата е размита. Клас Java обаче все още може да реализира множество интерфейси, но може да разшири само един клас.

36) Разлика между DOM и SAX парсер в Java? (отговор)

подсказка: DOM зарежда целия XML файл в памет, докато SAX не. Той е базиран на събития парсер и може да се използва за синтактичен анализ на голям файл, но DOM е бърз и трябва да се предпочита за малки файлове.

37) Разлика между хвърляне и хвърляне на ключова дума в Java? (отговор)

подсказка: хвърля обявява какво изключение може да хвърли метод в случай на грешка, но ключовата дума хвърля всъщност изключение. Вижте Основи на Java: Обработка на изключения, за да научите повече за обработката на изключения в Java.

38) Разлика между безопасни и неуспешни итератори в Java? (отговор)

Съвет: Безопасността при отказ не изхвърля, ConcurrentModificationExceptionдокато fail-fastправи, когато открие външна промяна в основната колекция, докато итерира върху нея.

39) Разлика между Iterator и Enumeration в Java? (отговор)

подсказка: Iterator също ви дава възможност да премахнете елемент, докато итерирате, докато Enumeration не позволява това.

40) Какво има IdentityHashMapв Java? (отговор)

намек: A Map, който използва ==оператора за равенство, за да провери равенството вместо equals()метода.

41) Какво представлява Stringпулът в Java? (отговор)

подсказка: StringПул от литерали. Не забравяйте, че е преместено в купчина от пермското пространство в JDK 7.

42) Може ли Serializableклас да съдържа несериализуемо поле в Java? (отговор)

подсказка: Да, но трябва да го направите или статичен, или преходен.

43) Разлика между това и супер в Java? (отговор)

подсказка: това се отнася до текущия екземпляр, докато super се отнася до екземпляр на суперкласа.

44) Разлика между Comparatorи Comparableв Java? (отговор)

подсказка: Comparatorдефинира подреждане по поръчка, докато Comparableопределя естествения ред на обектите, например азбучния ред за String. Вижте Пълния Java MasterClass, за да научите повече за сортирането в Java.

45) Разлика между java.util.Dateи java.sql.Dateв Java? (отговор)

подсказка: бившата съдържа както дата, така и час, докато по-късно съдържа само част от датата.

46) Защо методът за изчакване и уведомяване е деклариран в Objectклас в Java? (отговор)

подсказка: защото те изискват заключване, което е достъпно само за обект.

47) Защо Java не поддържа множество наследства? (отговор)

подсказка: Не поддържа поради лош опит със C ++, но с Java 8 в известен смисъл поддържа - само множество наследства на Typeне се поддържат в Java сега.

48) Разлика между проверено и непроверено изключение в Java? (отговор)

подсказка: В случай на отметка, трябва да обработвате изключение, като използвате блок catch, докато в случай на отметка, зависи от вас; компилирането няма да ви притеснява.

49) Разлика между грешка и изключение в Java? (отговор)

подсказка: Писна ми да пиша, моля проверете отговора

50) Разлика между състоянието на състезанието и Deadlock в Java? (отговор)

подсказка: и двете са грешки, които възникват в едновременно приложение, едната възниква поради планиране на нишки, докато други възникват поради лошо кодиране. Вижте Многопоточност и паралелни изчисления в Java, за да научите повече за блокирането, условията на състезанието и други проблеми с многопоточност.

Заключителни бележки

Благодаря, стигнахте до края на статията ... Успех с вашето интервю за програмиране! Със сигурност няма да е лесно, но следвайки тази пътна карта и ръководство, вие сте една крачка по-близо до това да станете инженер на DevOps.

Ако харесвате тази статия, моля, споделете с приятели и колеги и не забравяйте да следвате javinpaul в Twitter!

Допълнителни ресурси

  • Ръководство за интервю за Java: 200+ въпроса и отговори за интервюта
  • Ръководство за интервю за Spring Spring - 200+ въпроса и отговора
  • Подготовка за интервю за работа от Джон Сонмез
  • Интервю за програмиране на Java, изложено от Markham
  • Пробиване на интервюто за кодиране - 189 въпроса и отговора
  • Структура на данните и анализ на алгоритми за интервюта за работа
  • 130+ въпроса за интервю за Java през последните 5 години
PS - Ако имате нужда от БЕЗПЛАТНИ ресурси, за да научите Java, можете да разгледате този списък с безплатни курсове за Java, за да започнете подготовката си.

PSS - Не съм дал отговор на въпросите за интервюто, споделени в изображението „Колко String обекта са създадени в кода?“ можеш ли да познаеш и обясниш?