Поиск работы. Эпизод 3. Месть Ситхов.

Aug 17, 2009 20:40

А хорошо заголовки ложатся (: Собственно посещал я сегодня компанию Рексофт. Начиналось это весьма забавно с переписки со сторонним рекрутёром. Вот моё любимое место:

Алексей, здравствуйте,
Спасибо за резюме. Уточните, пожалуйста, сколько лет (месяцев) Вы работали со сл. технологиями:
1. Swing
2. Core Java
3. Exception Handling
4. JVM
5. Garbage Collection
6. RMI
7. Network programming
8. Socket Programming
9. API's
10. Classes
11. Packages
12. EJB
13. Weblogic/JBoss
14. WebSphere
С уважением,
xxx

Всякие злые oakjumper выбравшись из-под стола предложили мне написать, что классами я владею, а вот пакеты ниасилил и посмотреть на реакцию. Но я проявил волю и вкратце ответил охотнику за головами, что большая часть списка собственно куски языка и юзаю я их все 4 года моей трудовой деятельности.
В итоге мне были высланы место явки и имя связного. Утром, закусив ночные кошмары бананчиком, я отправился на встречу. По дороге я в фоне читал надписи через на удивление прозрачное окно троллейбуса, одна достала до сознания: "Лучшие цены в городе! Унитаз мини за 999 рублей.". "... это армааагеддоооон" - пропела Беркутина, "+1" - подумал я. Гусеница причалила к остановке, я телепортнулся на ортогональный маршрут, думая над тем насколько дёшево истинное счастье.
В радиусе 10 минут я добрался до условленной точки. И что? Правильно. Место явки я по традиции записал криво и ещё 10 минут искал снесённый, судя по всему, дом. Благо стайка куривших около дома в потенциально правильном районе сказала, что вот он есть. Я вошёл внутрь и через охранника призвал связного. Мне сказали, что скоро меня заберут. Времени до означенного срока оставалось минут 5 и я освоил один из стоявших напротив проходной стульев. Выдержав правильную 15 минутную паузу (в процессе обхода замечено, что и манагеры и программеры и даже начальники всегда могут освободиться в радиусе 5 мин, у HRов делай минимум 10), связной вышел ко мне. Им оказалась приятная HR-девочка Ира с позитивным декольте. Мну провели на н-ный этаж, посадили в что-то типа конференц-зала, дали тест и пообещащи вернуться через 30 мин.
Тест представлял собой сборник из двух десятков антипаттернов с вопросами "что это выдаст?" и "а ваще скомпиляеца?". Вопросы были в основном на тему приведения типов(тут попа была полная, я, cкажу по секрету, практикую в яве тупо два типа: int и double, то есть знаю, что есть и ещё, но жизнь как-то в фоне приучила, что лучше их не надо), коючевые слова, алгоритм разрешения методов(при перегрузке, переопределении, статике и т.п.), пара символических вопросов про синхронизацию и про работу ассертов(в чём я тоже по 0).
Через полчаса пришла пара их бойцов. Имён я, естественно не запомнил, буду их называть "Большой" и "Маленький". Большой начал с пристрастием разбирать мои ответы. В процессе выяснилось, что я нихрена не знаю, а именно:
* synchronyzed можно писать до модификатора доступа;
* в яве есть модификатор volatile(почитал в Сети: жесть какая-то, не рискнул-бы юзать, даже еслиб и знал);
* ваще ниразу не знаю как пишется switch конструкция(варианты-то должны быть константны!);
* хреново парсю циклы по двум пеерменным сразу;
* при стандартной десериализации не вызываются конструкторы(собственно + к версии масс, что херь всё-таки эта стандартная сериализация).
Вопрос про сериализацию всплыл в контексте сингелтона, спросили можно-ли как-то взять под контроль процесс, чтобы не нарушить нечаяно сингельтонность. После пары намёков пришли к версии, что надо переопределять serialize и dserialize. Костыль ИМХО. Отсюда выкатились на моё знакомство с паттернами вообще, попросили склассифицировать несколько паттернов, с чем я ловко управился (всё-таки 3 года жёсткой билогии не прошли даром (: ).
Пройдя по тесту и призвав первый раз HRа(знают их сестру), они начали задавать впросы "от души". Начали с просьбы рассказать о текущем проекте. Ну я про это и рассказал. В смысле как оно было-бы, чтобы общественность значится не травмировать (:
Отдельно опять боролись с хеш-мапами. Спросили как связаны equals и hashCode и как работате мапа. Сказал точно то-же, что и в первом эпизоде. Мне сказали, что не тру. Начали аккуратно по кирпичикам придумывать реализацию, в итоге собрали то-же самое... То-ли коннекта ничерта небыло, то-ли я тупой :( Много пинали про коллекции, какие интерфейсы, какие под них реализации, про бинарные деревья спросили (слава богу не видели как я их аццки на втором курсе закодил), про красно-чёрные(модная хрень походу, надо погуглить на досуге). Очень много спрашивали про синхронизацию и многопоточность. И чего этот поганец от девэкспертов лекции так неудачно ляпнул, что диллема была или параллелизм или леса? :( Задали вопрос про транзакции, какие уровни изоляции бывают. На второе не ответил.
Ещё заинтересовал народ мой опыт со свингом, спросили как соотноситься он с паттерном MVC. Я сказал, что вопрос откровенно холиварный, а вообще паттерн соблюдается, просто неудачная идея сделать для него фасад в виде J* классов, хранящих сразу и контроллеры и модели и вьюхи. Спросили из каких потоков можно обновлять модели для свингов, я ответил, что из всех. Они сказали, что только из свинговых. Народ, кто кодит на них, оно правда так? Моделька онаж интерфейс, её спросили - она сказала. Какая фиг разница кто и откуда её обновил? Обновление вьюхи оно да, даваться отмашка должна из свингового потока(там ещё забавный класс SwingUtils для такого есть) а модели-то что?
На последок был забойный вопрос. Начальная формулировка: есть односвязанный список во внешней памяти, объёмом значительно превышающим внутреннюю. Как его инвертировать? После какого-то прояснения мной условий, это свелось к варианту: есть интерфейсы getNext и putNext, как через путы скормить инвертированную последовательность от гетов имея гораздо меньше памяти, чем необходимо для хранения всей последовательности? Последовательность не воспроизводима. Может я в мясо тупой, но по-моему это в принципе не реализуемо. Чуваки расстроились и тайну раскрывать не стали.
Всё время опроса они быстро что-то писали на бумажках и показывали друг другу. То-ли подсказки как мну дожать, то-ли каменты а-ля "патстулом"...
Под конец попросили рассказать про проект на вражьем... Дав два предупреждения я начал, благо через 3 предложения меня заткнули =)
Призвав Иру второй раз, Большой стал мне рассказывать про их большую и перкрасную систему. Если кратко жосский JEE. Кластера, Оракл и всё такое прочее. На них пышными гроздьями висят вёбаппсы и свинги.
Мне предложили позадавать вопросы, чем я и воспользовался. Традиционно про процесс, что как, откуда требования, как согласуются с реальностью? В итоге я так понял, что хаос упорно придвигаемый к скраму. Ещё спросил про тестирование, контроль качества. Сказали, что на кодерах ответственность за юнит-тестинг, тестеры, частично автоматизированно, делают регрессионное и текущее. На вопрос "а вот что со среднеуровневым?", Большой как-то замялся и ответил, что релизы собираются и деплоятся на стенды и потом их гоняют тестеры. То-ли он меня не понял, то-ли и правда соответствие розеток и вилок тока стендами проверяют, бог его знает как в этом EE оно делается... в спринге-то я левой ногой сделал при первом желании. ДОкументирование типа доскональное функционально для общения с заказчикми(что радует!). Ну и по настроению системное(ну настроение, естессно, бывает редко).
Где-то в процессе описания их реалий подошла Ира, программеры со мной попрощались и беседа пошла о мирском. Всё довольно позитивно, англицкому готовы учить прям в офисе. Потом меня проводили до выхода, пообещав дать решение в радиусе нескольких дней.
По дороге на работу я затарился мороженым в одном давно разведанном магазинчике на Энгельса и забавно балансируя с ним в автобусе отправился на работу.
Вообще ощущения снова смешанные. Во-первых мне много и хорошо намекали что тут народ реально нипадецки впахивает. С другой стороны боевая мощь их системы и поддерживающих её программеров внушает (до них никто почти не поколебал мою уверенность в знаниии языка).

UPD так и не связались после собеседования... некультурно как-то, что-ли?..
Previous post Next post
Up