JavaRush /Java блог /Random UA /Рівень 40. Відповіді на запитання до співбесіди на тему р...
lichMax
40 рівень
Санкт-Петербург

Рівень 40. Відповіді на запитання до співбесіди на тему рівня

Стаття з групи Random UA
Рівень 40. Відповіді на запитання до співбесіди на тему рівня - 1Власне, такі питання були на цьому рівні:
  1. Що таке IP-адресаа?
  2. У чому відмінність host і domain?
  3. Які методи в HTTP ви знаєте
  4. Чим відрізняються методи GET, POST та HEAD?
  5. Що таке REST?
  6. Навіщо потрібен клас Calendar Java?
  7. Як перетворити дату Java на потрібний формат?
  8. У чому відмінність URI та URL?
  9. Що таке сокети?
  10. Відмінність класів Socket та URL?
А ось мої відповіді:
  1. IP-адресаа – це унікальна мережна адресаа вузла в комп'ютерній мережі, побудованій на стеку протоколів TCP/IP. У мережі Інтернет потрібна глобальна унікальність адресаи; у разі роботи в локальній мережі потрібна унікальність адресаи в межах мережі. У версії протоколу IPv4 IP-адресаа має довжину 4 байти, а у версії протоколу IPv6 IP-адресаа має довжину 16 байт. Зазвичай IP-адресаа у версії протоколу IPv4 записують у вигляді чотирьох десяткових чисел зі значеннями від 0 до 255, розділених точкою, наприклад, 192.168.0.3.

  2. Домен — це адресаа сайту або певна зона, яка має своє ім'я, не схоже на інше ім'я в системі доменних імен. Домени бувають першого рівня, другого рівня, третього рівня тощо. Зазвичай, домен першого рівня не доступний звичайним користувачам для реєстрації (приклади доменів першого рівня - ".ru", ".com", ".net"). Зазвичай домени третього та наступних рівнів називають субдоменами.
    Хост — це певний комп'ютер чи сервер, підключений до локальної чи глобальної мережі. Хост має унікальну адресау в середовищі сервісів TCP/IP (IP-адресаою).

  3. GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH, TRACE, LINK, UNLINK, CONNECT.

  4. GET POST HEAD
    Тіло запиту Ні Є Ні
    Тіло Відповіді Так Так Ні
    Кешування результату запиту Так Ні Так, заголовки
    Ідемопотентність Так Ні Так

    Метод GET використовується для запиту на вміст вказаного ресурсу. Метод POST застосовується передачі користувачів даних заданому ресурсу. Метод HEAD зазвичай застосовується для отримання метаданих, перевірки наявності ресурсу (валідація URL) і щоб дізнатися, чи не змінився він з моменту останнього звернення. Метод HEAD аналогічний методу GET, крім того, що у відповіді сервера відсутнє тіло. Метод GET вважає спрощеною версією POST, тому що метод GET не передбачає повноцінного запиту, тільки URL як такий.

  5. REST – це архітектурний стиль взаємодії компонентів розподіленої програми у мережі. Термін був запроваджений Роєм Філдінгом у 2000 році. Також їм було введено вимоги, яким має задовольняти розподілений додаток, щоб відповідати архітектурі REST (такі програми ще називають RESTful). Ось ці вимоги:

    1. Модель "Клієнт-Сервер" (означає, що мережа повинна складатися з клієнта та сервера; сервер - це той, хто має ресурси, клієнт - той, який їх запитує)
    2. Відсутність стану (означає, що клієнт, ні сервер не відстежують стану одне одного)
    3. Кешування (клієнти та проміжні вузли можуть кешувати результати запитів; відповідно, відповіді сервера повинні мати явне або неявне позначення, що вони кешуються або не кешуються)
    4. Одноманітність інтерфейсу (означає, що між клієнтами та серверами існує спільна мова взаємодії, яка дозволяє їм бути замінюваними або змінюваними, без порушення цілісності системи):
      • Визначення ресурсу (означає, що кожен ресурс має бути позначений постійним ідентефікатором)
      • Управління ресурсами через уявлення (означає, що клієнт зберігає ресурс у вигляді його уявлення, і за бажання зміни ресурсу він відправляє серверу інформацію у тому, як він хотів би бачити цей ресурс; сервер ж розглядає цей як запит як пропозицію, і сам вирішує , що робити йому зі збереженим ресурсом)
      • Самодостатні повідомлення (кожне повідомлення містить достатньо інформації, щоб зрозуміти, як його обробляти)
      • Гіпермедіа (означає, що клієнти змінюють стан системи лише через дії, які динамічно визначені у гіпермедіа на сервер)
      • Система шарів (означає, що в системі може бути більше двох шарів (клієнт і сервер), і при цьому кожен такий шар знає тільки про свої сусідні шари, і не знає про інші шари, і взаємодіє тільки з сусідніми шарами)
      • Код на вимогу (означає, що функціональність клієнта може бути розширена за рахунок завантаження коду з сервера у вигляді аплетів або сценаріїв)

      Задоволення цим вимогам дозволяє досягти наступного:

      • Надійність
      • Продуктивність
      • Масштабованість
      • Прозорість взаємодії
      • Простота інтерфейсів
      • Портативність компонентів
      • Легкість внесення змін
      • Здатність еволюціонувати, пристосовуючись до нових вимог
  6. Він потрібний для зручнішої роботи з датою та часом. Він дозволяє працювати з датою в рамках календаря, тобто дозволяє додавати та забирати дні від якоїсь конкретної дати, причому враховуватимуть і високосні роки. Крім того, він дозволяє уявити час мілісекундах у зручному вигляді - рік, місяць, день, години, хвабони, секунди. Також є багато методів для встановлення та отримання різних параметрів дати та часу, наприклад: день тижня, день місяця, день у році, номер тижня на місяці, номер тижня на рік.
  7. Для цього існує зручний клас SimpleDateFormat. Примірнику цього класу можна передати шаблон подання дати, і тоді він у такому вигляді повертатиме дату (у форматі рядка String), або зчитувати дату (з рядка String). Виглядає все так:

    Date date = new Date(); // получаем текущую дату
    SimpleDateFormat formatter = new SimpleDateFormat("d-MM-yy HH:mm:ss"); //создаём экземпляр класса SimpleDateFormat
             								//и передаём ему шаблон представления даты и времени
    String dateAsString = formatter.format(date); //преобразуем дату в строку заданного формата
    
    Date dateAfterConversion = formatter.parse(dateAsString); //преобразуем строку обратно в дату
  8. URI розшифровується як Uniform Resource Identifier і переводиться як "уніфікований ідентифікатор ресурсу". URI – це послідовність символів, що ідентифікує абстрактний чи фізичний ресурс. URL розшифровується як Uniform Resource Locator. Тобто це якийсь уніфікований покажчик на ресурс, що однозначно визначає його місцезнаходження. URL служить стандартизованим способом запису адресаи ресурсу в Інтернеті.
    Їх відмінності в тому, що URI – це певний ідентифікатор ресурсу, який дозволяє цей ресурс якось ідентифікувати, а URL – це покажчик ресурсу, він дає інформацію про те, де знаходиться ресурс. Таким чином URL - це URI, який, крім ідентифікації ресурсу, дає інформацію про його місцезнаходження.

  9. Сокети – це зв'язка IP-адресаа + порт , що дозволяє із зовнішньої мережі однозначно ідентифікувати програму на комп'ютері чи сервері. У Java для роботи з сокетами є два класи Socketта ServerSocket. Примірники першого класу грають роль клієнта, екземпляри другого – роль сервера. Клієнт може надсилати та приймати повідомлення через сокет. Сервер постійно відстежує запити користувачів і відповідає на них.
    Для того, щоб відправити дані через сокет, у класі Socketіснує клас getOutnputStream(), що повертає вихідний потік, з яким вже можна працювати як завжди. Для прийому інформацію потрібно скористатися методомgetInputStream(), який повертає вхідний потік. Далі з цим потоком можна працювати як із зазвичай після введення. Також варто відзначити, що при створенні клієнтського сокету (примірника класу Socket) в конструктор потрібно передати ip-адресау сервера та порт, на якому він працює приймаюча програма-сервер.
    При створенні серверного сокету (екземпляра класу ServerSocket) потрібно вказувати лише порт, через який буде працювати програма. Після цього викликається метод accept(). Цей метод чекає підключення клієнта, а потім повертає екземпляр класу Socket, необхідний для взаємодії з цим клієнтом. Далі працювати йде з екземпляром класу Socket, як у першому випадку (у разі клієнта).

  10. Головна відмінність у тому, що клас URL призначений для роботи з URL-рядком (парсинг URL-рядка), а Socket використовується для з'єднання з віддаленим сервером та відправки інформації на сервер та/або прийому інформації від сервера (хоча, використовуючи клас URL, можна отримати доступ до ресурсу, на який вказує URL, але робиться це не безпосередньо, а через об'єкт класу URLConnection). Також, якщо дивитися загалом, Socket використовується для зв'язку з сервером (іншою програмою), а URL - для доступу до ресурсу (наприклад, до файлу). Крім того, URL та URLConnection орієнтовані в основному на роботу з HTTP, тоді як Socket може працювати з будь-якими протоколами.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