#вопросы_с_собеседований
Какие подклассы класса OutputStream вы знаете, для чего они предназначены?
Какие подклассы класса OutputStream вы знаете, для чего они предназначены?
☕️ OutputStream - это абстрактный класс, определяющий потоковый байтовый вывод;
☕️ BufferedOutputStream - буферизированный выходной поток;
☕️ ByteArrayOutputStream - все данные, посылаемые в этот поток, размещаются в предварительно созданном буфере;
☕️ DataOutputStream - выходной поток байт, включающий методы для записи стандартных типов данных Java;
☕️ FileOutputStream - запись данных в файл на физическом носителе;
☕️ FilterOutputStream - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства;
☕️ PrintStream - выходной поток, включающий методы print() и println();
☕️ ObjectOutputStream - выходной поток для записи объектов;
☕️ PipedOutputStream реализует понятие выходного канала.
☕️ BufferedOutputStream - буферизированный выходной поток;
☕️ ByteArrayOutputStream - все данные, посылаемые в этот поток, размещаются в предварительно созданном буфере;
☕️ DataOutputStream - выходной поток байт, включающий методы для записи стандартных типов данных Java;
☕️ FileOutputStream - запись данных в файл на физическом носителе;
☕️ FilterOutputStream - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства;
☕️ PrintStream - выходной поток, включающий методы print() и println();
☕️ ObjectOutputStream - выходной поток для записи объектов;
☕️ PipedOutputStream реализует понятие выходного канала.
GeekBrains запускает курс «Python для решения бизнес-задач»
Обучение начнется 23 октября и продлится 2,5 месяца. Курс рассчитан на далеких от программирования слушателей: маркетологов, продакт-менеджеров и предпринимателей. В формате видеоуроков и практических вебинаров они научатся автоматизировать рутинные задачи и процессы. Опытные преподаватели расскажут, как создавать ботов Telegram, собирать, обрабатывать и визуализировать данные о клиентах, а также обрабатывать файлы и проверять правильность заполнения форм. Python позволяет написать программу один раз и запускать ее по потребности — это экономит рабочее время.
Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/b894de20
Обучение начнется 23 октября и продлится 2,5 месяца. Курс рассчитан на далеких от программирования слушателей: маркетологов, продакт-менеджеров и предпринимателей. В формате видеоуроков и практических вебинаров они научатся автоматизировать рутинные задачи и процессы. Опытные преподаватели расскажут, как создавать ботов Telegram, собирать, обрабатывать и визуализировать данные о клиентах, а также обрабатывать файлы и проверять правильность заполнения форм. Python позволяет написать программу один раз и запускать ее по потребности — это экономит рабочее время.
Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/b894de20
#вопросы_с_собеседований
Какой класс появился в Java 8 для кодирования/декодирования данных?
Какой класс появился в Java 8 для кодирования/декодирования данных?
Base64 - потокобезопасный класс, который реализует кодировщик и декодировщик данных, используя схему кодирования base64 согласно RFC 4648 и RFC 2045.
Base64 содержит 6 основных методов:
getEncoder()/getDecoder() - возвращает кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getUrlEncoder()/getUrlDecoder() - возвращает URL-safe кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getMimeEncoder()/getMimeDecoder() - возвращает MIME кодировщик/декодировщик, соответствующий стандарту RFC 2045.
Base64 содержит 6 основных методов:
getEncoder()/getDecoder() - возвращает кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getUrlEncoder()/getUrlDecoder() - возвращает URL-safe кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getMimeEncoder()/getMimeDecoder() - возвращает MIME кодировщик/декодировщик, соответствующий стандарту RFC 2045.
#вопросы_с_собеседований
Какое худшее время работы метода get(key) для ключа, который есть в HashMap?
Какое худшее время работы метода get(key) для ключа, который есть в HashMap?
O(N). Худший случай - это поиск ключа в HashMap, вырожденного в список по причине совпадения ключей по hashCode() и для выяснения, хранится ли элемент с определённым ключом, может потребоваться перебор всего списка.
UPD. Начиная с Java 8 корзины в HashMap становятся балансированными деревьями, если в них попадает больше определенного кол-ва объектов. Поэтому худший случай будет O(log n). Подробности можно почитать в https://javahungry.blogspot.com/2013/08/hashing-how-hash-map-works-in-java-or.html (спасибо за указание на ошибку)
UPD. Начиная с Java 8 корзины в HashMap становятся балансированными деревьями, если в них попадает больше определенного кол-ва объектов. Поэтому худший случай будет O(log n). Подробности можно почитать в https://javahungry.blogspot.com/2013/08/hashing-how-hash-map-works-in-java-or.html (спасибо за указание на ошибку)
Blogspot
Hashing :How HashMap works in java or How get() method works internally | Java Hungry
One of the most darling question of the core java interviewers is How hash map works in java . Most of the candidates rejection chances increases if the candidate do not give the satisfactory explanation . This question shows that candidate has good knowledge…
#вопросы_с_собеседований
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
☕️ В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса.
☕️ Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.
☕️ Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как public abstract или (начиная с Java 8) default - методами с реализацией по-умолчанию, а поля - public static final.
☕️ Интерфейсы позволяют создавать структуры типов без иерархии.
☕️ Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.
Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.
☕️ Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.
☕️ Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как public abstract или (начиная с Java 8) default - методами с реализацией по-умолчанию, а поля - public static final.
☕️ Интерфейсы позволяют создавать структуры типов без иерархии.
☕️ Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.
Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.
#вопросы_с_собеседований
Как устроен HashMap?
Как устроен HashMap?
HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение» вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент. Если корзина пустая, то в нее сохраняется ссылка на вновь добавляемый элемент, если же там уже есть элемент, то происходит последовательный переход по ссылкам между элементами в цепочке, в поисках последнего элемента, от которого и ставится ссылка на вновь добавленный элемент. Если в списке был найден элемент с таким же ключом, то он заменяется.
#вопросы_с_собеседований
Чем различаются JRE, JVM и JDK?
Чем различаются JRE, JVM и JDK?
JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java. JVM может также использоваться для выполнения программ, написанных на других языках программирования.
JRE, Java Runtime Environment (Среда времени выполнения Java) - минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
JDK, Java Development Kit (Комплект разработки на Java) - JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
Коротко: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
JRE, Java Runtime Environment (Среда времени выполнения Java) - минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
JDK, Java Development Kit (Комплект разработки на Java) - JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
Коротко: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
Мы обучим тебя разработке на Java с ментором онлайн, а оплата только после трудоустройства в IT. Поможем составить резюме и подготовим к собеседованиям. Тебя ждет минимум 5 предложений о работе и быстрый карьерный рост благодаря программе поддержки рассчитанной на 2 года.
Пройти тестовое задание 🙋♂️👉 https://clck.ru/Rc6VB
👇Как проходит обучение:
1. Жесткий контроль теории и кода после каждой пройденной темы
2. Обучение только востребованному на рынке стеку технологий: Java Core, Maven, Git, Tomcat, Spring MVC, Core, Security, Hibernate
3. Отработка знаний в реальном бизнес проекте, который дает опыт для резюме
4. Интегрированное полезное общение в групповом чате slack с одногруппниками, наставниками и выпускниками-разработчиками
5. Быстрое карьерное и финансовое развитие за счет двухгодичной программы поддержки от экспертов java сообщества: митапы, мастер-классы, лекции и оффлайн интенсивы
6. Гарантированное трудоустройство с первой зарплатой минимум от 100 000 рублей
Условия участия:
• Пройти входное тестирование
• Обучение минимум 25 часов в неделю
• Проживание или готовность к переезду в Москву для трудоустройства
Пройти тестовое задание 🙋♂️👉 https://clck.ru/Rc6VB
👇Как проходит обучение:
1. Жесткий контроль теории и кода после каждой пройденной темы
2. Обучение только востребованному на рынке стеку технологий: Java Core, Maven, Git, Tomcat, Spring MVC, Core, Security, Hibernate
3. Отработка знаний в реальном бизнес проекте, который дает опыт для резюме
4. Интегрированное полезное общение в групповом чате slack с одногруппниками, наставниками и выпускниками-разработчиками
5. Быстрое карьерное и финансовое развитие за счет двухгодичной программы поддержки от экспертов java сообщества: митапы, мастер-классы, лекции и оффлайн интенсивы
6. Гарантированное трудоустройство с первой зарплатой минимум от 100 000 рублей
Условия участия:
• Пройти входное тестирование
• Обучение минимум 25 часов в неделю
• Проживание или готовность к переезду в Москву для трудоустройства
#вопросы_с_собеседований
Могут ли у разных ссылок на один объект (ref0 == ref1) быть ref0.equals(ref1) == false?
Могут ли у разных ссылок на один объект (ref0 == ref1) быть ref0.equals(ref1) == false?
В общем случае - могут, если метод equals() реализован некорректно и не выполняет свойство рефлексивности: для любых ненулевых ссылок x метод x.equals(x) должен возвращать true.
#вопросы_с_собеседований
О чем говорит ключевое слово final?
О чем говорит ключевое слово final?
Модификатор final может применяться к переменным, параметрам методов, полям и методам класса или самим классам.
☕️ Класс не может иметь наследников;
☕️ Метод не может быть переопределен в классах-наследниках;
☕️ Поле не может изменить свое значение после инициализации;
☕️ Параметры методов не могут изменять своё значение внутри метода;
☕️ Локальные переменные не могут быть изменены после присвоения им значения.
☕️ Класс не может иметь наследников;
☕️ Метод не может быть переопределен в классах-наследниках;
☕️ Поле не может изменить свое значение после инициализации;
☕️ Параметры методов не могут изменять своё значение внутри метода;
☕️ Локальные переменные не могут быть изменены после присвоения им значения.
Forwarded from Java jobs — вакансии для java-разработчиков
🍋Тинькофф это уже давно не только банк, а целая экосистема: счет для бизнеса, страхование, мобильная связь, инвестиции.
💡Мы ищем Java-разработчиков разного уровня в департамент платёжных систем. У нас три направления (банкоматы, платёжная система и интернет-эквайринг), работа в продуктовой команде, в которой есть аналитики, бэк и фрон разработчики, тестеры и тд, команды сформированные.
💰ЗП: 180 000-230 000 (net)
🧩Чем нужно заниматься:
• Участие в разработке и оптимизации производительности внутри программного комплекса Процессингового центра: банковский процессинг, развитие банковских продуктов;
• Участие в разработке интеграционных решений в рамках глобальной информационной инфраструктуры со смежными IT-системами (CRM-системы, АБС, DWH, Личный Кабинет);
📒Что нужно знать:
Опыт работы с Java 8, Spring Framework, опыт с ORACLE, postgreSQL, понимание REST подхода к разработке API, опыт работы с SQL и JDBC, опыт работы с Git, Maven.
🎁Что у нас есть для тебя:
• Офис в Москве
• Проводим митапы, тренинги и мастер-классы, огромная tech-библиотека в твоем распоряжении;
• Компенсируем обеды; чай, кофе и фрукты в кухнях на каждом этаже офиса;
• ДМС и страховку от несчастных случаев;
• Бесплатные курсы английского языка на территории офиса; Скидка 30% на КАСКО и специальные условия на продукты Тинькофф.
📩По всем вопросам можно писать в личные сообщения @akulovaeg
💡Мы ищем Java-разработчиков разного уровня в департамент платёжных систем. У нас три направления (банкоматы, платёжная система и интернет-эквайринг), работа в продуктовой команде, в которой есть аналитики, бэк и фрон разработчики, тестеры и тд, команды сформированные.
💰ЗП: 180 000-230 000 (net)
🧩Чем нужно заниматься:
• Участие в разработке и оптимизации производительности внутри программного комплекса Процессингового центра: банковский процессинг, развитие банковских продуктов;
• Участие в разработке интеграционных решений в рамках глобальной информационной инфраструктуры со смежными IT-системами (CRM-системы, АБС, DWH, Личный Кабинет);
📒Что нужно знать:
Опыт работы с Java 8, Spring Framework, опыт с ORACLE, postgreSQL, понимание REST подхода к разработке API, опыт работы с SQL и JDBC, опыт работы с Git, Maven.
🎁Что у нас есть для тебя:
• Офис в Москве
• Проводим митапы, тренинги и мастер-классы, огромная tech-библиотека в твоем распоряжении;
• Компенсируем обеды; чай, кофе и фрукты в кухнях на каждом этаже офиса;
• ДМС и страховку от несчастных случаев;
• Бесплатные курсы английского языка на территории офиса; Скидка 30% на КАСКО и специальные условия на продукты Тинькофф.
📩По всем вопросам можно писать в личные сообщения @akulovaeg
#вопросы_с_собеседований
В чем разница между notify() и notifyAll()?
В чем разница между notify() и notifyAll()?
GeekBrains открывает факультет обработки естественного языка
Обучение проходит в онлайн-формате 2 раза в неделю в течение 10 месяцев. Студенты факультета смогут с нуля овладеть востребованной профессией NLP-разработчика, ML-инженера или специалиста по Data Science. Программа занятий рассчитана на новичков: в нее входят основы высшей математики (линейная алгебра и матанализ), программирования и машинного обучения. Достаточно подробно изучается теория вероятностей и матстатистика, различные подходы к обработке естественного языка, прототипирование и интеграция, а также бизнес-процесс машинного обучения. Занятия ведут признанные в отрасли эксперты, а решить возникающие в процессе обучения затруднения поможет личный наставник. Успешно окончившие курс студенты получат диплом о профессиональной переподготовке и закрепленную в договоре гарантию трудоустройства.
Подробная информация о новом факультете доступна на нашем сайте: https://proglib.io/w/f1c2a766
Обучение проходит в онлайн-формате 2 раза в неделю в течение 10 месяцев. Студенты факультета смогут с нуля овладеть востребованной профессией NLP-разработчика, ML-инженера или специалиста по Data Science. Программа занятий рассчитана на новичков: в нее входят основы высшей математики (линейная алгебра и матанализ), программирования и машинного обучения. Достаточно подробно изучается теория вероятностей и матстатистика, различные подходы к обработке естественного языка, прототипирование и интеграция, а также бизнес-процесс машинного обучения. Занятия ведут признанные в отрасли эксперты, а решить возникающие в процессе обучения затруднения поможет личный наставник. Успешно окончившие курс студенты получат диплом о профессиональной переподготовке и закрепленную в договоре гарантию трудоустройства.
Подробная информация о новом факультете доступна на нашем сайте: https://proglib.io/w/f1c2a766