70+ вопросов на собеседование по основам Java

Cобрал небольшую подборку вопросов. Возможно кому-то она будет полезна.— Что такое JRE? Что такое JDK? Чем отличаются? — Есть ли у Java аналог ассемблера? — Можете ли Вы назвать языки программирования, отличные от Java, которые тоже компилируются в байткод (class-файлы)? — В чем отличия между Java SE, Java EE, Java ME, Android? — Что такое JCP? JSR? RFC? — Какая связь между языками Java и JavaScript? — В отличии от машинных инструкций типичных процессоров (Intel, AMD) java-байткод «объектно-ориентирован», т.е. имеет ряд инструкций, непосредственно связанных с ООП. Можете ли назвать некоторые из них? — В чем, по вашему мнению, отличия между виртуальной машиной (как в Java/C#) и средой времени исполнения (как в C++)? — Чем, по вашему мнению, могут отличатся различные виртуальные машины, если все они должны единообразно исполнять один и тот же байткод? — Что такое JIT-компиляция? Что такое AoF-компиляция? Какая используется в HotSpot? — Что такое машинное слово? Чему оно равно на вашем компьютере? Как связан типичный размер машинного слова и размер примитивов в Java? — Что такое 'динамическая загрузка классов'? — Что такое и какова функциональность ClassLoader? Сколько ClassLoader-ов создается для HelloWorld-приложения? — Какой ClassLoader загружает класс, если я не использую явно ClassLoader.loadClass ()? — ClassLoader-ы образуют иерархию (не по наследованию, а по делегированию). С какой целью? Какие преимущества дает такое «дерево лоадеров»? — Предположите, сколько ClassLoader-ов создается при исполнении HelloWorld-приложения в Servlet-контейнере.— Что такое «песочница Java» (Java sandbox)? Что такое верификация байткода? Что такое «подписанные jar-ы»? — Что такое SecurityManager? Какие операции он может запретить? Может ли запретить: деление на ноль, обращение к определенному файлу, выход за пределы массива, обращение по сети? — Говорят, что Java нельзя сделать классическую атаку «срыв стека» в стиле C/C++. Что это значит? Почему нельзя сделать? — Что такое classpath? Что в нем должно находиться? Существует ли он при компиляции? При запуске JVM? Может ли отличаться состояние classpath при компиляции и при запуске JVM? — javac — это компилятор, интерпретатор или транслятор? — Какие процессы происходят в HotSpot 7: компиляция, интерпретация, трансляция? — Говорят, что Java — статически типизированный язык. Что это значит? Приведите примеры.— Говорят, что Java — сильно типизированный язык. Что это значит? Приведите примеры.— В Java номинальная или структурная система типов? — Объясните слоган «Write once, run anywhere».— Чем отличаются ссылка (reference, например в Java) и указатель (pointer, например в С++)? — Что такое литерал? Что такое ключевое слово? Приведите примеры.— 'null' — это литерал, ключевое слово или оператор языка Java? — Чем отличаются компилятор, интерпретатор и транслятор? — Может ли идентификатор в Java начинаться с цифры? Включать цифру? — Может ли идентификатор в Java начинаться с '_' или '$'? Включать их? — Что такое стек (stack)? Где он расположен? Что в нем размещается? Оцените размер выделенной памяти под стек в момент работы «среднего» web-приложения (1Кб, 10К, … 1000Мб)? — Что такое хип (heap)? Что в нем размещается? — Приведите примеры когда переменная типа int хранится в хипе и когда в стеке.— Как отработает «уборщик мусора» (gc) если встретит два объекта, которые ссылаются друг на друга, но на них никто не ссылается? — Я написал «new Thread (new Runnable () {public void run () {while (true);}}).start ();», то есть создал и запустил поток с бесконечным циклом — надо ли мне хранить ссылку на Thread, что бы его не собрал gc? — В Java нет «арифметики указателей». Что это значит? — Сколько бит в int? А байт? — Сколько бит в long? А байт? — Сколько бит в float? А байт? — Сколько бит в double? А байт? — Если в long в четыре раза больше байт чем в short, то могу ли я хранить и использовать четыре short, а не один long? — Что такое арифметика с фиксированной точкой? Чем отличается от арифметики с плавающей точкой? — Зная, что в long 64 бита, чему равно максимально возможное значение long? Минимально возможное? — Зная, что в short 16 бит, чему равно максимально возможное значение short? Минимально возможное? — Если и в long и в double одинаковое количество бит, каким образом максимально возможный double больше максимально возможного long? — Что такое двоичный дополнительный код. Приведите пример.— И int и float имеют по 4 байта, но существуют float у которых нет аналога в int (0.5), значил ли это что существуют int, у которых нет аналога в float? — Что такое NaN? — Отличаются или равны Float.NaN и Double.NaN? — Почему, по вашему мнению, Double.NaN == Double.NaN равно false? — Какие числа можно делить на ноль без исключения ArithmethicException? — Что такое ассоциативность оператора? Что значит правоассоциативный? Что значит левоассоциативный? — оператор '+' на int-ах — право- или левоассоциативен? — Что такое приоритет операторов? — И приоритет и ассоциативность определяют порядок применения операторов, что если они конфликтуют? — почему, по-вашему мнению, short + short = int, но не int + int = long? — В арифметике сложение — это ассоциативная операция. Так ли это в Java с учетом переполнения? — В арифметике сложение — это коммутативная операция. Так ли это в Java с учетом переполнения? — В алгебре сложение на множестве целых чисел определяет группу. Так ли это в Java с учетом переполнения? — В арифметике умножение — это ассоциативная операция. Так ли это в Java с учетом переполнения? — В арифметике умножение — это коммутативная операция. Так ли это в Java с учетом переполнения? — В чем отличие операторов >> и >>>? — Что такое перегрузка операторов? Приведите примеры.— Сколько в Java перегруженных версий оператора '+' (Ответ: 5 для — int, long, float, double, String)? — по каким из следующих типов можно делать switch: int, short, boolean, String, enum, float? — можно ли у switch сделать 2 defaul секции? Ни одной? — приведите два сценария в которых предпочтительнее while {} и do {} while соответственно.— в чем отличие и что общее между continue, break и return? — я в тройном цикле и у меня break во внутреннем — сколько циклов «разорвет»? — я в тройном цикле в самом внутреннем, как «разорвать» два из внутренних, но не внешний? — synchronized void f (a (), b ()) {} аргументы вычисляются до захвата блокировки или после? — Сколько будет создано объектов в памяти: int[][][] array = {{{}}}? — Сколько будет создано объектов в памяти: int[][][] array = new int[2][1][0]? — Можно ли ссылку на массив сделать элементом этого же массива?

КонтактыКратко о курсе «Multicore programming in Java»: стартует 1 сентября, ведется в режиме вебинаров дважды в неделю (понедельник + четверг) в 19.00–22.00 (по московскому времени), состоит из 16 лекций по 2.5 часа (=40 лекционных часов), рассчитан на Java Middle.Стоимость курса— При оплате до 9 августа — 375$— При оплате до 16 августа — 395$— При оплате до 23 августа — 425$— При оплате до 30 августа — 450$

Кратко о курсе «Android Developer»: стартует 15 сентября, ведется в режиме вебинаров дважды в неделю в 19.00–22.00 (по московскому времени), состоит из 20 лекций по 2.5 часа (=50 лекционных часов).

Стоимость курса— При оплате до 24 августа — 475$— При оплате до 31 августа — 500$— При оплате до 7 сентября — 525$— При оплате до 14 сентября — 550$

Приходите ко мне на курс. Учится веселее с единомышленниками!

Я занимаюсь онлайн обучением Java. Видеозаписи лекций в аудитории Вы можете увидеть на youtube-канале, возможно, видео канала лучше систематизировано в этой статье.

На все вопросы с удовольствием отвечу по следующим контактам (или в комментариях)skype: GolovachCoursesemail: GolovachCourses@gmail.com

© Habrahabr.ru