Перед співбесідою почитав все що знайшов про роботу в Yandex, зокрема інтерв'ю багатьох босів Yandex про те, як вони уважно ставляться до людей і який у них хороший процес відбору. Подивився фото на сайті, їх PR про роботу в компанії і т.д. Yandex намагається позиціонувати як демократичну і неформальну організацію, де піклуються про людей, створюють їм всі умови роботи.
Інтерв'юер зустрів мене у рісепшн, проводив в кімнату, запропонував каву. Офіс не дуже затишний, незважаючи на всю помпезність дизайну (пофарбовані цеглини, пластикові «хвилі», буйство фарб) офіс справляє дуже суперечливе враження: старина перетинається з хай-теком і елементами «совка» (короба, підвішені лампи на проводах або проволоки). Офіс по стилю еклектика, змішання різних стилів, виробляє дуже неоднозначне враження. Дуже не сподобалися «трійки» - три стола під 120 градусів без перегородок, працівникам доведеться споглядати один одного мінімум 8 годин на день, що неприємно. Приблизно через п'ять хвилин почалося інтерв'ю.
Інтерв'юер відразу перейшов на «ти», незважаючи на те що я називав його на «Ви». Я звичайно розумію, що «неформальна команда де всі рівні», тільки я поки не член команди, це скоріше відносини - екзаменатор / стедент, причому зазвичай екзаменатори на «ти» не переходять. Я не проти «ти», але вважаю що це не погано було б запропонувати і не впевнений, що це хороша ідея на співбесіді.
Я дуже вдячний Яндексу, що провели безкоштовний іспит з С ++ і дозволили мені краще пізнати свої слабкі місця. Але другого співбесіди в Вашої компанії я дуже постараюся уникнути, дуже.
Значить судячи з опису співбесіди одним з дійових осіб міг бути я. Того кого провадив співбесіди теж начебто упізнав, але з імовірністю 90%. Міг би назвати для чистоти експерименту як тебе звали (можна тільки ім'я і дату співбесіди).
Що я можу сказати:
1) Чи дійсно співбесіду в Яндексі починається з технічних питань які йдуть досить довго. Так, напевно, це не правильно і співбесіду потрібно починати з якогось полайтеса і питань про те чим займався. Проте якщо ймовірність того, що людина просто не підійде 90% то хочеться все це докладно розповідати вже після того, як стає зрозуміло, що людина банально вміє програмувати. Можливо, ви маєте рацію що відсутність інтересу до власної персони виглядає вороже, проте він зазвичай з'являється після декількох хороших відповідей.
Проте ми зараз подумаємо і можливо вирішимо з якогось 5-хвилинного вступу. Раптом кому це важливо.
2) Мимовільно перескакувати на 'ти' це моя звичка. Так вийшло, що у всіх компаніях, де я працював прийнято звертатися на "ти" до всіх включаючи ген. директора. Те що, потрібно явно пропонувати людям перейти на "ти" врахую - буду так робити.
3) Взагалі під 'radix sort' мається на увазі приблизно наступне. Є алгоритм radix_sort, який виконує сортування чисел за лінійний час. Потрібно написати цей алгоритм самому, і з його допомогою обігнати стандартний std :: sort. На твоєму боці, що std :: sort він O (n * ln (n)). Проти тебе, що константа у нього гірше і на ноут всього 1Gb пам'яті (тобто нескінченно увелчівать розмір масиву в надії, що пережене не вийде).
Якщо кандидат алгоритму не знає, то він йому розповідається. При вирішенні завдань можна користуватися інтернетом і wikipedia.org, де алгоритм описаний. Завдання потрібна тому, що є люди, у яких хороші теоретичні знання, але руками вони все роблять дуже-дуже погано. Завдання, до речі, доведеться поміняти. До речі в такому контексті ти м'яко кажучи набрехав, що у тебе не було можливості користуватися инетом, і було потрібно знати алгоритм.
5) Про маршрутку: не знаю чи буде для тебе сюрпризом, що половину людей які їздять в нашій маршрутці не є співробітниками Яндекса. Причина дуже проста - тут багато офісів і все окружні офіси їздять на нашій маршрутці. Треба ж їм якось від метро добиратися. Можна звичайно туди пускати тільки за перепустками і купонах, які висилати по email-у, але це суцільний геморой. Простіше більше маршруток пустити і нехай все їздять.
4) Теза, що у людини потрібно шукати сильні сторони, а не слабкі, він взагалі-то дуже вірний. Власне, зазвичай першу годину співбесіди ми намагаємося знайти сильну сторону у вигляді знання однієї мови програмування. Якщо ми його знаходимо, то тоді починаються всі інші пошуки професіоналізму. З приводу того, щоб взагалі не пускати програмістів на співбесіду, думка звичайно свіжа, але хочеться можливість дати людині вибрати з ким працювати. Плюс у мене все-таки є сумніви, що будь-якою кількістю розмов за життя можна визначити у людини професіоналізм. Якщо у є подібний досвід організації співбесід виключно HR-ами без технічних питань взагалі, я б із задоволенням про це послухав.
Для кандидатів, які хочуть почати співбесіду c HR-ом а не програмістом, давайте домовимося, що ви напишіть про це явно відповіддю на запрошення. Для того, щоб людина якій ви таке заявили НЕ офігів, пошліться на мене або дайте посилання на це повідомлення ( 'вас відразу проводити співбесіду, або ви з HR спочатку поговоріть?').
5) Ми дійсно в Росії конкуруємо з Google. Може бути дійсно так само, як жигулі конкурують з фордом. Єдино, що жигулі дешевше, а ми з Гуглом обидва надаємо послуги з нульовою ціною.
6) Чому співбесіди саме такі, а не інші? Тому, що у них мета не 'подобається всім', а зрозуміти підходимо ми з чоловіком один одному чи ні. Що ми не підходимо людині я легко готовий почути, буває і таке. Що ми хочемо від людини, я вже кілька разів говорив:
а) Знання мови програмування, який він вважає основним. У тому числі можливо деяких неочевидних його особливостей, наприклад, що в C ++ є винятки, і sizeof (long) може повертати різне значення на різних платформах. Може бути, я щось зайве звичайно питаю, але ось така у нас секта. До речі крім самого початку співбесіди на тесті можна користуватися документацією і пошуком в інеті (питаєте інтерв'юера - вам відповідають).
б) Що людина знає базові алгоритми. А саме: правильно може вибрати контейнер під задачу, і в загальних рисах знає як він влаштований або може це вигадати.
в) Що отримавши будь-яке завдання, яка не є стандартною (не важливо про поїзди, лампочки, або проектування пошуку) він не впаде в повний ступор, а хоча б з підказками її вирішить.
г) Що він здатний написати код розміром в 50 рядків так щоб він не впав, і потім провести над ним найпростішу оптимізацію.
Ми що занадто багато хочемо?
7) Женя Завалішина яка директор Я.Д. дійсно колишня дружина Діми Завалішина, який 5 років не працює в Яндексі, у нього зараз свій стартап dz.ru. До того моменту, як вона повернулася в Яндекс, Діма тут уже не працював, і покликали її тому вона дуже розумна і виразна, а зовсім не "по блату", як можна припустити.
8) Завдання про 'способі пошуку нерухомої точки стискає відображення' це просто Ден постебался в своєму блозі, так назвавши частина алгоритму, відомого з 60 років. Той самий, який Larry Page перший здогадався застосовувати до Web, і переназвати своїм ім'ям (PageRank). Ми обговорюємо цю тему при наборі в групу робота. При цьому знову ж таки, всі необхідні визначення були дані. Ніяке ТФКЗ у нас звичайно ж не питають.
9) Коли в Яндексі було 78 чоловік я теж їх усіх знав по іменах. Потім я став знати по іменах тільки девелоперів, і зламався десь на цифрі 150 чоловік. Вибачте, погана пам'ять.
10) в 21 в офісі дійсно повно народу, які прийшли на роботу в 12 або 13 годин. Мені ось так зручніше, наприклад.
Будь-яка проблема дизайну може бути вирішена шляхом введення додаткової абстрактного шару, за винятком проблеми занадто великої кількості додаткових абстрактних шарів