Skip to content

Instantly share code, notes, and snippets.

@narqo
Created October 16, 2012 10:33
Show Gist options
  • Save narqo/3898567 to your computer and use it in GitHub Desktop.
Save narqo/3898567 to your computer and use it in GitHub Desktop.
Задания для JS-стажера

Решения оформлять в виде репозитория на github.


Написать функцию, которая проверяет, является ли входящая строка палиндромом.


По какому-либо событию на странице выполняется определённое действие. Выполнять его чаще, чем n раз в секунду слишком «дорого».

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


Есть массив CSS-классов, используемых в документе. Причём некоторые из них повторяются:

[
'b-statcounter',
'b-statcounter__metrika',
'b-statcounter__metrika_type_js',
'i-bem',
'b-search__table',
'b-form-input',
'b-form-input_theme_grey',
'b-form-input_size_l',
'i-bem',
'b-form-input__input',
'b-search__button',
'b-form-button__content',
'b-form-button__text',
'b-form-button__input',
'i-bem',
'b-main-menu',
'b-main-menu__tab',
'b-main-menu__tab',
'b-main-menu__tab',
'b-main-menu__tab',
'b-main-menu__tab_type_selected',
'b-main-menu__tab',
'b-main-menu__tab_type_selected',
'l-page__right',
'b-static-text',
'b-static-text',
'b-foot__layout-column',
'b-foot__layout-column_type_left',
'b-link',
'b-foot__link',
'b-foot__layout-column',
'b-foot__layout-column',
'b-foot__layout-column_type_center',
'b-link',
'b-foot__link',
'b-foot__layout-column',
'b-foot__layout-column_type_penultima',
'b-link',
'b-foot__link',
'b-foot__layout-column',
'b-foot__layout-column_type_right',
'b-copyright__link',
'b-foot__layout-gap-i'
]

Написать код, который заменял бы самый частоиспользуемый класс на a, следующий по частотности — на b, и т.д. После того как использована буква z, следует использовать комбинации aa, ab, ac и т.д.


Дан массив из строк:

var list = ['logo', 'logo-title', 'logo-head', 'tab-www', 'tab-more', 'tab-more-auto', 'tab-more-afisha', 'tab-more-money', 'login', 'settings'];

Строки соответствуют регулярному выражению [a-z-]+.

Мы хотим отправить эти значения на сервер в GET-запросе: http://host.com/{path}, где {path} содержит все данные из list.

  1. Придумайте такой формат path, который позволяет передать данные минимальным числом символов.
  2. Напишите функцию, которая будет сериализовать данный массив в строку вашего формата. Напишите функцию, которая будет распаковывать их обратно в исходный массив.

Алгоритм должен быть симметричен, т.е. удовлетворять условию:

JSON.stringify(list) === JSON.stringify(listToPath(pathToList(list)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment