Вопросы каждый хороший разработчик Perl должен иметь возможность ответить
Вдохновленный исходной нитью и вверх и вперед клоны, здесь один для сообщества Perl.
Какие вопросы должен отвечать хороший программист на Perl?
Ответы
Ответ 1
Вопросы
- Что такое ссылка?
- Как Perl реализует ориентацию объекта?
- Как объектная ориентация Perl отличается от других языков, таких как С# и Java?
- Традиционная ориентация объектов в ядре Perl в значительной степени была заменена тем, что?
- В чем разница между пакетом и модулем?
- Какие функции были реализованы в 5.10?
- Что такое преобразование Шварца?
-
Объясните разницу между этими строками кода и значениями переменных.
my $a = (4, 5, 6);
my @a = (4, 5, 6);
my $b = 4, 5, 6;
my $c = @a;
-
Каковы некоторые из самых сильных сторон Perl?
- Каковы некоторые из самых слабых сторон Perl?
- Назовите несколько признаков "современного Perl".
- Что делает оператор привязки?
- Что делает флип-флоп-оператор?
- В чем разница между for и foreach?
- Что делает Perl трудным для синтаксического анализа?
- Что такое прототипы?
- Что такое AUTOLOAD?
- Что такое девиз Perl?
- Что делает
use strict;
? Почему это полезно?
-
Что делает следующий блок кода?
print (3 + 4) * 2;
Испытания
- Внедрите
grep
с помощью map
.
- Внедрить и использовать таблицу рассылки.
- Учитывая блок текста, замените слово в этом блоке на возвращаемое значение функции, которая принимает это слово в качестве аргумента.
- Внедрить модуль, включая документацию, совместимую с
perldoc
.
- Сбросить файл.
- Нарисуйте таблицу, которая иллюстрирует концепцию правды Perl.
Ответ 2
Почему use strict
полезно?
Ответ 3
Мой вопрос перехватчика Какая разница между списком и массивом?.
Мне также нравится спрашивать людей, чтобы показать мне как можно больше способов определения области. Там тот, который люди почти всегда забывают, а другой, который, по мнению большинства людей, обеспечивает область действия, но не делает.
Ответ 4
В чем разница между
if ($foo) { ... }
и
if (defined $foo) { ... }
и когда вы должны использовать один над другим?
Ответ 5
- В чем разница между
my
и our
?
- В чем разница между
my
и local
?
- Для вышесказанного, когда это целесообразно использовать один над другим?
Ответ 6
- Что такое контекст контекста и скалярный контекст?
- В чем разница между
my $x = ...
и my($x) = ...
?
- Что делает
my($x,undef,$z) = ...
?
- Почему
my(@a,@b) = (@list1, @list2)
может быть ошибка?
- Как пользовательский субподрядчик знает, был ли он вызван в списке или скалярном контексте? Приведите пример того, когда смысл одного и того же субпользователя возвращать разные значения в одном контексте или другом.
Ответ 7
В чем разница между /a(.*)b/
и /a(.*?)b/
?
Ответ 8
Что не так с этим кодом?
my @array = qw/a b c d e f g h/;
for ( @array ) {
my $val = shift @array;
print $val, "\n";
}
Ответ 9
my $a = 1;
if($a) {
my $a = 2;
}
print $a;
Каково значение $a в конце?
Ответ 10
Что не так с использованием переменной в качестве имени переменной?
Учебное пособие: Часть 1, Часть 2 и Часть 3.
Ответ 11
Я думаю, что подход brian d foy - это гениальная тактика для проверки знаний, понимания и пристрастий к языку и программированию в целом: Что такое пять вещей, которые вы ненавидите в своей любимой язык?. Если они не могут назвать 5, они, вероятно, не велики с языком или полностью не подходят для других подходов.
Он применяет это к людям, пытающимся нажать язык: я бы расширил это и сказал, что он здесь применим. Я ожидаю, что каждый хороший программист Perl сможет назвать пять вещей, которые им не нравятся. И я бы ожидал, что эти пять вещей будут иметь некоторую заслугу.
Ответ 12
Напишите код, который создает умеренно сложную структуру данных, скажем, массив хэшей массивов. Как вы получите доступ к определенному листу? Как бы вы прошли через всю структуру?
Ответ 13
Для каждой из следующих проблем, как вы решаете это с помощью хэшей?
- Вычислить отношения набора, например, объединение, пересечение, взаимное исключение.
- Найдите уникальные элементы списка.
- Напишите таблицу рассылки.
Ответ 14
Мой любимый вопрос. Отсутствует код:
open(my $fh, "<", "file.txt");
while (<$fh>) {
print $_;
}
close($fh);
Этот вопрос должен открыть дискуссию об обработке ошибок в perl. Он также может быть принят и на других языках.
Ответ 15
Несколько месяцев назад, хроматический автор Modern Perl, написал аналогичную хорошую статью "Как определить хорошего программиста на Perl", который содержит список вопросов, на которые должен отвечать каждый хороший программист Perl.
Некоторые из этих приятных вопросов приведены ниже:
-
В чем разница между доступом к элементу массива с помощью $items[$index]
и @items[$index]
?
-
В чем разница между ==
и eq
?
-
Как вы загружаете и импортируете символы из модуля Perl 5?
-
В чем разница на стороне вызывающего абонента между return;
и return undef;
?
-
В чем разница между чтением файла с помощью for
и while
?
Для получения полной информации прочитайте Как определить хорошего Perl-программиста.
Ответ 16
Как оценивается $foo->{bar}[$baz]($quux)
?
Ответ 17
Что такое лексическое закрытие? Когда закрытие полезно? (Пожалуйста, никаких контр-создателей!)
Ответ 18
В чем разница между контекстом списка и скалярным контекстом. Как вы получаете доступ к каждому из них? Существует ли такая ситуация, как хэш-контекст? Может быть, немного?
Ответ 19
Как заменить значения двух переменных без использования временной переменной?
Ответ 20
-
Что делает этот однострочный шрифт и почему:
perl -pe '}{$_ = $.' file
answer: количество строк в файле, похожее на wc -l
.
-
Что не так с этим кодом:
my $i;
print ++$i + ++$i;
answer: изменение переменной дважды в одном выражении приводит к поведению undefined.
-
Простой: будет ли запуск if:
my @arr = undef;
if (@arr) { ... }
answer: yes
-
Как бы вы закодировали встроенный reverse()
perl? Вы можете использовать другие функции perl.
answer: много способов. Короткий: sub my_reverse {sort {1} @_})
Ответ 21
Я также, вероятно, буду копаться в регулярном выражении, так как я ожидаю, что каждый хороший программист Perl сможет управлять регулярным выражением (но не только). Возможные вопросы:
- что такое lookahead и утверждение lookbehind/modifierq?
- Как вы проверяете, идентичны ли две отдельные части регулярного выражения?
- что означает жадный?
- Что такое классы символов Posix?
- Что соответствует \b?
- Что такое модификатор \c?
- как вы предварительно скомпилируете регулярное выражение?
Ответ 22
Каков правильный способ инициализации пустой строки?
my $str = q{};
или
my $str = "";
или
my $str = '';