Работа тестировщиком после переезда в Германию
Вроде понял что меня смущало - наличие функции округления.
Так как минуты всегда были у меня целочисленными.
Но вот чтобы было сразу понятно что делает, так и не получилось. Только без деления и умножения.
static int MinuteRoundTo(int value, int precision) { int ret = 0; for (int rounded = 0; rounded <= value; rounded += precision) { ret = rounded; } return ret; }
Зато есть задачка на праздники
Накладные рaсходы на организацию цикла довольно большие...
Если уж так хочется чтобы был двухкоординатный вариант
- считать надо один раз на каждый вариант precision
Ну и по практике - precision
обычно выбирают по какой-то линейке - больше пары-тройки
версий значений в одной задаче не будет.
Я так понял, что эта функция явно считает сколько раз precision умещается внутри value. Довольно кривая реализация из-за того что две переменные созданы для одного и того же и сразу неочевидно главное: когда цикл закончится и что он вернет, поскольку если решение равно N, то тело цикла выполнятеся N+1 раз, а все-таки правильный результат получается из-за того, того самый последний инкремент хотя и выполняется, но реально не сохраняется. Ну в общем, если нужны трудно находимые ошибки в программе, то такой цикл как раз то, что нужно.
Почему не написать проще:
ret = 0while(ret < value) ret += precision
return ret
(Я не спрашиваю, почему нужен явный цикл и нельзя это за одну операцию сделать - видимо такая задача.)
С написанного посчитать еще можно, а вот картинка не возникает на автомате.
Так и с формулой для гипотенузы так же (даже хуже, с ней непонятно почему именно так считать надо). Но после того как пару раз увидишь - узнаёшь сразу.
Все знали о чём речь идёт, так что как можно было не понять, как именно сработает эта простенькая формула я честно не понимаю. Если рассматривать код в отрыве от сообщения, то да, не хватает разумного имени и строчки комментария. Всё. Если это обрезание надо использовать в нескольких местах, то можно написать функцию. Для одного использования функция избыточна. И именно что нарушение KISS. Проверки на то что значение минут не вываливается из интервала 0..59 тоже не надо - мы должны доверять используемым библиотекам.
public const int MINUTES_IN_QUARTER = 15; ... int minutesInHour = ...; // Обрезаем минуты до начала четверти часа. 0..14 => 0, 15..29 => 15, 30..44 => 30, 45..59 => 45. Исходим из того, что minutesInHour не может иметь значений <0 и >59. // (если мы знаем что в проекте есть тормоза, дописываем такое) Внимание! Применяется целочисленное деление без остатка! int minutesTruncatedToFullQuarter = (minutesInHour / MINUTES_IN_QUARTER) * MINUTES_IN_QUARTER;
Только надо обязательно тестировать, чтобы какой-нибудь жутко умный оптимизатор не выбросил деление и умножение на одно и то же число (в шарпе и в яве такого не будет, за другие языки не поручусь).
Почему не написать проще
По одной простой причине. 1-е число минуты, 2-е правильный ответ, 3-е предложенная функция
Но я не понимаю отчего кому то не нравится работать в команде. Именно совместно и можно и можно найти хорошее решение.Я не спрашиваю, почему нужен явный цикл
Решение может быть любым, главное, что бы было видно сразу для чего именно это решение
Да, точно. Мой косяк.
Решение может быть любым, главное, что бы было видно сразу для чего именно это решение
Ну тогда очевидно так:
count = (value // precision) * precision
Ну или так совсем надежно как логически так и реализация:
count = value // precision # целочисленное деление
ret = count * precision
И тогда то же самое в виде цикла:
ret = 0
while(ret <= value) ret += precision # Выполняется count+1 раз
ret -= precision # Поэтому один шаг вычитаем
ну или
ret = 0
for(; ret <= value; ret += precision) ;
ret -= precision
НП.
Мне влом последнее время напрягать свои мозги, поэтому кто как хочет, так и про меня думайте, я не переношу какие либо нагрузки, как физически, так и умственные. Я делаю то, что мне нравится. Насчёт алгоритмов, каждый как хочет, так и программирует, у каждый свой стиль, в колледже и в универе учили так, как я написал, как я уже писал, я не хочу выпендриваться с кодом, код должен понять программист который закончил Hauptschule. Я помешан в коде как Терри Девис - https://habr.com/ru/post/443568/, но я не хочу чтобы у меня жизнь закончилось как у Бориса Гритца, кстати у меня как у него тоже было очень много отказов, меня айти фирмы куда подальше отсылали.
P.S.:Какой толк от хорошего кода, если я нафиг никому не нужен? Когда рассказываю, первая ассоциация у моего собеседника от слова Казахстан возникает это Борат, сейчас ещё Борат-2 вышел.
А ваш код хороший?
Ну я имел ввиду выпендрёвый, у меня обычный код без всяких сокращений и выпендрёжа. До Vorstellungsgespräch не доходит, 99% отказов, поэтому они мой код не увидят.
Я делаю то, что мне нравится.
99% отказов
-----
Обычно получив отказ люди задаются вопросом - Почему? - и изучают как сам процесс, так и персоналии участников.
По тому, что ты пишешь на форуме, на вопрос рекрутера/хрюши:
- Скажите, а когда и какую художественную книгу вы прочли?
следует ответ:
- Мороженное мне не понравилось - не сочетается с таблетками!
после чего 100% следует отказ.
Это нормальный вопрос и нормальная реакция на данный ответ.
Писать надо на том, что подходит под задачу. Access и VBA уже давно никуда не подходят, потому что древние, как го*но мамонта. Пых ваш туда же.
Кто-то выше писал про "дигитализацию" в Германии. В индустрии с ней полный абзац и кабздец. До сих пор FoxPro, DB2 и Siebel. Там Access и VBA - инновации прям. А про пыхи ваши никто и не слышал.
Но если брать айтишный мир, то всё не так плохо. Умеют и облака, и C++20, и Rust, и Go. Зависит всё от CTO. Если он бывший говнокодер на бейсике, то и технологии в конторе такие же будут. Древние и вонючие.
Писать надо на том, что подходит под задачу
Обычно ищут работников по языку. У нас, например задача и мы, группа программистов, решаем ее при помощи определенного стека технологий. Допустим в группу взяли кого то, который заявляет, что надо все менять и задачу решать другим стеком. Или этот программист решает какую нибудь второстепенную задачу своим стеком. И уходит.
Это конец. Его код никто не может поддерживать. Его просто выбросят и напишут все с начала.
Поэтому в обьявлениях на работу всегда указывают технологии, которыми должен владеть претендент. И поэтому любое изменение стека технологий утверждается начальником отдела программистов - именно он будет выделять ресурсы для долнейшего обучения сотрудников и переход.
Я думаю, дело в том, что в первом телефонном разговоре подчёркивается.
Я только по эл. почте слал резюме, по телефону не было ни разу интервью, обычно в основном были отказы из 400 отправленых резюме 2-3 раза приглошали на Vorstellungsgespräch, один из них предлагал мизирную зарплату, я 3 месяца на него бесплатно работал. Дважды на фирме когда проходил практику использовали Microsoft Access, один раз не получилось сделать БД, тогда секретарша сделала сама БД на Microsoft Access, я у неё книжку видел по Access.
Мои отказы это из-за ссоры с немцами, и я бред в фейсбуке писал.
НП.
Меня травили в фейсбуке, потому-что меня учитель по программированию хвалил постоянно, и я ещё в очень дорогом пуховике пошёл в колледж, пуховик стоял где-то в районе 600 евро. Меня немец с правыми взглядами психологически травил, у него дедушка, отец и он правых взглядах, он гордится что он чистокровный немец. Он окончил Volksschule, потом поступил в колледже, Volksschule это ниже чем средняя школа, сначало он работал сисадмином сейчас дорос до Projektleiter, хотя я почему-то в списке фирм не нашёл его что он там Projektleiter.
P.S.:Какой толк от хорошего кода, если я нафиг никому не нужен?
Может это поможет:
Interview advice that got me offers from Google, Microsoft, and Stripe:
https://www.zainrizvi.io/blog/the-interviewing-advice-no-o...
Tip #1: Use recruiters to your advantage
Tip #2: Go to real interviews for practice
Tip #3: Be open to learning during the interview
Tip #4: Keep your skills sharp even when you’re not job hunting
Когда рассказываю, первая ассоциация у моего собеседника от слова Казахстан возникает это Борат, сейчас ещё Борат-2 вышел.
Да ладно, не комплексуй, мы все тут в таком положении. Этого уже не исправить. Значит надо что-то другое менять.
Вся проблема ещё была в том, что я одно и тоже всем писал один файл был как шаблон, я просто заменял заголовок, даты, и фамилию Ansprechpartner-а. Может я что-то не так делал, я всем писал знания такие-то, допустим отправлял резюме на PHP разработчика, а писал что допустим знания не только по PHP но и по C#. Некоторые айтишникисоветовали если резюме программистом на PHP то нужно убирать знания C#, мне было в лом с этими Bewerbung-ами возюкоться, всем слал одно и тоже письмо. Дома было две программы которые генерируют Bewerbung и Lebenslauf, последний генератор это Data Becker BewerbungsGenie 5, но советали их не использовать, я был на 2х недельных курсах как писать Bewerbung-и.