Модераторы: группа: Модератор, группа: Комодератор
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тестовое задание на вакансию веб-программиста 
V
    Опции темы
Всемогущий
Дата 8.10.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск




Сразу оговорюсь что я не претендую на эту вакансию.

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

На мой взгляд,если делать это задание по всем канонам нужно облажиться книгами ,и неделю не спать не есть.
потом тебе скажут спасибо,а твой труд (*) будут использовать на многих пороектах.

(*)на такой проге можно построить не один движок.
 
Цитата

Есть текстовый файл, в котором находится описание дерева в следующем виде:
node_id|parent_id|node_name
parent_id - id родителя, если оно равно 0 - это корневой узел.

Задача: отобразить этот файл в виде дерева, с отступами для каждого уровня табуляциями (первый уровень - ноль табуляций, второй уровень - одна, и т.д.).
Файл-пример содержит:
1|0|Electronics
2|0|Video
3|0|Photo
4|1|MP3 player
5|1|TV
6|4|iPod
7|6|Shuffle
8|3|SLR
9|8|DSLR
10|9|Nikon
11|9|Canon
12|11|20D


Важные моменты по заданию: выполнить его надо без лишних итераций, не стОит показывать всё что вы знаете в php, лучше сделайте код оптимальным. Код должен быть читаемым. При решении задания довольно часто делается типичная ошибка - создается линейный массив, который затем отображается
рекурсивно путем многократного полного перебора элементов. Все решения, основанные на данном принципе будут считаться неудовлетворительными. Сформируйте в памяти такую структуру данных, для вывода которой не приходилось бы просматривать один элемент больше одного раза.


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
SelenIT
Дата 8.10.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot




Ну и что тут такого?
Код

<pre><?php
function show_tree($tree, $pid, $level=0) {
    foreach ($tree[$pid] as $id=>$name) {
         echo str_repeat("\t",$level).$name."\n";
         if (isset($tree[$id])) show_tree($tree, $id, $level+1);
    }
}
$tree = array();
$fp = fopen('data.txt', 'r');
while ((list($id, $pid, $name) = fgetcsv($fp, 1024, '|')) !== FALSE) {
      $tree[$pid][$id] = $name;
}
fclose($fp);
show_tree($tree, '0');
?></pre>


Это сообщение отредактировал(а) SelenIT - 8.10.2007, 18:34


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
JackYF
Дата 8.10.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р




Цитата(Всемогущий @  8.10.2007,  17:56 Найти цитируемый пост)
На мой взгляд,если делать это задание по всем канонам нужно облажиться книгами ,и неделю не спать не есть.
потом тебе скажут спасибо,а твой труд (*) будут использовать на многих пороектах.

(*)на такой проге можно построить не один движок.

на пхп не пишу, и навскидку не предложу хороший алгоритм этого дела.

Но по сабжу я не согласен. Не понимаю, какой тут такой получится супер-движок? Движок чего? отображения дерева?
Не вижу ничего концептуального или нового. При знание предмета здесь понадобятся максимум пару часов, а никак не неделя и гора книжек (зачем?)

Добавлено через 4 минуты и 51 секунду
О, я даже слишком пессимистичную оценку дал.
SelenIT за менее чем полчаса накатал smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
SelenIT
Дата 8.10.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot




Не только накатал, но даже проверил (не люблю постить непроверенный код;).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Всемогущий
Дата 8.10.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск




smile  smile

Добавлено через 20 секунд
рыдаю


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
SelenIT
Дата 8.10.2007, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot




Всемогущий, ну рыдать-то незачем... Я лишь применил вполне стандартный прием для вывода дерева (id-parent_id) целиком из базы. К тому же в моем коде нет проверки на валидность данных в файле (верное кол-во разделителей в каждой строке, отсутствие циклических зависимостей и т.д.). Но и слишком усложнять простые задачи, имхо, тоже ни к чему. Особенно в тестовых заданиях, где важна скорость... smile

Цитата(Всемогущий @  8.10.2007,  17:56 Найти цитируемый пост)
типичная ошибка - создается линейный массив, который затем отображается
рекурсивно путем многократного полного перебора элементов.

Когда-то в молодости я почти так и делал, только массив у меня был уже отсортированный и перебирал я только оставшуюся часть. В итоге работало (да и сейчас работает на паре десятков сайтов;) как надо, причем едва ли не быстрее, чем однопроходная рекурсия. Но объяснить свой итоговый код (напр., почему в одном месте понадобилось "прыгать" на 2 индекса вместо одного) я не мог smile.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Флейм"
Тут модерируют вообще все кому не лень!

Это "Песочница"!!!

В разделе не действуют многие правила:

  • Можно оффтопить
  • Можно флудить, но не увлекаться
  • Можно общаться на темы, не только связанные с программированием.
  • Если вы поставили здесь адекватный вопрос, не ждите адекватного ответа.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать
  • Материться
  • Уныло обсуждать унылые вещи

Напоминаем о существовании волшебной кнопочки Репорт. Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джинна-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:

Лучшее в Камасутре - это введение!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Все кому не лень.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Песочница | Следующая тема »


 




[ Время генерации скрипта: 0.1130 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.