Forwarded from Java jobs — вакансии для java-разработчиков
Hiring Talents нужен Java-разработчик / Middle Java developer
г. Москва
Зарплата – ₽250-300К net
Контактное лицо – @MikhailRekrutto
Цели и задачи
• Поддержка и доработка существующих сервисов, проектирование и разработка новых сервисов;
• Технологический стек: Java 11, Spring (Core, Boot, MVC, Security), Hibernate, MS SQL / PostgreSQL.
Требования к кандидату
• Аналогичный опыт работы 1-3 года;
• Опыт администрирования unix-систем будет плюсом.
Подробнее
Текущие системы для поддержки и развития:
1. «AG Service» — сервис обработки геопространственных данных от GPS/Глонасс-трекеров, написанный на Java. Работает как промежуточное звено между БД MS SQL и другими компонентами. Обеспечивает, во-первых более высокую скорость обработки данных, а во-вторых имеет некоторый функционал, который недоступен в классических учетных системах 1С. Одна часть сервиса работает в виде "запрос-ответ" (предоставление "сырых" либо предварительно рассчитанных данных). Вторая часть постоянно отслеживает поступление новых данных по МО и аккумулирует их в своих таблицах.
2. «Картографический сервис OSM» — сервис визуализации на картах геопространственных данных по мобильным, стационарным объектам, служебным геозонам. Используется библиотека Leaflet.
3. Web площадки разной функциональности, реализованные на
Java 11 + Spring MVC (backend) + Apache Tiles (frontend).
Планируется большое развитие системы «AG Service» в полноценную системы Мониторинга, с генерацией тревожных событий, формирования данных для учетных и оперативных систем контроля. С использованием механизмов потоковой обработки данных и машинного обучения.
На все существующие разработки есть подробная тех. документация.
г. Москва
Зарплата – ₽250-300К net
Контактное лицо – @MikhailRekrutto
Цели и задачи
• Поддержка и доработка существующих сервисов, проектирование и разработка новых сервисов;
• Технологический стек: Java 11, Spring (Core, Boot, MVC, Security), Hibernate, MS SQL / PostgreSQL.
Требования к кандидату
• Аналогичный опыт работы 1-3 года;
• Опыт администрирования unix-систем будет плюсом.
Подробнее
Текущие системы для поддержки и развития:
1. «AG Service» — сервис обработки геопространственных данных от GPS/Глонасс-трекеров, написанный на Java. Работает как промежуточное звено между БД MS SQL и другими компонентами. Обеспечивает, во-первых более высокую скорость обработки данных, а во-вторых имеет некоторый функционал, который недоступен в классических учетных системах 1С. Одна часть сервиса работает в виде "запрос-ответ" (предоставление "сырых" либо предварительно рассчитанных данных). Вторая часть постоянно отслеживает поступление новых данных по МО и аккумулирует их в своих таблицах.
2. «Картографический сервис OSM» — сервис визуализации на картах геопространственных данных по мобильным, стационарным объектам, служебным геозонам. Используется библиотека Leaflet.
3. Web площадки разной функциональности, реализованные на
Java 11 + Spring MVC (backend) + Apache Tiles (frontend).
Планируется большое развитие системы «AG Service» в полноценную системы Мониторинга, с генерацией тревожных событий, формирования данных для учетных и оперативных систем контроля. С использованием механизмов потоковой обработки данных и машинного обучения.
На все существующие разработки есть подробная тех. документация.
Наиболее используемые методы класса File:
☕️ boolean createNewFile(): делает попытку создать новый файл;
☕️ boolean delete(): делает попытку удалить каталог или файл;
☕️ boolean mkdir(): делает попытку создать новый каталог;
☕️ boolean renameTo(File dest): делает попытку переименовать файл или каталог;
☕️ boolean exists(): проверяет, существует ли файл или каталог;
☕️ String getAbsolutePath(): возвращает абсолютный путь для пути, переданного в конструктор объекта;
☕️ String getName(): возвращает краткое имя файла или каталога;
☕️ String getParent(): возвращает имя родительского каталога;
☕️ boolean isDirectory(): возвращает значение true, если по указанному пути располагается каталог;
☕️ boolean isFile(): возвращает значение true, если по указанному пути находится файл;
☕️ boolean isHidden(): возвращает значение true, если каталог или файл являются скрытыми;
☕️ long length(): возвращает размер файла в байтах;
☕️ long lastModified(): возвращает время последнего изменения файла или каталога;
☕️ String[] list(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге;
☕️ File[] listFiles(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге.
☕️ boolean createNewFile(): делает попытку создать новый файл;
☕️ boolean delete(): делает попытку удалить каталог или файл;
☕️ boolean mkdir(): делает попытку создать новый каталог;
☕️ boolean renameTo(File dest): делает попытку переименовать файл или каталог;
☕️ boolean exists(): проверяет, существует ли файл или каталог;
☕️ String getAbsolutePath(): возвращает абсолютный путь для пути, переданного в конструктор объекта;
☕️ String getName(): возвращает краткое имя файла или каталога;
☕️ String getParent(): возвращает имя родительского каталога;
☕️ boolean isDirectory(): возвращает значение true, если по указанному пути располагается каталог;
☕️ boolean isFile(): возвращает значение true, если по указанному пути находится файл;
☕️ boolean isHidden(): возвращает значение true, если каталог или файл являются скрытыми;
☕️ long length(): возвращает размер файла в байтах;
☕️ long lastModified(): возвращает время последнего изменения файла или каталога;
☕️ String[] list(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге;
☕️ File[] listFiles(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге.
🔔Напоминаем, что у «Библиотеки программиста» существует курс по математике для Data Science, разработанный совместно с преподавателями ВМК МГУ, одного из лучших математических факультетов страны.
В конце курса вы будете владеть математическим аппаратом, который необходим, чтобы стать специалистом в Data Science. Курс идеально подходит к поступлению в ШАД или Computer Science Center.
Чтобы оставаться востребованным специалистом, никогда не забывайте учиться новому.
📚По промокоду DFA98MK действует скидка 20% на все тарифы до 4 марта.
Курс постоянно обновляется, ваш доступ остается с вами навсегда.
Посмотреть тарифы и записаться можно здесь.
В конце курса вы будете владеть математическим аппаратом, который необходим, чтобы стать специалистом в Data Science. Курс идеально подходит к поступлению в ШАД или Computer Science Center.
Чтобы оставаться востребованным специалистом, никогда не забывайте учиться новому.
📚По промокоду DFA98MK действует скидка 20% на все тарифы до 4 марта.
Курс постоянно обновляется, ваш доступ остается с вами навсегда.
Посмотреть тарифы и записаться можно здесь.
#вопросы_с_собеседований
Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
Ключевое слово
Начиная с
Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными
Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
Ключевое слово
interface
используется для создания полностью абстрактных классов. Основное предназначение интерфейса - определять каким образом мы можем использовать класс, который его реализует. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не реализует их поведение. Все методы неявно объявляются как public
.Начиная с
Java 8
в интерфейсах разрешается размещать реализацию методов по умолчанию default
и статических static
методов.Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными
public
, статическими static
и неизменяемыми final
.С нас полезные лекции и трудоустройство, с тебя – год опыта коммерческой разработки на Java.
⠀
Как все проходит?
На протяжении двух месяцев тебя будут обучать Senior’ы и Teamlead’ы ведущих банков страны. Обучение можно совмещать с работой.
⠀
Чему будут учить?
На курсе будем изучать базы данных, Spring, Kafka, Kubernetes и Istio. Помимо этого еще будут практические занятия, домашние задания и консультации с ментором.
⠀
Что будет после учебы?
Трудоустройство в Цифровые привычки. Ты будешь работать над высоконагруженными, отказоустойчивыми проектами.
⠀
Подать заявку на курс: https://cutt.ly/RAoCfcr
⠀
Как все проходит?
На протяжении двух месяцев тебя будут обучать Senior’ы и Teamlead’ы ведущих банков страны. Обучение можно совмещать с работой.
⠀
Чему будут учить?
На курсе будем изучать базы данных, Spring, Kafka, Kubernetes и Istio. Помимо этого еще будут практические занятия, домашние задания и консультации с ментором.
⠀
Что будет после учебы?
Трудоустройство в Цифровые привычки. Ты будешь работать над высоконагруженными, отказоустойчивыми проектами.
⠀
Подать заявку на курс: https://cutt.ly/RAoCfcr
#вопросы_с_собеседований
Что такое JSON?
JSON, JavaScript Object Notation — текстовый формат обмена данными, основанный на JavaScript.
JSON представляет собой (в закодированном виде) одну из двух структур:
☕️ Набор пар «ключ:значение»;
☕️ Упорядоченный набор значений.
Ключом может быть только строка (регистрозависимая: имена с буквами в разных регистрах считаются разными).
В качестве значений могут быть использованы:
☕️ Объект — неупорядоченное множество пар «ключ:значение», заключённое в фигурные скобки { }. Ключ описывается строкой, между ним и значением стоит символ :. Пары ключ-значение отделяются друг от друга запятыми;
☕️ Массив (одномерный) — упорядоченное множество значений. Массив заключается в квадратные скобки [ ]. Значения разделяются запятыми.
☕️ Число;
☕️ Литералы true, false и null;
☕️ Строка — упорядоченное множество из нуля или более символов Unicode, заключенное в кавычки " ". Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты \, или записаны шестнадцатеричным кодом в кодировке UTF-8 в виде \uFFFF.
Что такое JSON?
JSON, JavaScript Object Notation — текстовый формат обмена данными, основанный на JavaScript.
JSON представляет собой (в закодированном виде) одну из двух структур:
☕️ Набор пар «ключ:значение»;
☕️ Упорядоченный набор значений.
Ключом может быть только строка (регистрозависимая: имена с буквами в разных регистрах считаются разными).
В качестве значений могут быть использованы:
☕️ Объект — неупорядоченное множество пар «ключ:значение», заключённое в фигурные скобки { }. Ключ описывается строкой, между ним и значением стоит символ :. Пары ключ-значение отделяются друг от друга запятыми;
☕️ Массив (одномерный) — упорядоченное множество значений. Массив заключается в квадратные скобки [ ]. Значения разделяются запятыми.
☕️ Число;
☕️ Литералы true, false и null;
☕️ Строка — упорядоченное множество из нуля или более символов Unicode, заключенное в кавычки " ". Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты \, или записаны шестнадцатеричным кодом в кодировке UTF-8 в виде \uFFFF.
Почему в некоторых интерфейсах вообще не определяют методов?
Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
#вопросы_с_собеседований
Почему нельзя объявить метод интерфейса с модификатором final?
В случае интерфейсов указание модификатора
Почему нельзя объявить метод интерфейса с модификатором final?
В случае интерфейсов указание модификатора
final
бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final
.#вопросы_с_собеседований
Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в
• Блок инициализации возможно создать и в анонимном классе.
Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в
throws
всех конструкторов класса.• Блок инициализации возможно создать и в анонимном классе.
Что имеет более высокий уровень абстракции?
Anonymous Quiz
4%
Класс
15%
Абстрактный класс
80%
Интерфейс
#вопросы_с_собеседований
К каким конструкциям применим модификатор static?
☕️ поля;
☕️ методы;
☕️ вложенные классы;
☕️ члены секции import.
К каким конструкциям применим модификатор static?
☕️ поля;
☕️ методы;
☕️ вложенные классы;
☕️ члены секции import.
#вопросы_с_собеседований
Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor).
Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor).
☕️ initialCapacity - исходный размер HashMap, количество корзин в хэш-таблице в момент её создания.
☕️ loadFactor - коэффициент заполнения HashMap, при превышении которого происходит увеличение количества корзин и автоматическое перехэширование. Равен отношению числа уже хранимых элементов в таблице к её размеру.
☕️ loadFactor - коэффициент заполнения HashMap, при превышении которого происходит увеличение количества корзин и автоматическое перехэширование. Равен отношению числа уже хранимых элементов в таблице к её размеру.
#вопросы_с_собеседований
Что значит «приоритет потока»?
Что значит «приоритет потока»?
Приоритеты потоков используются планировщиком потоков для принятия решений о том, когда какому из потоков будет разрешено работать. Теоретически высокоприоритетные потоки получают больше времени процессора, чем низкоприоритетные. Практически объем времени процессора, который получает поток, часто зависит от нескольких факторов помимо его приоритета.
Чтобы установить приоритет потока, используется метод класса Thread: final void setPriority(int level). Значение level изменяется в пределах от Thread.MIN_PRIORITY = 1 до Thread.MAX_PRIORITY = 10. Приоритет по умолчанию - Thread.NORM_PRlORITY = 5.
Получить текущее значение приоритета потока можно вызвав метод: final int getPriority() у экземпляра класса Thread.
Чтобы установить приоритет потока, используется метод класса Thread: final void setPriority(int level). Значение level изменяется в пределах от Thread.MIN_PRIORITY = 1 до Thread.MAX_PRIORITY = 10. Приоритет по умолчанию - Thread.NORM_PRlORITY = 5.
Получить текущее значение приоритета потока можно вызвав метод: final int getPriority() у экземпляра класса Thread.
Всем привет! 👋 Мы проводим опрос: «Что сейчас происходит с IT-индустрией и айтишниками».
Сложилась очень непростая ситуация: найм новых работников поставлен на паузу, некоторых сотрудников сокращают, а какие-то проекты вообще закрываются. Расскажите, как ваша компания и вы проходите через новый кризис. Опрос займет около 3 минут, результаты опубликуем на сайте proglib.io ориентировочно 21 марта.
➡️ Опрос можно пройти анонимно по ссылке.
Сложилась очень непростая ситуация: найм новых работников поставлен на паузу, некоторых сотрудников сокращают, а какие-то проекты вообще закрываются. Расскажите, как ваша компания и вы проходите через новый кризис. Опрос займет около 3 минут, результаты опубликуем на сайте proglib.io ориентировочно 21 марта.
➡️ Опрос можно пройти анонимно по ссылке.
Google Docs
Что сейчас происходит с IT-индустрией и айтишниками
Всем привет! Мы проводим опрос «Что сейчас происходит с IT-индустрией и айтишниками». Сложилась очень непростая ситуация: найм новых работников поставлен на паузу, некоторых сотрудников сокращают, а какие-то проекты вообще закрываются. Расскажите, как ваша…
#вопросы_с_собеседований
Может ли статический метод быть переопределён или перегружен?
Перегружен - да. Всё работает точно так же, как и с обычными методами - 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается.
Переопределён - нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода - это вполне корректная языковая конструкция.
В целом, к статическим полям и методам рекомендуется обращаться через имя класса, а не объект.
Может ли статический метод быть переопределён или перегружен?
Перегружен - да. Всё работает точно так же, как и с обычными методами - 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается.
Переопределён - нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода - это вполне корректная языковая конструкция.
В целом, к статическим полям и методам рекомендуется обращаться через имя класса, а не объект.
#вопросы_с_собеседований
Перечислите все конструкции, к которым применим модификатор static.
Перечислите все конструкции, к которым применим модификатор static.
🛠 Как за 3 простых шага создать свой VPN и прокси-сервер
С помощью простой копипасты команд (ctrl+c и ctrl+v) вы получите свой собственный VPN и сможете поделиться им со своими друзьями и родственниками.
Смотреть видео.
С помощью простой копипасты команд (ctrl+c и ctrl+v) вы получите свой собственный VPN и сможете поделиться им со своими друзьями и родственниками.
Смотреть видео.
YouTube
Как за 3 простых шага создать свой VPN и прокси-сервер
🌐 Простая видеоинструкция по установке OpenVPN на Ubuntu. С помощью простой копипасты команд (ctrl+c и ctrl+v) вы получите свой собственный VPN и сможете поделиться им со своими друзьями и родственниками.
Чтобы сделать из VPN-сервера прокси-сервер, отключите…
Чтобы сделать из VPN-сервера прокси-сервер, отключите…