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

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

18.03.2020, 16:35. Показов 4247. Ответов 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru