ch
Feedback
Java Developer

Java Developer

前往频道在 Telegram

MAKE JAVA GREAT AGAIN Мемы: @java_memes

显示更多
未指定国家技术与应用13 332
7 899
订阅者
无数据24 小时
无数据7
无数据30
帖子存档
Что подходит и для интерфейса и для абстрактного класса? Выбрать все возможные варианты. A. Методы должны быть абстрактными B. Может содержать public static final переменные C. Может использовать ключевое слово extends D. Может содержать default методы E. Может содержать static методы F. Нельзя создать инстанс G. Наследуется от класса Object

Выключить тесты в Maven По умолчанию, когда разработчик запускает билд проекта, Maven автоматически стартует юнит-тесты. Если некоторые тесты валятся, то Maven прекращает билд. Часто бывает нужно собрать проект, пропустив тесты. Вот пара команд для этого: mvn package -Dmaven.test.skip=true Пропускает компиляцию тестов и их запуск mvn package -DskipTests Компилирует тесты, но не запускает их #Maven #Cheat

Два варианта решения
Два варианта решения

Задача с собеседования Написать метод, который принимает List элементов и возвращает List, который содержит элементы в том же порядке, но без дубликатов. Например, передаем исходный List[1,0,1,1,2,1,4,2] в метод и получаем List[1,0,2,4]

Конвертация листа интежеров в строку. Вывод: 1,2,3
Конвертация листа интежеров в строку. Вывод: 1,2,3

Ситуация (продолжение). Вы team lead. Приняли на работу молодого сотрудника. Как организуете его первую рабочую неделю? 1. Обучение сотрудника. Расскажете о компании, кто за что отвечает в команде, подробно о проекте, отдельно про каждую используемую технологию. 2. Небольшие задачи. Расскажете суть проекта и дадите десяток простых задач для ознакомления - рефакторинг, обновление документации, фиксы багов. 3. Боевая задача. Дадите ссылку на репозиторий, линки на документацию, а после - большую боевую задачу, чтобы сам начал разбираться в проекте.

По итогам опроса 30% проголосовало за опытного и 70% - за молодого. Отпишите, пожалуйста, в личку @zybkin почему выбрали тот или иной вариант. Интересно будет сделать анализ по ответам и поделиться потом со всеми. Через два часа продолжим ситуацию с team lead’ом. Будем решать, какие задачи ставить новому junior-разработчику.

Правильный ответ номер 5. Локальная переменная должна быть обязательно инициализирована перед её использованием. 4-й ответ неверный, потому что статические и инстанс переменные имеют дефолтные значения и позволяют использовать себя. Переменная $ имеет значение по умолчанию 0. Варианты 1, 2, 3 не подходят, потому что имена переменных могут начинаться с буквы, знака нижнего подчёркивания или знака доллара. 6-й не подходит, потому что код не скомпилируется. Если бы переменная a_b была статическим полем класса _C, код скомпилировался бы, и программа вывела 0null.

Продолжаю публиковать вопросы из книги по подготовке к OCA. Какой будет результат выполнения кода? 1: public class _C { 2: private static int $; 3: public static void main(String[] main) { 4: String a_b; 5: System.out.print($); 6: System.out.print(a_b); 7: } } Варианты ответов: 1️⃣ Compiler error on line 1. 2️⃣ Compiler error on line 2. 3️⃣ Compiler error on line 4. 4️⃣ Compiler error on line 5. 5️⃣ Compiler error on line 6. 6️⃣ 0null

История Java В 1990 году перед разработчиками Sun стояла задача - разработать систему, которую можно внедрять в любую бытовую технику. А для этого программа должна уметь работать под любыми микропроцессорами. Тогда основной язык разработки был C++. Программу, написанную на C++, можно запустить на процессоре почти любого типа. Но нужно скомпилировать код под конкретный процессор. А вот создание компилятора - сложный процесс. Поэтому команда разработчиков Sun во главе с Джеймсом Гослингом решила разработать язык, код которого можно будет скомпилировать в команды, понятные любому процессору. Через 5 лет они презентовали Java. Когда программисты Sun уточняли детали нового языка программирования, интернет быстро развивался. Интернет появился у миллионов людей, и появилась проблема переносимости программ. Например, одна и та же программа должна работать на компьютерах с разнотипными процессорами, в разных операционных системах и с различными браузерами. Что и было реализовано в Джава-аплетах. В итоге интернет способствовал широкому распространению Джавы. Я расписал коротко очень важную и интересную историю развития языка. Здесь же можно посмотреть подробную хронологию и особенности Джавы: https://habr.com/post/306476/

Ситуация. Вы team lead. Выбираете себе разработчика на проект из двух кандидатов, которые понравились на собеседованиях. Первый знает нужные технологии, но дорого стоит. Второй знает только основы, но жаждит изучать новое. Кого выберете? anonymous poll Молодой с горящими глазами – 274 👍👍👍👍👍👍👍 68% Опытный разработчик – 131 👍👍👍 32% 👥 405 people voted so far. Poll closed.

Тесты с созданным мапером:
@Test
public void shouldMapCarToDto() {
  //given
  Car car = new Car("Morris", 5, CarType.SEDAN);
 
  //when
  CarDto carDto = CarMapper.INSTANCE.carToCarDto(car);
 
  //then
  assertThat(carDto).isNotNull();
  assertThat(carDto.getMake()).isEqualTo("Morris");
  assertThat(carDto.getSeatCount()).isEqualTo(5);
  assertThat(carDto.getType()).isEqualTo("SEDAN");
}

Вот такой мапер можем написать с помощью MapStruct:
@Mapper
public interface CarMapper {

  CarMapper INSTANCE = Mappers.getMapper(CarMapper.class);
  
  @Mapping(source = "numberOfSeats", target = "seatCount")
  CarDto carToCarDto(Car car);
}
Аннотация @Mapper указывает, что нужно сгенерировать нужный нам мапер. Аннотация @Mapping - что на что мапить. Если имена полей одинаковые, то их указывать не обязательно. Если нужно проигнорировать поля, то пишем @Mapping(target='...', ignore=true)

Вот пример с официального сайта. Есть сущность и её ДТОшка.
public class Car {
 
  private String make;
  private int numberOfSeats;
  private CarType type; // Enum
 
  //getters, setters etc.
}
public class CarDto {
 
  private String make;
  private int seatCount;
  private String type;
 
  //getters, setters etc.
}
Нужно написать мапер, который будет переводить Car в CarDto.

MapStruct Крутая библиотека, которая генерирует умные маперы. Такие маперы переводят объекты из одного типа в другой. Например, сущность в DTO и наоборот. Перед конвертацией они проверяют объекты на null, отсутствующие поля пропускают, умеют сами переводить Enum в строку и многое другое.

Уровни сертификации на сайте Oracle
Уровни сертификации на сайте Oracle

Сертификация по Джаве Сертификацию по Java проводит Oracle, как компания, которой принадлежат права на язык программирования. Есть два уровня сертификатов: Associate и Professional. Professional сложнее, для его сдачи нужно знать больше тем и предварительно получить Associate. Сами сертификаты называются Oracle Certification Associate (OCA) и Oracle Certification Professional(OCP). Для каждой версии Джавы есть отдельный сертификат: OCA Java SE 8, SE 7, SE 6... Плюс сертификаты на повышение. Например, если у вас есть OCP Java SE 7, то можете сдать экзамен, который содержит вопросы только по 8 Джаве. Если до этого не получали сертификат, то имеет смысл сдавать на OCA Java SE 8 и OCP Java SE 8, так как по Java 9 и 10 нет сертификации. Зачем нужны сертификаты. Три плюса: сертификат структурирует знания во время подготовки к нему, делает профиль в LinkedIn более приятным и просматриваемым, избавляет от простейших вопросов на собеседовании. Для получения OCA и OCP по 8 Джаве нужно сдать экзамены Java SE 8 Programmer I и Java SE 8 Programmer II. Цена каждого экзамена 245$. Темы, по которым будут вопросы на Java SE 8 Programmer I: — Запуск программ — Принципы ООП — Типы в Джаве — Условные операторы и циклы — Массивы и коллекции — Исключения — Лямбда-выражения Темы по Java SE 8 Programmer II: — Устройство класса — Дженерики и коллекции — Лямбды и функциональные интерфейсы — Стримы — Работа с датами — Основы I/O — NIO.2 — Многопоточность — JDBC

Все типы массивов являются ссылочными переменными. Хоть int и long примитивные типы, но int[] и long[] всё равно ссылочные типы.

Какие из перечисленных переменных являются ссылочными?
int[] ints;
long[] longs;
String[] strings;
Object[] objects;

На 4 строчке будет брошено исключение NullPointerException, блок catch не обработает данное исключение, выполнение перейдёт в блок finally. В итоге на экране будет написано c, иключение пробросится выше и программа завершит выполнение, выведя стэк трейс с NullPointerException.