JavaRush /Java 博客 /Random-ZH /第 40 级。有关该级别主题的面试问题的答案
lichMax
第 40 级
Санкт-Петербург

第 40 级。有关该级别主题的面试问题的答案

已在 Random-ZH 群组中发布
第 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地址被写为四个十进制数字,其值从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. 无状态(意味着客户端和服务器都不跟踪彼此的状态)
    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