TelegramBots
Это библиотека для создания телеграм-ботов на Java. Разработка движется от способности бота вести себя так или иначе. Вы создаёте объект Ability и конкретизируете входные данные, место действия (группа или персональный чат), права доступа (кто может использовать данную способность — кто угодно, админ или только создатель бота), сами действия и то, что происходит после их завершения. Каждая новая функция бота — новая способность, которую вы можете настроить отдельно. Для каждой Ability — своя встроенная база данных.
Бот автоматически ведёт историю контактов с пользователями, актуализирует имена и ники. Есть готовые механизмы разжалования админов, банов и снятия банов.
https://github.com/rubenlagus/TelegramBots
Это библиотека для создания телеграм-ботов на Java. Разработка движется от способности бота вести себя так или иначе. Вы создаёте объект Ability и конкретизируете входные данные, место действия (группа или персональный чат), права доступа (кто может использовать данную способность — кто угодно, админ или только создатель бота), сами действия и то, что происходит после их завершения. Каждая новая функция бота — новая способность, которую вы можете настроить отдельно. Для каждой Ability — своя встроенная база данных.
Бот автоматически ведёт историю контактов с пользователями, актуализирует имена и ники. Есть готовые механизмы разжалования админов, банов и снятия банов.
https://github.com/rubenlagus/TelegramBots
GitHub
GitHub - rubenlagus/TelegramBots: Java library to create bots using Telegram Bots API
Java library to create bots using Telegram Bots API - rubenlagus/TelegramBots
👍17
👍35😱13
#Вопросы_с_собеседования
❓В чем отличия TreeSet и HashSet?
TreeSet обеспечивает упорядоченно хранение элементов в виде красно-черного дерева. Сложность выполнения основных операций не хуже O(log(N)) (Логарифмическое время).
HashSet использует для хранения элементов такой же подход, что и HashMap, за тем отличием, что в HashSet в качестве ключа и значения выступает сам элемент, кроме того, HashSet не поддерживает упорядоченное хранение элементов и обеспечивает временную сложность выполнения операций аналогично HashMap.
❓В чем отличия TreeSet и HashSet?
TreeSet обеспечивает упорядоченно хранение элементов в виде красно-черного дерева. Сложность выполнения основных операций не хуже O(log(N)) (Логарифмическое время).
HashSet использует для хранения элементов такой же подход, что и HashMap, за тем отличием, что в HashSet в качестве ключа и значения выступает сам элемент, кроме того, HashSet не поддерживает упорядоченное хранение элементов и обеспечивает временную сложность выполнения операций аналогично HashMap.
👍19
#вопросы_с_собеседований
Как написать собственное («пользовательское») исключение?
Необходимо унаследоваться от базового класса требуемого типа исключений (например, от Exception или RuntimeException).
Как написать собственное («пользовательское») исключение?
Необходимо унаследоваться от базового класса требуемого типа исключений (например, от Exception или RuntimeException).
👍25
👍25👎3❤1😱1
#Вопросы_с_собеседования
❓Чем различаются Thread и Runnable?
Помимо того, что Runnable помогает разрешить проблему множественного наследования, несомненный плюс от его использования состоит в том, что он позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.
❓Чем различаются Thread и Runnable?
Thread
- это класс, некоторая надстройка над физическим потоком.Runnable
- это интерфейс, представляющий абстракцию над выполняемой задачей.Помимо того, что Runnable помогает разрешить проблему множественного наследования, несомненный плюс от его использования состоит в том, что он позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.
👍24
#вопросы_с_собеседований
Как отсортировать список строк с помощью лямбда-выражения?
Ответ на картинке.
Как отсортировать список строк с помощью лямбда-выражения?
Ответ на картинке.
👍34
#Вопросы_с_собеседования
❓Какова роль equals() и hashCode() в HashMap?
hashCode позволяет определить корзину для поиска элемента, а equals используется для сравнения ключей элементов в списке корзины и искомого ключа.
❓Какова роль equals() и hashCode() в HashMap?
hashCode позволяет определить корзину для поиска элемента, а equals используется для сравнения ключей элементов в списке корзины и искомого ключа.
👍27
#Вопросы_с_собеседования
В чём заключается разница между методами start() и run()?
Несмотря на то, что start() вызывает метод run() внутри себя, это не то же самое, что просто вызов run(). Если run() вызывается как обычный метод, то он вызывается в том же потоке и никакой новый поток не запускается, как это происходит, в случае, когда вы вызываете метод start().
В чём заключается разница между методами start() и run()?
Несмотря на то, что start() вызывает метод run() внутри себя, это не то же самое, что просто вызов run(). Если run() вызывается как обычный метод, то он вызывается в том же потоке и никакой новый поток не запускается, как это происходит, в случае, когда вы вызываете метод start().
👍25
Guava
Guava — это сборник множества библиотек от Google. Он включает в себя:
☕️ несколько новых типов коллекций, неизменяемые коллекции;
☕️ библиотеку, реализующую работу с графами;
☕️ работу с вводом\выводом, хешированием, кэшированием, строками и многим другим.
Например, часто в коде можно встретить повторяющиеся блоки, реализующие низкоуровневую конкатенацию строк (см. пример кода). Согласитесь, код с Guava выглядит лаконичнее, понятнее, а главное, выполняет эту операцию самым оптимальным образом.
На эту библиотеку определённо стоит обратить внимание как минимум по причинам. Во-первых, она разработана спецами из Google. Во-вторых, эти же спецы из Google сами её используют. Репозиторий с документацией и инструкцией к установке тут.
Guava — это сборник множества библиотек от Google. Он включает в себя:
☕️ несколько новых типов коллекций, неизменяемые коллекции;
☕️ библиотеку, реализующую работу с графами;
☕️ работу с вводом\выводом, хешированием, кэшированием, строками и многим другим.
Например, часто в коде можно встретить повторяющиеся блоки, реализующие низкоуровневую конкатенацию строк (см. пример кода). Согласитесь, код с Guava выглядит лаконичнее, понятнее, а главное, выполняет эту операцию самым оптимальным образом.
На эту библиотеку определённо стоит обратить внимание как минимум по причинам. Во-первых, она разработана спецами из Google. Во-вторых, эти же спецы из Google сами её используют. Репозиторий с документацией и инструкцией к установке тут.
👍21
#Вопросы_с_собеседования
Можно ли из конструктора бросить исключение?
С исключениями конструкторы работают точно так же, как и методы.
И если методы позволяют нам пробрасывать исключения, прописывая в заголовке метода throws <ТипИсключения>, то и конструктор позволяет нам это делать, и так же при наследовании и определении конструктора наследника мы можем расширять тип исключения. Например, IOException -> Exception (но не наоборот).
В качестве примера для пробрасывания конструктором исключения возьмем класс Cat. Допустим, при его создании мы хотим вводить имя и возраст с консоли(см картинку).
Так как reader.readLine() бросает исключение IOException, в заголовке мы его прописываем как возможное выбрасываемое исключение.
Можно ли из конструктора бросить исключение?
С исключениями конструкторы работают точно так же, как и методы.
И если методы позволяют нам пробрасывать исключения, прописывая в заголовке метода throws <ТипИсключения>, то и конструктор позволяет нам это делать, и так же при наследовании и определении конструктора наследника мы можем расширять тип исключения. Например, IOException -> Exception (но не наоборот).
В качестве примера для пробрасывания конструктором исключения возьмем класс Cat. Допустим, при его создании мы хотим вводить имя и возраст с консоли(см картинку).
Так как reader.readLine() бросает исключение IOException, в заголовке мы его прописываем как возможное выбрасываемое исключение.
👍19
#Вопросы_с_собеседования
Что такое пакет? Перечислите различные преимущества пакетов.
Пакеты – это набор связанных классов и интерфейсов, которые связаны вместе. Используя пакеты, разработчики могут легко модулировать код и оптимизировать его повторное использование. Кроме того, код внутри пакетов может быть импортирован другими классами и использован повторно. Несколько его преимуществ:
• Пакеты на Java помогают избежать конфликтов имен.
• Они обеспечивают более легкий контроль доступа к коду.
• Пакеты также могут содержать скрытые классы, которые не видны внешним классам и используются только внутри пакета..
• Создает правильную иерархическую структуру, которая упрощает поиск связанных классов.
Что такое пакет? Перечислите различные преимущества пакетов.
Пакеты – это набор связанных классов и интерфейсов, которые связаны вместе. Используя пакеты, разработчики могут легко модулировать код и оптимизировать его повторное использование. Кроме того, код внутри пакетов может быть импортирован другими классами и использован повторно. Несколько его преимуществ:
• Пакеты на Java помогают избежать конфликтов имен.
• Они обеспечивают более легкий контроль доступа к коду.
• Пакеты также могут содержать скрытые классы, которые не видны внешним классам и используются только внутри пакета..
• Создает правильную иерархическую структуру, которая упрощает поиск связанных классов.
👍22
Примитивные типы
Компьютеры работают в основном с числами, поэтому были придуманы несколько ключевых слов, которые обозначают разные типы данных, по-другому их называют примитивные типы данных. Так как компьютеры развивались постепенно, то на разных этапах своей жизни они могли хранить число, которое не выше разряда процессора, на котором они работают. Поэтому появилась такая битовая таблица различных чисел.
Компьютеры работают в основном с числами, поэтому были придуманы несколько ключевых слов, которые обозначают разные типы данных, по-другому их называют примитивные типы данных. Так как компьютеры развивались постепенно, то на разных этапах своей жизни они могли хранить число, которое не выше разряда процессора, на котором они работают. Поэтому появилась такая битовая таблица различных чисел.
👍26👎1
Проверка подключения к Интернету с помощью Java
В нашем случае программа выводит 0, если Интернет подключен, и 1, если Интернет не подключен.
Подробнее можно ознакомиться здесь.
В нашем случае программа выводит 0, если Интернет подключен, и 1, если Интернет не подключен.
Подробнее можно ознакомиться здесь.
👍26👎12
#Вопросы_с_собеседования
Существуют ли ситуации, когда блок finally не будет выполнен?
Ответ:
Например, когда JVM «умирает» - в такой ситуации finally недостижим и не будет выполнен, так как происходит принудительный системный выход из программы.
Существуют ли ситуации, когда блок finally не будет выполнен?
Ответ:
👍32👎2