Skip to content

Instantly share code, notes, and snippets.

View klopp's full-sized avatar

Vsevolod Lutovinov klopp

  • Russia
  • 06:57 (UTC +03:00)
View GitHub Profile
package AA;
sub func { print "AA\n" }
package BB;
use parent 'AA';
sub func { print "BB\n"; shift->SUPER::func(@_); }
package CC;
use parent 'AA'
sub func { print "CC\n"; shift->SUPER::func(@_); }
#
# Что произойдет с памятью в этом примере и почему? Как исправить положение?
#
while (1) {
my $a = {};
$a->{func} = sub {
$a->{cnt}++;
};
}
# Здесь счётчик ссылок на $a сохраняется в контексте func, поэтому
#!/usr/bin/perl
# Напишите на Perl примитивный базовый класс MyApp::Accessor для
# использования в качестве базового класса для генерации ацессоров
# (методов которые сохраняют и отдают свойство объекта). Ацессоры должны
# работать настолько быстро, насколько это возможно в принципе. Какими
# технологиями/модулями, по вашему, лучше всего пользоваться в реальной
# разработке для создания ацессоров?
# P.S. Accessor – это примитивная функция, которая служит для доступа к
# свойству объекта извне. Т.е. $obj->property() – возвращает значение,
#!/usr/bin/perl
use Modern::Perl;
use Carp qw/confess/;
use constant ARRAY_SIZE => 1_000_000;
use constant ITER_N => 1_000;
# ------------------------------------------------------------------------------
# Поиск индекса ближайшего к заданному элемента отсортированного массива.
# Возвращает индекс в массиве и количество шагов, которое понадобилось
#!/usr/bin/perl
# Дан хеш %h. Необходимо удалить из него лишние пары, у которых
# значения повторяются (т.е. только 1 такую пару оставить) наиболее
# эффективным методом. В хеше может быть миллион пар, так что
# приоритет – процессорное время.
use Modern::Perl;
# Ахтунг! Во всех вариантах не учитывается порядок следования ключей.
#
# Чем отличаются между собой переменные, объявленные с помощью my, our,local, state?
# Что и почему напечатается, если в качестве XXX подставлять вышеуказанные 4 типа объявления переменных?
#
func() for 1..10;
sub func {
my $var;
$var++;
say "A=$var";
}
@klopp
klopp / ctu.c
Created September 16, 2016 09:11
Тестовое задание
#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
/* -----------------------------------------------------------------------------
* Написать функцию, которая меняет первые буквы слов на заглавные и сохраняет
* их в отдельную строку.
*
#!/usr/bin/env perl
# -----------------------------------------------------------------------------
use Modern::Perl;
use AnyEvent;
use AnyEvent::HTTP;
use Const::Fast;
# -----------------------------------------------------------------------------
# Задача: распараллелить N действий так, чтобы в T секунд совершалось не больше
@klopp
klopp / calc.c
Last active July 18, 2016 10:49
Тестовое задание
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <limits.h>
/* ----------------------------------------------------------------------------
* Напишите программу, которая считывает со стандартного ввода строку и выводит
* на стандартный вывод значение арифметического выражения, содержащегося в
* этой строке.
@klopp
klopp / mojo-spider.pl
Last active July 13, 2016 15:26
Тестовое задание
#!/usr/bin/env perl
# ------------------------------------------------------------------------------
# Написать скрипт, который принимает в аргументах url с сайтом и делает
# рекурсивный обход всех страниц этого сайта (как указанного в аргументе,
# так и его поддомены, если они будут встречаться) и выводит их в виде дерева
# на stdout.
#
# Необходимо использовать Mojo::IOLoop, Mojo::UserAgent и Mojo::DOM для решения.
#