Ниже приведены все относительно продвинутые вопросы, и их обычно редко задают во время интервью, потому что они могут вывести интервьюера. Но вы можете найти время, чтобы практиковать это самостоятельно.
1. System.Exit (0) пропустит выполнение наконец -то блокировки
System.seTecurityManager (New SecurityManager () {@Override public void checkexit (int status) {throw new Threaddeath ();}}); try {System.Exit (0); } наконец {System.out.println ("в блоке, наконец,"); } Почему этот код выводит в блоке, наконец,? Почему информация о трассировке стека не печатается?
2. String Str = "Hello"; где STR - это строковый объект
В отличие от C ++, переменные в Java являются либо основными типами, либо ссылками. Переменная не может быть объектом. Это означает такое выражение, как это:
String str = "hello"; String text = "bye"; str == текст; // Сравните две ссылки вместо контента str = text; // назначить ссылку на текст STR
В большинстве случаев, на самом деле не так много разницы, но написание, подобное этому, может легко вызвать путаницу.
Final StringBuilder SB = new StringBuilder (); SB.Append ("Hello"); // Эта ссылка имеет конечный тип, а не этот экземпляр. Метод (SB); // Этот экземпляр может быть изменен с помощью методов, но эта переменная не может быть изменена 3. Утечка памяти Java такая же, как и программисты C ++ понимают
Определение утечки памяти в Википедии «в информатике, если программа не управляет правильно распределением памяти, возникнут утечки памяти. В объектно-ориентированном программировании, если объект в памяти не может быть доступен в коде, это утечка памяти». Однако в Java объекты всегда доступны, а те, у кого нет сильных ссылок, будут очищены. Термин утечка памяти означает в Java: есть объекты, которые не должны существовать в памяти, и обычно некоторые ресурсы, которые больше не используются, все еще хранятся в коллекции.
4. многопоточное программирование сложно
Если у вас нет опыта, многопоточное программирование действительно сложно. Если вы просто бросаете кучу кода в кучу потоков и выполняете его, то проблема не может быть решена вообще, это будет беспорядок. Но если вы можете выполнить распределение потоков по требованию, управлять взаимодействиями между потоками и использовать простые шаблоны, которые некоторые члены команды также могут понять, проблема становится намного проще. Конечно, есть еще одна проблема, которую вы должны заставить всех в команде следовать вашим правилам
5. Не заботитесь о различных выступлениях между различными операциями
Недавно я слышал, что есть проблема, которая включает в себя добавление целых чисел, доступ к памяти, модуль и вывод в консоли. Хотя каждая из этих операций на порядок медленнее, чем предыдущий, этот парень просто хочет оптимизировать самую быструю работу, добавление и заменить его на некоторые более дорогие операции. Если вы действительно хотите оптимизировать производительность, вам лучше заменить эти дорогие операции на дешевую работу. Например, если ваше узкое место находится в аппаратном обеспечении, вы должны прочитать большое количество файлов с жесткого диска, изменение кода программного обеспечения бесполезна, потому что проблема вообще не является.
6. Случайные числа являются случайными
Определенный набор случайных чисел похож на числа некоторых шаблонов. Я уже говорил об этой проблеме в этой статье. Многие люди не считают, что числа, генерируемые генераторами случайных чисел, на самом деле не случайны.
7. Следует избегать плавающих точек, так как они будут создавать случайные ошибки
Для той же операции номера с плавающей запятой будут создавать одну и ту же ошибку каждый раз. Ошибки предсказуемы и, следовательно, контролируют. Если вы знаете, что вы собираетесь делать, и придерживаться некоторых простых правил, таких как округление результатов, то номера с плавающими темпами не будут совершать больше ошибок, чем BigDecimal. Кроме того, он более читабелен и более чем в сто раз быстрее (и одновременно генерируется меньше объектов мусора).
8. часовой пояс вечный
Причина этого недоразумения заключается в том, что со временем часовой пояс меняется. Это означает, что Европа/Лондон был 1970.01.1 01:00 вместо 00:00. Почему? Потому что Лондон использовал дневное время, сэкономив за два года с 1968 по 1971 год.
В последние несколько лет много часовых поясов также изменились. Москва раньше была Восточным третьим округом (GMT+3), но теперь это Восточный четвертый округ (GMT+4) (начиная с 27 марта 2011 года). Если вы посмотрите на время 2010 года, вы обнаружите, что это East 3 и East 4.
Есть некоторые вещи, которые вы можете показаться удивленными:
Февраль Швеции в 1721 году имеет 30 дней.
Первый день в Англии в 1751 году был 25 марта, который находился на 11 дней позади Франции.
После того, как Соединенные Штаты принимают григорианский календарь, он отслеживает сотни лет, так что записанные даты могут быть выражены в двух календарях (обычно две даты предоставляются одновременно для более точности). Например, день рождения Джорджа Вашингтона изменился с 11 февраля 1731 года на 22 февраля 1732 года.
9. Когда вы читаете нелетуческую переменную в потоке, вы, наконец, можете прочитать обновленное значение.
Эта проблема появилась дважды на Stackoverflow несколько дней назад. Вообще говоря, когда компилятор JIT оптимизирует код, он будет встроенными полями нелетующих типов, которые не были изменены в этот поток. Как только этот код будет скомпилирован (вы можете увидеть его с -xx:+printcompilation), вполне вероятно, что он никогда не будет виден, если вы измените это поле в другом потоке. Добавление случайных блоков синхронизации или операторов печати может задержать выполнение этой оптимизации или нарушить компилятор JIT, чтобы не выполнять эту оптимизацию.
10. Вопросы интервью Java верны
Есть много вопросов на интервью на Java, которые либо устарели (не обновляются более 10 лет и находятся в контакте с текущей версией Java), либо они вводят в заблуждение, или они могут даже ошибаться. К сожалению, ни один из этих ответов не был передан без проверки их.
Я ссылаюсь на ответы Stackoverflow выше, потому что рецензирование здесь делает лучшую работу по просмотру ответов. В целом, не ходите на такие сайты, как Rose India, ответы выше относятся к нелепому качеству. Если вам нравится добраться до этого, вы можете проверить, сколько ошибок орфографии (имена классов и профессиональные термины) или неправильные замечания находятся в вышеуказанной статье. Одна из причин этих проблем заключается в том, что нет эффективного механизма обратной связи для исправления этих ошибок.
Я хотел бы порекомендовать несколько вопросов на интервью на Java:
50 самых ценных вопросов на интервью Java подходят для поступления программистам Java
10 Классических вопросов на интервью с основным методом Java
Обсудите десять самых распространенных вопросов интервью в Java (Super Classic)
10 вопросов интервью XML для программистов Java выпускаются
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.