Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Расчет шансов (спорный вопрос)
Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
Приветствую.
Сразу прошу прощения если не в ту ветку вопрос, сделайте скидку на то, что это первое мое сообщение на этом форуме
Находясь в поисках работы решил отправить повторно резюме в одну компанию, куда в феврале уже обращался. В тот раз как и в этот мне прислали тестовое задание из 4 задач. И как и в первый раз так и во второй, мне кажется, что программист, проверяющий решение, меня "прокатил". Что бы разобраться, прошу глянуть на код задание и код.
Необходимо написать класс или функцию, реализующую следующие требования:
- на вход подается массив указанного формата,
- на выход обязательно возвращается один ключ переданного массива,
- при многократном вызове функции ключи массива должны возвращаться с пропорциями,
указанными в значениях.
Пример:
На вход подается массив a=>1/8, b=>1/2, при запуске функции большое количество раз, в 20%
случаев должен вернуться ключ a, в остальных – b.
Задание решено неверно. Подход к решению содержит логическую ошибку, приводящую к тому, что единичный вызов даст на выходе массив, а не конкретный вариант. Большая серия вызовов с сохранением результатов в массив скрывает эту ошибку.
Правильное ли замечание он сделал? Я проверял с разными значениями массива, с разным количеством вызовов. Все работало идеально. Где я допустил ошибку?
В прошлый раз было задание по поиску в массиве. И после проверки программист ответил, что надо использовать array_diff, хотя я в комментариях написал, что такой подход работает медленнее, чем мой, на том же Стековерфлоу этот способ рассматривался неоднократно. Вот теперь пытаюсь понять - либо я действительно недопонимаю, либо программист проверяет тестовые задания "на пофиг"
Stierus
Отправлено: 21 Октября, 2015 - 10:21:41
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Требование 1
- на вход подается массив указанного формата,
У тебя на вход в функцию ничего не передается.
ТЗ не выполнено, это задание не засчитал бы и я
Что хотели от тебя: Что бы в одной функции, на основании переданной вероятности было принято решение, какой элемент массива вернуть (другими словами, составить функцию, которая бы с помощью генератора случайных чисел и полученных коэффициентов, отдала бы 1 ключ из тех, что получила) Ее можно вызвать 1 раз, 100 или 1000 000 - она работала бы одинаково, у тебя же хранится состояние (количество вызовов), от которого меняется вероятность выпадения того или иного ключа, а этого быть не должно
4online
Отправлено: 21 Октября, 2015 - 10:33:08
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
1) Меня смутило вот это в ответе
Цитата:
что единичный вызов даст на выходе массив, а не конкретный вариант
не представляю в каком случае вернется массив
2)
Stierus пишет:
- на вход подается массив указанного формата,
У тебя на вход в функцию ничего не передается.
Аргумент передается в конструктор класса.
3)
Stierus пишет:
Что хотели от тебя: Что бы в одной функции, на основании переданной вероятности было принято решение, какой элемент массива вернуть (другими словами, составить функцию, которая бы с помощью генератора случайных чисел и полученных коэффициентов, отдала бы 1 ключ из тех, что получила) Ее можно вызвать 1 раз, 100 или 1000 000 - она работала бы одинаково, у тебя же хранится состояние (количество вызовов), от которого меняется вероятность выпадения того или иного ключа, а этого быть не должно
при описанном тобой подходе, когда не сохраняется состояние, вероятность возврата рандомна. Тоесть по сути а может выпасть не в 20% случаев, а при каждом вызове, особенно если значения очень близки (49% и 51%, например). В моем же случае во всех тестах результат был требуемый в задании, я запустил 1000 раз метод call и мне ключ a вернулся 200, а ключ b 800 раз. Тестировал на разных массивах. При этом значения шли в разброс (a,a,b,a,b,b....), но когда а превышало свой лимит, возвращалось b
Stierus
Отправлено: 21 Октября, 2015 - 10:43:33
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Цитата:
не представляю в каком случае вернется массив
Он и не вернется, просто увидев логическую ошибку,программист не стал копаться в твоем коде
Цитата:
Аргумент передается в конструктор класса.
А это важно? Я не вижу ни слово про конструкторы в тз
Цитата:
при описанном тобой подходе, когда не сохраняется состояние, вероятность возврата рандомна.
Когда работаешь с вероятностями (а в коэффициентах именно она), странно жаловаться на не абсолютные значения. При единичном запуске твоя функция ведет себя совсем не по тз
Faraon-san
Отправлено: 21 Октября, 2015 - 12:31:28
Посетитель
Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013
Помог: 8 раз(а)
А я считаю, что парень справился с задачей.
А результат проверки работодателя, не верен, единичный вызов даст на выходе один ключ.
И придраться можно ко всему, от одинарных или двойных кавычек до заглавных букв в названии переменных.
MiksIr
Отправлено: 21 Октября, 2015 - 13:08:19
Забанен
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
Stierus пишет:
А это важно? Я не вижу ни слово про конструкторы в тз
А я не вижу фразу "подается на вход функции" в ТЗ (Добавление)
Faraon-san пишет:
И придраться можно ко всему, от одинарных или двойных кавычек до заглавных букв в названии переменных.
Не только можно, но и нужно.
----- self-banned
Faraon-san
Отправлено: 21 Октября, 2015 - 14:02:33
Посетитель
Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013
Помог: 8 раз(а)
MiksIr пишет:
Не только можно, но и нужно.
В каждой команде есть свои правила оформления кода, тестовых заданий это не должно касаться. Это тест на знание кода и формирование логики претендента.
MiksIr
Отправлено: 21 Октября, 2015 - 14:13:23
Забанен
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
Faraon-san пишет:
MiksIr пишет:
Не только можно, но и нужно.
В каждой команде есть свои правила оформления кода, тестовых заданий это не должно касаться. Это тест на знание кода и формирование логики претендента.
На что тест - знает только работодатель и не вам ему указывать Раздрай в оформлении кода часто гораздо более важный показатель, чем алгоритм, ибо это потенциальный рассадник ошибок. Важно не то, какой стиль, а его наличие. Хотя в моих глазах использование PSR - преимущество.
----- self-banned
Stierus
Отправлено: 21 Октября, 2015 - 14:19:16
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Ребят, вы это серьезно? Надеюсь, вы сейчас дико тролите или просто прикалываетесь. Задача выполнена не та, что ставилась, да и то, что сделано - работает с ошибками ... какие придирки, какой синтаксис?
MiksIr
Отправлено: 21 Октября, 2015 - 14:20:49
Забанен
Покинул форум
Сообщений всего: 378
Дата рег-ции: Сент. 2014
Помог: 10 раз(а)
[+]
С какими ошибками?
----- self-banned
Stierus
Отправлено: 21 Октября, 2015 - 14:25:10
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
MiksIr, при одиночном вызове отдаваться будет рандомный ключ, не смотря на то, какой коэффициент у него выставлен
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.