Re[2]: тестовое задание.
От: Олег К.  
Дата: 06.10.12 03:58
Оценка: 1 (1) +1
D>хорошее "взрослое" задание. покажет все что надо. последний нюанс — скорее посмотреть как вы поступите, чем конкретное требование. как требование — сформулировано не совсем четко. я такие формулировки в задание обычно использовал, чтобы посмотреть, будет ли кандидат уточнять требования или загасится наглухо и будет интерпретировать и отсебятину сочинять. уточнение требований и коммуникация — такая же часть нашей работы как написание, тестирование и документирование кода, удовлетворяющего требованиям

Это не просто борзость, а борзость в квадрате. Мало того что даешь задание, так еще и умышленно даешь нечеткое задание. Тебе на работе за уточнее требований и коммуникации деньги платят. А ты (ну или твой работадатель) платите деньги кандидатам за задание а также за уточнения требований? Это тратить время и на программирование, и на обмен имейлами и потом еще встретиться с кучей чуваков у каждого из которых свое видение как надо программировать и которые зачастую не могут найти общий язык друг с другом.

Пока что видно неумение поговорить на интервью (и спросить что-нибудь из технологий если надо) и желание вые...нуться что я профессионал и я тут решаю насколько профессионально кандидат подходит к задаче.
Re: тестовое задание.
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.10.12 09:17
Оценка: 4 (2) +1 -1
GUI приложение на C++ под Windows уже звучит довольно трэшово. Но еще и без Qt... Это вообще финиш.
Re: тестовое задание.
От: ResidentR6  
Дата: 07.10.12 03:07
Оценка: -6
Выполни задание и не морочь голову. Главное в тестовом задании — это
чтобы оно не было коммерческой задачей (работа под видом теста), всё
остальное — нормально.

Кто хочет сделать — ищет способ. Кто не хочет — причину. Они правы, не
взяв тебя — к работе отнесёшься так же. Будешь искать причину, а не способ.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: тестовое задание.
От: algol Россия about:blank
Дата: 08.10.12 15:00
Оценка: 1 (1) +1
Здравствуйте, Alex Dav, Вы писали:

AD>Моя оценка уже завышенна и учтено, что я не помню большую часть WinApi и давно не работал с С++,


Ну-ну. Начнем с того, что сделать диалог с кнопками тоже время надо, особенно если на чистом АПИ.

AD>НО задачи настолько простые, что из гугла можно будет целые куски вставлять — перехватить нажатие мышки решают на первом семестре по WinApi,


Глобальный хук делается в отдельной Dll. Ее тоже надо сделать и как-то привязать к основному приложению. Хотя готовый проект можно нагуглить.

AD>туда же получить активное окно и взять с него инфо (хоть сейчас лабараторку открывай за 2 курс).


AD>не активное, а по координатам. И извлечь всю иерархию. Несложно, но тоже время надо.


AD>Писать сервер не надо, значит никаких очередей, секьюрити и т.п. берешь любой класс уже реализовавший и используешь Post метод — скорее всего даже один (на все это час от силы)


Очередь все же нужна — в функции хука мы не можем делать сложную обработку, и тем более слать запросы на сервер. Берешь любой класс и используешь Post — это берешь что-то типа libcurl и прикручиваешь за 15 сек? Или пишем с нуля на WinInet функциях?

AD>Что осталось? оформить два потока — делаем простейший mutex или критическую секцию или чтото с read-write locker-ом (наверняка уже готовые куски есть — читать-писать в файл двумя потоками) (30 мин — код же в инете есть 100%)


В инете есть все 146%. Но это еще надо как минимум найти. Нужен парсер/сериалайзер Json — с нуля будем писать или прикручивать опенсорс либу? Нужно логирование — если более-менее нормальный логгер, то опять довольно много писать либо прикручивать оперсорс. Если я правильно понял задание, то ничего стороннего нельзя, и надо делать свою реализацию.
Нужна обработка ошибок и ситуаций когда сервер недоступен, или переполнения очереди запросов.

AD>Оформить все как сервис? еще 15 мин — в любом пособии для новичкой есть готовый шаблон.


Агащазкакже. Если в первый раз, то придется поразбираться, даже с готовой реализацией в ATL. А вообще про сервис никто не говорил, и взаимодействие сервиса с GUI это отдельная песня.

AD>итого 2 часа, но конечно будут не предвиденные ошибки, нестыковки + потестировать.


То есть 2 ч 15 мин хватит?
Re[2]: тестовое задание.
От: white_znake  
Дата: 09.10.12 09:03
Оценка:
Здравствуйте, tomasmor, Вы писали:

T>Опять же, расскажу как это выглядит изнутри.

T>Если в компании ведется командная разработка, то довольно важна культура кода в принципе.
T>И есть примеры того, что человек неплохо показывает себя на собеседовании -- решает тесты, отвечает на вопросы по теории, но по каким-то причинам творит что-то дикое в коде.
T>И в связи с этим, мы просто обязаны посмотреть человека "на практике". Обычно бывает достаточно примеров кода. Но бывают случаи, когда в примерах кода люди присылают хелло, вролд или вообще отказываются, говоря об NDA. И вот в таких случаях ничего, кроме тестового задания, мы предложить не можем. Если у Вас есть альтернативные варианты того, как решить эту проблему -- расскажите, мы будем крайне благодарны.

Я не делаю из принципа тестовое задание которое больше 1-2 часа. Бывает смотришь на задание и понимаешь, что там работы на ~8 часов, а надо еще блочные тесты, логирование, стратегию обработки ошибок реализовать — еще 2-4 часа...

И что? растягивать выполнение тестового задания на неделю и больше или гробить пару выходных? Нет уж...

Что делать что бы не давать больших тестовых заданий, но понять как кандидат пишет код? Дайте ему любую абстрактную задачу, пусть он ее вначале на бумажке в виде диаграмм изорбразит, а потом в коде на компьютере, но задач должна быть небольшой
Re[3]: тестовое задание.
От: bu70  
Дата: 09.10.12 10:21
Оценка:
Здравствуйте, nightcode, Вы писали:

M>>Какое-то оно... Смущает, что кандидата можно послать, а код использовать в коммерческих целях. Например, если кровь из носа надо решить такую задачу, а нужных сцецов нет.

N>а не проще на фрилансе нанять человека ?

Так это же платить нужно, а так и работа сделана и человека смешал с грязью >у вас тут утечки памяти
Потом доказывай что ты не верблюд.
Re[2]: тестовое задание.
От: Azotix  
Дата: 09.10.12 11:40
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, xednay89, Вы писали:


X>>Пообещали прислать тестовое задание.


M>Какое-то оно... Смущает, что кандидата можно послать, а код использовать в коммерческих целях. Например, если кровь из носа надо решить такую задачу, а нужных сцецов нет.


Это паранойя.
Re[2]: тестовое задание.
От: Гоги Россия  
Дата: 09.10.12 11:43
Оценка:
Здравствуйте, ResidentR6, Вы писали:

RR>Выполни задание и не морочь голову. Главное в тестовом задании — это

RR>чтобы оно не было коммерческой задачей (работа под видом теста), всё
RR>остальное — нормально.

RR>Кто хочет сделать — ищет способ. Кто не хочет — причину. Они правы, не

RR>взяв тебя — к работе отнесёшься так же. Будешь искать причину, а не способ.

Ага На работу стараются брать тех, кто готов работать. По моим наблюдениям, подавляющие большинство разработчиков/тестировщиков готовы сделать тестовое задание. А остальные на сидят на rsdn и рассказывают о высоких принципах.
Re: тестовое задание.
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 10.10.12 01:36
Оценка:
Здравствуйте, xednay89, Вы писали:

Меня больше всего смущает вот это:

WinAPI, WTL и подобные технологии


Что значит — подобные? WinAPI — интерфейс операционной системы, WTL — библиотека. Ответ, вроде бы, напрашивается — имеются в виду библиотеки Microsoft, но это лучше уточнить у нанимателей. Скажем, STL входит в поставку компиляторов C++ от MS, но вот "подобна" ли она WinAPI и WTL — вопрос.

X>Собственно вопрос: для себя я оценил это задание часов на 8 — 10. Но меня сильно смутило вот это —

X>

X>приложение должно определять, где был произведен клик с точностью до элемента, если это возможно (например — Рабочий стол — Ярлык «Мой компьютер»)


X>обоснованно ли мое недоумение?


По сути — не такое уж и страшное задание. Конечно, сервисов тут никаких делать не надо — построение сервиса, взаимодействующего с GUI тянет на отдельную тестовую задачу, притом повеселее упомянутой в топикстарте. ATL, WTL или MFC для GUI хватит с головой — окно с двумя кнопками несложно изобразить и на чистом Win API, определение иерархии окон — опять таки, тот же Win API. Парсить ответ сервера тоже особо не нужно, достаточно найти нужные строки в кавычках. Ну, может быть, будет небольшая заморочка с асинхронным WinHTTP. "Логгирование" тут вообще тривиальное — простая запись текста в файл (я смотрю, тут уже разбежались некоторые — аж отдельные библиотеки для этого тащить).

Ещё вопросы, которые нужно бы задать нанимателям:

— Где задавать адрес сервера, в настройках или hard coded? И кстати, надо узнать сам адрес для тестирования.
— Что делать, если пропала связь с сервером? Прекратить слежение, буферировать данные (если да — то как долго), бросить сообщение об ошибке? Ещё что-то?
— Аналогичный вопрос по ошибкам логгирования — что делать, если диск переполнен, недоступен для записи и т.п.

Ну а в остальном надо просто аккуратно написать код, обязательно отследить статусы ошибок, снабдить достаточными комментариями. И всё, вроде.

"Коммерциализация" такого кода — ИМХО, дело невозможное, так что паранойю можно засунуть подальше.

Да, по поводу коммерциализации тестовых заданий. Мне значительно чаще встречались студенты, предлагающие свои курсовики или лабораторные под видом тестовых заданий — вот где смеху-то.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: тестовое задание.
От: nightcode  
Дата: 10.10.12 06:45
Оценка:
Здравствуйте, Олег К., Вы писали:

ОК>Это не просто борзость, а борзость в квадрате. Мало того что даешь задание, так еще и умышленно даешь нечеткое задание. Тебе на работе за уточнее требований и коммуникации деньги платят. А ты (ну или твой работадатель) платите деньги кандидатам за задание а также за уточнения требований? Это тратить время и на программирование, и на обмен имейлами и потом еще встретиться с кучей чуваков у каждого из которых свое видение как надо программировать и которые зачастую не могут найти общий язык друг с другом.

Странный вывод. Ну вот так там поставлен процесс разработки (если это можно так назвать) и им нужен человек который впишется, вот и ищут такого. И потом, откуда ты знаешь какая там предлагается зарплата ? Вполне может быть, что она все эти издержки покрывает.
Re: тестовое задание.
От: rsdn.user  
Дата: 13.10.12 03:01
Оценка:
Здравствуйте, xednay89, Вы писали:

X>Сегодня посетил собеседование на должность c++ developer.

X>Вроде все нормально: компания понравилась, готов там поработать.

X>Пообещали прислать тестовое задание. Я в целом не против небольшого тестового задания, которое поможет оценить мою культуру кода, но то, что мне прислали — попахивает каким-то издевательством. Пришлось сразу отписаться, что не готов я столько времени убивать на задания, которые должны выявить непонятно что.


X>обоснованно ли мое недоумение?



