Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение
Может немного не по теме, но думаю есть смысл это здесь оставить. Короткое мнение с «другой стороны».
Маленький косяк в моем решении. Оператор деления по модулю даёт циклическую последовательность на выходе, т.е. 1,2,3,4,5,6,7,8… %3 даст 1, 2, 0, 1, 2, 0, 1, 2, 0…
Я почему-то думал, что если 2%3=2, 1%3=1, 0%3=0, то и -1%3 даст опять 2. Но нет, -1%3=-1.
Поэтому в моем решении нужно перед взятием по модулю прибавлять то самое n (или n+1).
Смотрите, с одной стороны вы говорите, что зарплата программиста — это много, а с другой говорите, что этой большой зарплаты вам не хватает настолько, что приходится подрабатывать.
Я вот чего не понимаю, зачем
С зарплатой программиста (можно снимать офис)

нужно ещё и подрабатывать?
А с чего вы взяли, что вам заплатят больше, не требуя большего от вас? Смысл?
И это самое «больше» и будет мешать вашей жизни. Деньги — это средство, а вы пытаетесь сделать из них цель.
Скажем так, я полностью понимаю DexterHD, и совершенно не понимаю в этом вопросе вас. Может быть мы с вами очень разные.
Полностью соглашусь. Как не крути, но существует незримое понятие «качество жизни», и работа должна минимальным образом это качество портить. Всех денег не заработать.
40 часов в неделю мне не говорят ни о чем. За эти 40 часов можно быть «выжитым как лимон», а можно приходить домой с чувством приятной усталости. 40 часов можно потратить по разному, можно небрежно потягивать кофеёк, а можно в режиме аврала латать куски кода, чтобы успеть к следующей сдаче проекта. Может на новом месте будет сидеть Вася Пупкин, который делает за 40 часов в 2 раза больше работы чем ты, и того же будут ожидать от тебя. Работодатель желает получать от тебя какой-то объем пользы (кода, труда, проектирования), а не чтобы ты «был на работе» 40 часов.
Но в любом случае, он укажет норму — 40 часов.
Говоря «Начинайте для себя делать акцент на всех недостатках» я имел в виду, что это не должно проявляться внешне, а только внутреннее отношение. Это лишь способ набраться решимости.

Я тоже сделал в своем ответе ударение на ВНУТРЕННЕЕ. Не всё так просто. Имея такое внутреннее отношение человек будет меньше получать удовлетворения на работе, проще относиться к своим обязанностям (зачем стараться, если все так плохо). Думаю, что чисто внутренние не получится. Тем более, зная, что вы перегибаете палку (в сторону негатива), ваш мозг сделает поправку на это, и уверенности вряд ли вы получите. Мне сложно агрументировать этот момент, но здесь я абсолютно против вашего подхода. Нужно честно себе говорить о всех За и Против, и не стараться себя же обмануть.
А какая не отразится? Например, чтение художественной литературы тоже может создавать нагрузку на мозг. Но никто же не дает советов не читать.

Разные вещи, затрагивающие разные отделы. Скажем так, работая над другим проектом, я во время основной работы часто ловил себя на том, что голова моя занята этим другим проектом. И это заметно сказывалось на эффективности на основной работе. Плюс к этому, я замечал, что после дополнительно проекта я не могу утром с той же легкостью решать задачи-проблемы, как и раньше.
В случае, музыки и литературы такого не наблюдалось.

Возвращаясь к самому посту, я думаю, что стоит поступить так: задать вопрос своему начальнику или куратору «Что я должен делать, чтобы получать больше? Мне нужно **** в месяц.» И уже отсюда строить разговор.
Есть моменты в статье, с которыми не могу согласиться.
Главным фактором я указал размер зарплаты, обосновывая это тем, что так остается больше времени на жизнь.

Обычно свободного времени остается именно там, где меньше платят. А вот постараться перевести полученные деньги в своё время можно, но получается не всегда.
Начинайте для себя делать акцент на всех недостатках текущего места работы: как вам не нравится, что в обед постоянно кто-то греет рыбу, что кондиционер работает прямо над вашей спиной, как вас бесит штраф за опоздание на рабочее место на одну минуту, как вы устали от реализации фич, которые на самом деле никому не нужны, как вам надоел текущий стек используемых технологий, как вы давно уже не изучали что-то новое.

Извините, но это психология нытика. И дело не в том, покажите ли вы это внешне или нет. Человека с таким отношение сразу за шкирку и с работы. Мне сложно представить, сколько нужно недоплачивать работнику (экономить на нем), чтобы терпеть такое отношение с его стороны.
Суть в том, что программируя в удовольствие, вы попадаете в раш, из-за чего тяжело остановиться, даже чтобы поесть или поспать. Но помните, что кроме программирования в жизни есть и другие интересные штуки, ищите свой баланс.

Никто не спорит, что интересно. Вот только проблема в том, что ресурсы человека ограничены, и дополнительная (пусть и приятная) нагрузка на мозг после работы отразится на самой работе.

В целом вы описали ваше состояние и ваши проблемы (сложности). Мне кажется, что здесь все очень индивидуально. То, что вы считаете для себя однозначно правильно, я бы счел неприемлемым. И наоборот.
Думаю, что нет. В примерах к 3-й задачи есть ответы. И в этих ответах (то чего хотят поручить) есть всего 1 значение. Поэтому и мы должны давать 1 значение в качестве ответа.
Вопрос 2. — Видел задачу в другом месте (хотя сам не решил)
Задача 3. — Поиск минимума? Или пары рядом стоящих чисел, когда первое больше второго.
Задача 2. За 1 проход заносим в Хэш значения квадратов элементов. А далее двойным циклом складываем квадраты элементов и проверяем наличие такого же значения в Хэше.
Задача 1. Необходимо определиться, как интерпретировать [2000,2010],[2010,2020], т.е. случай когда год смерти одного слона совпадает с годом рождения другого слона. Можно ли считать, что [2000,2020] жил ровно 1 слон, или же [2010,2010] жило 2 слона.
Предположим первое. Заводим Хэш, где год — ключ, а значение — +1 если это дата рождения, -1 если это дата смерти. Если в 1 год родилось 5 слонов, а умерло 2, тогда в хеше будет 5-2=3. Затем выгружаем все не нулевые значения Хэша в массив, сортируем его, и за 1 проход получаем решение. Сложность O(n*lon(n)) за счет сортировки.
Можно по иному пойти, выгрузить даты рождения в 1 массив, а смерти в другой массив. Отсортировать оба, и совместным прохождением по обоим массивам найти ответ. Сложность та же.

Про бананы и верблюда ещё думаю.
Задача про муху для меня самого не понятна. Если бы там были корректные условия (муха в 2 раза быстрей), то такие задачи могут даваться, чтобы расслабить кандидата. Очень часто кандидаты волнуются (и этим мешают понять что они такое). А так человек получил простую задачу, решил, увидел, что ничего сверхестественного от него не требуется (как например разводить море подобно Моисею).
Ещё есть класс задач, которые легко решают дети, но не могут решить взрослые люди. Т.е. будет лучше, если кандидат не сможет решить такую задачу. www.lprobs.ru/prob37solve.html
Ещё был случай, когда на собеседовании после 9 чисто технических вопросов по языку дали простую задачу по геометрии. Зачем это сделали — не знаю. Видимо я много ещё чего не понимаю в собеседованиях.
(кстати, не очень понял, почему для secondArray достаточно длины n

Достаточно длины (n+1), если n — длина исходного массива. Если у нас например все 1, то счетчик дойдет до n, и так как n%(n+1)=n, то последний элемент все равно не совпадет с первым элементом, у которого индекс 0. Также верно и в обратную сторону.
Вы можете оценивать, как хотите — ваше право.
Возможно, другая сторона думает совсем иначе.
Да, есть вакансии, где нужен конкретный спец под конкретное дело с учетом того, что выбранный инструмент — это надолго.
Но посмотрите с другой стороны, сейчас всё очень быстро меняется, через полгода ваш любимый фреймворк или любимая база данных (в которой вы спец и можете ответить на любой технический вопрос) устареет и будет заменена на другую. И компания получит бесполезного работника в виде вас.
А вот если человек не знает технических тонкостей, но соображает (хорошо решает подобные задачи), то он быстро разберется в технологии и по ходу разберется что и как.
Конечно, важно и умение соображать и знание конкретной технологии, но я бы оценивал их как 2 к 1.
тем более я мог задать подобную задачу задающему ее сотруднику

Смысл? Проверяются ваши качества, а не того сотрудника.
В лучшем случае у вас будет материал для беседы, в худшем минус бал (или 2) для вас за сомнительное поведение.

Вот меня часто просят рассказать «ход рассуждений». Так, что вот вам пример (в виде меня), опровергающий ваше мнение.
В задаче 2 ошибка
Правильное решение
    public static int totalBits(int value){
        int count =0;
        int mask = 1;// 0001, 0010, 0100, 1000 ...
        int mask2 =0;// 0000, 0001, 0011, 0111 ...
        while(value>=mask){
            if((value&mask)>0){
                count+=(value&mask2)+1;
            }
            count+=(value -(value&(mask+mask2)) )/2;
            mask2+=mask;
            mask = mask + mask;
        }
        return count;
    }


Обидно, что перед отправкой проверял, но попал именно на те значения, на которых ошибки не было.
Причем ваш код работает, а в моем ошибка.
Сам понял, что можно за 1 цикл, когда писал решение.
Решение в виде кода
Задача 1
public static int[] largestSubarray(int[] array){
        final int n = array.length+1;
        int[] secondArray = new int[n];
        int c = 0;
        // Первый проход - заполняем массив
        for(int i=0; i<array.length; i++){
            if(array[i]==1){
                c++;
            }else{
                c--;
            }
            secondArray[c%n]=i;
        }
        // Второй проход - ищем максимальную длинну подмассива
        c = 0;
        int index = -1;
        int maxValue = secondArray[0]+1;
        for(int i=0; i<array.length; i++){
            if(array[i]==1){
                c++;
            }else{
                c--;
            }
            if(secondArray[c%n]-i>maxValue){
                maxValue = secondArray[c%n]-i;
                index = i;
            }
        }
        // Если найден подмассив
        if(maxValue>1){
            int result[] = new int[2];
            result[0] = index+1;
            result[1] = index+maxValue;
            return result;
        }
        return null;
    }


Задача 2
public static int totalBits(int value){
        int count =0;
        int mask = 1;// 0001, 0010, 0100, 1000 ...
        int mask2 =0;// 0000, 0001, 0011, 0111 ...
        while(value>mask){   
            count+=(value&mask2);
            count+=(value -(value&(mask+mask2)) )/2;
            mask2+=mask;
            mask = mask + mask;
        }
        return count;
    }


Задача 3

public static int[] findRepeatingMissing(int[] array){
        int a =0;
        long b =0;
        for(int i=0; i<array.length; i++){
            a+=array[i]-i;
            b+=array[i]*array[i]-i*i;
        }
        int result[] = new int[2];
        result[0] = (int)(a+b/a)/2;
        result[1] = a - result[0];
        return result;
    }

Почему? 48 часов — это 2 попытки. И в самом низу решения я указал, как за эти 2 попытки найти бочку. Может я скомкано объяснил. Всё, что выше последнего абзаца — это рассуждения в слух. Последний абзац — это решение.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность