Имя: Пароль:
JOB
Обучение
Какие могут быть задания за 60 минут на проверку квалификации программиста 1С?
,
0 Caber
 
13.07.22
10:59
Сталкивались с таким на собеседованиях - за 1 час нужно решить 5 заданий? Это чуть больше 10 минут на каждую. Какие при этом могут быть задачки - очень любопытно.
Предполагаю, что что-то вроде "Найди ошибку"
126 timurhv
 
13.07.22
20:17
(69) Недавно ролик видел avito + 1С. Потом увидел мельком такой код в интеграции, сразу подумал что наеб**щики:
https://youtu.be/1abbYRhRDlY?t=1727
127 Галахад
 
гуру
13.07.22
20:28
(125) Как раз видимо ждали рекурсию, т.к. "только математическое умножение". Т.е. видимо без циклов.
128 Caber
 
13.07.22
20:34
(125) (127) Я отбросил вариант с простым циклом, сразу подумал о рекурсии и полез делать. Получилась хрень. Возможно действительно нужно было в цикле умножить...
129 Caber
 
13.07.22
20:36
Разработайте функцию, которая возводит входящее число в степень, используя только умножение. Никакие другие функции или арифметические операции, кроме умножения, использовать нельзя.
130 Фрэнки
 
13.07.22
20:46
Функция ВозведениеВСтепень(Основание, Степень)
    Возврат ?(Степень>0, Основание * ВозведениеВСтепень(Основание, Степень-1), 1);
КонецФункции
131 Фрэнки
 
13.07.22
20:47
А как звучит: "Разработайте функцию..." - разработка из одной строки
132 Caber
 
13.07.22
20:59
(130) Сравни с моим. Ты сделал за 10 минут, это примерно столько же, сколько было времени у меня:

Функция ВычислитьРекурсивно(Знач ВходящееЗначение, Знач Множитель, Знач ЧислоВызовов)
    
    Результат = ВходящееЗначение * ВходящееЗначение;
    ЧислоВызовов = ЧислоВызовов - 1;
    Если ЧислоВызовов <= 1 Тогда
        Возврат Результат;
    Иначе
        Возврат ВычислитьРекурсивно(Результат, Множитель, ЧислоВызовов)
    КонецЕсли;
    
КонецФункции
133 Фрэнки
 
13.07.22
21:13
(132) почему решил, что я "сделал за 10 минут" ? Я оставил вопрос и ушел от компа, затем вернулся и посмотрел на ответы ветки.

Эту функцию видел в первый раз еще студентом, когда изучали рекурсивные функции. Наверное, в 1987 году это было... не помню уже.
134 Конструктор1С
 
14.07.22
05:22
Тут можно ударить Макконелом (не про степень, но суть та же):

"Одна из проблем с учебниками по вычислительной технике в том, что они предлагают глупые примеры рекурсии. Типичными примерами являются вычисление факториала или последовательности Фибоначчи. Рекурсия — мощный инструмент, и очень глупо использовать ее в этих двух случаях. Если бы программист, работающий у меня, применял рекурсию для вычисления факториала, я бы нанял кого-то другого" (с) Совершшенный код
135 Irbis
 
14.07.22
06:24
(129)? а если степень дробная или отрицательная или и то и другое сразу?
136 rphosts
 
14.07.22
06:41
(135)скажут: "слишком умный... вы нам не подходите..."
137 Ryzeman
 
14.07.22
06:48
(132) Абсолютно то же самое, за разницей что у тебя есть параметр "Множитель" который ты не используешь. Тебе шашечки или ехать?)
138 Caber
 
14.07.22
06:57
(137) Да, это поздняя, отредактированная версия. Когда торопишься, такое бывает. Изначально функция была написана рабочая:  Результат = ВходящееЗначение * Множитель;
Ненавижу работать в стрессовом режиме.
139 Irbis
 
14.07.22
06:58
(136) я к тому, что в примерах функции ни хрена не проверяют валидность переданных параметров, а значит обязаны их обработать. Но хрен с ними, с параметрами, сама рекурсивная функция даже не пытается определить не зациклилась ли она. Металлической линейкой и ребром за такие математические функции по пальцам лупить надо.
140 Ryzeman
 
14.07.22
07:01
(139) Обернуть в попытку и ограничить глубину. Типичное решение рядового 1сника)
141 Irbis
 
14.07.22
07:04
(140) Решение лентяя должно быть разложение в ряд, с забиванием на свойства параметров. То есть передавай что хочешь и получишь правильный ответ. А если аргумент вне области определения сразу отказ.
142 Ryzeman
 
14.07.22
07:05
(141) >>Решение лентяя

Я так и написал
143 rphosts
 
14.07.22
07:09
(140) любая рекурсия сводится к циклу... если тащить много данных это очень способствует
144 vi0
 
14.07.22
07:21
(141) ещё скажи что проверяешь параметры на допустимые типы
145 dmpl
 
14.07.22
07:26
(122) Вроде бы и так, но... юр. лицо, бывает, меняется. Еще чаще оно развивается, и эту же конфигурацию могут развернуть в дочке. Или контрагент теряет статус особого. Или вообще могут продать разработку другой организации. Где у контрагентов могут быть другие коды. Так что решение о хардкоде должен принимать архитектор, а не младший программист. Он должен сопоставить риски, чтобы решить какой вариант несет меньше рисков. Более того, я специально привел пример, когда ущерб от хардкода пытаются уменьшить, собирая все такие значения в определенном месте (чтобы если что-то меняется - поменять в одном месте). Обычно же хардкодят как в (66), и потом "тут заменили, а тут забыли". И что-то поменять становится проблематично, и документации, как правило, вообще нет. Ну а городить для этого регистр или просто в конфигурации прописать - это уже зависит от вероятности изменения этих значений и требований к доступности системы. Как правило, если изменений набирается много, или окно для обслуживания есть раз в месяц, то делают регистр, чтобы по каждому чиху конфигурацию не менять.
146 dmpl
 
14.07.22
07:26
(123) В условии задачи было что степень - это только целое неотрицательное число?
147 Ryzeman
 
14.07.22
07:28
(144) 1сник не проверят допустимые типы до первой чужой пидписки типа ЗаказКлиентаПриЗаписи() когда оказывается что она не только на ЗаказКлиента, но и на возвраты, реализации, чеки ККМ и коммерческое предложение) И срабатывает на самом деле не при записи а в обработке проведения)
148 Caber
 
14.07.22
07:32
(146) было
149 vi0
 
14.07.22
07:34
(147) ты описал какой то явный баг, где типы не проверять нельзя
150 dmpl
 
14.07.22
07:34
(130) Операцию "Минус" использовал.

(132) Аналогично.
151 dmpl
 
14.07.22
07:35
(135) От него ждали ответа "Это невозможно и не имеет смысла".
152 dmpl
 
14.07.22
07:38
(148) А, ну тогда это простой цикл Для ... Цикл. В нем просто умножаешь.
153 Irbis
 
14.07.22
07:41
(144) В универсальных функциях, предполагающих многократное использование всегда. И всем рекомендую, вот прям до задротства. Потом экономит кучу времени.
154 Caber
 
14.07.22
07:43
(152) Т.е. вы всерьез считаете, что дают задачку, результат которой ожидают увидеть так:

Для ЧислоСтепеней = 1 По Степень Цикл
Результат = Результат * ИсходноеЧисло;
КонецЦикла;

??? Такой вариант я сразу отбросил, потому что это слишком очевидно и просто. Это же не информатика за 5 класс.
155 dmpl
 
14.07.22
07:44
(154) Это же не школа. От программиста ждут простых и очевидных решений, полностью соответствующих ТЗ.

P.S. Результат надо инициализировать :)
156 Irbis
 
14.07.22
07:46
Я вообще не понимаю какой результат хотят увидеть, когда предлагают тестовое задание.
157 Лодырь
 
14.07.22
07:53
(156) Все зависит от задания и спрашивающего. Я например ожидаю увидеть ход мысли человека. Как он будет думать. Тоже самое задание мой зам проверял тупо на соответствие с ТЗ.
158 Фрэнки
 
14.07.22
07:54
(154) вот потому тебя и забраковали.

Тебя проверяли на принятие решений. Ты принял решение именно так, как не нужно было его принимать. Отбросил самый простой вариант, начал усложнять, добавил лишние параметры, условия, какие-то строки...

Разве им такой программист нужен?!
159 Фрэнки
 
14.07.22
07:56
Я же сразу в обсуждении и задал уточняющий вопрос : как точно был задан текст задания?
Как раз для того, чтоб увидеть ожидаемый ход решения.
160 Ryzeman
 
14.07.22
08:02
(124) >>Не могу сообразить, что такое метод POW - это же из Питона, вроде бы?

В 1с начиная с 8.0 тоже есть:

Глобальный контекст (Global context)
Pow (Pow)
Синтаксис:
Pow(<Основание>, <Показатель>)

Можно в дробную степень. Век живи - век учись)
161 dmpl
 
14.07.22
08:06
(160) А еще в 1С есть решатель уравнений и анализ данных... внезапно :)
162 Фрэнки
 
14.07.22
08:07
(160) угу. :-)

Не догадывался никогда поискать POW еще и в 1С.

А замечание про дробные степени тоже интересное. Что-то и не припомню без гугленья, каким кодом его раскрывают
163 dmpl
 
14.07.22
08:08
(162) Если по классике - то через логарифм плюс умножение.
164 Фрэнки
 
14.07.22
08:10
(163) ну это я еще помню, что через логарифм. Только кодом не помню. Т.е. функция логарифма тоже получается всегда готовой берется на уровне среды исполнения
165 dmpl
 
14.07.22
08:11
(164) Классика - это логарифмическая линейка :)
166 Irbis
 
14.07.22
08:12
(163) А если совсем по взрослому, то разложением в ряд, там только арифметические действия
167 dmpl
 
14.07.22
08:20
(166) Есть еще таблицы Брадиса ;) Но это для суровых мужиков, которым надо сразу результат.
168 Irbis
 
14.07.22
08:26
(167) Ну, это для лентяеев. Но к ним ещё и мозгов немного надо. Log7.5(147514.14) там вряд ли отыщется, немного ещё и алгебру нужно знать. Для большинства современных 1Сников это шифроблокнот без ключа.
169 Фрэнки
 
14.07.22
08:28
Было бы прикольно, если бы при собседовании проверяли умение таблицами Брадиса воспользоваться. А еще круче - логарифмической линейкой. Интересно, насколько много бы тогда кандидатов в отсев уходило :-)
170 Лодырь
 
14.07.22
08:28
Можно написать запрос к яндексу.
171 Irbis
 
14.07.22
08:29
(169) Самое смешное что мелким шрифтом в Брадисе написано что делать когда нет прямого ответа на вопрос.
172 Irbis
 
14.07.22
08:30
минус у этих таблиц только один — точность, но для большинства достижений СССР её хватало.
173 vi0
 
14.07.22
08:37
(166) совсем по задротскому. если пользоваться твоим языком)
174 Простенький вопросик
 
14.07.22
08:44
ХРюши часто забывают, что рынок на стороне программистов и за лишние вопросы и задачи, они сами отфильтруются.
175 Конструктор1С
 
14.07.22
08:47
(154) нормальный код должен стремиться быть очевидным и простым. Выкрутасы в коде никому не нужны, их тяжелее понимать и дорабатывать
176 vi0
 
14.07.22
08:48
(174) смотря что считать лишним, если придет чудик за которым всё потом переделывать
177 Простенький вопросик
 
14.07.22
08:51
(175)
Вот да, но для этого я предпочитаю несколько запросиков в цикле сделать, а не один монструозный на 3 листа. Но кто то за это отфильтрует.
178 dmt
 
14.07.22
08:55
(169) А еще, чтобы проверяли умение запрягать лошадь. Умения примерно одинаково полезные.
179 Irbis
 
14.07.22
09:07
(178) На некоторых предприятиях вполне полезное умение. Что в жизни пригодится никогда не узнать заранее.
180 Фрэнки
 
14.07.22
09:11
(174) Просто эйчары тоже попадают в ту же самую ловушку, на которые ловят кандидатов-исполнителей.

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

Т.е. всё такое подобное не является тестированием уровня знаний или там интеллектуальных способностей каких-то, а только желания кандидата пройти тест или не пройти в том виде, как это ожидается на вакантной позиции
181 Фрэнки
 
14.07.22
09:13
И понятно, что поправкой на наличие хотя бы примитивного уровня проф-знаний
182 dmpl
 
14.07.22
09:18
(177) А вот тут надо смотреть. Если это в критическом месте - за это надо бить по пальцам. А если исполняется раз в полгода по десятку итераций - ну и фиг с ним. Пример из практики: обработка некоего программиста из франча открывалась 3 минуты, т.к. программист предпочел заполнять таблицы при открытии запросами в цикле примерно на 50000 итераций (не, сначала данных было мало - и проблем не наблюдалось, но вот потом данных стало много). За 15 минут я переделал обработку, чтобы она открывалась за 7 секунд вместо 3 минут просто убрав запросы из цикла в 1 внешний запрос). Там еще можно было ускорить (до 2-3 секунд где-то), но это потребовало бы переделки обработки на полдня - так что я счел это нецелесообразным на текущий момент. Пользователи итак были безумно счастливы.
183 Фрэнки
 
14.07.22
09:23
(182) на кой х... бить программиста по пальцам из франча, если у них действующая установка, под которую тщательно отбираются исполнители?
забыл лозунг "ху.к, ху.к и в продакшн!"
184 uno-group
 
14.07.22
09:25
(154) Я думаю как минимум ожидают что ты знаешь что такое POW если не знаешь то посмотришь в синтаксический помощник какое значение может быть у аргументов передаваемых в нее и напишешь свой аналог который будет возвращать такие же ответы.
POW(3.5,0.5) и ТвойPOW(3.5,0.5) должны вернуть одно и тоже. Твоя функция не возвращает правильный ответ.
185 uno-group
 
14.07.22
09:26
Возвращает указанное число, возведенное в указанную степень.

C#

Копировать
public static double Pow (double x, double y);
Параметры
x
Double
Число двойной точности с плавающей запятой, возводимое в степень.

y
Double
Число двойной точности с плавающей запятой, задающее степень.
186 uno-group
 
14.07.22
09:28
Проверка умеешь ли ты читать ТЗ, программировать и знаешь основы математики в 1 флаконе.
187 Фрэнки
 
14.07.22
09:40
(184) твой ответ не соответствует условиям тестирования. Если ТС пересказал все верно, то там была оговорка, что параметр для степени целочисленный и положительный.

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

С высокой вероятностью можно предположить, что и твой путь решения был бы признан неудовлетворительным.
188 Конструктор1С
 
14.07.22
09:41
(177) кстати да, борьба с запросами в цикле порой доходит до паранойи. Некоторые готовы угробить гибкость и понятность кода ради преждевременной оптимизации, которая нафиг не была нужна
189 Ryzeman
 
14.07.22
09:46
(188) Преждевременная оптимизация... Звучит как расстройство репродуктивной системы
190 uno-group
 
14.07.22
09:47
(187) думаю что изначально задача звучала так как она звучит в 1 варианте без всяких дополнений. а про целые неотрицательные он уже для оправдания своего решения добавил позже когда ему указали на явные ошибки.
191 Фрэнки
 
14.07.22
10:02
(190) откуда уверенность в том, что там "указали на явные ошибки" ?
192 Конструктор1С
 
14.07.22
10:04
(189) преждевременная оптимизация - один из бичей нашей отрасли. Множество 1сников бездумно кидаются оптимизировать код, который в оптимизации не нуждался. Излюбленная тема - написать гигантский запрос, который делает всё и сразу. Понимать и дорабатывать такой запрос адский ад, зато как бы позаботились о производительности. Эдакий выстрел себе в ногу
193 dmpl
 
14.07.22
10:08
(192) Самый прикол в том, что даже при большом количестве данных этот большой запрос может исполняться медленнее нескольких более мелких запросов в цикле, т.к. мелкие запросы уложатся в ОЗУ, а 1 крупный - нет. Т.е. как бы оптимизировали, а в итоге сервер положили.
194 nodrama
 
14.07.22
10:11
(0) Вообще любые на самом деле....
от "найди ошибку".. до оптимизируй запрос, который заведомо написан совсем не оптимально.
195 Kassern
 
14.07.22
10:16
(192) (193) а я другую ситуацию видел. Была обработка загрузки товаров из внешней системы. Так там тупо для каждой номенклатуры делался запрос, который собирал множество таблиц для корректного заполнения и записи. В итоге, когда приходило под 40тыс позиций в одном файлике - загрузка занимала более получаса. После того, как выкинул этот цикл в цикле, вместо 40тыс запросов по каждой номенклатуре, получился 1 запрос и загружаться стало менее 3мин. Поэтому определение "преждевременная оптимизация" оно абстрактное, где та грань, когда преждевременно, а когда нет?
196 Kassern
 
14.07.22
10:18
и ведь пока приходили файлики тестовые по 50-100 позиций, тоже было все норм) А как в продукт, ой что-то у нас компуктер завис, обработка не работает))
197 Фрэнки
 
14.07.22
10:21
(196) А Разработчики не в состоянии были переделать всю эту загрузку, если бы им дали предждевременно тестировочный файл большого объема?
198 Конструктор1С
 
14.07.22
10:25
(195) >>где та грань, когда преждевременно, а когда нет?

Оптимизировать надо когда тормозит, ну или есть железобетонная уверенность, что будет тормозить. Не надо бороться с гипотетическими тормозами
199 dmpl
 
14.07.22
10:27
(195) Если не уверены, что оптимизация нужна - она не нужна. Впрочем, это совсем не запрещает использовать более оптимальные алгоритмы, если это не приводит к увеличению затрат на разработку и сроков.

(197) По идее, в ТЗ должны быть и требования к производительности прописаны.
200 Kassern
 
14.07.22
10:30
(199) "в ТЗ должны быть и требования к производительности прописаны" - вы с таким сталкивались? На моей практике такого не припомню в ТЗ.
201 Kassern
 
14.07.22
10:32
(198) "ну или есть железобетонная уверенность, что будет тормозить" - в этом как раз отличительная черта хорошего программиста с опытом. В противном случае и клиент будет не доволен и для разработчика двойная работа. Зато все по правилу "Оптимизировать надо когда тормозит"))
202 dmpl
 
14.07.22
10:36
(200) Те, кто уже наступал на грабли когда пришлось платить еще и за оптимизацию - обычно пишут. Ну или у кого есть нормальный отдел проектирования.
203 Конструктор1С
 
14.07.22
10:56
(201) тупо полагаться на интуицию нельзя. Нужно проводить замеры, смотреть планы запросов и вот это всё. Сразу кидаться оптимизировать, всё равно что делать операцию без анализов, на основании догадок
204 Конструктор1С
 
14.07.22
10:59
205 СеменовСемен
 
14.07.22
11:06
(203) попадание / непопадание в индекс сразу видно по тексту запроса без всяких замеров
и еще куча подобных штук
206 dmpl
 
14.07.22
11:07
(205) Только вот программист крайне редко проверяет попадание в индекс с RLS...
207 СеменовСемен
 
14.07.22
11:07
ну или через точку от составного.
208 СеменовСемен
 
14.07.22
11:08
(206) но и рлс сейчас редко кто свой пишет
209 Конструктор1С
 
14.07.22
11:21
(205) у оптимизатора может быть своё мнение по этому поводу. СУБД может не использовать индекс, на который ты надеялся. Но это уже дебри
210 Kongo2019
 
14.07.22
11:39
О, у меня было такое собеседование. Пишешь код ворде. Гугл онлайн который. Завалил в общем. Ну не умею я запросы без консоли писать.
211 Гений 1С
 
гуру
14.07.22
11:51
(210) а я олдскул, обычно начинаю без конструктора
212 Kassern
 
14.07.22
11:55
(210) а тот кто проверял, сам прогер? Если да, то спросите его, сможет ли он ПроцессорКомпоновкиДанных инициализировать на бумажке, если нет, то пускай дадут конфигуратор с конструктором запросов. Так же можете спросить, а на работе так же доступ к конфигуратору будет ограничен и весь код у вас в ворде писать нужно будет? Если ответ положительный, то шлете лесом)
213 Kongo2019
 
14.07.22
12:12
(211) А где было написано что конструктор?
(212) Ага. Дык они меня раньше послали.
214 vi0
 
14.07.22
14:19
(205) это если запрос простой
215 Tata_059
 
14.07.22
15:23
Первоначально надо определить для каких задач нужен сотрудник и исходя из этого составлять задания.
Много решающих факторов есть , например
*Коммуникация - если нужно чтобы сотрудник с пользователя общался;
*Сможет ли человек работать в команде или любит индивидуально работать над задачей,
*Какие вещи больше интересны кандидату: кодинг, интеграции, инструкции, бизнес-проекты писать, использует ли в своих решениях типовые механизмы 1С, сможет ли кандидат отстоять свое решение перед пользователем, коллективом
...
Человек может быть мегамозгом, но сильный интровертом к примеру, а вам нужно чтобы кандидат,в последствии, ваш коллега умел работать в команде и общался с пользователями... либо другие ньюансы ....
216 Kongo2019
 
15.07.22
11:03
В обще пошастал я по собеседованиям. В общем чем сложнее тестовое, и прочие понты. Типа куча уровней собеседований, пороги входа, анкеты.
Тем меньше денег, и дебильней компания.
Нормально устроился где со мной поговорили где-то с час задавая всякие вопросы, включая технические одни раз. И голову не морочили, нам надо подумать.
Позвонили на следующий день, и я сразу согласился.
217 Фрэнки
 
15.07.22
11:08
(216) так а если денег не называть, то какие условия там? что за базы, какие задачи планируют решать, что вообще нужно от спеца?
218 Фрэнки
 
15.07.22
11:09
(216) удаленка, наверное?
219 Галахад
 
гуру
15.07.22
11:11
(216) Поздравляю!

P.S. Долго искал? Много собеседований было?
220 Kongo2019
 
15.07.22
12:00
(217) Да обычные. Только денег больше.  Тоже самый стек что и сейчас. Только вместо УПП ЕРП. Но обещали научить.
(218) А какие еще теперь есть варианты? В наших ебенях работы особо нет.
(219) Ну где-то пару недель. Собеседований ну где-то полтора десятка было.
221 PLUT
 
15.07.22
12:16
(220) график работы  - каждые три месяца новая?
222 Kongo2019
 
15.07.22
12:19
(221) Посмотрим.
223 Галахад
 
гуру
15.07.22
12:40
(220) Ого, очень даже не мало! Видимо большая часть франчи?
224 Pprog151713
 
15.07.22
13:22
С пивом не надо приходить на собеседование.
225 Kongo2019
 
15.07.22
14:31
(223) Треть
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший