Comments 85
ответил на 1 вопрос.
Написали бы такой тест для C#, я бы вас бы расцеловал!!!
UFO just landed and posted this here
clck.ru/4YiE — не тест, но более чем достаточно.
6. Я не безнадежен :)
Вопрос №7 ввел в ступор (параметр String и метка).
Вопрос №7 ввел в ступор (параметр String и метка).
Забавляют эти тесты, которые показывают уровень задротства конкретного языка, вместо умения, собственно, программировать.
Бессмысленные и беспощадные.
Бессмысленные и беспощадные.
Зато знание таких вот вещей очень помогает на собеседованиях. Там очень часто любят что-то в этом духе спрашивать.
Хотя тут я подобрал вопросы, которые логичны. А вот на самих экзаменах по сертификации реально большинство вопросов на задротство, притом не языка, а API, что еще хуже.
Хотя тут я подобрал вопросы, которые логичны. А вот на самих экзаменах по сертификации реально большинство вопросов на задротство, притом не языка, а API, что еще хуже.
Тем не менее такие тесты позволяют не зазнаваться, что тоже полезно. ;)
UFO just landed and posted this here
Общее «умение программировать» — это хорошо, но оно не помогает, если:
5а. В одном jar-файле изменилось значение строковой константы, а код почему-то продолжает работать по-старому.
5б. Строковый пул одного класса не содержит имени другого класса, хотя мы наверняка знаем, что есть зависимость по использованию константы.
9. Класс в своем блоке статической инициализации регистрирует себя в реестре. Мы «дергаем» класс, а регистрации не происходит.
Другие вопросы тоже выглядят жизненно. Если человек сталкивался с этими особенностями языка Java, то, возможно, он действительно много программировал на Java. Другое дело, что лучше не задавать один из этих вопросов на собеседовании, а спросить, с какой запомнившейся проблемой сталкивался интервьюируемый.
5а. В одном jar-файле изменилось значение строковой константы, а код почему-то продолжает работать по-старому.
5б. Строковый пул одного класса не содержит имени другого класса, хотя мы наверняка знаем, что есть зависимость по использованию константы.
9. Класс в своем блоке статической инициализации регистрирует себя в реестре. Мы «дергаем» класс, а регистрации не происходит.
Другие вопросы тоже выглядят жизненно. Если человек сталкивался с этими особенностями языка Java, то, возможно, он действительно много программировал на Java. Другое дело, что лучше не задавать один из этих вопросов на собеседовании, а спросить, с какой запомнившейся проблемой сталкивался интервьюируемый.
Другое дело, что лучше не задавать один из этих вопросов на собеседовании, а спросить, с какой запомнившейся проблемой сталкивался интервьюируемый.
Тут большой шанс получить историю о сексе с узкоспециализированной, кривой и хитровывернутой библиотекой. Они встречаются чаще таких фундаментальных косяков, и возни с ними обычно больше.
Проблему иногда и не вспомнишь вот так сразу )
Зато если спросят проблему, то знающий решит мгновенно, а незнающий — вряд ли решит сразу.
Зато если спросят проблему, то знающий решит мгновенно, а незнающий — вряд ли решит сразу.
Это вопросы на понимание принципов работы языка, которое может сэкономить уйму времени на решение «WTF». Мелким аникейщикам такие знания конечно не к чему, для экспертов — обязательны.
Вобщем учите матчасть, Сэр
Вобщем учите матчасть, Сэр
Зато такие знания очень помогают в попытках понять быдлокод, который тебе запрещено редактировать, ибо «работает, и не трогай» :-)
Некоторые вопросы действительно интересные. Спасибо!
ответил на 4 вопроса: 2, 4, 7, 10.
Спасибо за тест. Теперь вот сижу и мне стыдно за моё знание java.
Выложите плиз ссылки на остальные более чем 990 задачек.
Выложите плиз ссылки на остальные более чем 990 задачек.
Прочитал пост и понял что я не знаю java :(
UFO just landed and posted this here
К сожалению, только один правильный ответ. Но уж на 4-й то вопрос думал, что правильно отвечу…
А где можно поподробнее прочитать про эти тонкости языка? Какую книгу посоветуете?
Всем советую вот эту книгу.
Без воды, детально и главное очень легко читается.
Полная противоположность Java Language Specification, который читать имхо очень тяжело.
Без воды, детально и главное очень легко читается.
Полная противоположность Java Language Specification, который читать имхо очень тяжело.
Вот так какой нибудь задрот напишет подобный код или скопипастит, а ты сиди голову ломай.
А ещё вместо обычного класса с методом, любят понаписать вокруг этого класса разной херни и вызывают этот метод через жопу.
Чем код проще и логичнее тем лучше.
А ещё вместо обычного класса с методом, любят понаписать вокруг этого класса разной херни и вызывают этот метод через жопу.
Чем код проще и логичнее тем лучше.
Хочу такой же по Python. И, уверен, наберутся желающие попробовать решить подобные тесты для всех других языков)
Всего только два правильных ответа. Печаль, печаль…
в избранное
реквестирую ответы с подробным разбором :)
brainbench.com есть для тренировок, но он за деньги. Есть еще хороший ресурс quizful.net. Там достаточно интересные и обширные тесты по java и другим технологиям. Правда он в последнее время как то вяло развивается.
Так экзамен то сдали? :)
На brainbench частенько есть бесплатные тесты и по Java тоже.
UFO just landed and posted this here
у меня всё работает. Версия джавы такая же. Возможно что-то с настройками IDE?
В любом случае не важно, класс можно переназвать ))
В любом случае не важно, класс можно переназвать ))
В большинстве вопросов ответом будет «0. Так не стоит писать» =)
UFO just landed and posted this here
ответил на 5,6,8,10((
жду продолжение!!!
жду продолжение!!!
2, 6, 7. Лососнул я что-то.
Как то это все уныло :(
Никогда в жизни не писал на Java, только на Pythonе, ответил на 2,3,7,8,9, просто по интуиции.
Чтобы сравнить с помощью == два скалярных типа надо знать про пул и особенности его устройства??!!.. Помнится когда появился С# жависты обвиняли его в нарушении принципов ООП — и это замечательно потому что там всегда 1000==1000.
А что не так? == сравнивает ссылки на объекты. Всегда. Просто когда юзается пул, получается что объект один а ссылок несколько, отсюда другой результат. Если хочешь сравнивать значения, используется equals, у которого «1000».equals («1000») всегда true.
Я не силен в c#, но разве там == и пул не точно также работает?
Я не силен в c#, но разве там == и пул не точно также работает?
В C# скалярные типы хранятся в стэке и не являются ссылочными типами — думаю это небольшой мемори импакт тк типы фиксированной длины. Похожий пул используется в .net для строк — тут это оправданно. Но это не столь важно в контексте дискуссии. Важно то что для cкалярных типов и строк оператор == сравнивает значения — по мне это и удобнее и интуитивнее.
в Java тоже сравнивание примитивных типов по == работает как ожидается.
int a = 1000;
int b = 1000;
a == b -> true
В то время, как Integer — это уже не примитивный тип данных, а полноценный объект и сравнивание для него работает как для всех объектов.
А помнить надо про auto boxing-unboxing — вот тут очень много тонкостей, и пул объектов, и утечки памяти
int a = 1000;
int b = 1000;
a == b -> true
В то время, как Integer — это уже не примитивный тип данных, а полноценный объект и сравнивание для него работает как для всех объектов.
А помнить надо про auto boxing-unboxing — вот тут очень много тонкостей, и пул объектов, и утечки памяти
В .net int — это алиас для полноценного типа Int32 а примитивом он называется по другим очевидным причинам. Если угодно можно хоть так сравнивать: 5.Equals(5); но куда проще 5==5. И вообще, как наличие примитивов стоящих вне общей системы типов вписывается в концепцию ООП?
А в чём спор?
> можно хоть так сравнивать: 5.Equals(5); но куда проще 5==5
Для примитивов в Java возможен только второй способ, более простой :)
Для объектов в любом руководстве по языку написано, что сравнивать объекты необходимо с помощью equals(), а не ==. Как по мне, разделение примитив-врапер удобно — разработчик сам решает что и где ему использовать (о том правильно ли он решит думать не хочется :).
К сожалению, не очень знаком с .net, поэтому не хочу развивать дискуссию «что лучше» далее.
Про концепцию ООП вообще молчу — всего должно быть в меру, примитивные типы — это как раз то разумное отступление, сделанное для удобства.
> можно хоть так сравнивать: 5.Equals(5); но куда проще 5==5
Для примитивов в Java возможен только второй способ, более простой :)
Для объектов в любом руководстве по языку написано, что сравнивать объекты необходимо с помощью equals(), а не ==. Как по мне, разделение примитив-врапер удобно — разработчик сам решает что и где ему использовать (о том правильно ли он решит думать не хочется :).
К сожалению, не очень знаком с .net, поэтому не хочу развивать дискуссию «что лучше» далее.
Про концепцию ООП вообще молчу — всего должно быть в меру, примитивные типы — это как раз то разумное отступление, сделанное для удобства.
В C# скалярные типы хранятся в стэке и не являются ссылочными типами — думаю это небольшой мемори импакт тк типы фиксированной длины. Похожий пул используется в .net для строк — тут это оправданно. Но это не столь важно в контексте дискуссии. Важно то что для cкалярных типов и строк оператор == сравнивает значения — по мне это и удобнее и интуитивнее.
жду изврат-тестов для Perl :)))
из интересного на собеседованиях вспонил
int i=0;
while(i){
i++;
if (i>4) break;
}
и задротства на тему необязательности выполнения второй части && и ||
int i=0;
while(i){
i++;
if (i>4) break;
}
и задротства на тему необязательности выполнения второй части && и ||
>и задротства на тему необязательности выполнения второй части && и ||
А в чём тут задротство-то? Вполне нормальный вопрос, причём ситуации, где это используется, очень распространены.
Банально:
При незнании того, что в случае array == null второе сравнение не будет производиться, а следовательно можно не бояться NPE, этот код развернётся в что-то вроде
Что захламляет код даже, как видим, в самых тривиальных случаях.
А в чём тут задротство-то? Вполне нормальный вопрос, причём ситуации, где это используется, очень распространены.
Банально:
if ( array == null || array.length == 0 ) {
return;
}
При незнании того, что в случае array == null второе сравнение не будет производиться, а следовательно можно не бояться NPE, этот код развернётся в что-то вроде
if ( array == null ) {
return;
}
else if ( array.length == 0 ) {
return;
}
Что захламляет код даже, как видим, в самых тривиальных случаях.
Вообще тут столько людей в коментах называет задротством знание тонкостей языка, что складывается впечатление, что научились писать простые классы и методы и считают себя самыми крутыми.
А кто больше знает — просто задрот. Очень удобно.
Незнание, например, принципов работы тех же пулов или автоупаковки может просто убить производительность отдельных кусков кода.
А кто больше знает — просто задрот. Очень удобно.
Незнание, например, принципов работы тех же пулов или автоупаковки может просто убить производительность отдельных кусков кода.
угу, особенно опасны конструкции вида:
Но это ещё ладно, всё просто будет больше тормозить, но намного хуже когда:
Вуаля, много ли кто понимает, чем это опасно?
Integer c = 0;
Integer d = 0;
...
synchronized ( c ) {
...
}
...
synchronized ( d ) {
...
}
Но это ещё ладно, всё просто будет больше тормозить, но намного хуже когда:
Integer c = 0;
...
synchronized ( c ) {
с++;
...
}
...
synchronized ( с ) {
...
}
Вуаля, много ли кто понимает, чем это опасно?
да ну что Вы… простые классы уметь писать… вот ещё…
кликнул пару раз по визарду, надергал примеров из инета, слепил прогу — и программер
кликнул пару раз по визарду, надергал примеров из инета, слепил прогу — и программер
Интересно, как вы оправдаете бредни вроде doIt(String String)? Неужели все те люди, не знающие, что именно произойдёт в таком абсурдном случае — «научились писать простые классы и методы и считают себя самыми крутыми»? (-;
Спасибо, очень интересно. Понял, что мне надо освежить знание языка.
Изумительный тест.
Хотелось бы еше только, чтобы в ответах везде давалась ссылка на соотв. пункт JLS.
Типа —
«в вопросе про строковые литералы, см. „
java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.5,
Хотелось бы еше только, чтобы в ответах везде давалась ссылка на соотв. пункт JLS.
Типа —
«в вопросе про строковые литералы, см. „
java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.5,
Изумительный тест.
Хотелось бы еше только, чтобы в ответах везде давалась ссылка на соотв. пункт JLS.
Типа —
«в вопросе про строковые литералы, см. „
java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.5,
обратите внимание на пункт:
This example illustrates six points:
Literal strings within the same class (§8) in the same package (§7) represent references to the same String object (§4.3.1).
Literal strings within different classes in the same package represent references to the same String object.
Literal strings within different classes in different packages likewise represent references to the same String object.
Strings computed by constant expressions (§15.28) are computed at compile time and then treated as if they were literals.
Strings computed by concatenation at run time are newly created and therefore distinct.
Constant expressions описаны тут — java.sun.com/docs/books/jls/third_edition/html/expressions.html#5313
Тогда люди получат из вашей замечательной статьи не только знание факта, но с большей вероятностью углубятся в тему.
Продолжайте писать!
Хотелось бы еше только, чтобы в ответах везде давалась ссылка на соотв. пункт JLS.
Типа —
«в вопросе про строковые литералы, см. „
java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.5,
обратите внимание на пункт:
This example illustrates six points:
Literal strings within the same class (§8) in the same package (§7) represent references to the same String object (§4.3.1).
Literal strings within different classes in the same package represent references to the same String object.
Literal strings within different classes in different packages likewise represent references to the same String object.
Strings computed by constant expressions (§15.28) are computed at compile time and then treated as if they were literals.
Strings computed by concatenation at run time are newly created and therefore distinct.
Constant expressions описаны тут — java.sun.com/docs/books/jls/third_edition/html/expressions.html#5313
Тогда люди получат из вашей замечательной статьи не только знание факта, но с большей вероятностью углубятся в тему.
Продолжайте писать!
Ответил на 3, 4, 5, 6, 7, 9.
Внимательности не хватает :-)
Внимательности не хватает :-)
подсветите код, черт возьми
Кто возьмется такое же сделать для Ruby?
Буду благодарен.
Буду благодарен.
Если в 5 задаче пометить lo как final, то hello = «Hel» + lo тоже вернёт true.
ооо… отлично) Топик понравился)
4/10.
Действительно хорошие вопросы на понимание.
Ремарка: Автор не раскрыл тему многопоточного задротства.
Тема коллекций c обобщениями раскрыта не полностью.
Действительно хорошие вопросы на понимание.
Ремарка: Автор не раскрыл тему многопоточного задротства.
Тема коллекций c обобщениями раскрыта не полностью.
> Во всех книгах и статьях пишут, что члены с доступом protected видны в данном пакете и в подклассах других пакетов. Но мало кто уточняет, что за пределами пакета данные члены видны ТОЛЬКО ЧЕРЕЗ НАСЛЕДОВАНИЕ.
В C++ тоже так. И в C#, мне кажется, тоже. Так что тут нет ничего особо удивительного.
В C++ тоже так. И в C#, мне кажется, тоже. Так что тут нет ничего особо удивительного.
UFO just landed and posted this here
UFO just landed and posted this here
6 из 10 верно, еще на двух пролетел по невнимательности :-)
На этот раз правильно ответил на 3, 4, 5, 6, 7, 10.
На этот раз правильно ответил на 3, 4, 5, 6, 7, 10.
Sign up to leave a comment.
Знаешь ли ты JAVA, %username%?