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: GolovachCourses
email: GolovachCourses@gmail.com
Автор: IvanGolovach