Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
fh = fopen($fname, 'r');
# Обработчик ответов от DNS-сервера:
{ my $d = qr/[^\x00\xc0-\xff]*(?:\x00|[\xc0-\xff].)/xms;
sub IO {
my ($self, $io) = @_;
die "Oops. DNS resolver just died: $io->{err}" if $io->{events} & $ERR;
my ($id,$flags,undef,$an) = unpack 'nnnn', my $pkt = delete $io->{in_buf};
# Молча игнорируем "неправильные" пакеты - с неизвестным ID (вероятно,
# дубликаты уже принятого ответа посланные в ответ на наши перепосылки
# запроса по $TO_DNS_RESEND) и с известным ID но несовпадающим host
# (либо глюк DNS-сервера, либо ID-шка слишком быстро "перекрутилась").
return if !$DNS[$id];
return if $pkt !~ s/^.....\x01......\Q$DNS[$id]{_host}\E.\x01..//xms;
my $query = $DNS[$id];
# Если кому-то ещё нужен результат... :)
if (defined $query->{cb}) {
# Обработать ошибки ресолвинга.
if ($flags &= 0x0f) {
run_callback(@{ $query }{'cb','method','host'}, undef,
dualvar(-1, 'dns error: '.($flags==3 ? 'NXDOMAIN' : 'SRVERROR'))
);
}
elsif (!( ($pkt =~ s/^[^\x00\xC0-\xFF]*(?:\x00|[\xC0-\xFF].).\x01........//s) ||
(($an > ($pkt =~ s/\G$d.(?:[\x02\x05\x0C].{8}$d|\x06.{8}$d$d.{20}|\x0F.{8}..$d)//sog)) &&
($pkt =~ s/^$d.\x01.{8}//so)) )) {
run_callback(@{ $query }{'cb','method','host'}, undef,
dualvar(-1, 'dns error: NODATA')
);
}
# IP подкрался незаметно...
else {
run_callback(@{ $query }{'cb','method','host'},
sprintf('%d.%d.%d.%d', unpack 'CCCC', $pkt)
);
}
}
$DNS[$id] = undef;
return;
}}
preg_match_all('/^([^ ]+).+\\[([^\\]]+)\\] "([^"]+)"/', $string, $matches, PREG_SET_ORDER). 35 секунд. Где же обещанное падение производительности в полтора раза? Наверно, я что-то делаю не так?..if(!preg_match_all('/^([^ ]+) (.+)$/', $string, $matches, PREG_SET_ORDER)) continue;
$ip = $matches[0][1];
if(isset($status[$ip]['blocked'])) continue;
if(!preg_match_all('/\\[([^\\]]+)\\] "([^"]+)"/', $matches[0][2], $matches2, PREG_SET_ORDER)) continue;
list($full, $time, $doc) = $matches2[0];
$time = strtotime($time);На решение давалось от часа, до двух времени (в зависимости от хода мысли человека), последний раз она была решена за 1 час 20 минут. Всего решили задачу примерно 10% соискателей.афигеть - сидеть больше часа решать задачу... видать у вас очень много свободного времени, что можете себе позволить на собеседовании тратить более часа на решение только одной! задачи.
В процессе интервьюирования важно помнить следующее: лучше отказаться от хорошего кандидата, чем нанять плохого. Плохой работник будет стоить кучу денег, усилий и времени, которое другие люди потратят, исправляя его ошибки.
Вообще времени изначально час, но не прогонять же человека. Всякое бывает.а вы только одну задачу даете и на ее основе ведете беседу?
Именно поэтому стараемся не доводить каждого претендента до решения задачи, это действительно отнимает время, хотя пока кандидат решает, все работают.ясно. еще не плохо получается давать такие задачки на дом, а потом на месте разбираться - причем не важно, сам решил он ее или нет - главное чтобы понимал о чем речь и умел отстоять свою точку зрения(причем важен то сам процесс)
Тематические Медиа: задача для собеседования