Условие было такое: строка «один два три». Написать функцию на доске, чтобы поменять порядок символов внутри этой строки, не выделяя новой памяти (кроме временных переменных). Принимается ли решение через 15 минут?
Здравствуйте, Тёмчик, Вы писали:
Тё>и сколько времени можно на это потратить у доски?
Просто проверить, что человек может писать код. Кажется, что тест неплохой. Сколько потратить времени? Думаю, что это должно ограничиваться не обдумыванием задачи, а умением писать на доске. Пишешь быстро — времени тратишь мало.
Здравствуйте, Nuzhny, Вы писали:
N>Просто проверить, что человек может писать код. Кажется, что тест неплохой. Сколько потратить времени? Думаю, что это должно ограничиваться не обдумыванием задачи, а умением писать на доске. Пишешь быстро — времени тратишь мало.
А если очень давно учился, и забыл? Может быть такое?
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, Тёмчик, Вы писали:
Тё>>и сколько времени можно на это потратить у доски?
N>Просто проверить, что человек может писать код. Кажется, что тест неплохой. Сколько потратить времени? Думаю, что это должно ограничиваться не обдумыванием задачи, а умением писать на доске. Пишешь быстро — времени тратишь мало.
Бывает так,что человек может писать код, но не у доски. Со всякими collaborate тулзами то же самое.
— Здравствуйте!
— Да, привет. Заходи.
— Я на собеседование…
— Подними правую руку.
— Что?
— Руку правую подними.
Я замялся и неуверенно поднял правую руку вверх.
— Отлично! — сказал мужчина.
Я опустил руку.
— Садись.
— Я сел на один из двух стульев напротив стола.
— Ничего, что я так говорю?
— Как?
— Ну «садись»? А то перед тобой тут был один. Рассказывал мне, чем отличается сесть от присесть. Я его на хуй послал. А по телефону говорил, что не долбоёб. Или это ты говорил?
— Может, и я. Почему-то часто спрашивают.
— Угу! — мужчина продолжил читать бумагу. — Скажи мне, какое, на твой взгляд, главное профессиональное качество автослесаря?
Нужно было что-то ответить, я терялся.
— Я думаю, главное качество автослесаря — разбираться в машинах.
— Да, но нет. Я думаю, одним из главных качеств или даже умений для автослесаря является способность отличать право от лева!
Я внимательно слушал.
— Вот сейчас передо мной лежит претензия от клиента. Хорошего клиента, денежного. Он жаловался на гул во время езды. Мы нашли причину, заказали подшипник, четыре дня этот подшипник к нам ехал-ехал, и вот когда его поменяли — гул не пропал. Знаешь, почему?
— Почему?
— Потому что слесарь, который эту машину делал, почему-то поменял правый подшипник вместо левого. В бумаге было написано «ЛЕВЫЙ». Читать он умеет, я проверял. А вот разницу между правой стороной и левой не знал. Двадцать четыре года долбоёбу! На двадцать пятом году слесарь Иванов сделал открытие.
Re[4]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Nuzhny, Вы писали:
N>Казалось бы, что ты мог забыть? Как итерироваться по строке? Как узнать её длину? Сам алгоритм-то помнить не надо, он разве не очевиден?
Тё>и сколько времени можно на это потратить у доски?
Надо сказать, вопрос вообще говно, если привязываться к языку программирования.
Для некоторых языков он не проверяет ничего (Питон, например). Для некоторых языков написать на доске нормальное решение практически невозможно. Например C#:
public static string Reverse( string s )
{
char[] charArray = s.ToCharArray();
Array.Reverse( charArray );
return new string( charArray );
}
Я, блин, ToCharArray и Array.Reverse использую раз в 10 лет. Для некоторых языков может начаться мрак из-за кодировок. В-общем, если собеседующий захочет докапаться, то он сможет это сделать.
В книге Бентли "Жемчужины программирования" в разделе 2.3 Мощь элементарного на странице 32-33
рассматривается этот алгоритм.
И приводится удивительно элегантное рекурсивное решение.
Кен Томпсон использовал этот вариант в 1971 году, и говорил, что уже тогда эта функция была легендарной.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Тёмчик, Вы писали:
N>>Казалось бы, что ты мог забыть? Как итерироваться по строке? Как узнать её длину? Сам алгоритм-то помнить не надо, он разве не очевиден? Тё>У меня порвало все шаблоны.
Блин, как же ты работаешь, если от такого простого вопроса у тебя рвёт шаблоны?
Re[2]: Зачем просят перевернуть строку на интервью?
Здравствуйте, De-Bill, Вы писали:
Тё>>и сколько времени можно на это потратить у доски?
DB>Надо сказать, вопрос вообще говно, если привязываться к языку программирования. DB>Для некоторых языков он не проверяет ничего (Питон, например). Для некоторых языков написать на доске нормальное решение практически невозможно. Например C#: DB>
DB>Я, блин, ToCharArray и Array.Reverse использую раз в 10 лет. Для некоторых языков может начаться мрак из-за кодировок. В-общем, если собеседующий захочет докапаться, то он сможет это сделать.
Сколько времени нужно, чтобы написать реализацию Array.reverse() из этого примера?
Re[3]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Transformerrr, Вы писали:
T>Бывает так,что человек может писать код, но не у доски. Со всякими collaborate тулзами то же самое.
Ну, для меня это звучит странно. На досках и листочках пишу код постоянно, когда что-то обсуждаю с коллегами: схематично, не весь синтаксис расписываю, но всё равно пишем. И схемы, и графы всякие. что тут такого? У доски в школе учат отвечать и писать на ней, в вузе тоже. Неужели эти вещи вдруг стали какими-то заоблачными? Мы же говорим не о каком-то сложном коде, а о маленькой функции по инверсии строки. Понятно, что код в реальных проектах сложнее, больше и с кучей зависимостей, для этого тулзы и делают. Но тут!
Re[2]: Зачем просят перевернуть строку на интервью?
Тё>Сколько времени нужно, чтобы написать реализацию Array.reverse() из этого примера?
Пару минут должно хватить. Но это уже другая задача. В отличие от строк практически во всех языках нам: 1) известна его длина в элементах, 2) по индексу есть доступ к каждому элементу, 3) массив изменяемый.
Re[3]: Зачем просят перевернуть строку на интервью?