Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
— Что такое Object.hashCode()?
— Вас интересует текущая реализация, или семантика функции?
— вы запустили программу с хипом в 2 гигабайта и она работает медленно, что будете делать?
— а что за программа? какие инструменты есть в моём распряжении? почему вы считаете важным размер кучи?Почему вы привычное русское слово «куча» заменили странным заимствованием?
— предположим в этом коде нам надо перед «Some processing» отсортировать список в алфавитном порядке. Что будете делать?
— А можно ли менять входные данные, или лучше потратить время на их копирование?
вам еще рано искать технических специалистов. Для начала вам надо найти нового HR.
Хотя может и нет. На самом деле я даже не уверен что она работает «медленно» — может быстрее эта задача в принципе не решается. Но все же, хочется ускорить.
Ответ конечно получился не для собеседования :), но в жизни скорее это будет так.
Я не согласен с тем что вы ставите разницу между понятиями «для собеседования» и «для жизни».
Ну вообще iostat+gclog — и вы за минуту узнаете — есть ли overcommit по диску, есть ли излишняя нагрузка на gc, есть ли излишняя нагрузка на проц, не уходит ли ваша программа в своп.
Кроме того, я вам уже подсказал, что у меня есть серьезные подозрения что проблема именно в gc — т.к. характерные паузы в работе приложении говорят именно об этом.
Но если ситуацию можно временно улучшить потратив 10 минут на игру с параметрами gc, почему бы это не сделать?
Видите сколько инструментов и направлений анализа вылезло из простой на первый взгляд задачи? А все из-за того, что нет требований к тому, что нужно получить и нет никакой информации о среде запуска и т.д. Все, что необходимо даже для начала решения необходимо выспрашивать отдельно, а это с моей точки зрения большой минус…
Диск и сеть могут давать точно такие-же паузы, так что тут не все так очевидноКстати именно поэтому мы запускали iostat.
Это порочная практика, так как она не решает проблемы, а лишь маскирует ее и по закону Мерфи проблема выстрелит в полный рост тогда, когда ее будут ждать меньше всегоЧто именно «это» является порочной практикой? Минимизация усилий?
Кстати именно поэтому мы запускали iostat.
Что именно «это» является порочной практикой? Минимизация усилий?
Да, конечно, возможно ваша программа криво написана и клепает короткоживущие объекты. Но если ситуацию можно временно улучшить потратив 10 минут на игру с параметрами gc, почему бы это не сделать?
Я теряю сколько долларов каждый час из-за того, что я теряю клиентов, из-за того что программа тормозит.
Я могу дать пару часов разработчикам на создание заплатки, или поручить админам купить компьютер помощнее, в надежде что это поможет, но вот чего я не могу, так это ждать пока вы там проводите исследования.
не существует «правильных» ответов
Заметил, что на собеседованиях гоняют по быстродействию/оптимальному использованию памяти. На практике — в 99% случаев никто об этом не думает.
— Ну там была сложная система моделирующая систему городских коммуникаций с поиском оптимальных маршрутов и (…)
— Эмм, да, и что-то такое я слышал.
— Ну это адрес объекта
— Да там генератор случайный чисел, вот он и возвращает.
вы запустили программу с хипом в 2 гигабайта и она работает медленно, что будете делать?уменьшу хип.
увеличу хип
считает, что он отлично знает, к примеру, сиш. Так и говорит: «Я считаю, я хорошо знаю c#». На деле же, почти никто не смог назвать ни одного паттерна.
чем мютекс отличается от семафора или как решить проблему с dead lock
А знать чем мютекс отличается от семафора и что такое дедлок это начальное понимание многопточного программирования :) Возможно это специфика работы на С++, и для написание мобильных приложений оно и не нужноВы сильно удивитесь, но на Qt мы делаем тяжелые бизнес-приложения для десктопов. Факт в том, что задачки по многопоточности возникают не чаще 2-3 в год на всю команду. Да иметь представление полезно, но если человек преимущественно занимается например GUI или БД в проекте — нафиг оно ему надо? :)
Но не стоит слишком зацикливаться на личных качествах
Поэтому второй вопрос поручают выяснять эйчаруКаким бы HR распрекрасным не был, работать с этим соискателем вам а не эйчару, поэтому работу надо проверять. Это не значит прямо в лоб трещать «за жизнь» сначала. Нет. Все эти вопросы можно раскрыть в ходе технического собеседования. Впрочем немного «за жизнь» поболтать тоже полезно. Во первых в большей степени соискатель выбирает вас а не вы его (если вы не Google), надо дать понять что вы прежде всего люди а не роботы. А во вторых неожиданно ввернутый в серьезный технический диалог «прикол из жизни» прямо таки расслабляет соискателя, пробивает его защиту, и он может рассказать много интересного. Как в плюс так и в минус себе конечно. Да, тех. руководитель все равно прежде всего с людьми работает, и должен понимать психологию интуитивно.
Кроме того, нет у него времени на такую чепуху, как собеседование двадцати кандидатовНичего себе чепуха. Команда это самая важная часть проекта.
У Вас есть продукт, устоявшаяся команда и финансирование. Вы (команда) хорошо работали, и руководство готово заплатить еще денег чтобы нанять человека, чтобы, соответственно, ускорить разработку, повысить качество и иметь возможность тратить ресурсы на технологическое развитие продукта. <...> Исключения составляют компании которым «человек нужен вчера» <...>
О техническом собеседовании