JavaRush /Java Blog /Random-TW /第 40 級。有關該級別主題的面試問題的答案
lichMax
等級 40
Санкт-Петербург

第 40 級。有關該級別主題的面試問題的答案

在 Random-TW 群組發布
第 40 級。有關第 1 級主題的面試問題的答案其實,以下問題就屬於這個層面:
  1. 什麼是IP位址?
  2. 主機和網域有什麼差別?
  3. 你知道哪些 HTTP 方法?
  4. GET、POST 和 HEAD 方法有什麼不同?
  5. 什麼是休息?
  6. Java中為什麼需要Calendar類別?
  7. 如何將Java中的日期轉換為所需的格式?
  8. URI 和 URL 有什麼區別?
  9. 什麼是套接字?
  10. Socket 類別和 URL 類別之間的差異?
這是我的答案:
  1. IP位址是建立在TCP/IP協定堆疊上的電腦網路中節點的唯一網路位址。網路需要全球唯一的位址;如果在本地網路上工作,則需要網路內位址的唯一性。在IPv4協定版本中,IP位址長度為4字節,在IPv6協定版本中,IP位址長度為16位元組。通常,IPv4協定版本中的IP位址被寫為4個十進位數字,其值從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是一種分散式應用程式元件如何透過網路進行互動的架構風格。該術語由 Roy Fielding 在 2000 年創造。他還介紹了分散式應用程式必須滿足的要求才能符合REST架構(此類應用程式也稱為RESTful)。這些是要求:

    1. 客戶端-伺服器模型(意味著網路應該由客戶端和伺服器組成;伺服器是擁有資源的人,客戶端是請求資源的人)))
    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