Задачка для программистов умников )

12 3
L9
На сайте с 28.12.2009
Offline
53
1990

Меня пригласили на собеседование, но перед этим дали решить задачку:

CREATE TABLE `text_ads_statistics` (

`ad_id` int(10) unsigned NOT NULL,

`year` smallint(4) unsigned NOT NULL,

`month` tinyint(2) unsigned NOT NULL,

`day` tinyint(2) unsigned NOT NULL,

`hour` tinyint(2) unsigned NOT NULL,

`page_id` int(10) unsigned NOT NULL COMMENT 'page in site where the ad displayed',

`country` char(2) collate utf8_unicode_ci NOT NULL,

`impressions` int(10) unsigned NOT NULL,

`clicks` int(10) unsigned NOT NULL,

`conversions` int(10) unsigned NOT NULL,

PRIMARY KEY (`ad_id`,`year`,`month`,`day`,`hour`,`page_id`,`country`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `text_ads` (

`ad_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`display_title` VARCHAR( 60 ) NOT NULL ,

`display_desc` VARCHAR( 255 ) NOT NULL ,

`display_url` VARCHAR( 80 ) NOT NULL ,

`display_image_path` VARCHAR( 255 ) NOT NULL ,

`final_url` VARCHAR( 255 ) NOT NULL

) ENGINE = MYISAM

1. Эта система получает 3 миллиона показов каждый день. Каждый показ записывается. Обеспечьте эффективное решение для учёта статистики с наименьшей нагрузкой на сервер.

2. Система должна обеспечивать показы наиболее эффективно.

- Обеспечьте решение для подсчета эффективных показов банеров.

- Постройте класс который будет возвращать наиболее эффективные показы.

- Написать скрипт который будет использовать данный класс и показывать баннеры.

Решение на ПХП.

Пример работы системы тут http://pay-per-leads точка com/jobs/tests/1003/index.php

Вопрос :

Какое наиболее быстрое решение данной задачи ?

Может использовать какой либо шаблон проектирования ?

Я вот подумал о применение Singleton.

Программирую на ASP.NET, MVC, C#, ANGULAR JS
P
На сайте с 08.03.2007
Offline
250
#1

Где-то на хабре недавно была статья как раз про Ваш случай. Вам даётся задача, а Вы первым делом ищете шаблон проектирования. Попробуйте её просто решить.

L9
На сайте с 28.12.2009
Offline
53
#2
Pilat:
Где-то на хабре недавно была статья как раз про Ваш случай. Вам даётся задача, а Вы первым делом ищете шаблон проектирования. Попробуйте её просто решить.

Просто решить не проблема. Её просят решить эффективно !

А шаблоны проектирования как раз таки созданы для данных целей.

Спасибо, проверю что там на хабре писали ...

S
На сайте с 23.05.2004
Offline
316
#3
1. Эта система получает 3 миллиона показов каждый день. Каждый показ записывается. Обеспечьте эффективное решение для учёта статистики с наименьшей нагрузкой на сервер.

Пишем лог в файл, далее " LOAD DATA INFILE " по крону с нужной периодичность.

- Обеспечьте решение для подсчета эффективных показов банеров.

по крону анализируем таблицу 1, раз в сутки делаем подбиваем данные за 24 часа и вносим в таблицу 3, где хранится архив данных. Таблицу 1 чистим.

- Постройте класс который будет возвращать наиболее эффективные показы.

select туда, select сюда. Работаем с таблицей 3, где сжатие данные.

- Написать скрипт который будет использовать данный класс и показывать баннеры.

Что то мне это напоминает желание, под видом тестового задания получить рабочий вариант скрипта бесплатно.

`year` smallint(4) unsigned NOT NULL,
`month` tinyint(2) unsigned NOT NULL,
`day` tinyint(2) unsigned NOT NULL,
`hour` tinyint(2) unsigned NOT NULL,

Видя такую структуру таблицы, все больше убеждаюсь в желании получить готовый скрипт бесплатно, под видом тестового задания.

Это просто подпись.
L9
На сайте с 28.12.2009
Offline
53
#4

Интересное решение, я что-то о логе не подумал, писать в лог это явно преимущество над обращением в БД.

Анализы по Крону - тут дырка в моём образование, не слышал я о таком (

гугл пишет о анализах Крона в основном в медицине.

А сам алгоритм анализа я не нашёл, может у вас ссылка на это есть ?

Stek:
Что то мне это напоминает желание, под видом тестового задания получить рабочий вариант скрипта бесплатно.

Я в резюме писал, что у меня 1 год опыта с пхп. С ноля я ничего на пхп не писал. То есть работодатель должен понимать что я ему супер пупер систему не напишу )

Может есть ещё у кого ни будь мысли по реализации, данной системы ?

firefox19
На сайте с 05.11.2009
Offline
34
#5
`year` smallint(4) unsigned NOT NULL,
`month` tinyint(2) unsigned NOT NULL,
`day` tinyint(2) unsigned NOT NULL,
`hour` tinyint(2) unsigned NOT NULL,

"и эти люди запрещают ковыряться нам в носу!" (с)

В смысле: и эти люди говорят об эффективном использовании?

Кстати где это 3 лимона показов, в Яндексе?

Ваши идеи - наша работа (http://yaweb.ru) Продам Сайт агентства недвижимости (/ru/forum/561489)
S
На сайте с 23.05.2004
Offline
316
#6
Анализы по Крону - тут дырка в моём образование, не слышал я о таком (

cron - выполнение заданий по расписанию :)

Т.е. анализируем статистику не в реал тайме, а через условные промежутки времени. Результат сохраняем , а в дальнейшем уже работаем с готовым результатом.

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#7
меня 1 год опыта с пхп. С ноля я ничего на пхп не писал.

Если Вы за год ничего не можете с нУУУУля написать, у Вас никого опыта и нету. Вы обычный веб-мастер.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
_vb_
На сайте с 25.07.2009
Offline
104
#8
levka9:
Интересное решение, я что-то о логе не подумал

А вот в каком паттерне проектирования Вы бы нашли данное решение? 🚬

levka9:

Анализы по Крону - тут дырка в моём образование, не слышал я о таком (
гугл пишет о анализах Крона в основном в медицине.

Ржунимагу

Саратовская фракция серча (). Давайте посчитаемся.
R
На сайте с 13.06.2009
Offline
47
#9

Если можно, то можно использовать Redis (для пункта 1. уж точно).

-
На сайте с 07.12.2005
Offline
97
-K-
#10
levka9:
Может использовать какой либо шаблон проектирования ?
Я вот подумал о применение Singleton.

Ну ка покажи как применять собрался? 😂😂😂

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий