Собеседование программистов или 60+ дней ожидания

Еще до нового года я согласился уехать из Крыма в Днепропетровск и с того момента началось мое самое затянутое трудоустройство на работу. Раскрывать что за компания я не стану, но коротко оговорюсь что проект десктопный на RCP и Swing.

содержание

Истоки

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

Для получения работы в компании нужно:

  1. Пройти интервью с сайт менеджером
  2. Пройти интервью с проджект менеджером
  3. Пройти техническое интервью
  4. Решить 3 задачи на время которые вышлет кастомер

Через 2 недели мы созвонились и договорились о собеседовании с сайт менеджером.

Собеседование с сайт менеджером

Через несколько дней позвонил мне Сергей (сайт менеджер) очень подробно рассказал о предстоящем проекте .  На проекте уже работает свыше 100 человек и там очень много много графиков. После проверил мой разговорный английский и в общем по его словам все прошло хорошо. В общей сложности общение заняло около 60 минут.

После я вновь связался с HR и она назначила техническое интервирование еще примерно через неделю. Что касается PM’a общения с сайт менеджером было достаточно, хотя думаю просто у первого не было времени =)

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

Техническое интервирование

Прошла неделя и мне позвонил Юрий, на сколько я понял он тимлид но не с той команды куда меня должны были назначить.  Ровно час мы играли с ним в игру «вопрос-ответ» ;). Обсуждались следующие темы:

  • Области памяти JVM?
  1. Eden Space[Идэн спэйс] (heap) – в этой области выделятся память под все создаваемые из программы объекты. Большая часть объектов живет недолго (итераторы, временные объекты, используемые внутри методов и т.п.), и удаляются при выполнении сборок мусора это области памяти, не перемещаются в другие области памяти. Когда данная область заполняется (т.е. количество выделенной памяти в этой области превышает некоторый заданный процент), GC выполняет быструю (minor collection) сборку мусора. По сравнению с полной сборкой мусора она занимает мало времени, и затрагивает только эту область памяти — очищает от устаревших объектов Eden Space и перемещает выжившие объекты в следующую область.
  2. Survivor Space[Совайвор спэйс] (heap) – сюда перемещаются объекты из предыдущей, после того, как они пережили хотя бы одну сборку мусора. Время от времени долгоживущие объекты из этой области перемещаются в Tenured Space.
  3. Tenured[Тэнйод] (Old) Generation (heap) — Здесь скапливаются долгоживущие объекты (крупные высокоуровневые объекты, синглтоны, менеджеры ресурсов и проч.). Когда заполняется эта область, выполняется полная сборка мусора (full, major collection), которая обрабатывает все созданные JVM объекты.
  4. Permanent Generation (non-heap) – Здесь хранится метаинформация, используемая JVM (используемые классы, методы и т.п.). В частноси
  5. Code Cache (non-heap) — эта область используется JVM, когда включена JIT-компиляция, в ней кешируется скомпилированный платформенно — зависимый код.
  • Как работает GC?  — http://habrahabr.ru/post/112676/
  • Что такое weakreference? — слабая ссылка
  • Какие еще бывают ссылки? — strong, soft, weak, phantom
  • BigCopy SmallCopy — глубокое / не губокое копирование
  • Вычислительная сложность алгоритмов — зависимости объёма работы, выполняемой некоторым алгоритмом, от размера входных данных
  • Exception cheked/ uncheked — Runtime exceptions и Error и их подклассы называют uncheked — проверять не обязательно. Но жестких правил нет
  • Зачем spring оборачивает checked эксепшены в рантайм эксепшены
  • Thread local — использование ThreadLocal имеет смысл, когда вам необходимо хранить экземпляры переменной для каждого потока.
  • Что такое Pool Thread? Как он работает? — ответил чисто интуитивно
  • Volotile — Определение переменной с ключевым словом volatile(«изменчивый») означает, что значение переменной будет изменяться несколькими потоками.
  • Use case для Volotile(где используется)
  • Rentrantlock vs synhronised
  • event dispatcher
  • invokelater()
  • Паттерн Proxy(заместитель)
  • Уровни изоляции транзакций
  • Что такое Сплаин(алгоритм)
  • Интерполяция, экстраполяция
  • Как прервать код в блоке finally()?  — System.exit(0)

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

Вновь связавшись с HR она сообщила

Григорий парень способный и сообразительный, я ожидаю от него быстрого прогресса.

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

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

Мучительное ожидание

Итак, запрос на меня ушел 24 декабря 2013 года =)

30-го декабря я поинтересовался как дела но результат оставался не изменчив, HR дала знать что у них отдых до 8-го но PM выйдет на работу 2-го так что если что свяжется со мной.

8 января — …без изменений

10 января — …без изменений

13 января — …без изменений

15 января — …без изменений

И вот 21 января пришел ответ..

Далее немного математики…

с 24.10 по 21.01 = 29 дней

29+7+14 = 50 дней.. поэтому я и сказал что это самое длинное мое трудоустройство…

Решить 3 задачи на время которые вышлет кастомер

Прислали тест на 110 минут 3 задачи.

Задача 1

1 задача в целом и стала решающим звеном. Вместо того что бы оставить самое сложно на потом упор был сделан именно в ее сторону. Увы 110 минут исчерпали себя быстрее 🙁

Задача 2

2 задача оказалась куда легче в перекуре была написана за пару минут

Задача 3

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

Заключение

В общем как бы там ни было считаю что тесты я завалил, возможно кастомер еще и одумается, но я бы себя не взял)))) Так что можно смело продолжать заниматься своими проектами и не лезть в «большой бизнес» 😉

Что касается пунктуальности затянувшегося собеседования то это конечно же компании можно ставить огромный минус. Если бы не патриотические наклонности давно бы ушел как поступил мой коллега Евгений в Киев, да и предложения всегда есть.. все дело в не желании куда-то ехать 🙂 Тут можно поставить огромный плюс HR компании =)

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

P.S. Вы не поверите, но мне пришел оффер о_0,  собираюсь в Днепропетровск

Подписаться
Уведомлять о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

3 комментариев
старым
новым колличеству голосов
Межтекстовые Отзывы
Посмотреть все комментарии
Василий
Василий
19.12.2014 12:32

Привет,

У меня была последняя задача. Я сломал глаза, но не смог найти баг. Написал десяток тестов, все работает как часы. Какой набор данных не работает?

Смотрю на картинку и код, что ты запостил и не могу найти разницу 🙂

Василий я
Василий я
19.12.2014 14:55
Ответить на  Leodev

Дык точно! current_sum то же остается если нашелся отрицательный, но сумма меньше макс!

3
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x