Собеседование, интервью, отбор кандидата-программиста
Методический материал для собеседования. Помогает облегчить общение между кандидатом и работодателем.
- Описание
- Подробнее
Описание
Введение
Мне часто приходится участвовать в собеседованиях (отборе) кандидата-программиста. Постепенно пришел к выводу, что написание по техническому заданию новой обработки (отчета) – не лучший вариант:
- Требуется существенное время + среда разработки (компьютер)
- Может вызвать негативную реакцию, раздражение кандидата.
- Для проверки требуется сотрудник высокой квалификации.
- Увеличение длительности отбора увеличивают вероятность отказа кандидата от участия.
Поэтому было решено давать кандидату уже написанный код 1С с ошибками, которые он должен найти.
- Поиск ошибок в чужом коде происходит быстро, читать — с листа.
- Повышает самооценку кандидата.
- Результат можно проверить по шаблону ответов
Благодарю всех коллег, кто морально и материально поддержал мою прошлую статью Отбор кандидата-программиста. Им всем респект и скидка 50% на новые файлы, СМ будут начислены после покупки в чатике как вознаграждение.
Пример одного вопроса
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|Сумма(1) / 1000000
|ИЗ
|РегистрСведений.ЦеныНоменклатуры КАК Цены";
Сценарий интервью
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|Сумма(1) / 1000000
|ИЗ
|РегистрСведений.ЦеныНоменклатуры КАК Цены";Вопрос: Для чего может быть использован такой запрос?
(Проверяем, насколько кандидат понимает чужой код. Программисты занимаются этим большую часть времени. Обращаем внимание на навыки общения кандидата.)
Ответ: Запрос считает количество записей регистра. Похожим запросом можно считать количество элементов справочника или строк в документе.
Вопрос: Для чего делить на миллион?
(Этот вопрос неочевидный, отвечать необязательно. Для любителей, знатоков и коллекционеров)
Ответ: Деление — чтобы не было ошибки sql переполнения.
Вопрос: Какая ошибка может возникнуть при работе с данными запроса?
(Умение предусмотреть null — очень важное. Если кандидат смог ответить — в его коде будет значительно меньше ошибок)
Ответ: Сумма(1) может быть null.
Вопрос: Как правильно написать запрос?
Ответ: Слово РАЗЛИЧНЫЕ не нужно. Использовать функцию КОЛИЧЕСТВО.
(Рекомендации ИТС: https://its.1c.ru/db/v8std#content:787:hdoc Если кандидат читает ИТС — это хороший знак. С другой стороны, если кандидат ответил ВСЕ вопросы — возможно, он готовился к интервью. Выбирайте сами)
Как видите, даже короткий фрагмент кода может показать уровень квалификации кандидата. В приложенных файлах только вопросы-ответы, комментарии отсутствуют.
Еще пример
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВводОстатковТоваров.Ссылка КАК Ссылка
|ИЗ
| Документ.ВводОстатковТоваров КАК ВводОстатковТоваров
|
|УПОРЯДОЧИТЬ ПО
| ВводОстатковТоваров.Дата";
//10
ТЗ = Запрос.Выполнить().Выгрузить();
НачалоГода = НачалоГода( ТекущаяДата() );
//13
Для Каждого ТЗЦикл ИЗ ТЗ Цикл
//15
Если ТЗЦикл.Ссылка.Дата < НачалоГода Тогда Продолжить; КонецЕсли;
Документ = ТЗЦикл.Ссылка.ПолучитьОбъект();
Документ.ПометкаУдаления = Истина;
Документ.ОбменДанными.Загрузка = Истина;
Документ.Записать(РежимЗаписиДокумента.Запись);
//21
КонецЦикла;Сценарий интервью
Вопрос: Для чего может быть использован такой код?
Ответ: Для пометки на удаление документов "Ввод остатков товаров" за текущий год.
Вопрос: Что произойдет с регистрами накоплений, движениями товара? Почему?
Ответ: Ничего, код пометит документы, регистры накоплений и движений товара останутся без изменения. Помеченные на удаление документы будут изменять остатки, это очень неприятно. Такая особенность записи в режиме ОбменДанными.Загрузка = Истина.
Вопрос: Как исправить?
Ответ: Вместо строк 18-19-20, использовать УстановитьПометкуУдаления(Истина).
Вопрос: За какой период документы быстрее помечать на удаление: текущий месяц, прошлый месяц, позапрошлый месяц? Почему?
Ответ: При пометке удаления документов происходит очистка регистров и очистка итогов регистров. Регистры остатков имеют рассчитанные итоги на каждый месяц. Например, (если итоги регистров активны) изменение остатков за позапрошлый месяц вызовет изменения таблиц итогов за три месяца. Смотрите Зачем в 1С нужно периодически пересчитывать итоги по регистрам?
Вопрос: В чем проблема в строке 16?
Ответ: Отбор по дате необходимо производить в запросе выборки документов, не допуская объектного чтения.
Вопрос: Если все документы должны быть помечены на удаление, то нужно ли помечать все документы на удаление? Какие отборы должны быть в запросе?
Ответ: На удаление не нужно помечать документы, которые уже помечены на удаление. В запросе должны быть отборы "Где ВводОстатковТоваров.Дата > &НачалоГода И НЕ ВводОстатковТоваров.ПометкаУдаления".
Вопрос: В чем проблема в строке 11 ?
Ответ: Не нужно использовать выгрузку в таблицу, используйте выборку.

