
Как Perl-разработчик, вы должны иметь четкое представление о синтаксисе, семантике и передовом опыте языка. Этот блог содержит множество вопросов и ответов на собеседованиях по программированию на Perl, которые помогут вам отточить свои навыки и продемонстрировать свой опыт во время собеседований при приеме на работу.
1. Как найти факториал числа с помощью цикла for, цикла while и рекурсии в Perl?
Использование цикла
use strict;
use warnings;
my $num = 6;
my $result = 1;
foreach (1..$num) {
$result = $_ * $result;
}
print " using for loop = $result\n"; #output : using for loop = 720
Использование цикла
use strict;
use warnings;
my $num = 6;
my $result = 1;
my $count = 1;
while ($count <= $num) {
$result = $count * $result;
$count++;
}
print "using while loop = $result\n"; #output : using while loop = 720
Использование рекурсивного цикла
use strict;
use warnings;
my $num = 6;
sub fact {
my $x = $_[0];
if ($x == 0 || $x == 1) {
return 1;
} else {
return $x * fact($x - 1);
}
}
print "using recursive = ".fact($num)."\n";
2. Как создать ряд Фибоначчи в Perl?
use strict;
use warnings;
print "Enter the number of terms: ";
my $num_terms = <STDIN>;
chomp $num_terms;
my ($prev, $curr) = (0, 1);
print "Fibonacci series:\n";
for (my $i = 0; $i < $num_terms; $i++) {
print "$prev\n";
($prev, $curr) = ($curr, $prev + $curr);
}
3. Как в Perl проверить, является ли число простым?
use strict;
use warnings;
sub Check_prime {
my $num = shift;
return 0 if $num <= 1;
foreach (2..sqrt($num)) {
return 0 if $num % $_ == 0;
}
return 1;
}
if (Check_prime(13)) {
print "is prime number\n";
}else{
print "is not prime number\n"
}
4. Как в Perl найти самый большой элемент массива?
use strict;
use warnings;
my @number = (54,65,21,53,98,47,26,35);
my $result = 0;
foreach(@number){
if($result < $_){
$result = $_;
}
}
print "$result\n";
5. Сумма всех чисел в массиве.
use strict;
use warnings;
my @number = (54,65,21,53,98,47,26,35);
my $result = 0;
foreach(@number){
$result += $_;
}
print "$result\n";
6. Как перевернуть заданную строку в Perl?
my $str = "Suraj";
my $res;
my @arrStr = split('',$str);
for (my $var = $#arrStr; $var >= 0; $var--) {
$res .= $arrStr[$var];
}
print "$res\n";
7. Удалите повторяющийся элемент из массива.
use strict;
use warnings;
my @array = (1,85,54,1,55,85,65,52,54);
my @result;
my %hash;
foreach(@array){
if(!$hash{$_}){
$hash{$_} = $_;
push(@result,$_);
}
}
print "@result\n";
8. Отсутствует элемент в массиве
use strict;
use warnings;
my @array = (1,2,3,4,5,7,8,9);
my %hash;
foreach(@array){
$hash{$_} = 1;
}
for(my $i = 1; $i <= $#array + 1; $i++){
if(!$hash{$i}){
print "Missing element is $i\n";
}
}
9. Распечатайте число от 1 до 100 без использования петель
use strict;
use warnings;
my $num = 100;
sub Print_num {
my ($start, $end) = @_;
if($start <= $end){
print "$start\n";
Print_num($start + 1, $end);
}
}
Print_num(1, $num);
10. Замена переменной без использования временной переменной
use strict; use warnings; my $num1 = 10; my $num2 = 20; # Before swaping print "Before swaping => $num1 , $num2 \n"; ($num1, $num2) = ($num2, $num1); #After swaping print "After swaping => $num1 , $num2 \n";
11. Сортировка массива с помощью пузырьковой сортировки в Perl
use strict;
use warnings;
my @Number = (84,52,95,35,42,18,5,73,24,0,9);
for(my $i = 0; $i<= $#Number; $i++){
for(my $j = 0; $j < $#Number - $i; $j++){
if($Number[$j + 1] < $Number[$j]){
($Number[$j], $Number[$j + 1]) = ($Number[$j + 1], $Number[$j])
}
}
}
print "@Number\n";
12. Отсортируйте массив с помощью быстрой сортировки в Perl
use strict;
use warnings;
my @Number = (84,52,95,35,42,18,5,73,24,0,9,6);
sub Sort_number {
my @arr = @_;
return @arr if @arr < 2;
my $p = pop(@arr);
return Sort_number(grep{ $_ < $p } @arr),$p,Sort_number(grep{ $_ > $p } @arr)
}
my @Result = Sort_number(@Number);
print "@Result\n";
13. Найдите значение из заданного массива с помощью линейного поиска.
use strict;
use warnings;
my @Number = (84,52,95,35,42,18,5,73,24,0,9,6);
my $num = 73;
my $Result;
foreach(@Number){
if($_ == $num){
$Result = $_;
last;
}
}
if($Result){
print "Value is present\n";
}else{
print "value is not present\n";
}
14. Найдите значение из заданного массива с помощью бинарного поиска.
use strict;
use warnings;
my @Number = qw(0 5 6 9 18 24 35 42 52 73 84 95);
sub binary_search{
my ($num, $list) = @_;
my $low = 0;
my $high = @{$list} + 1;
while($low <= $high){
my $mid = int(($low + $high)/2);
if($num < $list->[$mid]){
$high = $mid - 1;
next;
}
if($num > $list->[$mid]){
$low = $mid + 1;
next;
}
return $mid;
}
}
if(binary_search(42, \@Number)){
print "Value is present\n";
}else{
print "Value is not present\n";
}
15. Найдите самый длинный палиндром в данном слове
use strict;
use warnings;
my $str = "bababababbaa";
sub palindrome_check{
my ($s) = @_;
my $longest_Str = '';
for my $i (0..length($s) - 1){
for my $j($i..length($s) - 1){
my $sub = substr($s,$i, $j - $i + 1);
if($sub eq reverse($sub) && length($sub) > length($longest_Str)){
$longest_Str = $sub;
}
}
}
return $longest_Str;
}
print palindrome_check($str);