В прошлой статье мы поговорили о личностных качествах и уровнях навыков разработчиков. Пришла пора перейти к конкретным вопросам, которые могут встречаться на собеседованиях.
Java в вопросах и ответах: чего ожидать
Собеседование является одним из самых важных действий при трудоустройстве. И не обязательно в качестве программиста на Java/JS. Во время беседы потенциальный работодатель смотрит на соискателя, разговаривает с ним, пытаясь понять, насколько человек подходит для сотрудничества.
В коддинге на Java важно понимать – программера ждут вопросы, ответы на которые определят, насколько грамотен потенциальный работник. Человек, который планирует заниматься разработкой, должен хорошо разбираться в теории. И интервью здесь поможет оценить ситуацию.
Блок «Объектно-ориентированное программирование»
Джава – это объектно-ориентированное программирование. Методы проверки знаний соискателя во время собеседования могут быть разными. Кто-то просит выполнить элементарную (или не очень простую) задачу по программированию, а некоторые – задают вопросы. Они могут быть такими:
- Что собой представляет ООП? – Это способ программирования, который основан на представлении программного обеспечения в виде связи объектов. Каждый соответствующий элемент выступает в качестве экземпляра класса. Для работы ООП использует объектную работу.
- Что такое объект? – конкретный экземпляр так называемого класса. Модель реальной сущности, обладающая свойствами и определенным повелением, помогающих давать имена наборам данным, находящихся в компьютере. Также здесь имеют место методы, предоставляющие доступ к информации.
- Какие существуют основные принципы ООП? – Абстракция, инкапсуляция, наследование, полиморфизм.
- Дайте определения принципам в объектно-ориентированном программировании. – Наследование: процедура, вследствие которой один объект приобретает свойства другого. Полиморфизм – свойство, позволяющее использовать для решения нескольких одинаковых задач одно и то же имя. С его помощью можно добавлять новые классы без нарушения кодов вызова. Инкапсуляция – способ сокрытия способа реализации класса и его отделение от внешнего интерфейса. Операция, позволяющая закрывать доступ к методам и полям class. Доступ будет осуществляться через интерфейс (метод). Абстракция – процедура выделения общих характеристик object, минуя их малозначимые наборы. Своеобразный метод преобразования объектов в Java.
- Каким бывает наследование? – Двух видов: классов и интерфейсов. В первом случае у наследника только один родитель. Во втором – несколько.
И это – только начало. В Java на собеседовании вопросы будут меняться, в зависимости от конкретного работодателя. Но предлагаемые вариации – ключевые.
Понятия и термины
Методы проведения интервью в случае с уровнем «мастерства» Джуниор (и не только) меняются в зависимости от ситуации. Требования тоже будут все время разные – каждая компания сама определяет, какие работники ей нужны. Но программер должен хорошо разбираться в теории.
Во время беседы по причине трудоустройства разрабом на Джава, могут попросить «Приведите расшифровку основных терминов программирования». Важно запомнить следующие понятия:
алгоритм – инструкции, правила и принципы, помогающие решать поставленные задачи;
- программа – своеобразный уникальный набор инструкций, которые при работе отвечают за выполнение тех или иных задач/функций;
- API или интерфейс прикладного программирования – протоколы, правила, принципы, необходимые для быстрого создания приложения (способствуют легкому «общению» кода с другими службами и утилитами);
- аргумент – значение, передаваемое в команды и функции;
- символ – простейший метод отображения информации, равный одному печатному символу/букве;
- класс – некие связанные между собой объекты с общими свойствами;
- код – письменный набор инструкций, написанный при помощи протоколов определенного языка программирования;
- компиляция – создания написанной программы за счет обработки кода;
- тип данных – классификация информации того или иного вида;
- массив – группа похожих типов значений информации, собранной в единое целое;
- метод – функций/процедура, которая относится к тому или иному объекту/классу;
- фреймворк – «фундамент» разного уровня сложности, необходимый для быстрого создания программного кода;
- операнд – элемент, которым можно управлять посредством операторов;
- оператор – составляющая кодификации, которая отвечает за управление операндами;
- переменная – место хранения информации в утилите, подлежащих корректировке, отображению или сохранении;
- указатель – переменная, ссылающаяся на адрес места в памяти.
В Java также есть понятие абстрактный класс. Это класс, который задается ключевым словом abstract. Отличается тем, что нельзя при написании кода создавать объекты или экземпляры соответствующего class. Обладает методами и теми же особенностями, что и обычный класс. У абстрактных классов в Java могут быть абстрактные методы. У оных нет способа реализации – только своеобразное объявление.
Блок «Java Core»
Список вопросов, поджидающих человека при трудоустройстве в качестве разраба, могут отличаться. Каждого обязательно опросят относительно Java Core. Это весьма крупный раздел в Джаве.
Вот вопросы, которые могут задавать:
- Разница между JRE, JDK и JVM? – Первый вариант – минимальная реализация виртуальной машины, чтобы осуществлять запуск Java-утилит без компиляторов и иных средств разработки. Включает в себя виртуальную машину и библиотеки Java-классов. JAD – бесплатный комплект разработчика с компилятором, стандартными библиотеками, примерами, документацией, исполнительной системой, всевозможными утилитами. JVM – виртуальная машина, которая воспроизводит байт-коды из текста, который создан в Java компиляторе.
- Опишите модификаторы доступа в Джаве. – Private: доступ разрешен в текущем классе. Используется в методах, classes, полях внутреннего характера. Default: доступ на пакетном уровне. Тоже встречается в методах, полях, внутренних классах, интерфейсах и конструкторах. Protected: доступ на уровне пакетов и в иерархии наследования. Public: общий доступ.
- Какова последовательность модификаторов по степени закрытости? – private, default, protected, public.
- Чем отличается интерфейс от абстрактного класса? – Абстрактный класс содержит абстрактные методы. Но оные могут отсутствовать. Экземпляры здесь не создаются. Интерфейс содержит только абстрактные методы и константы.
- Можно ли получить доступ к переменным типа private тем или иным объектам? – Доступ к рассматриваемому элементу можно получить только в случае, когда эта самая переменная объявлена внутри класса Object. Доступ к приватным элементам предоставляется при помощи Java Reflection API.
- Перегружаются ли статистические методы? – Да. Можно перегрузить их за счет нестатистического метода. Обратный принцип тоже действует. Переопределять статистический метод не нужно.
- Расскажите о потоках ввода-вывода в JS и Джаве. – Поток ввода вывода может быть байтовым или символьным. Первый – InputStream и OutputStream, второй – Reader и Writer. Относятся к абстрактным классам.
Для того, чтобы вопросы на собеседовании по Java не вызывали трудностей, важно просмотреть специализированные уроки для новичков. Это поможет освежить в памяти очевидные вещи, которые забываются со временем.
Блок «Java 8»
С появлением Джавы 8 программеров стали ожидать весьма серьезные изменения. С ними важно ознакомиться каждому. Вопросы по JS или Джаве, приведенные ниже, могут доставить определенные трудности соискателям:
- Расскажите про нововведения в Джаве 8. – Поддержка лямбда-выражений, необходимых для функциональной обработки информации. Было введено слово default для поддержки функциональности по умолчанию. Теперь в коддинге есть ссылки на методы, а также функциональные интерфейсы и потоки. Присутствуют API для работы с календарем, датами и временем. Внедрен движок JavaScript – Nashorn.
- Ссылка на метод – это что? – Небольшие лямбда-выражения, передающие ссылки на методы или конструкторы. Используется ключевик «::». Помогают внедрять синтаксис, позволяющий ссылаться на конструкторы, методы классов/объектов, созданные ранее.
- Какие есть типы ссылок на методы? – На метод статистический, определенного объекта, произвольного объекта того или иного характера. Также есть ссылки на конструкторы для дженериков.
- Дайте определение функциональным интерфейсам. – Интерфейсы, определяющие только один абстрактный метод. Обладает строгой типизацией.
Непосредственных заданий по Джаве 8 новичкам обычно не дают. Questions, которые им задают, могут длиться бесконечно долго. Посмотреть остальные важные моменты для новичков можно по ссылке.
Подводные камни Senior
Собеседование на Java уровня Junior или Middle – это не так страшно, как кажется. Там могут уточнить, что такое символ или строка, ключевые основы коддинга. На среднем уровне –дать небольшие практические задания.
В случае с Senior ситуация обстоит иначе. Тут некоторые задают весьма каверзные вопросы, чтобы удостовериться в профессионализме человека. Далее будут приведены примеры оных.
Глобальные переменные случайного типа
Здесь могут спросить о том, чему равны typeof a и b. Строка 2 отвечает за локальную переменную a, но объявляет глобальную переменную b. Последняя отсутствует в видимости foo(). JS будет видеть b = 0 как window.b = 0. Согласно коду, typeof a не предопределена и является undefined. Typeof b возвращает 0.
Внимательность
Это – урок на внимательность. Нужно узнать, что будет в переменной numbers. Делается это так:
- Точка с запятой перед первой фигурной точкой отвечает за создание нулевого выражения. То есть, пустого оператора.
- For() производит итерацию четыре раза.
- Переменная увеличивается до 4, после чего происходит еще одно использование оной.
Вывод: numbers = 5.
Консольные дела
Необходимо понять, что появится на консоли. Фрагмент обрабатывается в 2 этапа. Сначала:
- For проводит итерацию трижды. Каждый раз происходит создание log(), захватывающей переменную i. После SetTimeout() проводит планирование «лога».
- При завершении цикла «фор» переменная i будет равно 3.
На второй этапе через 100 миллисекунд трижды осуществляется вызов обратного типа log() через метод setTimeout. Произойдет простое чтение переменной i.
Ответ: на консоли появится 3, 3 и 3.
Вся эта информация обязательно поможет подготовиться к интервью. А специализированные курсы для новичков и продвинутых программеров позволят чувствовать себя в разы увереннее.