69

Собеседования

Недавно мне нужно было найти себе в команду middle backend разработчика. Я провёл собеседования с двумя десятками человек и сказать, что я в ахуе - это ничего не сказать. Контора у нас софтверная, поэтому есть во-первых свои люди, которые сидят в ожидании проектов (на так называемом бенче), а во-вторых, которые у нас сейчас не работают, но с ними уже поговорил HR и направил на техническое собеседование. То есть у первых мидл вроде как подтверждённый, а вторые
заявляют, что на него претендуют.
Я в курсе, что сейчас уровень упал, поэтому решил не упарываться и не валить какими-то хитровыделанными вопросами. Был буквально один вопрос что такое SOLID, пару вопросов по специфике языка, пару вопросов по базам (что такое индексы). И небольшое тестовое задание: реализовать метод для подсчёта рабочих дней между двумя заданными датами.
Итог:
- никто не ответил ни на один вопрос по базам.
- никто не рассказал про SOLID в лучшем случае помнят что такое S.
- язык половина не знает и не понимает.
- тестовое задание "сделали" 2 из 20. Хоть в каком-то примерно работающем виде. Двое отказались даже начинать, когда узнали, что нужно делать в браузере и без гугления.
Я ещё могу понять, что со стороны может приходить кто угодно, но блин там половина была наших, которые имеют этот уровень и получают соответствующую зарплату.

PS поясню, в тестовом задании я не требовал чтобы оно работало. Если человек не помнит какие-то методы и свойства, то мог использовать то что он хоть сам придумал, лишь бы объяснил, что оно возвращает. Он мог вообще код в виде комментариев написать, только бы показал как у него мозг работает.

Лига программистов

2.1K постов11.9K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
2
Автор поста оценил этот комментарий
Можно ваше тестовое услышать?
Например я завалю и солид и тестовое, почти точно, тк я теряюсь когда работаю под надзором, солид помню ровно на момент собеседования именно потому что читаю как расшифровывается этот акроним.
раскрыть ветку (12)
2
Автор поста оценил этот комментарий
раскрыть ветку (11)
0
Автор поста оценил этот комментарий

Сайт отвратительно оптимизирован под мобильные устройства...

А расскажите, какое решение вы считаете правильным тут?

0
Автор поста оценил этот комментарий

Хорошо, когда stdlib развесита )


А что за невалидные входные данные? Даты из мусора компилятор не даст собрать.

end > start в библиотечном методе проверяется.

null на входе разве что, да и то лучше в контракте обозначить, ожидается или нет.

Даты до большого взрыва и после тепловой смерти?


https://dimio.github.io/dopaste/?l=java#XQAAAQBABAAAAAAAAAAX...

0
Автор поста оценил этот комментарий
А сколько времени вы даёте на решение?
раскрыть ветку (5)
0
Автор поста оценил этот комментарий
До получаса. Но смешно, что почти все заканчивают раньше и приносят либо говнокод, либо говорят, что не сделают.
раскрыть ветку (4)
2
Автор поста оценил этот комментарий
Про говнокод это нормально. У них стресс и они путаются в мыслях. Неплохо после такого дать возможность человеку пересмотреть код и предложить что он может улучшить.
2
Автор поста оценил этот комментарий
Вы ведёте кандидата? Что я имею ввиду: когда я провожу собеседование то ставлю задачу себе не получить решение, а понять как мыслит. То есть слушаю его, если нужно то подсказываю, конечно не всем и не всегда, но если видно что человек нервничает то можно и подсказать. Пол часа норм, как по мне, у нас задачи были проще, но и времени на 15-20 минут всего.
раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Да, мы с радостью даже подсказываем. Главное, как он мыслит и какие вопросы задаёт. Например вопрос, что делать, если входные данные не валидны задал один!!! человек.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Я бы сказал что давай напишем тестик на такой случай 😁
0
Автор поста оценил этот комментарий

Насколько такое решение считается у вас говнокодом?
public class Calendar

{

private readonly IList<DateTime> _holidays = new List<DateTime>()

{

DateTime.Parse("2024-01-01")

};

// DayOfWeek.Saturday and DayOfWeek.Sunday are no working days

public int GetWorkingDaysBetweenDates(DateTime startDate, DateTime endDate)

{

if(startDate>endDate)

{

throw new Exception();

}

//стандартизируем интервал чтобы он начинался в пн и кончался в вс

DateTime standartStart = startDate.AddDay(7-(int)startDate.DayOfWeek); // DayOfWeek - день недели. 1 - пн, 7 - вс

DateTime standartEnd = endDate.AddDays(-(int)startDate.DayOfWeek);

if(standartStart >= standartEnd)

{

//Если интервал слишком маленький, то считаем простым перебором

return SimpleCalc(startDate, endDate)

}

else

{

int Days = standartStart.Days(standartEnd)/7*5;//Days() - Количество дней между датами

Days += startDateDays(standartStart)>2?startDateDays(standartStart)-2:0;

Days += Math.Min(standartEnd.Days(endDate),5);

}

//убираем праздники, если они не на выходных

foreach(DateTime holyday in _holidays)

{

if(holyday>startDate && holyday<startDate

&& holyday.DayOfWeek != DayOfWeek.Saturday

&& holyday.DayOfWeek != DayOfWeek.Sunday)

{

Days--;

}

}

return Days;

}

//подойдет для маленьких интервалов

private int SimpleCalc(DateTime startDate, DateTime endDate)

{

DateTime curDate = startDate;

int Days = 0;

while(curDate<endDate)

{

if(curDate.DayOfWeek != DayOfWeek.Saturday && curDate.DayOfWeek != DayOfWeek.Saturday)

{

if(!_holidays.contains(curDate))

{

Days++;

}

}

}

}

}

Автор поста оценил этот комментарий

Это ваш код или кандидата? Это же кусок говна.

раскрыть ветку (1)
3
Автор поста оценил этот комментарий
Там было пусто, уже кто-то из пикабушников успел написать 😂
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку