Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 18.03.2020
Сообщений: 2

Не взяли на работу из-за неправильно выполненного тестового задания, посмотрите?

18.03.2020, 16:35. Показов 4174. Ответов 13

Студворк — интернет-сервис помощи студентам
Привет.
Устраиваюсь в одну контору на Junior Python 40 тыс.р до вычета. Сегодня ответили: “Бла бла бла…На данный момент не готовы сотрудничать по этой вакансии: есть замечания к тестовому”.
Выполнил тестовое за полтора дня - итого часов 8, учитывая, что ранее вообще на питоне не писал. Они проверяли 4 дня, у меня никогда так долго еще не проверяли тестовые, там по сути и проверять нечего.
Прилагаю ТЗ и написанный скрипт + пояснения. Там плевое дело.
Опытные товарищи, посмотрите пожалуйста, где же я наделал “замечаний”. Может действительно это никуда не потянет, или не взяли по другим причинам.
Вложения
Тип файла: zip ТЗ+скрипт+мои пояснения.zip (4.6 Кб, 79 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.03.2020, 16:35
Ответы с готовыми решениями:

Проверить и прокомментировать вариант решения тестового задания при приёме на работу
Приветствую! Сделал тестовое задание, которое попросил сделать один работодатель, на что получил отказ и комментарий о том, что "оно...

Коректное отображение тестового задания
Вопросы тестов хранятся в таком виде data= new baza("Выберите...

Концепция решения тестового задания
Подскажите хотя бы куда двигаться в решении следующего задания: С помощью фреймворка PRISM 4 построить тестовое приложение используя ...

13
102 / 75 / 38
Регистрация: 08.11.2017
Сообщений: 272
18.03.2020, 17:36
xahotaf452, а как вы хотели сразу пройти, ранее не писавши на питоне ? Разбираться в коде не охото, но выглядит стрёмно.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.03.2020, 18:03
Давайте по порядку:
1) нет функции main()
2) нет к-л консольного интерфейса (argparse)
Предусмотреть возможные сбои в сети или при записи на диск.
3) замалчивание исключений - плохая идея.
4) неумение пользоваться библиотекой requests
Python
1
2
r = requests.get('https://jsonplaceholder.typicode.com/users')
users = r.json()
5) нет инструкции по развёртыванию (req...txt)
6) нет шелл-банга
7) запускаете третий питон, а используете синтаксис второго

8) строки в питоне не мутируемые, так работает медленно:
Python
1
compl_tasks += task_title + '\n'
Лучше:
Python
1
2
3
compl_tasks.append(task_title)
#…
res = '\n'.join(compl_tasks)
9) в сам алгоритм не вникал, но как минимум вижу возможность перезатирания старого файла, если новый нельзя создать.

Добавлено через 52 секунды
10) ну и классика:
Python
1
'файлов ' + str(1)
https://pyformat.info/
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.03.2020, 18:04
Код должен быть чистым, без необоснованных повторений, с выделенем функций
Это означает что вы должны всегда использовать функции.
Предусмотреть возможные сбои в сети или при записи на диск
Не сделано. Предусмотреть сбой это не значит "перехватить и геройски умереть". Это значит "перехватить и подождать, когда сбой починится".

Код сделать максимально эффективным
Подразумевается асинхронка, чтобы не тупить на одном запросе если он подвис.

Предусмотреть крайние случаи (у пользователя нет задач, и т.п.).
Не сделано.

Код должен быть оформлен по pep8.
Не выполнено. (в коде без функций очень трудно сделать нормальное оформление)

Для подобного кода 80 строк маловато...
0
0 / 0 / 0
Регистрация: 18.03.2020
Сообщений: 2
18.03.2020, 18:10  [ТС]
Это все на джуна?
0
102 / 75 / 38
Регистрация: 08.11.2017
Сообщений: 272
18.03.2020, 18:13
xahotaf452, конечно, вы же не думали пройти тестовое задание написав кривой скрипт и увидев питон первый раз в жизни))
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.03.2020, 18:16
Цитата Сообщение от Garry Galler Посмотреть сообщение
Это значит "перехватить и подождать, когда сбой починится".
Ну не совсем. Для сети может и есть смысл сделать несколько попыток с интервалом в несколько секунд (количество попыток задаётся аргументами в консоли).

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

Цитата Сообщение от xahotaf452 Посмотреть сообщение
Это все на джуна?
Это далеко не всё. Там и знание теории баз данных, как работает сеть, маршрутизация и протоколы, использование системы контроля версий и прочее.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.03.2020, 18:25
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Для сети может и есть смысл
Я для сети и имел ввиду.
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
сделать несколько попыток с интервалом в несколько секунд (количество попыток задаётся аргументами в консоли).
Хотя бы это. Но лично я все свои грабберы делал вечными. Они никогда не умирали :-) Только по предусмотренному хоткею.
0
18.03.2020, 18:32

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
Но лично я все свои грабберы делал вечными. Они никогда не умирали :-)
Я сегодня запускал с такими ключами:
Bash
1
wget -rc --read-timeout=10 -t 3 url
Потому что кривой сайт на некоторые адреса не отдавал данные и соединение что-то никак не рвалось по таймауту. И наоборот, закачка некоторых файлов иногда обрывалась.

Так что могут быть ньюансы :) Граббер может наткнуться на такой адрес-"ловушку" и повиснуть на бесконечное время

0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.03.2020, 18:47
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
кривой сайт на некоторые адреса не отдавал данные
У меня все ходы записаны :-) Так что проверялось абсолютно все. Вплоть до соответствия заголовка страницы.
Не говоря уж о пустых ответах или ответах, чье время ожидания превысило допустимый таймут.
0
18.03.2020, 19:02

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
Не говоря уж о пустых ответах или ответах, чье время ожидания превысило допустимый таймут.
В том-то и подвох, что запрос отправлялся, а ответа не дождёшься. Подозреваю, что ещё TCP keep-alive работал от веб-сервера. Если парсер однопоточный - 100% lock.

0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.03.2020, 19:16
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
запрос отправлялся, а ответа не дождёшься
Ну для этого как раз и таймаут нужен. В requests он предусмотрен как параметр. Если же его не использовать, то ожидание ответа будет равно 2 часам (на винде), после чего соединение будет наконец разорвано.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.03.2020, 19:40

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
то ожидание ответа будет равно 2 часам (на винде), после чего соединение будет наконец разорвано.
Что-то ты привираешь:
--read-timeout=seconds
Set the read (and write) timeout to seconds seconds. The "time" of
this timeout refers to idle time: if, at any point in the download,
no data is received for more than the specified number of seconds,
reading fails and the download is restarted. This option does not
directly affect the duration of the entire download.

Of course, the remote server may choose to terminate the connection
sooner than this option requires. The default read timeout is 900
seconds.
Это у wget. А для сервера соединение - это ценный ресурс. Он не будет оставлять неиспользуемые соединения и будет сбрасывать их.
apache timeout - default is 300 (in version 2.4 it is 60).
Синтаксис: proxy_send_timeout время;
Умолчание:

proxy_send_timeout 60s;



Добавлено через 3 минуты

Не по теме:

для nginx немного ошибся:

Синтаксис: send_timeout время;
Умолчание:

send_timeout 60s;

Контекст: http, server, location

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

0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.03.2020, 19:51
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Это у wget.
А я про дефолт на винде.
KeepAliveTime
Значение KeepAliveTime контролирует частоту попыток TCP/IP проверить состояние простаивающего соединения. Если за указанное время деятельность отсутствует, будет отправлен контрольный пакет. Если сеть в порядке и партнер активен, то он отправит ответ. Если вам требуется более оперативно узнавать о потере партнера, уменьшите это значение. Если простаивающие соединения с продолжительными периодами бездействия являются обычным явлением и потеря партнера происходит нечасто, можно увеличить это значение для снижения дополнительной нагрузки.

По умолчанию Windows отправляет контрольный пакет при отсутствии активности в простаивающем соединении дольше, чем 7 200 000 миллисекунд (2 часа). Зачастую более предпочтительным является значение 1 800 000 миллисекунд, позволяющее обнаруживать половину закрытых соединений за 30 минут.
Добавлено через 1 минуту
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
А для сервера соединение - это ценный ресурс.
Значит тебе просто не попадались сервера, которые не сбрасывали соединение через 900 сек.
Кстати, посмотри лекции Светлова (разработчика asynсio и автора aiohttp) - он как раз про эти 2 часа там где-то упоминает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2020, 19:51
Помогаю со студенческими работами здесь

Прошу оценить решение тестового задания
Просьба указать на ошибки в структуре и технические недочеты. Может быть советы. Негативный feedback от работодателя, без конкретики, уже...

Создание тестового задания на Js, HTML, CSS
Доброго вечера Всем. Хочу попросить у Вас помощи. Нужно создать много тестовых заданий для сайта, чтобы были сделаны по одному макету. Для...

Верстка тестового задания. Как на ваш взгляд?
Верстка тестового задания. Как на ваш взгляд? Ориентировочный бюджет времени - 8 часов, делала около 9 с перерывами (так я ответила...

Оцените пожалуйста результаты выполнения тестового задания
Всем привет! Скинули тестовое задание на стажера PHP. Задание: Тестовое задание для кандидатов в РНР-стажеры. Вот то, что я сделал:...

Как сделать так чтобы консоль не закрывалась, а продолжала работу после выполненного действия
Здравствуйте, как сделать так чтобы консоль не закрывалась, а продолжала работу после выполненного действия(чтобы не приходилось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru