CodeGym /Java блог /Случаен /Трудни въпроси за Java, често задавани на интервюта
John Squirrels
Ниво
San Francisco

Трудни въпроси за Java, често задавани на интервюта

Публикувано в групата
Ако някога сте се подготвяли за интервю за позиция Java програмист or сте издържали сертификационен изпит (не непременно за програмиране), тогава вероятно вече сте забелязали, че въпросите, задавани там, са много специфични. Много от тях ви карат да мислите за дизайна на езика. Някои са предназначени да изследват дълбочината на вашите знания. Има въпроси, които прorчат повече на пъзели, отколкото на нещо друго, докато други са свързани с нюанси на езика, които са много трудни за възприемане без практика. В тази статия разработчикът Sarans Sing представя няколко такива въпроса за Java. С отговори, разбира се. Трудни въпроси за Java, често задавани на интервюта - 11. Какво се случва, ако поставя оператор за връщане or System.exit() в блок try/catch? Това е много популярен и фин въпрос за Java. Номерът е, че много програмисти вярват, че блокът finallyвинаги се изпълнява. Чрез поставяне на returnизявление в try/catchблок or извикване System.exit()от вътрешността на try/catchблок, въпросът поставя под съмнение това убеждение. Отговорът на този труден въпрос е: блокът finallyще бъде изпълнен, когато returnоператор е поставен в try/catchблок, но няма да бъде изпълнен, когато System.exit()е извикан от try/catchблок. 2. Java поддържа ли множествено наследяване? Това е много труден въпрос. Интервюиращите често питат: "Ако C ++ поддържа директно множествено наследяване, тогава защо Java не може?" Отговорът _е малко по-сложно, отколкото може да изглежда, тъй като Java поддържа множествено наследяване на типове. В крайна сметка един Java интерфейс може да разшири други интерфейси. Въпреки това Java не поддържа множествено наследяване на реализации. 3. Ако метод в родителски клас хвърля NullPointerExceptions, може ли да бъде заменен от метод, който хвърля RuntimeExceptions? Това е друг труден въпрос, свързан с претоварването и отмяната. Отговор: Подменен метод може безопасно да хвърли NullPointerExceptionродителския клас на 's — RuntimeException, но не можете да направите същото с проверен тип изключение като Exception. 4. Как гарантирате, че Nнишките могат да имат достъп до Nресурси без блокиране? Ако писането на многонишков code не е вашата силна страна, може наистина да се спънете по този въпрос. Може да бъде трудно дори за опитен програмист, който не се е сблъсквал с безизходици и състезателни условия. Целият трик тук е в реда: можете да предотвратите задънени блокировки, като освободите ресурси в обратния ред, в който са бor придобити. 5. Каква е разликата между класовете StringBufferи StringBuilderв Java? Това е въпрос на класически език Java, който някои разработчици намират за труден, а други – за много прост. Класът StringBuilderсе появи в JDK 1.5. Единствената разлика между тези класове е, че StringBufferметодите на , като length(), capacity()и append(), са синхронизирани, докато съответните методи вStringBuilderне са. Тази фундаментална разлика означава, че конкатенацията на низове е по-бърза с StringBuilderотколкото с StringBuffer. Всъщност използването StringBufferне се препоръчва, тъй като конкатенацията на низове се извършва в една и съща нишка 99% от времето. 6. Какъв е резултатът от изчисляването на израза 1.0/0.0? Ще произведе ли изключение or грешка при компилация? Това е още един труден въпрос за класа. Разработчиците на Java са наясно със съществуването на примитивен двоен тип данни и клас , но когато извършват операции с плаваща запетая, те не обръщат достатъчно внимание на , , и правилата, управляващи свързаните аритметични изчисления. Отговорът на този въпрос е прост: аТрудни въпроси за Java, често задавани на интервюта - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionняма да се хвърлят; изразът се оценява на Double.POSITIVE_INFINITY. 7. Какво се случва, ако се опитате да вмъкнете ключ в, HashMapкойто вече съдържа този ключ? Този труден въпрос е част от друг често задаван въпрос: How HashMapработи в Java? HashMapе популярен източник на объркващи и трудни въпроси за Java. Ето отговора: ако се опитате да вмъкнете отново ключ в HashMap, старият ключ ще бъде заменен, тъй като HashMapкласът не позволява дублиращи се ключове. И същият ключ ще получи същия хеш code, което означава, че ще се окаже на същото място в хеш контейнера. Въз основа на материали на Quora
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION