Постоянное соединение HTTP по сравнению с соединением сокета TCP

Тривиальный должен попросить, чтобы они кодировали поиск в ширину дерева с нуля. Да, если Вы знаете то, что Вы делаете, это тривиально. Но много программистов не знает, как заняться им.

Тот, который я нахожу более полезными все еще, следующие. Я дал это на многих языках, вот версия Perl. Сначала я даю им следующий пример кода:

# @a and @b are two arrays which are already populated.
my @int;
OUTER: for my $x (@a) {
  for my $y (@b) {
    if ($x eq $y) {
      push @int, $x;
      next OUTER;
    }
  }
}

Тогда я спрашиваю их следующие вопросы. Я медленно спрашиваю их, даю людям время для размышления, и готово дать им пошаговые перемещения:

  1. , Что находится в @int, когда этот код сделан?
  2. Этот код введен в эксплуатацию и существует проблема производительности, которая прослежена назад к этому коду. Объясните потенциальную проблему производительности. (Если они будут бороться, то я спрошу, сколько сравнений требуется, если @a и @b у каждого есть 100 000 элементов. Я не поиск определенной терминологии, просто задняя часть оценки конверта.)
  3. Без кода, предложите сделать это быстрее. (Если они предложат направление, которое легко кодировать, я попрошу, чтобы они кодировали его. Если они будут думать о решении, которое приведет к @int, изменяемому всегда (например, обычно заказывать), я продвину, чтобы видеть, понимают ли они, что не должны кодировать фиксацию прежде, чем проверить, имеет ли это значение.)

, Если они придумывают немного (или очень) неверное решение, следующий глупый набор данных найдет большинство ошибок, на которые Вы натыкаетесь:

@a = qw(
  hello
  world
  hello
  goodbye
  earthlings
);
@b = qw(
  earthlings
  say
  hello
  earthlings
);

я предположил бы, что о 2/3 кандидатов приводят этот вопрос к сбою. Я должен все же встретиться с компетентным программистом, который испытал затруднения из-за него. Я нашел, что люди с хорошим здравым смыслом и очень небольшим количеством фона программирования добиваются большего успеха на этом, чем средние программисты с несколькими годами опыта.

я предложил бы использовать эти вопросы в качестве фильтров. Не нанимайте кого-то, потому что они могут ответить на них. Но если они не могут ответить на них, затем не нанимайте их.

8
задан Kevin Boyd 26 September 2009 в 02:23
поделиться

1 ответ

  • Означает ли это, что с помощью этого механизма я могу фактически смоделировать Соединение через сокет TCP?

Не совсем, сокеты имеют МНОЖЕСТВО дополнительных функций и гибкости.

  • С его помощью я могу заставить сервер «отправлять» данные клиенту?

Не напрямую, это по-прежнему протокол запроса / ответа; постоянное соединение означает, что клиент может использовать один и тот же базовый сокет для отправки нескольких запросов и получения соответствующих ответов.

  • Все ли HTTP-соединения, даже то, которое я использую для подключения к стеку Переполнение «HTTP постоянный»?

Если ваш браузер (или особый сервер) не говорит иначе, да.

  • Использует ли технология COMET для принудительной отправки сервера этот механизм HTTP постоянное соединение для передачи данных клиенты?

Вроде (для потоковой передачи, по крайней мере), но с большим количеством взбитых сливок сверху. Существуют и другие подходы к реализации Comet, такие как скрытые фреймы и длинный опрос AJAX, которые могут не требовать постоянных соединений (которые в любом случае дают некоторые межсетевые экраны и т. Д .; -).

9
ответ дан 5 December 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: