tima: (bandana)
[personal profile] tima
Прочитал пост Малобукова про IQ и почему-то вспомнил как я интервьюирую желающих поработать в нашем учреждении. Есть у меня три-четыре задачки-вопроса, на которые, как правило, никто из приходящих ответа не знает, поскольку готовятся они по верхним линкам, выпадающим из гугла на вопрос "какие вопросы задают на интервью". И мне очень интересно как себя ведет человек, не знающий ответа и мечущийся у себя в голове в ужасе от этого.

И когда кто-то из претендентов клеймает себя как думающего out of box, я потираю под столом руки, сладко улыбаюсь и предлагаю показать оное умение, ответив на вот такой простенький вопрос...

Дело в том, что мне и правду нужны думающие, а выполнять какие-то рабочие шаги по подсказке 1-2-3 я их и сам научу, дело нехитрое.

А еще приходят специалисты по базам данных, которые объявляют свои знания proficient. Этим я задаю и вовсе простой вопрос - напишите мне в одну строку процедуру, которая при засаживании в нее аргументом текущего дня будет выдавать последнее число месяца. То есть, если ей дать 21 сентября 2018, то она выдаст на выходе 30. Если задать 11 декабря 2018 - 31, а если задать, скажем, 3 февраля 2020, то она выдаст 29. Ну, и так далее. Какого я только бреда не наслушался за эти годы от этих proficient out of box спецов. Но это вовсе не значит, что они тупые люди. Может даже они могут сыграть всю девятую симфонию Бетховена наизусть, а я - нет.

P.S. Работал со мной в BBN Planet Джаш Пюринтон. Он в одну строку Пёрла такое писал, что я день разбирался потом что эта его строка делает и как.

Date: 2018-09-21 12:42 pm (UTC)
From: [personal profile] gb0
date_part('days' от транкейта с шагом в месяц – это сильно сложно. Люди частенько не до конца работу планировщика с индексами и group by представляют, а тут такой ванлайнер нарисовать надо...

Date: 2018-09-21 08:41 pm (UTC)
brmail: (Default)
From: [personal profile] brmail
ну идея то в целом простая - взять первый день следующего месяца и попросить уменьшить дату на 1 день.

Date: 2018-09-24 02:54 pm (UTC)
brmail: (Default)
From: [personal profile] brmail
кто писал на js какой-либо UI в браузере во времена засилья IE и отсуствия массовых фреймворков, которые за тебя уже все сделали, тот трюков с датами накушался по самое немогу. Вообще некий опыт работы с реальным html и DOM который как раз и видит браузер - очень хорошее подспорье. Так как в итоге, все эти красивые высокоуровневые языки и фреймворки как раз этим и оперируют. Так что иногда залезть ручками и пошебуршить там очень полезно.
Кстати, в микрософтовcком сиквеле начиная с 2012 кажется версии есть функция которая по дате возвращает последний день месяца.

Date: 2018-09-24 03:40 pm (UTC)
brmail: (Default)
From: [personal profile] brmail
гы-ы. Напомнил. Ты в курсе, какой у VB 5 и VB 6 был один из наиболее быстрых, и гарантированно удобных в употреблении способов сортировки строковых массивов? Типа быстро отсортировать несколько тысяч строк не особо напрягаясь с кодом и не используя внешних библиотек?
Загнать эти строки тупо в невидимый комбобокс и приказать сортировать. Экономия в скорости выполнения на циклах интерпретатора покрывала с лихвой наличие дололнительного элемента на форме.
Я как то даже однажды на интервью про это рассказал. Не поверили...
Edited Date: 2018-09-24 03:41 pm (UTC)

Заинтересованно

Date: 2018-09-21 12:44 pm (UTC)
From: [personal profile] malobukov
А какой ответ вы ожидаете от кандидата? SELECT date('now','start of month','+1 month','-1 day')?

CASE WHEN по костяшкам пальцев, с обработкой високосного года, и всё в одну строчку?

Разбить дату на число-месяц-год, увеличивать число от 27 до тех пор, пока конвертация обратно в дату не вернёт ошибку, и вернуть последнее число, где ещё не было ошибки?

Заранее заполненную LastDayOfTheMonthLookupTable где первичный ключ год и месяц?

Класс LastDayOfTheMonthAbstractFactory, унаследованный от летоисчисления, чтобы работал не только в григорианском календаре?

Re: Заинтересованно

Date: 2018-09-21 01:14 pm (UTC)
From: [personal profile] gb0
Наверное, ожидается что-то вроде
create or replace function get_days_of_a_month(a_date IN date) returns int
as
$_$
select cast(date_part('days',date_trunc('month',a_date) + cast('1 month' as interval) - cast('1 day' as interval)) as int)
$_$ language sql;

а то и вовсе что-то реально 1-line при помощи ораклового
cast(to_char(last_day(a_date),'dd') as int)
, только все это сложно, и вроде несложно ищется :(

Date: 2018-09-21 01:09 pm (UTC)
From: [identity profile] i-mko.livejournal.com
Обычно отвечаю что-то простенькое, типа добавить месяц, отнять от новой даты день.

Date: 2018-09-21 01:21 pm (UTC)
From: [personal profile] buran293
Страшный Вы человек!))
Небось, при интервьюировании, ещё и улыбаетесь располагающе!?))

Date: 2018-09-21 04:09 pm (UTC)
From: [personal profile] buran293
ггг))

Date: 2018-09-21 01:46 pm (UTC)
olindom: (Default)
From: [personal profile] olindom
В общем, развлекаешься, как можешь. Уважаю. В отличие от ... долбаных эйч аров, у тебя есть профзапросы, на которые люди должны отвечать.

Date: 2018-09-21 02:09 pm (UTC)
olindom: (Default)
From: [personal profile] olindom
Не сомневаюсь!!! )))

Profile

tima: (Default)
tima

December 2025

S M T W T F S
 12 3 4 5 6
7 8910111213
14 15 16 17 18 1920
21 22 2324 25 2627
2829 30 31   

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 12:51 pm
Powered by Dreamwidth Studios