Решил попробовать чисто для себя вспомнить как это программировать, ибо уже давно не брал в руки шашек так сказать. Получилось вот это. Код конечно тихий ужас, но я ж не претендую на гуру программирования (опыта разработки 0, в студенчестве курсачи ваял и на этом всё, дальше занимался админством-аникейством, программирование для себя как хобби скорее), так что какой есть. Весь "проект" сплошное читерство и откровенное упрощение, но это ж тестовое задание с которым слишком много времени тратить жаль (по факту я убил где-то 2 вечера + 1 ночь), т.к. много чего вспоминать пришлось и подглядывать в MSDN). Ваял я его с минималистичным подходом практически на голом API в стиле дилетанта в программировании и с кучей хаков.
И да, меня тоже смущает момент грамотного выяснения объекта клика с точностью до элемента. В мышином хуке мы можем отловить HWND окна, которое получит сообщение и экранные координаты курсора. А вот идентификацией конкретного элемента уже непонятки — можно выдрать класс окна (GetClassName) и его текст (GetWindowText), можно выяснить id процесса и потока которому принадлежит окно (GetWindowThreadProcessId), можно в иерархии окон покопаться (GetParent/GetAncestor/GetWindow/etc). Обработку конкретного случая с рабочим столом и ярлыками можно конечно захардкодить покопавшись со Spy++ и выловив конкретные нужные WM_NOTIFY (типа NM_CLICK, правда там уже простым мышиным хуком по идее не обойдёшься), но хочется ж универсально сделать, правда неясно как, например если это будет клик по какой-нибудь кнопке "Войти" в браузере (подозреваю что никак, ибо DOM в браузере — отдельная песня).
Плюс возникнут отдельные заморочки с правильной реализации этой аппликухи на 64 битных системах, ибо глобальный хук должен жить в dll, а 32 битная dll грузится только в 32 битные процессы, для "захучивания" 64 битных процессов нужна 64 битная dll (причём с другим именем), которую будет грузить 64 битная же версия аппликухи. Так что 32 битная версия аппликухи должна проверять битность системы и на 64 битных системах запускать ещё и свою облегчённую 64 битную версию (без GUI и т.д.), которая вместо непосредственной обработки кликов (запись в лог и отсылка на сервер) будет пересылать посредством какого-нить IPC (например через пайп) данные о кликах в 32 битную версию, в которой уже будет GUI и честная обработка всех данных как от 32 битных процессов так и из пайпа. Почему не честная обработка в 64 битной версии ? А чтоб 2 процесса в 1 файл лога ерунды не понаписали независимо друг от друга, хотя конечно вариант синхронизировать это дело. Управление 64 битным процессом из 32 битного по кнопкам старт/стоп можно реализовать например на событиях. Естественно это сложнее чем просто 32 битное решение, требует больше времени на разработку и отладку, а так же средств разработки поновее чем имеющаяся под рукой VS2003, которая из коробки под x64 компилить не умеет. Будем считать что отмазался почему на x64 нормально работать оно не будет

Так вот, собственно, у меня глупый вопрос — "доктор, я буду жить ?" — какие шансы устроиться начинающим программистом С++ в default city если учесть отсутсвие опыта разработки как такового, возраст 27 лет и небольшой вцелом опыт работы (аникейство). Ну и общие знания достаточные чтобы ваять г*внокод вышеприведённого стиля. Всякая шаблонная магия, современные веяния типа C++11, функциональщина и прочие крутые модные штучки — пока выше моего понимания и с наскока оно не поддаётся, возможно банально мозга не хватает. При этом WinAPI в целом понятно, базовые принципы функционирования системы Windows тоже. И если шансы есть, то как лучше их реализовать ? Ибо как показала практика на резюме без опыта разработки никто не смотрит, даже отказ ленятся прислать. Или лучше забить на эту идею и идти дальше админить-аникействовать ?
Re: тестовое задание.
От: okman Беларусь https://searchinform.ru/
Дата: 13.10.12 10:41
Оценка: 1 (1)
Здравствуйте, xednay89, Вы писали:

X>Я в целом не против небольшого тестового задания, которое поможет оценить мою культуру кода, но то, что мне прислали — попахивает каким-то издевательством. Пришлось сразу отписаться, что не готов я столько времени убивать на задания, которые должны выявить непонятно что.


Задание прикольное, но для тестового недостаточно маленькое.
Проблема в том, что если писать как положено, с разделением на компоненты, с тестами, да и
вообще с учетом многочисленных "но" и "а что если", то на него можно потратить уйму времени.
Намного больше, чем несколько часов. А если по-быстрому настрочить (чтобы отстали), то
получившийся код будет ужасным и никакие проверки не пройдет. Палка о двух концах.

Поэтому нужно либо отказываться от выполнения таких заданий вовсе, как тут это многие советуют,
либо выполнять, но тогда делать это качественно и дотошно, чтобы у экзаменующих не было шансов к
чему-то придраться. Либо, как советовал kaa.python вот в этой
Автор: enji
Дата: 31.08.12
теме, залить куда-нибудь на sourceforge или
github образцы своей "кодовой деятельности" и во время собеседований ссылаться на них.
И эффективно, и экономит время.
Re[2]: тестовое задание.
От: rsdn.user  
Дата: 19.10.12 20:46
Оценка:
Здравствуйте, rsdn.user, Вы писали:


RU>Решил попробовать чисто для себя вспомнить как это программировать, ибо уже давно не брал в руки шашек так сказать. Получилось вот это.


RU>...поскипано...


RU>Так вот, собственно, у меня глупый вопрос — "доктор, я буду жить ?" — какие шансы устроиться начинающим программистом С++ в default city если учесть отсутсвие опыта разработки как такового, возраст 27 лет и небольшой вцелом опыт работы (аникейство).


Таки пошёл админить-суппортить, правда малознакомые *nix'ы и базы данных, но это поправимо.
Re: тестовое задание.
От: 8bit  
Дата: 21.10.12 03:48
Оценка:
Здравствуйте, xednay89, Вы писали:

ого.

X>обоснованно ли мое недоумение?


лично я бы "повертел" их с таким тестовым заданием.
Re[2]: тестовое задание.
От: bu70  
Дата: 22.10.12 09:38
Оценка:
Здравствуйте, 8bit, Вы писали:

8>лично я бы "повертел" их с таким тестовым заданием.


Тестовое задание как правило вообще ничего не гарантирует в плане трудоустройства. В моем городе есть одна фирма, там тестовое задание это такой себе мини проект на неделю работы, причем это только так сказать допуск к устному собеседованию. Был случай что после выполнения тз проверяли его одни люди из этой конторы, само собеседование проводили другие, которые выполненного тз в глаза не видели, а идти к HR за его копией просто отказались. После этого я наотрез отказываюсь делать тз. Хватит, задолбало.
Re[4]: тестовое задание.
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 30.10.12 13:45
Оценка:
Здравствуйте, Alex Dav, Вы писали:

Вот тебе простой вопрос по теме — каким образом ты достучишься до программ, которые работают в elevated-режиме в Висте+?
И таких деталей будет стотыщмильонов. 20-30 часов это куда более реалистичная оценка, хотя, учитывая, что "тебе всё надо будет вспоминать", то я бы рассчитывал на рабочую неделю...
[КУ] оккупировала армия.
Re[2]: тестовое задание.
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 30.10.12 14:11
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>GUI приложение на C++ под Windows уже звучит довольно трэшово. Но еще и без Qt... Это вообще финиш.


Ну тут ты ИМХО придираешься. Сваять одну формочку из двух кнопок даже на WinAPI займёт полчаса, если знаешь, как это сделать, и пару часов, если не знаешь. Но в "разрешённой" категории либ имеется WTL, на котором сваять такую форму вообще элементарно...
[КУ] оккупировала армия.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.