Провалил два собеседования

Mar 17, 2009 06:35


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

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

На втором собеседовании - ну, MySQL всем нужен, а наш PostgreSQL - мало кому.

Ещё обнаружилось, что я совершенно не умею оперировать SQL-запросами в уме и под пристальным взглядом экзаменатора. Даже сам начинал сомневаться, что на работе - за компом и когда на меня никто не смотрит - с лёгкостью ворочаю весьма монструозными конструкциями. Это психологическое, но программерское обучение, полагаю, тоже поможет: надо типовых задачек порешать. Возможно, даже не много, а очень много. Ну и мануал MySQL придётся проштудировать.

P. S. Чёрт! У меня уже новые приглашения на собеседования! Они меня с ума сведут!

P. P. S. Так я и думал. Пришёл на работу, сел за комп и за три минуты написал два решения задачки, которую мне дали на собеседовании. В общем, там требовалось объединить данные из двух таблиц и саггрегировать (типа, сгруппировать) их по одному полю. Так я написал два подзапроса с группировкой и пересёк их. Что, конечно, неправильно, если в одной таблице попадутся строки, не имеющие аналогов (с тем же значением в этом поле) в другой,- они просто «обрежутся», не попадут в итоговую выборку.

Надо либо пересекать их через FULL OUTER JOIN (только в MySQL его, кажется, нет) и потом избавляться от нежелательных NULL'ов с помощью функции COALESCE, либо слить запросы к обеим таблицам UNION'ом и уже затем проводить группировку (там тоже была бы своя тонкость, только уже не с NULL'ами, а с необходимостью просуммировать отдельно положительные и отдельно отрицательные значения, но это, опять же, не трудно).

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

Ну, ещё, честно говоря, я на практике ни разу не использовал ни FULL OUTER JOIN, ни UNION, посему, даже чувствуя, что они-то тут и нужны, бессознательно стремился их избежать. Поэтому предложил решение попроще, но, увы, не универсальное.

психология, html, работа, программирование, mysql, sql, postgresql

Previous post Next post
Up