Re[20]: C# - как проводить собеседование ?
От: Lao Украина  
Дата: 04.11.07 21:14
Оценка: 9 (1)
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, Dan Dare III, Вы писали:


DDI>>Здравствуйте, Ромашка, Вы писали:


DDI>>

DDI>>Задача(является ли строка симметричной, рекурсия) — 15 минут(не меньше) и три попытки


DDI>>даже то решение что ты привел далеко от идеала цикл for в строке не зря есть индексатор



G>Первое решение, пришедшее в голову (предыдущий пост — прикол, хотел рассказ о себе услышать):

G>
G>static bool IsSymmetric(string s)
G>{
G>    for (int i = 0; i < s.Length/2; i++)
G>    {
G>        if (s[i] != s[s.Length - 1 - i]) return false;
G>    }
G>    return true;
G>}
G>

G>Работает в худшем случае в 2 раза быстрее (в релизе без студии), чем варианты в Array.Reverse.

G>Где тут применить РЕКУРСИЮ???


Надо написать метод static bool IsSymmetricInternal(string s, int beginIndex, int endIndex), который будет сравнивать символы с указанными индексами и рекурсивно вызывать себя, если символы равны. Тогда и будет рекурсия

static bool IsSymmetric(string s)
{
return IsSymmetric(s, 0, s.Length-1);
}
Re[13]: C# - как проводить собеседование ?
От: Dog  
Дата: 04.11.07 22:14
Оценка:
DDI>сейчас половина кандидатов валятся на virtual и интерфейсах
Вы джуниоров ищите ?
... << RSDN@Home 1.2.0 alpha rev. 730>>
Re[21]: C# - как проводить собеседование ?
От: The Lex Украина  
Дата: 04.11.07 22:21
Оценка:
Здравствуйте, Lao, Вы писали:

G>>Где тут применить РЕКУРСИЮ???


Lao>Надо написать метод static bool IsSymmetricInternal(string s, int beginIndex, int endIndex), который будет сравнивать символы с указанными индексами и рекурсивно вызывать себя, если символы равны. Тогда и будет рекурсия


Lao>static bool IsSymmetric(string s)

Lao>{
Lao> return IsSymmetric(s, 0, s.Length-1);
Lao>}

Супер! Жаль что такие работодатели ответ не скажут — "чтобы вы их не запоминали для следующего собеседования" — но работать к таким все равно...

ЗЫ
static bool IsSymmetricInternal(string s, int beginIndex, int endIndex)
{
  return IsSymmetricInternal(s, beginIndex+1, endIndex-1);
}

А в первом варианте, боюсь, дальше начала строки не уйдем...
Голь на выдумку хитра, однако...
Re[23]: C# - как проводить собеседование ?
От: Ромашка Украина  
Дата: 04.11.07 22:34
Оценка:
Dan Dare III пишет:

Я не буду отвечать по всему топику, просто тут напишу....

> здесь проблемы никакой Ромашка сначала хотел пошутить а потом полез на

> броневик

На самом деле я ошибся. Два раза. В первый раз когда "по-диагонали"
прочитал про рекурсию, второй раз когда протестил "по быстрому" в дебаге.

> я не сомневаюсь что он напишет рекурсию а он вот про идиотов речь завел

> — нехорошо это

Не напишу я рекурсию. У меня сердце кровью обливалось, когда я этот
пример писал, а когда я подумаю, что там в рекурсии будет творится с
ресурсами... Лучше не заставляй.

А про идиотов... Извини, не думал что ты это на свой счет примешь...
Не обращай внимания, это мои тараканы.

> TL>имхо, после 2-3-х собеседований с аналогичным результатом — точнее, с

> аналогичной причиной отрицательного результата — имеет смысл задуматься
> и первому, и второму. Но это так — имхо...
>
> так и есть

Думается мне, что все немного сложнее. Человек берется не только писать
строчки кода, но и взаимодействовать с коллективом. Нефиг в сложившуюся
команду соваться со своим уставом. Хотя иногда полезно встряхнуть.

Впрочем, твоя реакция, хоть и была ожидаема, но порадовала корректностью.
Posted via RSDN NNTP Server 2.1 beta


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[22]: C# - как проводить собеседование ?
От: Lao Украина  
Дата: 05.11.07 06:27
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Здравствуйте, Lao, Вы писали:


G>>>Где тут применить РЕКУРСИЮ???


Lao>>Надо написать метод static bool IsSymmetricInternal(string s, int beginIndex, int endIndex), который будет сравнивать символы с указанными индексами и рекурсивно вызывать себя, если символы равны. Тогда и будет рекурсия


Lao>>static bool IsSymmetric(string s)

Lao>>{
Lao>> return IsSymmetric(s, 0, s.Length-1);
Lao>>}

TL>Супер! Жаль что такие работодатели ответ не скажут — "чтобы вы их не запоминали для следующего собеседования" — но работать к таким все равно...


TL>ЗЫ

TL>
TL>static bool IsSymmetricInternal(string s, int beginIndex, int endIndex)
TL>{
TL>  return IsSymmetricInternal(s, beginIndex+1, endIndex-1);
TL>}
TL>

TL>А в первом варианте, боюсь, дальше начала строки не уйдем...

На самом деле я имел ввиду это

static bool IsSymmetric(string s)
{
return IsSymmetricInternal(s, 0, s.Length-1);
}
В IsSymmetricInternal конечно же сужаем диапозон.
Просто спешил и опечатался.
Re[23]: C# - как проводить собеседование ?
От: The Lex Украина  
Дата: 05.11.07 07:35
Оценка:
Здравствуйте, Lao, Вы писали:

Lao>На самом деле я имел ввиду это


Lao>static bool IsSymmetric(string s)

Lao>{
Lao> return IsSymmetricInternal(s, 0, s.Length-1);
Lao>}
Lao>В IsSymmetricInternal конечно же сужаем диапозон.
Lao>Просто спешил и опечатался.

А зачем нам целых 2 одинаковые функции?
Голь на выдумку хитра, однако...
Re[24]: C# - как проводить собеседование ?
От: Lao Украина  
Дата: 05.11.07 07:50
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Здравствуйте, Lao, Вы писали:


Lao>>На самом деле я имел ввиду это


Lao>>static bool IsSymmetric(string s)

Lao>>{
Lao>> return IsSymmetricInternal(s, 0, s.Length-1);
Lao>>}
Lao>>В IsSymmetricInternal конечно же сужаем диапозон.
Lao>>Просто спешил и опечатался.

TL>А зачем нам целых 2 одинаковые функции?


Они не одинаковые:
-IsSymmetricInternal — это рекурсивная функция
-IsSymmetric — обертка (не рекурсивная).

Ситуация: вам нужно проверять строку на симметричность (в реальной программе), возможно даже в нескольких местах кода. Вы написали рекурсивную (ну а вдруг )
bool IsSymmetricInternal(string s, int firstIndex, int lastIndex).

В своем коде вы будете вызывать ее так
string s="sdfsdf";
IsSymmetricInternal(s, 0, s.Length-1)

или напишите обертку bool IsSymmetric(string s)
и будете делать так
string s="sdfsdf";
IsSymmetric(s)
?
Re[20]: C# - как проводить собеседование ?
От: Dan Dare III  
Дата: 05.11.07 09:22
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Первое решение, пришедшее в голову (предыдущий пост — прикол, хотел рассказ о себе услышать):


хочешь услышать рассказ мое мыло
semen>dot<kosobutski>a<gmail>dot<com
но только если придешь на собеседование а то
не хочу что бы ты как ромашка поступил

G>Где тут применить РЕКУРСИЮ???


13 строчек

        static bool IsSymmetric(string s)
        {
            // null пусть будет симметричным
            if (s == null)
                return true;

            int length = s.Length;

            // если длинна 1 или 0 значит уже симметрично
            if (length <= 1)
                return true;

            // сюда придет строка длинной 2 и выше
            if (s[0] != s[length - 1])
                return false;

            // оптимизация  
            if (length <= 3)
                return true;

            // здесь длинна будет только 4 и выше
            return IsSymmetric(s.Substring(1, length - 2));
        }
Re[14]: C# - как проводить собеседование ?
От: Dan Dare III  
Дата: 05.11.07 09:25
Оценка:
Здравствуйте, Dog, Вы писали:

DDI>>сейчас половина кандидатов валятся на virtual и интерфейсах

Dog> Вы джуниоров ищите ?

как сеньор будет разрабатывать фреймворк если не в курсе что такое интерфейсы и виртуальность ?
Re[24]: C# - как проводить собеседование ?
От: Dan Dare III  
Дата: 05.11.07 09:27
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Впрочем, твоя реакция, хоть и была ожидаема, но порадовала корректностью.


Re[21]: C# - как проводить собеседование ?
От: Dan Dare III  
Дата: 05.11.07 09:29
Оценка:
Здравствуйте, Dan Dare III, Вы писали:

DDI>но только если придешь на собеседование а то

DDI>не хочу что бы ты как ромашка поступил

прошу прощения — это имеется "мне лениво" ввиду
Re[21]: C# - как проводить собеседование ?
От: Dan Dare III  
Дата: 05.11.07 09:32
Оценка:
Здравствуйте, Dan Dare III, Вы писали:

DDI>13 строчек


я не требую буквально такого же
ничего страшного что кандидат пропустит нулл или еще что
это нормально бумага всетаки не компьютер но главное что бы рекурсию не пропустил

DDI>
DDI>        static bool IsSymmetric(string s)
DDI>        {
DDI>            // null пусть будет симметричным
DDI>            if (s == null)
DDI>                return true;

DDI>            int length = s.Length;

DDI>            // если длинна 1 или 0 значит уже симметрично
DDI>            if (length <= 1)
DDI>                return true;

DDI>            // сюда придет строка длинной 2 и выше
DDI>            if (s[0] != s[length - 1])
DDI>                return false;

DDI>            // оптимизация  
DDI>            if (length <= 3)
DDI>                return true;

DDI>            // здесь длинна будет только 4 и выше
DDI>            return IsSymmetric(s.Substring(1, length - 2));
DDI>        }
DDI>
Re[22]: C# - как проводить собеседование ?
От: Ромашка Украина  
Дата: 05.11.07 09:54
Оценка:
Dan Dare III пишет:
> я не требую буквально такого же

Семен, но ведь это же ужасть.

> ничего страшного что кандидат пропустит нулл или еще что

> это нормально бумага всетаки не компьютер но главное что бы рекурсию не
> пропустил

Мож на рекурсию подобрать другой пример? Ну, такой, чтобы она там была
действительно нужна? Ну или хотя-бы не тормозила жутко?
Posted via RSDN NNTP Server 2.1 beta


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[13]: C# - как проводить собеседование ?
От: aerobus  
Дата: 05.11.07 10:53
Оценка:
DDI>Задача(является ли строка симметричной, рекурсия) — 15 минут(не меньше) и три попытки

10 мин


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter string: ");
            string s = Console.ReadLine();
            if (IsSymm(s)) Console.WriteLine("Symmetric"); else Console.WriteLine("Non-symmetric");    
            Console.ReadLine();
        }

        static bool IsSymm(string s)
        {
            return (s.Length > 1) ? ((s[0]==s[s.Length - 1]) ? (IsSymm(s.Substring(1, s.Length - 2)) && true) : false) : true;
        }
    }
}
Re[25]: C# - как проводить собеседование ?
От: The Lex Украина  
Дата: 05.11.07 11:57
Оценка:
Здравствуйте, Lao, Вы писали:

TL>>А зачем нам целых 2 одинаковые функции?


Lao>Они не одинаковые:

Lao>-IsSymmetricInternal — это рекурсивная функция
Lao>-IsSymmetric — обертка (не рекурсивная).

Lao>Ситуация: вам нужно проверять строку на симметричность (в реальной программе), возможно даже в нескольких местах кода. Вы написали рекурсивную (ну а вдруг )

Lao>bool IsSymmetricInternal(string s, int firstIndex, int lastIndex).

Lao>В своем коде вы будете вызывать ее так

Lao>string s="sdfsdf";
Lao>IsSymmetricInternal(s, 0, s.Length-1)

Lao>или напишите обертку bool IsSymmetric(string s)

Lao>и будете делать так
Lao>string s="sdfsdf";
Lao>IsSymmetric(s)
Lao>?

Думаю я добавлю параметров по умолчанию...
Голь на выдумку хитра, однако...
Re[23]: C# - как проводить собеседование ?
От: Dan Dare III  
Дата: 05.11.07 12:00
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Семен, но ведь это же ужасть.


люди пишут, не справляются только единичные кандидаты

Р>Мож на рекурсию подобрать другой пример? Ну, такой, чтобы она там была

Р>действительно нужна? Ну или хотя-бы не тормозила жутко?

есть рекурсия очень полезная 9 строк но решают её единицы и после этого кандидаты всегда недовольны
Re[14]: C# - как проводить собеседование ?
От: Dan Dare III  
Дата: 05.11.07 12:08
Оценка:
Здравствуйте, aerobus, Вы писали:

DDI>>Задача(является ли строка симметричной, рекурсия) — 15 минут(не меньше) и три попытки


A>10 мин


вот, отличный результат только код трудночитаемый
задачу даю так чтобы смог её проверить без компьютера
"&& true" зачем

A>
A>namespace ConsoleApplication1
A>{
A>        static bool IsSymm(string s)
A>        {
A>            return (s.Length > 1) ? ((s[0]==s[s.Length - 1]) ? (IsSymm(s.Substring(1, s.Length - 2)) && true) : false) : true;
A>        }
A>    }
A>}
A>
Re[21]: C# - как проводить собеседование ?
От: The Lex Украина  
Дата: 05.11.07 12:11
Оценка: 2 (1) :)
Здравствуйте, Dan Dare III, Вы писали:

G>>Первое решение, пришедшее в голову (предыдущий пост — прикол, хотел рассказ о себе услышать):


DDI>хочешь услышать рассказ мое мыло

semen>>dot<kosobutski>a<gmail>dot<com
DDI>но только если придешь на собеседование а то
DDI>не хочу что бы ты как ромашка поступил

G>>Где тут применить РЕКУРСИЮ???


DDI>13 строчек

... поскипаны за ненужностью.

Ясно. Это именно то, о чем я сразу и сказал: "угадайте ответ, который я загадал" (к)

Такое себе "книжное употребление рекурсии в виде простого решения вырожденного варианта задачи и последовательного сведения рекурсией всех остальных вариантов к вырожденному". Имеет академическую ценность — практической ценности, как и подавляющие 100% таких вопросов, не имеет.

ЗЫ. А теперь вопрос на засыпку: у чем Ваш код неверен? А впрочем... таки да — наверное будет работать и это таки "оптимизация". Но этот код действительно ужасен! Надеюсь, Вы с этим согласны? Из этой конторы просто необходимо бежать, бежать, бежать! Потому что если такой код предлагают писать на собеседовании — что же они предложать писать в реальной работе!?
Голь на выдумку хитра, однако...
Re[26]: C# - как проводить собеседование ?
От: Lao Украина  
Дата: 05.11.07 12:25
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Думаю я добавлю параметров по умолчанию...


В С# не получиться сделать параметры по-умолчанию.

И вообще DDI тут уже предложил вариант, где те параметры и не нужны.
Re[22]: C# - как проводить собеседование ?
От: Dan Dare III  
Дата: 05.11.07 12:29
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Ясно. Это именно то, о чем я сразу и сказал: "угадайте ответ, который я загадал" (к)


нет смотри ответ aerobus у него отличное решение хотя и отличное от моего

главное 2 вопроса

1 рекурсия

2 работает

+ я сам сказал "я не требую буквально такого же"



TL>Такое себе "книжное употребление рекурсии в виде простого решения вырожденного варианта задачи и последовательного сведения рекурсией всех остальных вариантов к вырожденному". Имеет академическую ценность — практической ценности, как и подавляющие 100% таких вопросов, не имеет.



TL>ЗЫ. А теперь вопрос на засыпку: у чем Ваш код неверен? А впрочем... таки да — наверное будет работать и это таки "оптимизация". Но этот код действительно ужасен! Надеюсь, Вы с этим согласны? Из этой конторы просто необходимо бежать, бежать, бежать! Потому что если такой код предлагают писать на собеседовании — что же они предложать писать в реальной работе!?


Lex пойми что я не господь бог и возможности ограничены и это не мешает брать на работу тех кто сильнее меня

если девелопер напишет лучше меня будь уверен его код я пойму

условий то всего 2 — рекурсия и работоспособность

мы стобой не знакомы с какой стати ты говоришь что то про организацию ?

какие аргументы на счет ужасного кода ?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.