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

Комментарии 220

Хех, не могу не спросить, накипело (меня рассказ улыбнул)?
Да не то, чтобы. Давно хотелось высказаться.
Что касается обхода дерева, то совершать обход можно с разных сторон: слева или справа.

Здравия желаю, товарищ капитан!

НЛО прилетело и опубликовало эту надпись здесь
Не слева и справа, а по часовой стрелке и против часовой.
1. Почему вы выбрали нашу компанию?
А я отвечаю «это вы меня нашли». XD

На работе на которой сейчас работаю меня на собеседовании спросили, почему я хочу уйти с предыдущего места работы)) Ответил: "Да я как бы не особо горю желанием уходить, просто вдруг что-то поинтереснее есть вокруг, а я и не а курсе") Ниче, взяли.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Очевидно, ваша работа ближе к консерватории, нежели к вашему месту жительства)

Вспомнилось это :)

Вы ранее привлекались за хранение данных в глобальных переменных?
Какой результат выполнения команды git push me and then just touch me till I can get my satisfaction, satisfaction?
Найдите точку G бинарным поиском
Назовите свою любимую позу для стендап митинга
Вы когда-нибудь делали .Net за деньги?
Вы способны довести девушку до оргазма языком программирования?
Сформулируйте зависимость времени исправления критического бага от seniority присутствующего менеджера
В своём резюме вы указали знание php. вам не стыдно?
Почему люк скайуокер круглый?
Какой из циклов быстрее, for, while или правило буравчика?
Обоснуйте полноту Javascript по Тьюрингу с позиций фрейдистской школы программирования
Перед вами кисть, холст и мольберт. напишите компилятор
Расскажите что-нибудь про Pascal
Расскажите о плюсах и минусах автокомплита в сексе
Как часто вы говорите своему коду «ну пожалуйста..»?
Перестаньте краснеть и хихикать! повторяем вопрос: «вы когда-нибудь ранее использовали LaTeX?»
У кого был самый длинный код в вашей прошлой команде?
Вы моете руки перед правкой кода на продакшне?
Что вызывает у вас бóльшую улыбку: «I have read and agree to the terms and conditions» или подпись под соглашением о неразглашении?
В резюме указано, что ваша последняя должность — delivery manager… вы пиццу что ли разносили?
Вас раньше обвиняли в попытках программирования?
Ну признайтесь уже — джаваскрипт алертами дебажили?
Можете ли вы провести аналогию между работой на пятилетнем проекте и проктологией?
Что, по-вашему мнению, более эффективно: скопипастить код из примеров или убедить заказчика, что ему не нужна эта фича?
push —force, checkout — а какие еще способы разрешения конфликтов вы знаете?
Если честно, то нас немного смущает тот факт, что вы искали работу программиста через биржу труда…
Согласны ли вы что каждый девелопер должен посадить зрение, построить велосипед и вырастить репозиторий?
В своем резюме вы указали, что хотели бы поработать на интересном проекте… вы этот проект с собой принесли?
Правда ли, что смесь php, css, js, html и sql в одном файле имеет слабительный эффект?
Согласны ли вы, что у админа должна быть борода, даже если админ — женщина?
Скажите, вы когда-нибудь симулировали ООП?
Умеете ли вы «договариваться» с QA накануне релиза?
Каким вы видите свой код через пять лет?
Раскройте геополитические предпосылки kernel panic с точки зрения теории струн.
Xbox, PlayStation или Terminal — какую консоль предпочитаете?
Вас когда-нибудь запирали в серверной? За что?
Какие приемущества force push перед стандартной работой с репозиторием? сколько времени данная методика экономит лично вам?
2048 или “Косынка” — в чём вы более успешны?
Скажите честно, вы врёте в LinkedIn?
По каким внешним признакам разработчика можно определить длину спринта?
Вы толерантны к копипастам?
«Семь раз update один раз commit» или «семь раз commit один раз revert» — какой методологии вы придерживаетесь?
Цикл, условие, переменная — а какие еще термины из С вы знаете, чтобы отказать парню?
Цой, Ленин, PHP — что между ними общего?
Как объяснить джуниору что пинговать сервера в его возрасте – это нормально?
Назовите самое экстремальное место в котором вы занимались багфиксингом
Напишите простейшую операционную систему. уложитесь в 140 символов
Как часто вы играете со шрифтами?
В резюме сказано, что вы проработали 10 лет в отделе тестирования майкрософт. мы проверили — такого отдела не существует!
Как вы относитесь к легализации курения мануалов?

На Хабре комментарии порой лучше самой статьи)

Хм. Эталонное интервью. В палату мер и часов. XD

Про недостатки я как то написал что люблю сладкое. Секретарша, принимавшая анкету очень возмущалась, говорила что это не недостаток. Хомячит сама наверное тортики по ночам :)))

— Объясните, почему крышки для колодцев круглые? Что появилось раньше, материя или информация? Как давно вы перестали пить коньяк по утрам? Докажите, что P=NP. Чему равно самое большое натуральное число?

Ну допустим, почему крышки из металла круглые — это как раз очевидно, а пластиковые стали делать круглыми, потому что уже были круглые металлические :)

Я всегда думал что крышки от колодцев круглые, чтобы они не могли проваливаться в колодец.
Но это не связано с материалом.
А сейчас оказывается что пластиковым круглыми быть не обязательно. Как так? Пластик не позволяет квадратному люку проваливаться по диагонали?
Есть разные мнения.
Некоторые говорят, что крышки круглые, потому что колодцы круглые (можно сделать квадратные бОльшего размера, но это лишняя трата материала).
А колодцы круглые тоже для экономии (для того же сечения: меньше грунта вынимать, меньше материала для укрепления стенок).
Другие говорят, что бывают и квадратные колодцы и крышки (вероятно, на петлях, чтобы не поворачивались и не проваливались).
Крышки круглые потому, что напряжение на всей площади у круга одинаковое и он более устойчив к давлению.
Вообще — если погулять по центру Питера, то можно понять, что крышки могут быть и квадратными и прямоугольными. Круглые они нипочему. Просто так сложилось
нее… колодец устроен так, что его шахта начинается сильно ниже люка. Сверху же уложен армированный лист бетона, он сильно шире чем сам колодец. И вот в нем можно любое отверстие сделать
Достаточно использовать любую фигуру постоянной ширины
image
Да, но круг — самое прростое.
На деле и простой треугольник подойдет, потому что он на кант меньшей длины опирается.
Крышки круглые, потому как круг легче катить, и потому что колодцы круглые. А колодцы круглые, потому что ведра круглые. А и ведра и колодцы круглые, потому что когда вы будете ведро из колодца поднимать, при таких формах у ведра самая маленькая вероятность зацепиться при ударах о стенки колодца.
Ну если уж говорить о колоцках для воды, то они во многих случаях квадратные. А тут речь все же думаю о канализационных люках была.

Яма круглая, но верхушка квадратная, потому что брёвна гнуть неудобно.

да лан? Вы кольца бетонные видели? И по 5-9 штук в землю вставляют
Немного не в тему, но вот буквально недавно на Youtube наткнулся на какого-то бесстрашного дядьку, который колодцы копает. Так вот он, собственно, копает, уже стоя в кольцах, а они потом вниз ухают разом. А он посередине стоит. 5 лямов просмотров ролик набрал :)
ну наверно он хочет хорошую эпитафию получить :)
Загуглите на досуге «квадратные люки канализационные» (можете еще добавить «купить») :)
потому что металл при нагреве расширяется, при охлаждении сжимается. круг идеальная форма для минимизации вероятности заклинивания :)

На самом деле мне кажется все гораздо проще: крыши круглые, потому что люки, которые они закрывают — круглые. А так, крышки люков ливневой канализации нередко квадратные, например.

почему крышка Люка Скайуокера круглая?
Крышки круглые потому, что бы их можно было удобно катить в пункт приема металлолома :)
Пфф. :) После некоторых собеседований так и говорят.

Собеседование в фитнес:
1) Руководитель: Продай мне ручку
Соискатель: До свидания.

2) Руководитель: Вы нам подходите, мы вам перезвоним
Соискатель: А вы мне не подходите, до свидания.

3) Руководитель: нас можно найти по такому-то адресу. <Дальше начинает грузить какой-то херней>.
Соискатель: ой, извините, я передумала. До свидания.
Лично я никогда не мог пройти такого рода интервью. У меня отличный бекграунд, я писал проекты которые нужны компании и ради которых они мной заинтересовались, блестяще выполнил тестовое задание. Но неправильно перечислил примитивы синхронизации и все, недостачно опытный. Да любой найдет любую теоретическую информацию на стековерфлоу. Какого хрена?

Ну если какой-то примитив синхронизации просто не вспомнить в нужный момент (что он вообще существует), то и не придёт идея им воспользоваться.

А что насчет справочников? Или ими уже нельзя пользоваться?

Так а чем справочники от стековерфлоу отличаются? Не знаешь, что семафор вообще существует — не сможешь поискать по ключевому слову.
В справочниках, конечно, все примитивы синхронизации могут быть собраны в одной главе, рядом. Но это надо её прочитать, осознать, и опять же запомнить ключевые слова.
В общем, скажу по себе — иногда не хватает знания теории.

Как раз тем и отличаются, что все необходимое собрано в одной главе. Более того, часто достаточно просто пробежаться глазами по оглавлению, чтобы отметить для себя наиболее вероятные варианты. Да и потом — стэковерфлоу тоже нужно прочитать, осознать и адаптировать решение под свою задачу. Копипаст 1 к 1 редко когда сработает.

В конце-концов, есть и другие инженерные направления помимо софта. И там справочники очень даже в ходу.
Это так не работает.
Придумываешь инструмент, который мог бы помочь в конкретной ситуации и лезешь в гугл. В 99% случаев оказывается, что он уже существует. Мало кто из специалистов мыслит только в рамках своих непосредственных знаний.

А по какому ключевому слову его искать? Тут недавно кто-то из авторов предлагал события называть "воротами". Много ли "ворот" найдет гугл?

По синонимам, по глаголу, уточняя запрос, переформулируя — гуглить тоже уметь надо.
Или идешь в супермаркет библиотек и фреймворков и выбираешь нужную по категории
А что там сильно нового есть, критическая секция, семфоры, всевозможные комбинации. Вопрос надо ставить шире, как, что и почему тут надо синхронизировать, а уж чем дело десятое.

Эдак можно и язык не знать и вообще программировать не уметь. Гугл же есть, туториалы зафигачил, стэковерфлоу почитал и вперёд — готовый миддл девелопер :)
Примитивы синхронизации, как и структуры данных это необходимая теория, их нужно знать хотя бы основные.

Один из моих любимых приемов при проведении собеседования — попросить кандидата самому задавать те вопросы, которые он задал бы сам потенциальным коллегам, проводя собеседование. Очень многое становится понятно о человеке, его опыте и приоритетах, общих взглядах на разработку. К тому-же это снимает напряжение, у многих загораются глаза и пресный формальный разговор вдруг становится интересным.
Есть еще хороший метод, которым я пользуюсь сам: попросить человека дать профессиональные советы самому себе, скажем, 5 лет назад. Эффект примерно такой же.
Ага :)
1) не работать бесплатно
2) не давать советы бесплатно
3) не работать вне рабочее время
Как только это начнешь выполнять, сразу становишься успешным IT специалистом
Иногда работа во вне рабочее время может подстегнуть карьеру вверх.
… и после этого твой начальник отдела становится заслуженным начальником отдела, а то и начальником начальников.
Нет, серьёзно, если мне интересно писать код — я не хочу руководить проектом.
Если я хочу руководить проектом — я устал от кода и иду руководить проектом.
И вообще, зачем мне подстёгивать карьеру, когда можно спокойно подстегнуть зарплату?
Зарплата может быть привязана к позиции в штатном расписании, так что не всегда можно подстегнуть зарплату, оставаясь на текущей позиции.
НЛО прилетело и опубликовало эту надпись здесь

На западе в более или менее крупных конторах везде так, иначе бардак начинается. У нас имеются всякие DevOps Engineer IV и подобные.

НЛО прилетело и опубликовало эту надпись здесь
Какой бардак, можно поподробнее?

Бардак в бухгалтерии, ведь столько денег тогда придется тратить на зарплатный фонд каждый месяц :)

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

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

Уверен, что тесты для повышения квалификации будут:
1. Длиться несколько часов, чтобы отбить желание проходить такое снова
2. Содержать сложные задачки, которые не используются в реальной работе, чтобы убедить тебя в непрофессионализме
3. Повторно можно будет пройти тест только через несколько месяцев
Бардак с точки зрения менеджмента, в основном, конечно.

Непрозрачная система компенсаций: HR и финансы обычно централизованы, сидят вообще в другом городе и не понимают как и что у вас в департаменте происходит — почему Васе столько-то, а Пете столько-то платится.

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

Поэтому в любых конторах с количеством сотрудников, которое измеряется тысячами, есть подобная система уровней. Она есть в Гугле и других конторах такого уровня.

При этом, у нас по крайней мере, у руководителя департамента есть бюджет из которого он может привлекать внешних сотрудников (аутсорсеров и прочих с галер) в помощь основному контингенту если это нужно.

Я не говорю что она офигительна, мне вот тоже не нравится что мой коллега со знанями и опытом в 50% от моих получает примерно столько же. Но если хочется зарабатывать и у тебя есть что комании предложить — способы для этого тоже есть (консалтинг, контракт и т.д.)

Значит вы с коллегой выполняете примерно одинаковую работу, раз вам платят примерно одинаково. Значит для этой работы нужно ровно половина от вашего опыта, соответственно это не он, а вы не на своем месте.


В конце концов, если вы считаете, что вам мало платят, идите к начальству или другую компанию и просите больше. Вот и всё. Если не дадут больше, то соббсно о чем речь? Вы стоите ровно столько, за сколько можете себя продать.

В том то и дело что делаем мы разное совсем, несмотря на то что должность и уровень одинаковые.


Задачи есть, а должность под них не предусмотрена, поэтому впихнули на ту какая была на те деньги которые я запросил. А внутри уже выяснилось что на тех же деньгах сидят менее квалифицированные персонажи :)

Вы не находите свои слова немного заносчивыми и завистливыми? Вы сами попросили некоторую сумму, вам ее дали, но вам обидно, что кому-то за "более простую" работу платят столько же? Я если честно не знаю исходя из каких критериев вы делаете выводы о меньшей опытности ваших коллег, но даже если предположить, что вы правы — все это не является проблемой для кого-то, кроме вас)

Вы не находите свои слова немного заносчивыми и завистливыми?
Я констатирую проблемы данной системы оплаты труда. Когда я работал в РФ такой проблемы не было, несмотря на принятую у нас моду скрывать доходы, но шила то в мешке не утаишь. В итоге я договаривался о справедливом уровне пропорционально моему опыту\знаниям и, соответственно, полезности для компании.

Я если честно не знаю исходя из каких критериев вы делаете выводы о меньшей опытности ваших коллег
Я в этой лодке уже много лет и провел кучу собеседований. Так что определять уровень инженеров, а уж тем более тех с которыми работаю долгое время, немного научился.

все это не является проблемой для кого-то, кроме вас)
Абсолютно согласен. Хотя для компании, в лице руководителя департамента, это тоже будет проблемой когда через некоторое я время заговорю о прибавке, а он ее, скорее всего, обеспечить не сможет т.к. политика партии такая. И будут мучительные поиски замены, передача дел и так далее.
Я констатирую проблемы данной системы оплаты труда.
При данной системе оплаты труда вам платят столько, сколько вы запросили. Какие еще такие проблемы?
Это ж элементарно: демотивация. Такая ситуация приводит к тому что у меня через некоторое время пропадет желание делать то, что я делаю и что не могут делать другие в моей команде (аджайл матьиво). И, в итоге, развитие сервисов застопорится.
Вся эта хрень с лычками делается ровно для одного — НЕ ПЛАТИТЬ
Я не рулил компаниями с 10к+ сотрудников, но я уверен что вы пытаетесь найти простую и очевидную причину вместо того чтобы провести комплексный анализ задачи «как управлять этой огромной толпой, не потерять все бабки и чтобы сотрудники не разбежались по конкурентам».

В компаниях до 500 человек я просто приходил к гендиру\техдиру\дирдепу, обосновывал свою позицию и получал +ХХ процентов к окладу. В больших конторах это не работает. Это как управлять большой семьей и городом. Разные методы.

Понятное дело что бизнесу выгоднее платить меньше чем больше, но есть еще очень много других факторов. На ИТ рынке сейчас дефицит кадров и будет еще долго, так что компании готовы платить и много. Но если отдать бюджет на откуп сотням менеджеров — будет кумовство и бардак.
НЛО прилетело и опубликовало эту надпись здесь

В смысле "может быть привязана"? Кем привязана? Это же просто решение людей сколько платить сотруднику. Тот кто принимает решение о найме может иметь не только лимиты, но и личные соображения сколько можно платить сотруднику. Но не существует никакого нормативного документа, ограничивающего ЗП.

В крупных корпорациях вполне себе существует сетка зарплат, за которую выходить ну совсем не разрешают. А про госкомпании вообще молчу.

В госкомпаниях проще, как это ни странно: премии, матпомощь от профсоюза, надбавки за странно звучащие показатели (оперативность, сверхсрочные задачи), 13 зарплата и всё остальное.
Поэтому зп Васи и Пети за этот счёт ( а так же за хорошие отношения с начальством / бухгалтерией) может различаться в разы.

… только не твою карьеру

Бывает, что и твою.
Я вот бы дал совет «стараться поменьше».
Оче жаль что минусуют. Но я когда был помоложе, очень горел за проекты и из-за этого нервничал чуть что, что естессно перестало после определенного момента проходить бесследно (особенно после того, как горение за проект вытекло в 12 часовой рабочий день).

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

Так что повторюсь еще раз: я бы себе сказал стараться поменьше.

Здравствуйте, у меня сегодня тяжёлый день — пособеседуйте себя сами пожалуйста, а я кофе пока попью. Позовите, как начнёте сам с собой зарплату обсуждать :))))

Прочитал как раз после обсуждения на кухне по сабжу — теперь вообще не смешно.
А знаете что самое печальное? Собеседуешь человека в core команду разработки графдвижка в геймдеве, и попадаются люди которые искренне не понимают зачем про O спрашивают.
Собеседуешь человека в core команду разработки графдвижка в геймдеве, и попадаются люди которые искренне не понимают зачем
зачем нужны игры :D
Несколько миллионов человек играет в то что я делаю и добровольно платит за это деньги, почему бы и нет? Их выбор покупать такую игру, мой выбор делать её. Все довольны.
Это юмор. Я сам поигрываю изредка.
Ну а чего, какие такие высокопроизводительные алгоритмы) Сегодня у всех даже в люстрах 18 тысяч DDR, все потянет)
Ага, только вот реальные цифры из нашей игры: 15K игровых объектов, из них до 10K инстансов в мире игрока, миров у игрока около 10 больших и ещё около 100 маленьких. 30 магабайт — код клиента, это чисто текстовые файлы, без графики, бд и тп.
P.S. Я уловил ваш троллинг, но меня самого штырит от масштабов
Что ж это у вас за монстр такой? Вроде даже если в какой-нибудь rts стратегии типо total war посчитать всех юнитов на поле боя + стрелы + оружие + лошади и то меньше выйти должно
До тех пор пока люди это не видят, они в это не верят. Это flash ферма в соц сетях которой 9 лет, которая издана на всех соц сетях что вы можете назвать и ещё на некотором количестве таких, о которых вы скорее всего не подозревали, около десяти языков локализации(включая арты), для которой мы написали уже третий по счёту движок, и огромный стек технологий чтобы транслировать всё это в HTML5. Ссылок публично пока размещать не готов, зарелизим сконвертированную версию, может напишу пост.
Здорово! Вот так всегда — даже не подозреваешь, что в вроде кажущимся на первый взгляд простом и не особо бюджетным, малоизвестном проекте оказываются вобраны в себя куча технологий и оптимизаций.
2 релиза в неделю, 9 лет. Там много чего есть.
Здрасте. Я core девелопер движков с более чем 10 летним стажем(вплоть до реализации софтверного рендера с поддержкой шейдеров). Искренне не понимаю зачем вы про O спрашиваете.
Насколько быстр тот или иной алгоритм вполне понятно по общему представлению. А конкретно сложность сказать — это думать надо.
Ну и в целом пригодность алгоритмов по скорости оценивать не всегда(почти никогда) правильно.
Скажем приходит господин, видит задачу с большим количеством добавлений и удалений элементов. И заявляет, что массив тут никак не годится. Ведь реллокация же! И пишет на связных списках.
И даже вполне быстро. Только код получается хуже.
А ведь можно, например, использовать тот же массив, только запретить ему уменьшатся. Плюс сделать пропорциональное увеличение резерва. У нас тогда за десяток реаллоков массив занимает максимлаьно нужный ему объем и перестает вообще шевелится. А удобство использования остается.
Поэтому правильный ответ на вопрос: сколько времени занимает алгоритм — это «много» или «мало». Потому что детали помнить не нужно, а нужно помнить сложность в попугаях. Сложность всегда можно посчтитать точно уже в конкретной ситуации(ни разу в жизни не приходилось, хотя пару движков достаточно мощных с нуля написал).
Скажем приходит господин, видит задачу с большим количеством добавлений и удалений элементов. И заявляет, что массив тут никак не годится. Ведь реллокация же!

Ну, справедливости ради, массив с постоянной релокацией тут и правда не годится… Хотя это еще не повод связный список использовать.

если порядок не важен то можно свопать с последним при удалении, и добавлять в конец. Если не давать там реаллоцироваться массиву то вполне огонь.
Вот примерно на таком ответе в ответ можно услышать вы приняты. Есть люди которые на вопрос: «Ваша программа тормозит или работает недостаточно быстро, ваши действия?» не могут вообще ничего внятного сказать. Ни про профилировку, ни про анализ сложности, ни про то во что она упёрлась, может в диск например. А вопрос про то в какой момент нужно остановиться в оптимизации вообще очень много народу теряется.
Правильный вопрос, который нужно задать себе — как вообще они попыдают на собеседование? Что не так с предварительным отсевом? И как повысить его качество?
Я провожу собеседования в три этапа, сначала созвон, минимальное обсуждение, тестовая задачка, потом по результатам задачки либо сразу на очный собес, либо на созвон и потом собес. Подобные вопросы решаются обычно на предварительном созвоне.

Если человек не может посчитать сложность стандартных алгоритмов, то он вообще математику не знает — о чем с ним можно говорить? Хотя я конечно видел пару прогеров, которые не знают что такое логарифм и производная, но это были фронтенд, а не графические движки

«Посчитать сложность стандартных алгоритмов».
Что-то я вас не понимаю. Какая разница сложность какого алгоритма считать?
Может вы хотели сказать «помнить сложность стандартных алгоритмов»?

Отдельный вопрос — можете привести пару примеров из движкописательства, где нужны логарифмы?
Движкописательство, это вообще на 99% реализация научных работ середины прошлого века. Если мы не говорим о топ 5 движков, то никаких изыскательных работ не проводится. Если же вы делаете движок не входящий в топ 5, а программист говорит что нужно разработать новый алгоритм — проверьте его квалификацию, похоже он изобретает велосипед.
А зачем тогда писать то, что уже есть. Пишется как раз то чего нет. В нашем случае всё достаточно просто, это узкоспециализированный 2D движок для конкретного вида анимаций, который рисует инстансингом, с gpu анимацией, с deferred alpha blending, т.к. у нас в силу игры огромный overdraw. Этого нет из коробки нигде. Да, в том что я описал нет каких-то мега сложных вещей. Например мы пакуем атласы в рантайме и использует очень быстрый но не супер крутой по упаковке алгоритм, и нужно уметь это оценить, что же выбрать. Мы не изобретали свой паковщик но выбрать то надо. К стати есть шанс что для наших, узких, задач это вполне себе топ 1.
«А зачем тогда писать то, что уже есть.»
Речь не о том, что всё уже написано.
Речь о том, что всё уже исследовано.
В топ 5 движков работают в частности и те, кто пишет научные работы.
Все остальные, даже делая уникальные решения лишь компонуют научные работы вот тех ребят из топ 5 и других ученых.
А уж реализовать алгоритм по пейперу много ума(научного) не надо.
Может вы хотели сказать «помнить сложность стандартных алгоритмов»?

Да нет вообще то. Как раз можно и не помнить сложность пузырьковой сортировки (нафиг она нужна), но вот если вы не знаете как ее вывести, то печально.

Отдельный вопрос — можете привести пару примеров из движкописательства, где нужны логарифмы?

Да что уж логарифмы сразу? Мне и квадратное уравнение решать давно не приходилось. Вы бы взяли на работу человека, которые квадратные уравнения не умеет решать? В графических и физических движках есть задачи где и диффуры решать надо.

Если же вы делаете движок не входящий в топ 5, а программист говорит что нужно разработать новый алгоритм — проверьте его квалификацию, похоже он изобретает велосипед.


вплоть до реализации софтверного рендера с поддержкой шейдеров


У вас тут никаких противоречий нет?
но вот если вы не знаете как ее вывести, то печально.

Все алгоритмы считаются одинаково и стандартны и не стандартные.

Вы бы взяли на работу человека, которые квадратные уравнения не умеет решать?

Не решал квадратные уравнения очень давно. Чтобы решить — придется серьезно напрягать память и возможно(о боже) даже лезть в учебник. О чем же это говорит?

У вас тут никаких противоречий нет?

Нет. Софтверный рендер я делал поприколу, в рамках челенджа на gamedev.ru. Посчитал что это будет неплохой проверкой теоретических знаний и в целом будет полезно. И да, я там не изобретал ничего нового с точки зрения науки. Только реализовывал в коде чужие научные работы.

Проводил собеседования про .net лет 10 назад. Тоже спрашивал про сборщик мусора и передачу по ссылке. 20% ответить не могли, в том числе те, кто претендовали на senior.

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

Вы считаете что senior вообще не должен понимать как работает сборщик мусора? Как тогда он будет проблемы с быстродействием и перерасходом памяти решать?

Должен, конечно. Возможно, пример со сборщиком мусора не очень показателен. Но, например, он может не знать про blittable-типы, если не работал с неуправляемым кодом, и на позиции, на которую собеседуется, тоже нет подобных задач.

Я про такое и не спрашивал никогда. И если честно не понимаю о чем речь.


Вы же читали статью к которой пишете комментарии. В ней вопросы которые часто встречаются на собеседованиях и зачастую в них есть вполне практический смысл.

На самом деле вы не правы. Смысл в них уверенно стремится к нулю. Если с этих вопросов вы начинаете собеседование с человеком, который претенудет на роль senior или даже middle, то по моему мнению — вы просто плохой интервьюер. Мало того, что вы тратите свое время, так еще и чужое. Начинать нужно с вопросов, где кандидату «есть где развернуться». В качестве примера, это может быть «назови основные причины, почему на твой взгляд ООП — это плохо?» или «какие вопросы и в какой последовательности ты задаешь себе, когда проектируешь фреймворк с нуля?», или «какие конкретно выводы ты сделал из последних трех прочитанных тобой книг и как они изменили твое повседневное поведение?» — что-нибудь в таком духе. На такие вопросы нет однозначно-правильных ответов и это-то и нужно. А вопросы в стиле «как работает сборщик мусора?» или «как рабоает LINQ?» — это, по крайней мере для меня, индикатор безвыходной тупиковости. Если вам пришлось докатиться до них, чтобы поддерживать беседу, то интервью имеет смысл просто прекратить: кандидат явно не подходит. Исключения есть: когда конкретный вопрос выражает вполне конкретную боль вполне конкретного проекта (или команды) и нужен именно такой человек, который сможет с этой болью жить или не усугублять ее как минимум. Но такие ситуации — редки.

Конечно я не прав.


Видимо надо было нанимать философов, которые умеют рассуждать об ООП. Но мне нужны были люди, которые пишут код и понимают как этот код работает.


Вопросы про сборщик мусора был вообще первым в списке, потому что именно он показывает понимание человека что происходит "под капотом". И в ответ на этот вопрос многие могли "развернуться" очень сильно.


А вот холиваров в команде на тему "хорошо или плохо" я не допускал. Поэтому филосовствование мне было не нужно.

Ну вот а мне хочется видеть рядом людей, которые в первую очередь умеют думать. Потом еще раз думать. А потом только писать код, отвлекаясь между делом на хорошие книги или оперный театр. Мой жизненный опыт показывает, что такие кадры справляются с задачами гораздо лучше, если речь о долгосрочной перспективе. Но опять же, вопрос метрики, я согласен.

Потому что вы рядовой разработчик, а руководителю нужно чтобы работник в первую очередь умел делать. Если брать тех кто все время думает, то делать будет некому.


Насчет долгосрочной перспективы вопрос сложный. Долгосрочная перспектива это когда проект закроется и всех уволят. Поэтому нужны успехи в первую очередь в перспективе краткосрочной.

Поэтому нужны успехи в первую очередь в перспективе краткосрочной.

Простите за мои 5 копеек:
Когда гонятся в первую очередь за «ближними» (краткосрочными) целями, на выходе высокий шанс получить «макаронного монстра», которого потом поддерживать нет никакой возможности.

Моя позиция — в первую очередь задавать «долгосрочную перспективу». «Краткосрочная» должна подчиняться «долгосрочной». И иметь возможность эту самую «долгосрочную» корректировать.

Тогда мы имеем некий «план» и «решение в рамках этого плана». А не «шашки наголо и вперед на танки-окопы».

P.S. Я из Java мира и с .net дел не имел. Но у меня особо что-то думать на счет GC не то чтобы приходится.
Есть +- стандартные области видимости объектов. Есть их использование.
Если объект висит в памяти (используется) — GC его не трогает. Передаем по ссылке — объект продолжает использоваться и его GC не будет собирать. Если передали и клонировали, а не передали дальше, то оригинал более не используется и будет убран сборщиком. И с ходу в голове нет каких-то ситуаций, где было бы иначе (и возникали бы трудности).

Простите, какие-то общие слова, за которомы я не вижу конкретики.


Мой опыт говорит, что если все плохо в краткосрочной перспективе (нечего показывать на ближайшем демо), то и в долгосрочной будет все плохо, чего бы программисты не рассказывали.


А чтобы в краткосрочной было хорошо нужны люди которые умеют делать "сейчас", причем довольно толковые. Иначе, как вы сами говорите, получится "макаронный монстр".


У меня многократно такое получалось, когда было слишком много думателей в команде. Поэтому хороший специалист это не тот, кто можно пространно рассуждать об ООП, TDD, DDD, ADBC, EJB и АБВГД, а тот кто может взять и сделать то что будет работать.


PS. Ну вот у вас понимание как GC работает. И я был уверен что 100% программистов это расскажут, так как были не джуниоры. И очень удивился когда 20% не смогли.

нечего показывать на ближайшем демо

Эм… допускаю, что чего-то не догоняю, однако на моей практике это словосочетание могло обозначать ровно то, что собственно и написано.
Однако! Во временных единицах измерения тут, кхм, может быть что угодно: как «условный месяц», так и «через 15 минут созвон с заказчиком».
К чему это я — если счет идет на человеко-часы, то пахнет паленым и «дело труба». А если условный чекпоинт через ту же неделю, то ничего плохого не вижу в том, чтобы какое-то кол-во разработчиков вместо «написания кода на скорость в ИДЕ» взяли и минут 10 обсудили между собой, как:
«Будем прикручивать этот функционал… это будет отдельный модуль (с точки зрения проекта) или находиться внутри другого (уже существующего) модуля? Если отдельный модуль, то „как сервис“? Кто считает какое API необходимо этому модулю, может есть пожелания?»

Т.е. вот о чем я веду речь — о хорошей (в моем понимании) командной работе, когда коллеги по проекту хотя бы +- условно в курсе того, что делают остальные. Чтобы потом не было конфликтов «а я не знал, что Валера сделает это же самое, но во-о-о-н там».

UPD: И да, мой опыт говорит, что конструктивные быстрые переговоры вполне продуктивны, если при том же запуске проекта было капитальное обдумывание «общей схемы». Чтобы во время быстрых переговоров можно было опереться на «базовые договоренности в проекте».

Я уже давно работаю с фиксированными итерациями (аля скрам), поэтому краткосрочная перспектива это одна итерация (неделя-две). Среднесрочная — один релиз (месяц-два, изредка три), долгосрочная — полгода-год или более, обычно совпадает с длительностью проекта.


Людей всегда подбирал в первую очередь по умению укладываться в сроки итерации. Когда надо в рамках недельной итерации сделать 2-3 задачи, причем так, чтобы было что показать, то времени на работу "на долгосрочную перспективу" не остается.


Причем можно так фигачить с самого начала проекта. А потом просто рефакторить в случае чего. Но это уже вопрос кому как комфортнее. К вопросу найма не имеет отношения.

Люди, умеющие делать «сейчас», причем толковые, это все таки отдельный ценник и совершенно отдельный подход. Они же не ходят по улице с плакатом «кодю за еду», они «делают прямо сейчас», и, что весьма вероятно, Вашему конкуренту. Обычно Вы ищите спеца на занятом рынке, а потом его перекупаете, если повезет.
Человеку для решения задач необязательно понимать как под капотом устроена та или иная фича.

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


Если человек не имеет глубоких познаний в своей сфере, то senior-ом он ну никак быть не может.

А если он понимает как алгоритмы устроены, но не знает, из каких теорем вытекают эти алгоритмы или не знает как доказать эти теоремы, он может быть синьором? Глубина познаний всегда относительна.

Главное — понимание, почему используются именно эти алгоритмы.
А так да, всё относительно.

я вот шел на позицию синьера php (НЕ devops) в одну компанию. там мне задали вопрос: могу ли я настроить dev окружение на докерах. Ответил честно — никогда этого сам не делал, за это у нас отвечали обычно другие люди. как результат — отказ.
через пару недель взяли в другую компанию. В первые дни сказали, что по проекту задач нет — но хотели бы, чтоб у всех был докер настроен для dev. За 2-3 дня — настроил, так_чтоб_работало — команде нормально. :)
т.е. цена вопроса 2-3 дня.
Я долго думал, кто потерял больше:
— я, который мог бы потратить 3 дня и изучить/сделать что_то
или
— компания, которая из-за узких вопросов отшивает кандидатов
пока ответ не нашел

А вы уверены, что отказ был именно из-за того, что вы докер никогда не настраивали? Просто выглядит такая причина очень странно.


Ну и, возможно, у той компании именно тогда была необходимость в хорошей экспертизе по докеру?

Ну после этого собеседование закончилось )

Очень может быть, что им нужен был именно докерист.

Про странность причин — это им решать.
А вообще, в институте нам все время твердили — важно не знать «методические данные или алгоритмы», важно знать что они есть и где их можно найти.
А вот такие вопросы из серии, что написано на 50й строке в таком-то файле такого то фреймворка задавать смысла ноль!

Вы утирируете. Здесь имелись в виду основные принципы работы, которые senior знать должен.

Да хрен с ним наизусть, люди даже базовые вещи не могли рассказать:
1) Как определяет что мусор, а что нет (в общих чертах)
2) Как убирается мусор (в общих чертах)
3) Зачем нужны поколения


Никогда не требовалось пересказывать CLR via C#, но довольно большой процент пересказывал, с пониманием дела.

А зачем помнить то, что всегда можно прочесть в доке? Вот завтра выйдет новый сборщик мусора с принципиально другим принципом работы — все сеньоры перестануть таковыми быть?

Так можно о чем угодно сказать… Получается на собеседовании вообще ничего спрашивать не надо? Сразу тестовое задание давать?
В целом если кандидатов мало, то можно и так.

Ну вот варианты предлагали, где кандидату дается вопрос без правильного ответа. Я так понимаю, в таком случае нужно следить не за самим ответом, а за тем, как кандидат к нему приходит и как аргументирует; почему выбрал именно такое решение. Вторая вещь, на которую можно посмотреть — личность кандидата. Можно попробовать прикинуть как он впишется в команду.

А тестовое действительно зачастую перекрывает то, что спрашивают на собесах.

Вопрос, на самом деле, животрепещущий, т.к. у нас еще нет лакмусовой бумажки для отделения хороших кодеров от плохих на собеседовании. Например, даже если человек тупит в ответе на вопрос про сборщик мусора, где гарантия, что его просто утром не стукнуло по башке и он грандиозно тупит? Опять же, с другой стороны, сборщик писался как раз для того, чтобы программист не вникал в тонкости работы этого сборщика. Что если тех самых бутылочных ситуаций не случится и человеку не пригодятся знания? Ну и наконец: как понять, что человек не сможет ими овладеть в приемлемый срок в случае их необходимости? Тот же GC штука не шибко сложная в своем принципе и почесать доку по фразе «c# app performance problem», наткнуться на предложение оптимизировать мусор во имя справедливости и почитать о том что такое этот сборщик можно минут за 20. Возникает вопрос: так ли существенны эти 20 минут, что вы заворачиваете из-за них кандидата?

Мы точно программистов нанимать хотим? Не философов? Зачем программисту навык аргументировать?


Или речь про вопросы в духе "сколько мячиков для гольфа влезает в автобус"?
У вопросов в духе "сколько-чего-куда" есть вполне определенный смысл — проверить умение давать численные оценки при очень малом наборе априорных знаний. Это очень полезны навык для программиста если что. Но не ключевой.
Даже у вопроса про гору фудзи есть смысл, хотя все ругают эти вопросы.
А вы какие вопросы имеете ввиду?


Практика давно показала что ответы на "вопросы без правильного ответа" не имеют отношения к навыку написания кода. Да и в целом "результат интервью не влияет на продуктивность сотрудника".


Поэтому все что вы можете проверить — минимально необходимый набор знаний и навыков.


Например, даже если человек тупит в ответе на вопрос про сборщик мусора, где гарантия, что его просто утром не стукнуло по башке и он грандиозно тупит?

Так он на любой вопрос будет тупить. В этом случае не надо тратить время ни соискателя, ни интервьюера.


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

Вы путаете детали и принципы. Детали не спрашивал никогда, принципы нужно знать всем, кроме совсем джуниуров. Но джуниуров я не набирал никогда.


Ну и наконец: как понять, что человек не сможет ими овладеть в приемлемый срок в случае их необходимости?

Никак, мне нужны люди которые сразу будут разбираться что происходит под капотом.


Возникает вопрос: так ли существенны эти 20 минут, что вы заворачиваете из-за них кандидата?

Конечно, если кандидат предполчел не тратить свои 20 минут на то, чтобы подготовиться к собеседованию, то он не сильно нужен.

Мы точно программистов нанимать хотим? Не философов? Зачем программисту навык аргументировать?
Придут так ваши сеньоры проект делать, да не смогут определиться со стеком технолоигий просто потому, что каждый гнет свою линию, а аргументировать почему вот именно их решение подойдет в данном конкретном случае не могут. И ответсвенному за проект тоже не понятно на основе чего принимать решение — собрались здоровые высокоуважаемые дяди и неаргументированными мнениями сыпят.

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

Конечно, если кандидат предполчел не тратить свои 20 минут на то, чтобы подготовиться к собеседованию, то он не сильно нужен.
А вы вопросы на зачет заранее высылаете, или угадывать надо? Странно, из универа я вроде уже выпустился, а к зачетам и экзаменам все еще надо готовиться.

Вы путаете детали и принципы. Детали не спрашивал никогда, принципы нужно знать всем, кроме совсем джуниуров. Но джуниуров я не набирал никогда.
Ок. Принцип работы GC — он чистит оперативу от мусора. Мусор это то, на что в программе не имеется ссылки. Остальное детали. Но вы ведь не такого ответа ожидаете.
Вообще у меня странное ощущение, что вы задаете сеньору те вопросы, которые следовало бы спрашивать у джуна.

Да и в целом «результат интервью не влияет на продуктивность сотрудника».
Тогда возникает ровно один вопрос: зачем проводить интервью?

Или речь про вопросы в духе «сколько мячиков для гольфа влезает в автобус»?
Это другая крайность одного идиотизма. Вот кабы программисту поставили задачу написания алгоритма расчета числа этих мячей, помещающихся в упрощенную модель автобуса (например, заместить автобус параллепипедом) и предложили накидать в общих чертах алгоритм, тогда это было бы как минимум познавательно в отношении кандидата.
Обратить внимание имеет смысл на следующие вещи:
  1. как кандидат начинает решать задачу, т.е. с чего он начинает проектирование
  2. какие инструменты (алгоритмы) кандидат решает использовать
  3. какие вещи вызывали у кандидата сомнение

Это позволит как минимум составить впечатление о его стиле работы, что важно если вы вписываете его в команду. Об остальном скажет послужной список в резюме.

Вообще странная ситуация. Когда был джуном, меня спрашивали о том, как бы я построил такую-то систему, как бы решал такую задачу. А когда стал наниматься на мида, пошли задачки из разряда «два стула; на какой сам сядешь, на какой код посадишь». Я как-то не так в хату зашел что ли?

Не понимаю зачем аргументировать. Если решение А лучше Б, то оно должно быть:
1) меньше
2) написано быстрее
3) содержать меньше ошибок


Это объективные параметры (и связанные на самом деле). А философские аргументы субъективны и по большому счету не нужны.


А вы вопросы на зачет заранее высылаете, или угадывать надо?

Если всем заранее высылать вопросы, то они быстро попадут в разряд зазубренных. Мы предполагали что человек пришедший на позицию Senior .NET developer (web, asp.net, sql server) достаточно хорошо знает .NET, чтобы поддержать разговор о GC, структурных и ссылочных типах, использовании dispose, а также имеет базовые хотя бы базовые представления об ASP.NET (тогда еще web forms), http протоколе и базах данных.


Для начала было 10 вопросов по этим темам и первый про GC. Это как скрининг, имеет ли смысл дальше с человеком разговаривать. Большинство вопросов были такие, что можно было рассказать и мало, и много. Где-то даже пофилосовствовать. При этом совершенно необязательно было отвечать на все 10 правильно, если хотя бы половину человек осиливал, что уже мог претендовать на Senior с соответствующей ЗП.


Странно, из универа я вроде уже выпустился, а к зачетам и экзаменам все еще надо готовиться.

Собеседование = продажа, готовиться надо. Откуда работодатель узнает что вы ценный сотрудник если не сможете доказать?


Ок. Принцип работы GC — он чистит оперативу от мусора. Мусор это то, на что в программе не имеется ссылки. Остальное детали. Но вы ведь не такого ответа ожидаете.

Дальше будет вопрос как GC определяет что такое мусор. Важно чтобы человек сказал о достижимости объектов в куче. Это дает понимание что время работы GC пропорционально количеству ЖИВЫХ объектов, а также о механизмах утечек памяти в .NET.
Потом будет вопрос о том как чистится память, важно чтобы человек понимал что программа останавливается в это время, также чтобы понимал, что куча "сжимается", чтобы обеспечечить работу выделения памяти путем приращения указателя.
Потом вопрос про поколениях, который проверят насколько человек понимает что в .NET память зачастую лучше освободить быстрее, чем держать дольше.


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

По вашему сеньор не должен знать то, что должен знать джун? Вы как себе это представляете? Программисты со временем тупеют?


Тогда возникает ровно один вопрос: зачем проводить интервью?

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

Слушайте, так мой очерк, получается, буквально с вас и списан?

Да в принципе с каждого первого собеседования. Просто смешные ответы на обычные вопросы на собеседовании.

Ой, не с каждого, совсем не с каждого.
Это объективные параметры (и связанные на самом деле). А философские аргументы субъективны и по большому счету не нужны.

Это правила для джунов и мидлов. Сеньоры и архитекторы должны думать на несколько шагов вперёд и не расставлять подпорки максимально быстрыми способами, а искать решения, чтобы эти подпорки не стали костылями.


Потом будет вопрос о том как чистится память, важно чтобы человек понимал что программа останавливается в это время

Вы всё ещё пишете под .NET 2.0? Сейчас сборка мусора стала намного сложнее.


По вашему сеньор не должен знать то, что должен знать джун? Вы как себе это представляете? Программисты со временем тупеют?

А вы что, помните все-все-все вещи, которые сдавали в университете на экзаменах?


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


Например, джун может сходу выдать определение виртуальной функции, может сходу ответить, чем класс отличается от структуры. Но понимания всего этого у него может и не быть. Например, для джуна нормально вызывать виртуальную функцию из конструктора, нормально для работы с изображениями использовать для пикселей ссылочный тип (и пофиг, что стало на порядок медленее и на порядок больше памяти уходит).


А вот спроси сеньора, который успешно справился с несколькими сложными проектами, что такое виртуальная функция — он задумается. Для него это все равно что попросить дать определния словам "рука" или "спать".

Вы считаете что сеньоры и архитекторы не должны знать того, что знают джуниоры? Как тогда код-ревью делать?


Если вы не читали тред, то повторю, что я задавал такие вопросы 10 лет назад. Если быть точным, то 11 лет назад — в 2008 году. И сборка мусора с тех пор не поменялась в общих чертах. А те детали, которые изменились никогда не спрашивал на собеседовании.


Все что сдавал на экзаменах конечно не помню, потому что очень мало применял из того что сдавал. Но когда писал на .NET понимание деталей работы GC пригождалось очень часто, и жизненный цикл ASP.NET веб-страниц нужен был постоянно, и а уж детали HTTP и T-SQL даже сегодня помню. Слишком часто использовал.


Причем у меня в команде были разработчики, которые могли и не зная всего этого писать, а мне приходилось постоянно исправлять за ними.


У меня есть стойкое убеждение, что справиться с перерасходом памяти и низким быстродействием из-за этого без понимания принципов работы GC будет крайне сложно. Проверить это умение в условиях собеседования почти нереально, но проверить необходимые знания вполне можно.


PS. В .net совершенно безопасно вызывать виртуальный метод из конструктора, особенно если вы понимаете что делаете.

Вы считаете что сеньоры и архитекторы не должны знать того, что знают джуниоры? Как тогда код-ревью делать?

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


Просто собеседование зачастую выглядит как экзамен: спрашиваются вещи, которые потом не будут использоваться.


PS. В .net совершенно безопасно вызывать виртуальный метод из конструктора, особенно если вы понимаете что делаете.

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

Никогда не спрашивал на собеседованиях то что не будет использоваться. Всегда тупо времени жалко было на это. В том числе никогда не спрашивал про виртуальные методы, потому что в реальных проектах не доводилось создавать сложные иерархии классов.


Что касается вызова виртуальных методов из конструктора, то в .net поля класса инициализируются в начале конструктора, то есть на момент вызова метода дефолтный значения полей уже присвоены.
Так что если знаешь что происходит, то это безопасно.

Что касается вызова виртуальных методов из конструктора, то в .net поля класса инициализируются в начале конструктора, то есть на момент вызова метода дефолтный значения полей уже присвоены. Так что если знаешь что происходит, то это безопасно.

Вот именно что проинициализированы значениями по умолчанию (если нет in-place инициализаторов). Обращаться к ним безопасно, но вот значения по умолчанию — это не то, что хочется в них видеть.

Так делайте inplace, в чем проблема? Важно что есть детерминированное поведение в этом случае, поэтому зная детали (от знания которых некоторые хотят увернуться) можно без опасности вызывать виртуальные методы в конструкторе.


В отличие от C++, где вызов виртуального метода в конструкторе практически UB.

Собеседование = продажа, готовиться надо. Откуда работодатель узнает что вы ценный сотрудник если не сможете доказать?
Мы точно программистов нанимать хотим? Не философов? Зачем программисту навык аргументировать?
Я ценный специалист, или философ? Зачем мне аргументироать свою ценность?

По вашему сеньор не должен знать то, что должен знать джун? Вы как себе это представляете? Программисты со временем тупеют?
Нет, просто программисты перестают держать такое в голове. Зато в голове набирается куча абстрактных механизмов, помогающих решать реальные задачи. Это как со школой, например. Классе в пятом все знают доказательство теоремы пифагора потому что учить заставлют. А потом человек забывает его потому что само посебе оно не нужно, а место занимает.

Очевидно чтобы проверить что человек может выполнять те обязанности, которые на него возложат.
Судя по набору ваших вопросов у вас для этого тестовое задания прекрано должно подойти. Предложите написать человеку «молотилку данных» и посмотрите как он с памятью работает без всяких магических определений. Потом задайте 1-2 вопроса по этому тестовому на интервью. Ну или не 1-2 если угодно.
Я ценный специалист, или философ? Зачем мне аргументироать свою ценность?

Как "покупатель" о вашей ценности узнает?


Нет, просто программисты перестают держать такое в голове. Зато в голове набирается куча абстрактных механизмов, помогающих решать реальные задачи.

Что за абстрактные механизмы и какие задачи они помогают решать?
Как проверить наличие этих абстрактных механизмов в голове на собеседовании?


Судя по набору ваших вопросов у вас для этого тестовое задания прекрано должно подойти.

Оно прекрасно и подходило. А вопросы в начале — скрининг, стоит ли вообще человеку давать задание, обладает ли он знаниями, чтобы решать те задачи, которые на него будут возлагаться.


Предложите написать человеку «молотилку данных» и посмотрите как он с памятью работает без всяких магических определений.

В этом и проблема. Дать достаточно большое тестовое задание нельзя, а в маленьком проверить навык решения проблем с расходом памяти нельзя. Поэтому проверяли знания.


Сейчас перешли на другой способ. Просто даем реальную задачу. Часов на 20. Человек делает — оплачиваем, делает лучше всех — берем на работу.


Но тогда отсев огромный. Из 10 довольно толковых специалистов только один нашел время сделать, и то он оказался не супер-работником.

Ок, кажется я понял в чем ваша позиция и даже могу с ней согласиться. Хотя, откровенно говоря, я все еще считаю текущие методики найма и скрининга примитивными.
Моя подборка:
1) Один проживаете?
2) Долго с девушкой?
3) Куда отдыхать поедите?
4) А Вам что больше нравится?
5) Сколько лет готовы проработать в нашей компании?
6) После тестового и двух собеседований нужно пройти психолога, это обязательно.
А какая разница работодателю с кем я живу, куда езжу, чем занимаюсь?
Сам недавно сталкивался с такими вопросами, впечатление от интервью осталось негативное.
Крайне странные вопросы, если честно. Можете еще показать кандидату квадрат Малевича и спросить, что он об этом думает. Как это помогает решить ту задачу, которая стоит перед интервьювером?

Правильные ответы:
1) Не ваше дело.
2) Не ваше дело.
3) Не ваше дело.
4) Не ваше дело.
5) Если компания будет меня устраивать, а я компанию — много.
6) Не вопрос.
7) Можете не перезванивать.

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

У меня тоже однажды спросили про религию. Я не выдержал, и спросил, нахрена им это знать. В ответ они рассказали историю о том, как у них сотрудник буддист пришёл и потребовал отпуск, чтобы слетать куда-то там в Азию на свой буддистский ивент. Его не отпустили, после чего он плюнул и всё равно улетел. После этого они берут только христиан и атеистов. Буква Г — логика.

Лично меня такое обоснование вопроса в принципе устроило бы :)
Хотя бы понятно, что «мозги промывать не собираются» и сам вопрос +- обоснован интересами организации (а не чтобы завалить под надуманным предлогом).

Не знаю, у меня в этот возник вопрос, а адекватны ли они там вообще. Уж не говоря о том, что это совершенно незаконно. Кстати, это была не обычная контора, а центр специальных разработок МО РФ.

совершенно незаконно

Эм, я конечно по профессии «педант», но в целом, в жизни… может быть конечно вы и правы, спорить не буду.
Однако, если провести параллель с реальным миром, скажем отношения между м/ж, лично я за то, чтобы «на берегу», заранее, все скользкие моменты обговорить, а не «связаться с кем-то, а потом страдать от проблем».

Серьезно, смотрите сами — если вас не стали как-либо обижать, унижать или еще делать какие-либо неприятные действия в ваш же адрес… а напротив, сразу объяснили, что было такое недоразумение и больше они со своей стороны с определенными лицами не имеют желания работать… вот разве нужно «назло» лезть в такое место, если оно вам не подходит?

По-моему все напротив, прекрасно, когда открыто и честно люди могут произвести взаимо-оценку.

Во-первых, я не буддист. Был бы я буддистом — у меня возник бы вопрос, какого меня обобщают с человеком, который поступил не очень адекватно по, в общем-то, совершенно не связанным с религией причинам.
Во-вторых, они это обобщили ещё и на остальные религии, кроме христианства. Тут вообще логика даже близко не просматривается.
В-третьих, они прямым текстом сказали, что дискриминируют людей по религиозному признаку. Казалось бы, в такой вещи должно быть как минимум стыдно признаться, но не им.


Как я и сказал, проблема не в том, что они лично меня чем-то задели. А в том, что они создали у меня ощущение неадекватных людей, с которыми дела лучше не иметь.


вот разве нужно «назло» лезть в такое место, если оно вам не подходит?

Ну, я и не стал лезть) Это было единственное собеседование, с которого я просто встал и ушёл.


По-моему все напротив, прекрасно, когда открыто и честно люди могут произвести взаимо-оценку.

Ну, всё же, есть критерии, по которым взаимооценку производить не принято, как то: раса, вероисповедание, пол. Или хотя бы молчать о том, что она производится.

Или хотя бы молчать о том, что она производится

Ряд представителей одного этноса открыто в свое время говорили мне, что «таким тут не место». Что же, как говорится, «если тебе тут не рады, то незачем оставаться» — я и мигрировал.
Я понимаю, что о чем-то на 2019-й не принято говорить. Однако, опять же лично мне, куда комфортней, когда все карты кладут на стол открыто, чем где-то и как-то «за глаза»/«за спиной». А могут и «козни» всячески твориться.
Так что, лучше так.

P.S. При прочих равных я, аналогичным образом, так же имею список критериев, которые с моей стороны в крайней степени не приветствуются. И если у каких-то людей они есть — предпочту ничего общего с ними не иметь. И да, ряд критериев опять же «порицаем».
Однако, если мне крайне неприятны какие-то критерии, то зачем мучать себя и «того, другого человека»? Лучше никому никаких проблем не создавать — сразу понять несовместимость и разойтись. Без оскорблений или других проблем.

А в чём мучения? Я бы предпочёл, чтобы мне в таком случае просто отказали без объяснения причин. Я же не говорю, что они должны были взять и страдать. Хотя в данном случае и страданий каких-то вряд ли бы вышло.

А как же пастафарианцы? :\

Про них не спрашивал)

Раньше думал что это шутка, пока за последнее время на 3 таких собеседования не нарвался.
один раз я прямо спросил у работодателя: «зачем вы мне задаете дебильные вопросы?». Ответ был такой: пойми, у меня в подчинении овер сотни сотрудников и не все они, мягко сказать, адекватны и поведение многих тебя бы, вероятно, удивило. Поэтому и происходит то, что происходит. Ок, сказал я, теперь ситуация ясная, продолжайте. Вместо вопросов последовал офер.
По этой же причине, что не все сотрудники «мягко сказать, адекватны», я тоже стал считать, что вопросы на отвлеченные темы нужны. Когда только начинал работать и ходил по собесам, эти вопросы выбешивали. А когда сам поработаешь «в команде» с каким-нибудь коллегой-букой, с которым нужно много ментальных ресурсов и терпения потратить, чтобы выстроить процессы, начинаешь осознавать также и важность soft-skills и психологических качеств работника. Человек может быть очень компетентен в своей сфере, но чтобы эти компетенции разбудить, затрахаешься искать подход. А потом выясняется, что там ни девушки, ни детей, ни кошки, ни друзей и «не зовите меня никуда»
А как связано наличие/отсутствие девушки, детей, кошки с профессиональными компетенциями сотрудника? Чтобы попасть в вашу компанию он должен как-то под вас подстраивать личную жизнь?
Это странный вопрос. Если он не подходит компании и хочет в неё попасть — то да, должен подстраивать. Никто же насильно не загоняет
Компании, которые отсеивают по указанным выше критериям, точно нужно обходить стороной.
Если программист сидит в подвале, ему туда в ведре спускают ТЗ и деньги, а наверх поднимают готовый код — тогда да, его человеческие качества значения не имеют.

В большинстве же компаний программисты общаются между собой, и если человек выглядит или ведёт себя не так как все — то ему и самому в такой компании будет тяжело работать, и остальным тоже с ним будет тяжело работать. При этом он, вполне возможно, отлично бы влился в другую команию, где, наоборот, человек с девушкой, детьми и кошкой выглядел бы чужим.
Никак — вы прочитали комментарий, на который пишете ответ? Человек сказал «не все сотрудники «мягко сказать, адекватны»… когда сам поработаешь «в команде» с каким-нибудь коллегой-букой… Человек может быть очень компетентен в своей сфере, но чтобы эти компетенции разбудить, затрахаешься искать подход.»

Речь про отсеивание людей, с которыми просто нельзя общаться, про отсеивание неадекватов. Никто не требует точного ответа на вопрос «что делаете в свободное время» или что-то там про девушку — кому это интересно-то? Задавая такие вопросы, смотрят на то, как человек в принципе реагирует на нестандартную ситуацию, на потенциально конфликтную.
А если человек отреагирует так, что даст понять, что чем он там занимается в свободное время — это не их, мягко говоря, дело, работодатель воспримет это как неадекватность?

Абсолютно согласен, странно что заминусовали. Общая адекватность, да и общие ценности с коллективом очень важны, даже важнее чем технические навыки. Толку то от навыков человека, если у него нет девушки, потому что он гамает или бухает все свободное время, например?
Видел я гиков, уехавших в психушку и угрожавших коллегам ножом и там по личной жизни все понятно.
Главное спрашивать корректно, а не это ментовское "с кем проживаете?" :)))

Вы серьезно или троллите?
Знаю лично людей, которые живут одни и гамают по вечерам — у них с профессиональными навыками все в порядке.

А я героиновых наркоманов видел, у которых все нормально с профессиональной деятельностью.
Походу гиков обидело про "гамают", про бухают никто не возразил
Неужели не понятно, что речь про крайние случаи, а не про "гамают по вечерам"?

Толку то от навыков человека, если у него нет девушки...

Вот вы сейчас прямо обесценили мою работу за последние 5 лет, надо рассказать начальству о том, что они заблуждаются, а то я собрался работу менять, а они уговаривают остаться)))

А вы после слова "девушки" не стали читать?

А потом выясняется, что там ни девушки, ни детей, ни кошки, ни друзей и «не зовите меня никуда»


А что если кандидат — гей-интроверт и любит собак? Он, получается, вам не подходит?
Вы не поверите, я сам гей-интроверт-любитель-собак :) А если по делу. Всем, кто в общем тексте коммента увидел только строчки про собак и девушек, выделяю:
нужно много ментальных ресурсов и терпения потратить, чтобы выстроить процессы, начинаешь осознавать также и важность soft-skills и психологических качеств работника
Человек может быть очень компетентен в своей сфере, но чтобы эти компетенции разбудить, затрахаешься искать подход
НЛО прилетело и опубликовало эту надпись здесь
ну потому что как еще набрать овер 100 программеров на пустом рынке за ограниченный бюджет? Как то так их взяли в начале, на них потратили время деньги, из проекта их не вывести просто, на них завязаны разработки. Но ментальных сил у руковода взаимодействовать с новыми сложными личностями уже нет. Поэтому дуют на молоко.
Как проявляется сложность личности? Человек отказывается делать задачи, которые ему ставят?
Ок. личный опыт проявления сложности личности. Очень умный спец, технарь, системное мышление. Замкнут. Ночью апдейтит сервера компании, никому не говорит, уходит спать, телефон выключает. Сервера утром ложаться. Утром аврал, причину никто не понимает. Админ просыпается в 2 дня когда вся контора уже восстановлена из бекапов, со всем прилагающимся геморроем.
второй случай. Выходит отдел тех поддержки на работу в понедельник. Ни один компьютер в отделе не включается. После вскрытия оказывается, что внутри каждого не хватает то проца, то памяти, то видео. Разборки. Оказалось один замкнутый сотрудник вышел на выходных поиграть, и решил собрать себе лучший комп, для чего разобрал все компы отдела. Собрать забыл. Все время пока техподдержка авралила, он сидел рядом слушал музыку.
Надо ли говорить что созданные проблемы в авральном режиме решали программеры, техники, в общем люди, чьи должностные обязанности только смежные с этими сотрудниками?
Это я к тому, что люди, минусующие за требование базовой социальности не догадываются насколько эта несоциальность может быть глубока. Они думают что в их личную жизнь собираются лезть, а по факту такой сотрудник портит эту личную жизнь всему отделу, переводя ее в непереходящий аврал

Это вы примеры не асоциальности привели, а раздолбайства.

Скорее, в названных случаях раздолбайство наложилось на асоциальность, потому что в ситуации «напортачил, и тут же всем об этом рассказал» ущерб был бы намного меньше.
Понимаете, выявить проблему раздолбайства с социализированным сотрудником намного легче, чем с несоциализированным, который замкнут, который не идет на общение. Самих актов общения с ним много меньше, данных от него меньше. Ну и как внизу заметил коллега — если бы хотя бы сказал, ребата простите, я накосячил — его бы прикрыли перед руководством. Придумали бы как отмазать. Ну проставился бы за аврал, всякое ж бывает со всеми, дело житейское. Тут же вопрос в отношении. Другие рядовые сотрудники говорят — мы не будем работать в одном направлении с этим человеком. Ну или в особых случаях доходило до мордобитий. Кому это надо, все же приходят деньги зарабатывать кодингом, а не психоанализом сложных личностей.
НЛО прилетело и опубликовало эту надпись здесь
∃ организации, где должность программиста называется «математик».

Почти эталонные ответы для такой!
Я все таки с этим не соглашусь. Математик — это математик. И далеко не каждый математик может быть еще и хорошим программистом, обратное тоже справедливо.
Это была отсылка к анекдоту о том, что математики дают идеально точные и идеально бесполезные ответы :) Многие в посте из такой оперы.

В упомянутых организациях они «математики» просто потому, что программистов в древние времена утверждения штатки не предвиделось.
Из реальной жизни:
Рекрутер (технарь): «Вам знаком термин „длинный метод“? Что это такое?»
Я: «Да, знаком, этот метод не помещается на мой экран целиком, приходится прокручивать»

Р: «Наш метод близок к экстремальному программированию»
Я: «Это плохие новости, я не отношу себя к экстремистам»

Распрощались, конечно.
— Что вы знаете про технологию XP, использовали ее?
— Да ее ж уже сняли с поддержки! А так да, юзал когда то на паре компов
Перестал мучать людей давно. Короткое знакомство, даю задачку. С нужным контекстом. Пока делает, общаемся в телеге (раньше — скайпе, ватсапе). По ходу пьесы знакомимся лучше. Код в git, readme как развернуть, если ещё и развернул где нибудь + в карму. В итоге или отваливаются (обоюдно работает) или доходим до финиша. В итоге всё понятно, все довольны.
Желательно, при этом, в задачке чтоб был чужой код с багами. Единственно правильный подход на мой взгляд (нанимаемого). Понятно, не универсальный — наверное какого то крутого спеца или лида таким образом нанимать не надо. Но для найма обычных рабочих лошадок почему такой такой подход не практикуется повсеместно — загадка. Видимо лень людям задачи придумывать под каждую позицию.

С другой стороны бывает обидно, когда после выполнения тестового задания тебе без объяснения причин дают отлуп. Но если задание непростое и интересное — то вообщем то и не так обидно.
На лида свои задачки найдутся.
А причины отказа нужно объяснять. Земля круглая, люди учатся, растут.
Хотя бы так — вакансия одна, есть тот, кто сделал лучше. Вот ссылка на его код, вот твои ошибки.
А вакансия, наверное, была такая:

Опыт работы от 50 лет.
Вы должны победить дракона.
Ненормированный рабочий день.
Наличие прав на управление вертолетом.
Умение программировать на всех возможных языках.
Знание языка суахили не ниже уровня upper intermediate.
Расширение клиентской базы на 100500 человек в день.
Знание основ термоядерного синтеза.
Опыт в организации концертов Бориса Моисеева в Дагестане.
Уверенное использование телекинеза в рамках компетенции.
Большая концентрация мидихлорианов в крови.
Наличие золотой или серебряной медали с одной из олимпийских игр.
Наличие собственной базы клиентов.
Наличие нобелевской премии по физике как плюс.

Мы предлагаем:
Стул, кипяток.
Комфортабельный офис в здании заброшенной психбольницы напротив кладбища.
А как же молодой дружный коллектив? ))
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А вот у меня не так давно что-то похожее и было.
Висит у меня резюме на одной площадке. Приходит в Вайбер сообщение:
Нужен на проект middle php-разработчик. Проект на Yii2. Вот тестовое задание. Сделаешь — напишешь.

Ни кто такие, ни что за проект, ни что предлагают… Никакой информации вообще.
Обычно, такие сообщения просто игнорирую. Собственно, так поступил и с этим.
Но вот дней через пять мне нечего было делать. И я полез посмотреть на это задание.
Задание оказалось достаточно простым. Я от нечего делать его написал. Ну и раз уже сделал, то почему бы не отправить.

Примерно через неделю перезванивает некий, назовём его Боба. С которым у нас состоялся примерно следующий диалог.

— Боба: Ты выполнял для нас тестовое задание. Готовы взять тебя на работу. Предлагаем fulltime удалённо, ЗП — 7000 грн. Приступить нужно вчера.

Стоит отметить что по ощущениям Боба звонил где-то из бункера, т.к. связь была отвратительной. И я решил что я просто не расслышал. И на самом деле прозвучала сумма 27000.

— Я: Вчера не получится. Я сейчас работаю. И даже если я соглашусь на ваше предложение, то мне понадобится некоторое время, чтобы завершить все дела на текущей работе.

— Боба: Нам требуется программист срочно. Но мы согласны на вариант, чтобы ты уделял нашему проекту несколько часов в день, пока полностью не перейдёшь к нам.

Потом поговорили немного о стеке, о проекте.., о прочих требованиях. К слову, требования были достаточно серьёзные.

— Я: Хорошо, я подумаю. Давайте подведём итоги. Вы предлагаете удалённую работу fulltime и ЗП 27000 грн в месяц. Верно?

— Боба: Нет, 7000, а не 27000.

— Я: Прошу прощения, мне послышалась сумма 27000. И вы серьёзно надеетесь найти middle-разработчика, обладающего всеми необходимыми навыками, на полный рабочий день 8 часов за 7000 в месяц?

— Боба: А че, нормальная ЗП. Только мы требуем fulltime, а не 8 часов.

— Я: А fulltime и полный рабочий день — это разные вещи?

— Боба: под fulltime мы подразумеваем именно fulltime. Ты должен быть в нашем распоряжении 24 часа в сутки.

После чего я сказал, что это называется рабство, а не fulltime и положил трубку.
Какая прелесть. Это порядка 300 баксов, я правильно понял?
Ну, даже чуть меньше. Ближе к 250, чем к 300.
Лютый трэш. Как такие компании выживают в принципе?

Они и не выживают. Просто, перед тем как сдохнуть, некоторое время громко бултыхаются :)

Однако.
— Что такое “SOLID”?
— “Твердый”, реже — “сплошной”. Зависит от контекста, конечно.
Хах. Вопрос с которого я валю интервью.
Первое, что пришло на ум — солидол ))
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
комменты и статья отличные ))
 Как говорится, нужно задавать правильные вопросы чтобы получать правильные ответы )
Универсальный тест для любого собеседования )

image
Почему это в институтах не преподают?
НЛО прилетело и опубликовало эту надпись здесь
Дуб, акация, клен, вишня

То самое место когда улыбка больше не сходит с лица.
Мне на собеседовании как то сказали что мы крупная компания и не вы решаете, а мы, т.е. мы из вас будем выбирать. Пообщался, молча ушел, но осадок остался.
Достигнув определенного профессионального уровня, выбирает человек, а не компания.
Ну, компании тоже разные бывают. В тот же гугл всегда очередь. Ну и так или иначе сама компания тоже решает, брать или нет.

Скажем так, достигнув некого определённого уровня, можно повыбирать из компаний, которые находятся ниже или на одном уровне с тобой. И разнообразные рычаги есть с обеих сторон, как и возможность, скажем, не пройти испытательный срок для компании тоже (а не только для сотрудника)
Да не, не гугл, торговая компания с моего города, успешные по меркам провинции, был бы гугл я бы забил на свою самооценку :))) Потихоньку прокачиваюсь и готовлюсь к переезду поэтому :))))
Далеко не всех восхищает процесс рекрутинга в гугл, где нужно перед интервью вызубрить тонны ненужного в дальнейшем материала только для того, чтобы интервьюверы выбрали «лучшего из лучших».
Не спорю. Однако пока не иссякает поток отличных кандидатов, Гугл и остальные FAAMG могут себе позволить собеседовать именно так.
Я на интервью и (не только) говорю, что программирую всё, что движется. А что не движется — толкаю и программирую :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории