Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Провалена співбесіда, робота над помилками і інший досвід

with 15 comments

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

Я не сильну жалкую що її завалив, бо по-перше, ми з фірмою 3Shape один одному таки не дуже підходили, а по-друге, невдачі дають більше досвіду (хоча може й менше запам’ятовуються, бо коли мене попросили згадати якісь свої невдалі проекти, я не зміг. Не те що я такий аж крутий, скоріше епізодична пам’ять не працює. Або я себе ніколи не переоцінював… 😯 ).

Також думаю що опис досвіду досвіду дає +50% отриманого досвіду, тому розповім про свої враження. Ну й крім того, халявний чужий досвід – це та річ яка робить блоги корисними.

Може все й не згадаю, бо співбесіда була аж вчора зранку, а я це пишу аж сьогодні ввечері, але що вийде, то вийде. Якщо не заснете на середині розповіді, то напевне теж щось нове дізнаєтесь.

Про вакансію

Отож. Справа була в офісі фірми 3Shape. Це датська компанія, заснована 10 років тому, випускником Копенгагенського університету, який в своїй дипломній описав конструкцію 3d сканера (От як треба дипломні писати!), і вони пишуть для нього різний софт, в основному CAD-системи для застосування в стоматології. Київський офіс відкрився п’ять років тому, зараз складає 50 людей, і зараз активно розширюється.

І їм потрібно, цитую: “highly skilled Delphi Software Developer to strengthen our R&D team”. Який повинен вміти:

  • Object-oriented analysis, design and programming
  • 3+ years of practical experience in Delphi or C++ or C# development
  • Experience in 3D Computer graphics or Geometric Algorithms is a big plus

І я подумав що можу їм підійти, бо по-перше, в моїй голові стоїть не найслабший движок тривимірної графіки, а по-друге, Делфі – це така штука з якою я розібрався ще в ліцеї. Хоча мені мої розумні однокурсники казали, що Delphi – це мінус в резюме. Тобто те що на ньому в школі вчаться – це одне. Але заробляти на ньому гроші – не круто. 🙂

Де я найбільше тупив

Першу дурницю я бовкнув ще до співбесіди. Коли мені вдруге передзвонила їх HR, і спитала яку я хочу зарплату. Я скромно сказав що 3000 грн, і то вважав себе наглим, бо ж ще навіть Препарату-Шеймоса не читав. Сусід сказав що це Київ, і тут будь-який кодер-примат 🙂 отримує як мінімум 6000, навіть якщо він взагалі нічого не читає, аби лиш міг писати код.

Але я зробив ще гірше. HR довго розповідала мені яка в них гарна і дружна команда, яка мала плинність кадрів, і що в них мало хто звільняється. Потім було питання про те чи я буду в них працювати довго. Я не хотів обіцяти те чого не можу передбачити. Звісно я б не хотів тікати від них в Materialise, чи ще кудись, але й сидіти постійно на Delphi – це ж зупинка на початку кар’єри. То я й сказав: “комп’ютерна графіка – це дуже цікаво, я цим довгий час захоплююсь, і мені ще не надоїдало, і не думаю що надоїсть. Крім того, мені казали, що Делфі в моєму резюме не надто сприятиме пошуку роботи.” І хоча це була лиш HR, а не інженер, здається я їх трохи образив. Не варто було цього робити.

Гуманітарна частина співбесіди

Половина розмови з HR була російською, половина англійською, аби перевірити мій speaking skill. Я не знав як англійською буде “співбесіда”. Виявляється просто – “interview”.

Ще мене спитали нащо мені Есперанто. Сказав що це формальна мова, тому в майбутньому я планую застосувати її в “human-computer interaction”. Ще може тому, аби на співбесідах мені задавали побільше таких простих питань.

– Чому ви вибрали саме свій вуз?
– Бо мені сказали що це найкращий вуз.

Інколи трохи страшно від того, що так воно може і є насправді.

– Важко було вступити?
– Ні, мене взяли по співбесіді (повторюю, коли йдете на співбесіду, треба знати що це англійською interview, особливо коли це слово зустрічається в заголовку листа з запрошенням)

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

– Ви вже працювали в якихось фірмах? Які технології використовували?
Тут я розказував про SoftJourn та те, як я намагався додати до Chrome панельку керування Redmine. HR-менеджери під час інтерв’ю пишуть щось на полях вашого резюме. Довелось пояснювати, що Journ just like “Journey”, but without “nee”.
– Додаток до Chrome писався на JavaScript, спілкувався з Redmine через REST API, мовою XML. А ще, Redmine написаний на Ruby on Rails, він чіпає до своїх форм security token, тому довелось писати костиль…. Ні, ні, я не ще не знаю Ruby, – так мені довелось зупинити спробу дописати його до мого резюме…

У вас були якісь невдалі проекти?
Ага. Я і danbst не змогли зробити своє GTA, але мені якось важко було все це пояснити. Сказав що не зміг написати AI для дорожнього руху в моделі міста. 🙂

Більше я про HR нічого не пам’ятаю. Потім прийшов інженер, назвемо його так, бо ім’я я чомусь не запитав. А напевне варто було б.

Він теж задав парочку гуманітарних запитань:
– Ви можете назвати три своїх найбільших недоліки?
Я задумався.
– Що жодного? Ви такий ідеальний?
– 🙂 Ну, я не люблю робити те що мені не подобається, і погано роблю те що не люблю…
– Але якщо доведеться?
Це було справді важке питання для мене. Напевне правильна відповідь – “я сподіваюсь що не доведеться, тому і йду саме до вас”.

– Якими досягненнями ви найбільше гордитесь?
– Ну, в нас на факультеті прийнято гордитись результатами UOI. Здається 2007 рік. Я вже точно не пам’ятаю… Що, давно було? … Я ще можу підтягнутись 25 разів.
– А я 30.
– 😯
– Хоча може я просто легший. 🙂
Хех. А сьогодні я зміг підтягнутись 26 разів. Хоча останні 6 були вже суто ногами, але ж прогрес.

Математика

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

– Що таке вектор?
До такої міри просте питання спочатку порвало мені шаблони.
– Еее. Набір координат.
– З геометричної точки зору?
Довжина і напрям.

Далі мені довелось виписати формули для скалярного й векторного добутку (я спочатку переплутав де sin, а де cos, хоча й знав що скалярний добуток ортогональних векторів дорівнює нулю, тому в скалярному cos), визначити в стіл, чи зі стола направлений векторний добуток, і записати покоординатні формули (що було найлегше).

дивуюсь чому я запам'ятав саме останнє правило? 🙂

– Куди направлений векторний добуток двох паралельних векторів?
– … Він нульовий.
– То куди ж?
– Куди завгодно.
– Як куди завгодно? В математиці все визначено.
– Ну, якщо так сильно треба визначеності, то можна використати границю. Нехай кут між ними прямує до 180^\circ, тоді векторний добуток прямує до нуля, хоча напрям зберігається.

Далі була задача знайти площу дванадцятипроменевої симетричної зірки, якщо дано внутрішній, і зовнішній радіуси.

Спойлер. Я спочатку хотів був танцювати від площі сектора, а потім побачив що її можна розбити на 24 однакові трикутники, в яких одна сторона дорівнює внутрішньому радіусу, інша зовнішньому, а кут між ними 15. Тому загалом S = 12*Rr*sin(15). Я ще, як завжди, забув що в площі трикутника, окрім основи й висоти треба ще множити на одну другу. Мені сказали що розв’язок неправильний – згадав про одну другу. Сказали що все одно неправильний – я помилки не знайшов. Виявилось що цього разу вже не я косинус з синусом переплутав. 🙂

І ще була задача про качку, ставок і лисицю. По сюжету, качка сидить в центрі ідеально круглого ставка, на березі якого сидить голодна лисиця. Швидкість качки v. При яких швидкостях лисиці качка зможе добратись до берега, не зустрівши там лисицю? Зможе при швидкості лисиці 2v? А при 4v?

Спойлер. Якщо обидвоє приймають рішення в початковий момент, а далі лише його дотримуються, то качка пливе на протилежний від лисиці берег, і їй треба проплисти відстань r, а лисиця біжить по дузі довжиною πr. Зрозуміло що якщо лисиця швидша не більше ніж в π разів, то качка буде жити. Але що якщо качка змінює курс залежно від обстановки? Тоді це вже задача варіаційного числення, і я досі не розв’язав дифрівняння, які склав на тій співбесіді. Хоча, для часткового випадку коли лисиця в чотири рази швидша є розв’язок отут.

ООП в Delphi

Воно, до речі, не надто відрізняється від ООП в інших мовах. Взагалі варто підтягнути його загалом.

Питання коротко можна записати так: Що таке X? Що робить X? Де замість X треба підставити:

  • private – атрибути доступні лише з класу.
  • protected – атрибути доступні всередині класу, і його спадкоємцям.
  • public – атрибути об’єкта після цієї директиви доступні геть усім.
  • published – те ж саме що й public, тільки додає ще додактові можливості інтроспекції, точно не вияснив ще які. Використовується для редагування властивостей об’єкта в обджект інспекторі.
  • property – доступ до полів тільки через вказані функції.
  • virtual – метод класу який ми дозволяємо переписувати в класах що його успадковують.
  • abstract – метод класу який буде описуватись спадкоємцями.
  • overload – дозволяє створити кілька функцій/методів з однаковими іменами, які розрізнятимуться за параметрами.
  • override – перегрузка успадкованого методу. Він повинен бути віртуальним
  • is – оператор перевірки приналежності типу
  • as – оператор приведення до типу.

Ще було питання про поліморфізм, і як будуть поводитись класи і змінні залежно від того чи вони оголошені як віртуальні, чи як абстрактні, чи як обоє одночасно, і як визначити чи в змінній x знаходиться функція без параметрів, не викликаючи її.

Sixt

Відколи я почав оце писати в мене було ще дві співбесіди. На одній мене сильно просили написати з нуля на PHP систему прийому замовлень на оренду автомобілів, яка має інтерфейс для роботи з банківськими карточками, читає з бази даних 1C наявність авто, і чорний список замовників, роздає замовлення менеджерам залежно від міста, дозволяє головному менеджеру модерувати інших менеджерів, і взагалі вся блок-схема замовлень викликає в мене трепет. З одного боку те що я все буду робити сам – це весело, і мені великий плюс в досвід, з іншого – хто зна скільки дірок, багів, і косяків архітектури я там нароблю. Ну, і це ж PHP – тобто в такому разі я піду по кар’єрі веб-розробника, і не знаю коли вернусь.

WaveAccess

Вони вже довго переписують проект hospital systems на Рубі, і видно хочуть прискорити процес. Казали що навчать. І що книжку з Dojo треба читати один день. Як трохи здивувався бо там 800 сторінок. Мені пояснили що всі вчаться постійно, на практиці, і тільки те що треба.

Ця співбесіда відрізнялась від попередніх тим, що відбувалась за комп’ютером. І на ньому був відкритий Google Code з моєю дипломною. Фейспалм.

– Що робить оця функція?

def trans_seg_list(l,separator=", "):
        """ Translate list of segments """
        return separator.join(map(lambda x: inlink(translate(x)),l))

– Ну, це майже Лісп. 🙂 Тааак, що робить inlink? Зараз гляну. Я ж це давно писав…

Ще були претензії до того, що деякі мої функції мають десятки точок виходу. Спитали чи я чув про структурне програмування Дейкстри. Той хто вів співбесіду на мій захист сказав що це аналог конструкції case. Я підтвердив що в Python такої справді немає, а є elif.

Були претензії до того, що мало використовую об’єкти. І правда, ООП мені треба прокачати, може знову спробувавши написати таки якусь іграшку.

– Літературу якусь читаєте?
– Художню?
– Чому б це вона нас цікавила? Звичайно ні.
– А, ну “Dive into Python”, “why’s (poignant) guide to Ruby”, “Django Book”, щось там по JavaScript.
– А класики?
– SICP, Кормен-Лейзерсон-Рівест, Ахо-Ульман…
– Кнут?
– Оймама. Ну, розділ з нього бачив, коли мене попросили реалізувати мультиплікативний конгруентний генератор випадкових чисел.
– Псевдовипадкових?
– Гарне зауваження.
– Блоги якісь читаєте?
Маючи вже досвід з літературою, я зрозумів що блоги теж тематичні мають бути. Згадав чомусь лише
President UA, такий програміст з Харкова…

А справді, які блоги варто читати? Ще напевне Дмитріша, хоча він може так написати, що дах поїде поки розберешся. І проблема не в тому як він пише, а про що.

Кінцевий результат – мені передзвонили, і сказали, що з’являється новий проект, і можливо навіть освоювати Рубі не доведеться. В вівторок поговоримо по скайпу. (Добре що вдома є вебкамера), залишилось поставити скайп.

Advertisements

Written by bunyk

Липень 31, 2011 at 12:01

Відповідей: 15

Subscribe to comments with RSS.

  1. “Ні, ні, я не ще не знаю Ruby, ” – поправь 🙂

    ООП в Delphi sucks на самом деле. Может уже чего-то и поменялось, но мне не хватало интерфейсов (по-моему, они там как-то через жо COM сделаны).

    Задача про утку клевая.

    Про “як визначити чи в змінній x знаходиться функція без параметрів, не викликаючи її”. Не знаю, но мне кажется, можно попробовать через ‘x is TProcedureWithoutArgs’.. Ну или какие-то хаки на уровне бинарного кода.

    Why’s (poignant) guide to Ruby – самая зачетная книжка по руби. Жаль, на этом все мои хорошие воспоминания о руби заканчиваются.

    Желаю успеха в поиске работы!

    jtim

    Липень 31, 2011 at 12:29

    • Може поправлю. А може Java 🙂

      Що таке інтерфейси, і нащо вони тобі?

      А я читав Why’s guide спочатку в форматі .mobi, і тільки пізніше дізнався що багато сенсу в саме в ілюстраціях. А що, в тебе далі одні нехороші спогади?

      bunyk

      Липень 31, 2011 at 14:50

      • Силу інтерфейсів я зрозумів, коли довелось перевіряти тип шаблонного об’єкта. Типу, є шаблон (або дженерик) class DesignerControl : Control і його два наслідування: class DLabel : DesignerControl і class DButton : DesignerControl. Потім в якомусь місці проста прогонка по колекції контролів, і треба для дизайнерських контролів виконати певну дію.

        Саме тут інакше ніж через інтерфейси проблему не вирішиш.

        danbst

        Серпень 1, 2011 at 13:35

        • сцуко з’їло

          class DesignerControl<T> : Control
          class DLabel : DesignerControl<Label> …

          danbst

          Серпень 1, 2011 at 14:59

  2. Ех-х… чесно, й половони слів не розумію, але в цілому звучить все позитивно..))
    Смішний ти..))

    P.S.: А навіщо тобі дві тицялки під коментарем: “Сповістити мене про наступні коментарі через email.” та “Notify me of new posts via email.”?

    nochnik

    Липень 31, 2011 at 16:55

    • Та в розділі про ООП я сам половини слів не розумію, тому й не взяли, і тому виписав визначення. А найстрашніші слова я навіть стараюсь трохи вікіфікувати.

      Чого там дві галочки під коментарем поняття не маю. В мене одна, і то мені не треба, бо і так сповіщають… Думаю Automattic рано чи пізно розбереться.

      bunyk

      Липень 31, 2011 at 18:05

  3. О_о :). Радий за блог 🙂

    Щодо тої роботи, то думаю на краще. Бо Делфі зараз вже мертвий, лише конвульсії маленькі є. Я хоча й починав з Делфі, але не вважаю прикольною мовою.

    І 3000 гривень, то я кось мало просиш. 3000 навіть на хату не хватить. Кажи хоча б 600у.е.

    presidentua

    Липень 31, 2011 at 16:56

    • Коли я йшов на роботу, то просив 1000 з ходу і 2000 через рік =) взяли, проте зарплату поставили свою =)

      danbst

      Серпень 1, 2011 at 15:15

      • Все ще сильно залежить від того, скільки годин на тиждень ти працюєш. 🙂

        bunyk

        Серпень 1, 2011 at 15:32

  4. Все, що ти бачиш про Delphi, відкидай зразу. ІМХО звичайно, але прислухайся. Delphi був колись популярний на просторах exUSSR, і то як непорозуміння. В результаті на ньому понаписувано тонни legacy коду, який необхідно комусь підтримувати, допилювати і т.д. Це дійсно кінець кар’єри.

    alex.yakushev

    Липень 31, 2011 at 18:41

    • Ви пропонуєте Lisp?

      І про кінець кар’єри не варто говорити. Є інструмент, є задача, з якою він уже справляється. У чому ж проблема? Може борланд і вмер, але Pascal – ніколи(tm). В будь-якому випадку, є ще таке поняття як перехід на нову технологію. Якщо вдасться представити перед керівництвом, чому Delphi це погано, то може початись процес конвертації на щось більш сучасне. Це також частина проекту, до-речі. І де тоді кінець кар’єри?

      danbst

      Серпень 1, 2011 at 15:13

  5. Треба було діалог з WaveAccess поставити першим, дає надію!

    Ну і з очевидного. Я знаю, що ти пишеш жахливий код. Разом з тим, я знаю що незважаючи на жахливість коду ти продуктивний програміст і маєш купу оригінальних ідей.

    І на рахунок Кнута можна було посперечатись по важливості знання. Більшість його праць не мають нічого спільного з комерційними програмами.

    danbst

    Серпень 1, 2011 at 15:43

  6. Маленьке уточнення по WaveAccess.
    з боку людини яка проводила співбесіду.

    На Руби розроблена нова версія системи, написаної з використанням .NET Windows Forms,
    з огляду на отриманий досвід в бізнес процесах “не великої американської лікарні ;)”
    На справді в проекті ще багато нової функціональності яку потрібно дописати.

    У мене склалося приємне враження. Виникло просто питання на яку позицію взяти. ASP.NET vs. Ruby. Проблема ускладнювалась декількома моментами. На позицію Рубі є ще один претиндент якого хочеться теж взяти 2 позиції по Рубі, в принципі конкуренція і залишити одного по результатам – розглядалась. По АСП.НЕТ ситуація гірша чистої вакансії не було але було кілька варіантів. Вирішили порадитися з офісом в СПб. Там коли побачили резюме сказали, що такої людини їм не вистачає в проекті Imagineer. Це плагіни для системи Mogul. От з керівником групи розробки і буде розмова у вівторок.

    Oleksandr Krysan

    Серпень 1, 2011 at 18:49

  7. […] Провалена співбесіда, робота над помилками і інший дос… (bunyk.wordpress.com) Опубліковано у Здорове життя. Додати до закладок постійне посилання. ← 24 поради хворому на простатит […]

  8. […] найбільше про пошук роботи, і який з вас спеціаліст. Співбесіди – це цікаво і весело. Головне – йти туди з високо піднятою головою, […]


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: