JavaRush /وبلاگ جاوا /Random-FA /سطح 40. پاسخ به سوالات مصاحبه در مورد سطح
lichMax
مرحله
Санкт-Петербург

سطح 40. پاسخ به سوالات مصاحبه در مورد سطح

در گروه منتشر شد
سطح 40. پاسخ به سوالات مصاحبه با موضوع سطح - 1در واقع سوالات زیر در این سطح بودند:
  1. آدرس IP چیست؟
  2. تفاوت بین هاست و دامنه چیست؟
  3. چه روش های HTTP را می شناسید؟
  4. تفاوت بین روش های GET، POST و HEAD چیست؟
  5. REST چیست؟
  6. چرا کلاس Calendar در جاوا مورد نیاز است؟
  7. چگونه تاریخ را در جاوا به فرمت دلخواه تبدیل کنیم؟
  8. تفاوت بین URI و URL چیست؟
  9. سوکت ها چیست؟
  10. تفاوت بین کلاس های سوکت و 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. دریافت، پست، قرار دادن، حذف، گزینه‌ها، سر، وصله، ردیابی، پیوند، لغو پیوند، اتصال.

  4. گرفتن پست سر
    درخواست بدن خیر بخور خیر
    بدنه پاسخگویی آره آره خیر
    کش کردن نتیجه درخواست آره خیر بله، سرفصل ها
    ناتوانی آره خیر آره

    متد GET برای درخواست محتویات یک منبع مشخص استفاده می شود. روش POST برای انتقال داده های کاربر به یک منبع مشخص استفاده می شود. روش HEAD معمولاً برای بازیابی ابرداده، بررسی وجود یک منبع (اعتبارسنجی URL) و دیدن اینکه آیا از آخرین باری که به آن دسترسی داشته‌اید تغییر کرده است استفاده می‌شود. روش HEAD مشابه روش GET است با این تفاوت که هیچ بدنه ای در پاسخ سرور وجود ندارد. متد GET یک نسخه ساده شده از POST در نظر گرفته می شود، زیرا متد GET به معنای درخواست کامل نیست، بلکه فقط یک URL به این صورت است.

  5. REST یک سبک معماری برای نحوه تعامل اجزای برنامه توزیع شده بر روی یک شبکه است. این اصطلاح توسط روی فیلدینگ در سال 2000 ابداع شد. او همچنین الزاماتی را معرفی کرد که یک برنامه کاربردی توزیع شده برای مطابقت با معماری REST باید برآورده شود (به چنین برنامه هایی RESTful نیز گفته می شود). اینها الزامات هستند:

    1. مدل Client-Server (به این معنی که شبکه باید از یک کلاینت و یک سرور تشکیل شده باشد؛ سرور کسی است که منابع را در اختیار دارد، مشتری کسی است که آنها را درخواست می کند))
    2. Отсутствие состояния (означает, что ни клиент, ни server не отслеживают состояния друг друга)
    3. Кеширование (клиенты и промежуточные узлы могут кешировать результаты requestов; сооответственно, ответы serverа должны иметь явное or неявное обоmeaning, что они кешируемые or некешируемые)
    4. Единообразие интерфейса (означает, что между клиентами и serverами существует общий язык взаимодействия, который позволяет им быть заменяемыми or изменяемыми, без нарушения integrity системы):
      • Определение ресурса (означает, что каждый ресурс должны быть обозначен постоянным идентефикатором)
      • Управление ресурсами через представление (означает, что клиент хранит ресурс в виде его представления, и при желании изменения ресурса он отправляет serverу информацию о том, в Howом виде он хотел бы видеть этот ресурс; server же рассматривает этот How request How предложение, и сам решает, что делать ему с хранимым ресурсом)
      • Самодостаточные messages (каждое сообщение содержит достаточно информации, чтобы понять, How его обрабатывать)
      • Гипермедиа (означает, что клиенты изменяют состояние системы только через действия, которые динамически определены в гипермедиа на server)
      • Система слоёв (означает, что в системе может быть больше двух слоёв (клиент и server), и при этом каждый такой слой знает только о своих соседних слоях, и не знает об остальных слоях, и взаимодействует только с соседними слоями)
      • Код по требованию (означает, что функциональность клиента может быть расширения за счёт загрузки codeа с serverа в виде апплетов or сценариев)

      Удовлетворение этим требованиям позволяет добиться следующего:

      • Надёжность
      • Производительность
      • Масштабируемость
      • Прозрачность взаимодействия
      • Простота интерфейсов
      • Портативность компонентов
      • Лёгкость внесения изменений
      • Способность эволюционировать, приспосабливаясь к новым требованиям
  6. Он нужен для более удобной работы с датой и временем. Он позволяет работать с датой в рамках календаря, то есть позволяет прибавлять и отнимать дни от Howой-то конкретной даты, причём будут учитывать и високосные года. Кроме того, он позволяет представить время миллисекундах в удобном виде - год, месяц, день, часы, minutesы, секунды. Также есть много методов для установки и получения разных параметров даты и времени, например: день недели, день месяца, день в году, номер недели в месяце, номер недели в году.
  7. Для этого существует удобный класс SimpleDateFormat. Экземпляру этого класс можно передать шаблон представления даты, и тогда он в таком виде будет возвращать date (в формате строки String), либо считывать date (из строки String). Выглядит это всё следующим образом:

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

  9. Сокеты — это связка IP-address + порт, позволяющая из внешней сети однозначно идентифицировать программу на компьютере or serverе. В Java для работы с сокетами есть два класса Socket и ServerSocket. Экземпляры первого класса играют роль клиента, экземпляры второго — роль serverа. Клиент может отправлять и принимать messages через сокет. Сервер же постоянно отслеживает requestы пользователей и отвечает на них.
    Для того, чтобы отправить данные через сокет, в классе Socket существует класс getOutnputStream(), возвращающий исходящий поток, с которым уже можно работать How обычно. Для приёма информацию нужно воспользоваться методом getInputStream(), который возвращает входящий поток. Дальше с этим потоком можно работать How с обычно потом ввода. Также стоит отметить, что при создании клиентского сокета (экземпляра класса Socket) в конструктор нужно передать ip-address serverа и порт, на котором он работает принимающая программа-server.
    При создании serverного сокета (экземпляра класса ServerSocket) нужно указывать только порт, через который будет работать программа. После этого вызывается метод accept(). Этот метод ожидание подключение клиента, а после этого возвращает экземпляр класса Socket, необходимый для взаимодействия с этим клиентом. Дальше работать идёт с экземпляром класса Socket, How в первом случае (в случае клиента).

  10. Главное отличие в том, что класс URL предназначен для работы с URL-строкой (парсинг URL-строки), а Socket используется для соединения с удалённым serverом и отправки информации на server и/or приёма информации от serverа (хотя, используя класс URL, можно получить доступ к ресурсу, на который указывает сам URL; но делается это не напрямую, а через an object класса URLConnection). Также, если смотреть в общем, то Socket используется для связи с serverом (другой программой), а URL — для доступа к ресурсу (например, к файлу). Кроме того, URL и URLConnection ориентированы в основном на работу с HTTP, тогда How Socket может работать с любыми протоколами.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION