Попинайте плз выполненное тестовое задание
От: YaTL Россия  
Дата: 12.11.10 23:19
Оценка: 1 (1)
Если есть у кого время... История такая. Заинтересовался вакансией, сказали что рассмотрят меня как потенциального сотрудника только после выполненного задания. Вот текст задачи:

Задание: необходимо вывести введенное 10-тичное число словами на русском языке в 8-ми и 10-ной системах. Например.
Вводим: 131
Выводим:
сто тридцать один в десятичной системе;
двести три в восьмеричной системе.
При проектировании подумайте о том, как ваше решение можно было бы локализовать на английский язык (тут обратите внимание, например, на цифру "двести", которая на английском будет состоять из двух слов).

Ссылка на мое решение:
num_parser.zip

Суть не в том, что мне отказали, а что я потратил некоторое количество личного времени на написание кода, и очень хочу знать на чем "срубился". Заранее благодарен за любые комментарии.
Re: Попинайте плз выполненное тестовое задание
От: DimaX  
Дата: 13.11.10 01:35
Оценка:
Не знаю на чем вы срубились. Думаю, дело не в отрицательных, или слишком больших числах, кривом интерфейсе командной строки — все это мелочи.
Лично я бы не взял за использование С++ на пустом месте.
imho, проще надо быть, проще.
се
Re: Попинайте плз выполненное тестовое задание
От: 0xC0DE  
Дата: 13.11.10 01:42
Оценка: 1 (1)
Детально не вчитывался в алгоритм, просмотрел практически по-диагонали. Сразу бросилось в глаза, что написано в сишном стиле. Возможно, люди хотели увидеть синглтон, абстрактную фабрику или что-то подобное, труЪ C++ и все такое. Структуры, содержащие const wchar_t* режут глаз. Где конструктор копирования, оператор присваивания? Понятно, что оно, м.б. и не надо в данном случае, но... И почему const wchar_t* вместо std::string? И почему вообще wchar_t вместо TCHAR (ну, это мой личный пунктик, м.б. не все согласятся)? Легко ли расширить твой алгоритм для двоичной системы?
Re[2]: Попинайте плз выполненное тестовое задание
От: 0xC0DE  
Дата: 13.11.10 01:49
Оценка:
Здравствуйте, DimaX, Вы писали:

DX>Лично я бы не взял за использование С++ на пустом месте.

Э-э-э, а если вакансия была программиста C++?
Re: Попинайте плз выполненное тестовое задание
От: мыщъх США http://nezumi-lab.org
Дата: 13.11.10 01:58
Оценка:
Здравствуйте, YaTL, Вы писали:

YTL>Если есть у кого время... История такая. Заинтересовался вакансией, сказали что рассмотрят меня как потенциального сотрудника только после выполненного задания. Вот текст задачи:

YTL>Суть не в том, что мне отказали, а что я потратил некоторое количество личного времени на написание кода,
YTL>и очень хочу знать на чем "срубился". Заранее благодарен за любые комментарии.
бросилось в глаза отсутствие "нуля" (про отрицательные уже сказали), проверки на не-число, а так же несоответствие заданию. там несколько другой вывод просили сделать. на код и алгоритм не смотрел. а еще бросилось в глаза отсутствие комментариев. но имхо это не смертельно. я бы вас взял. коллеги и не такие ляпы допускают. дело ж не в ляпах, а чтобы пнули -> исправил, а не начинал оправдываться. может быть, вы не туда трудоустраиваетесь. может быть я не прав. не знаю...
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: Попинайте плз выполненное тестовое задание
От: мыщъх США http://nezumi-lab.org
Дата: 13.11.10 02:37
Оценка:
Здравствуйте, 0xC0DE, Вы писали:

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


DX>>Лично я бы не взял за использование С++ на пустом месте.

CDE>Э-э-э, а если вакансия была программиста C++?
а что в этом коде от плюсов кроме расширения?
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: Попинайте плз выполненное тестовое задание
От: DimaX  
Дата: 13.11.10 03:03
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>Здравствуйте, 0xC0DE, Вы писали:


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


DX>>>Лично я бы не взял за использование С++ на пустом месте.

CDE>>Э-э-э, а если вакансия была программиста C++?
М>а что в этом коде от плюсов кроме расширения?

Посмотрел код еще раз и не понял в чем собственно вопрос? По вашему это С-шный код?
Re[5]: Попинайте плз выполненное тестовое задание
От: мыщъх США http://nezumi-lab.org
Дата: 13.11.10 03:20
Оценка: 1 (1)
Здравствуйте, DimaX, Вы писали:

DX>Здравствуйте, мыщъх, Вы писали:


М>>Здравствуйте, 0xC0DE, Вы писали:


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


DX>>>>Лично я бы не взял за использование С++ на пустом месте.

CDE>>>Э-э-э, а если вакансия была программиста C++?
М>>а что в этом коде от плюсов кроме расширения?

DX>Посмотрел код еще раз и не понял в чем собственно вопрос? По вашему это С-шный код?

боюсь обидеть, но это даже ближе к бейскику, чем к процедурному. и это уж точно не ооп. декомпозиции нет. попробуйте записать эту программу в несколько строк так чтобы выразить алгоритм. в псеводокоде. если вам нужна какая-то функция, которой нет в си -- ну так дайте ей осмысленное имя и вызовите. сами функции потом напишите это будет классика процедурного программирования. а так это бейскик.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: Попинайте плз выполненное тестовое задание
От: Олег К.  
Дата: 13.11.10 05:53
Оценка: 1 (1) +3 -4
CDE>Детально не вчитывался в алгоритм, просмотрел практически по-диагонали. Сразу бросилось в глаза, что написано в сишном стиле. Возможно, люди хотели увидеть синглтон, абстрактную фабрику или что-то подобное, труЪ C++ и все такое. Структуры, содержащие const wchar_t* режут глаз. Где конструктор копирования, оператор присваивания? Понятно, что оно, м.б. и не надо в данном случае, но... И почему const wchar_t* вместо std::string? И почему вообще wchar_t вместо TCHAR (ну, это мой личный пунктик, м.б. не все согласятся)? Легко ли расширить твой алгоритм для двоичной системы?
Наоборот, нормальные компании не хотят видеть ни синглтоны, ни абстрактные фабрики ни "труЪ С++ и все такое."
Re: Попинайте плз выполненное тестовое задание
От: elmal  
Дата: 13.11.10 07:54
Оценка: 1 (1)
Здравствуйте, YaTL, Вы писали:

YTL>Суть не в том, что мне отказали, а что я потратил некоторое количество личного времени на написание кода, и очень хочу знать на чем "срубился". Заранее благодарен за любые комментарии.

Посмотрел очень мельком, и даже сравнительно неплохо все, без мата можно читать. За форматирование нормальное и следование code convention большой респект, очень мало народа на это обращает внимание.
Вот только CNumParser::ParseOneStep. Метод слишком большой, ИМХО надо разбивать на множество методов, сейчас разбираться как он работает нет ни малейшего желания в текущей реализации. Особенно magic number 10 там интересно смотрится, сходу я его бы не ожидал там встретить, у нас же переменное основание системы счисления, откуда оно там может взяться непонятно. Учитывая, что это единственная логика в задании, и все сделано одним методом, лично я бы расценил это как неумение декомпозировать задачу, и отсутствие навыков процедурного программирования (про ООП даже не говорю, но оно здесь и не нужно ИМХО).
Re[2]: Попинайте плз выполненное тестовое задание
От: dilmah США  
Дата: 13.11.10 08:11
Оценка:
E>За форматирование нормальное

где нормальное форматирование??
там табы в середине строки стоят. Ты видел как этот код выглядит со стандартным размером таба 8?
Re[3]: Попинайте плз выполненное тестовое задание
От: placement_new  
Дата: 13.11.10 08:12
Оценка:
Здравствуйте, Олег К., Вы писали:

CDE>>Детально не вчитывался в алгоритм, просмотрел практически по-диагонали. Сразу бросилось в глаза, что написано в сишном стиле. Возможно, люди хотели увидеть синглтон, абстрактную фабрику или что-то подобное, труЪ C++ и все такое. Структуры, содержащие const wchar_t* режут глаз. Где конструктор копирования, оператор присваивания? Понятно, что оно, м.б. и не надо в данном случае, но... И почему const wchar_t* вместо std::string? И почему вообще wchar_t вместо TCHAR (ну, это мой личный пунктик, м.б. не все согласятся)? Легко ли расширить твой алгоритм для двоичной системы?

ОК>Наоборот, нормальные компании не хотят видеть ни синглтоны, ни абстрактные фабрики ни "труЪ С++ и все такое."

Что бы это значило?
Re[3]: Попинайте плз выполненное тестовое задание
От: elmal  
Дата: 13.11.10 08:15
Оценка:
Здравствуйте, dilmah, Вы писали:

D>где нормальное форматирование??

D>там табы в середине строки стоят. Ты видел как этот код выглядит со стандартным размером таба 8?
Ну, у меня открылось нормально, я аж удивился . Сходу косяков не заметил.
Re[2]: Попинайте плз выполненное тестовое задание
От: dilmah США  
Дата: 13.11.10 08:16
Оценка: +1
Здравствуйте, 0xC0DE, Вы писали:

CDE>И почему вообще wchar_t вместо TCHAR


наверно потому что wchar_t есть в стандарте. А что такое TCHAR я первый раз слышу.
Re[3]: Попинайте плз выполненное тестовое задание
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 13.11.10 08:33
Оценка:
Здравствуйте, Олег К., Вы писали:

CDE>>Детально не вчитывался в алгоритм, просмотрел практически по-диагонали. Сразу бросилось в глаза, что написано в сишном стиле. Возможно, люди хотели увидеть синглтон, абстрактную фабрику или что-то подобное, труЪ C++ и все такое. Структуры, содержащие const wchar_t* режут глаз. Где конструктор копирования, оператор присваивания? Понятно, что оно, м.б. и не надо в данном случае, но... И почему const wchar_t* вместо std::string? И почему вообще wchar_t вместо TCHAR (ну, это мой личный пунктик, м.б. не все согласятся)? Легко ли расширить твой алгоритм для двоичной системы?

ОК>Наоборот, нормальные компании не хотят видеть ни синглтоны, ни абстрактные фабрики ни "труЪ С++ и все такое."

+1.

Но обычно они хотят видеть std::string std::wstring и vector вместо char[1024], wchar_t[1024], просто чтобы не было магических констант при превышении которых программа упадет.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[6]: Попинайте плз выполненное тестовое задание
От: YaTL Россия  
Дата: 13.11.10 08:35
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


DX>>Здравствуйте, мыщъх, Вы писали:


М>>>Здравствуйте, 0xC0DE, Вы писали:


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


DX>>>>>Лично я бы не взял за использование С++ на пустом месте.

CDE>>>>Э-э-э, а если вакансия была программиста C++?
М>>>а что в этом коде от плюсов кроме расширения?

DX>>Посмотрел код еще раз и не понял в чем собственно вопрос? По вашему это С-шный код?

М>боюсь обидеть, но это даже ближе к бейскику, чем к процедурному. и это уж точно не ооп. декомпозиции нет. попробуйте записать эту программу в несколько строк так чтобы выразить алгоритм. в псеводокоде. если вам нужна какая-то функция, которой нет в си -- ну так дайте ей осмысленное имя и вызовите. сами функции потом напишите это будет классика процедурного программирования. а так это бейскик.

Я правильно понимаю, что задача не сложная и нужно было упор делать не на том чтобы выполнить ее "от и до", т.е. даже то чего не просили но намекали (с англ.яз.), а не думая над упрощением кода демонстрировать "а еще я знаю шаблоны, паттерны..."?
Re[2]: Попинайте плз выполненное тестовое задание
От: YaTL Россия  
Дата: 13.11.10 08:38
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


YTL>>Если есть у кого время... История такая. Заинтересовался вакансией, сказали что рассмотрят меня как потенциального сотрудника только после выполненного задания. Вот текст задачи:

YTL>>Суть не в том, что мне отказали, а что я потратил некоторое количество личного времени на написание кода,
YTL>>и очень хочу знать на чем "срубился". Заранее благодарен за любые комментарии.
М>бросилось в глаза отсутствие "нуля" (про отрицательные уже сказали), проверки на не-число, а так же несоответствие заданию. там несколько другой вывод просили сделать. на код и алгоритм не смотрел. а еще бросилось в глаза отсутствие комментариев. но имхо это не смертельно. я бы вас взял. коллеги и не такие ляпы допускают. дело ж не в ляпах, а чтобы пнули -> исправил, а не начинал оправдываться. может быть, вы не туда трудоустраиваетесь. может быть я не прав. не знаю...

Ноль там есть. Не закрывая консоли после завершения программы можно его увидеть
Re[2]: Попинайте плз выполненное тестовое задание
От: YaTL Россия  
Дата: 13.11.10 08:42
Оценка:
Здравствуйте, elmal, Вы писали:

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


YTL>>Суть не в том, что мне отказали, а что я потратил некоторое количество личного времени на написание кода, и очень хочу знать на чем "срубился". Заранее благодарен за любые комментарии.

E>Посмотрел очень мельком, и даже сравнительно неплохо все, без мата можно читать. За форматирование нормальное и следование code convention большой респект, очень мало народа на это обращает внимание.
E>Вот только CNumParser::ParseOneStep. Метод слишком большой, ИМХО надо разбивать на множество методов, сейчас разбираться как он работает нет ни малейшего желания в текущей реализации. Особенно magic number 10 там интересно смотрится, сходу я его бы не ожидал там встретить, у нас же переменное основание системы счисления, откуда оно там может взяться непонятно. Учитывая, что это единственная логика в задании, и все сделано одним методом, лично я бы расценил это как неумение декомпозировать задачу, и отсутствие навыков процедурного программирования (про ООП даже не говорю, но оно здесь и не нужно ИМХО).

10 не магическое число, а "человечья система счисления", а та которая требуется для вывода имеет место быть в качестве переменного параметра (10, 8) в конструкторе...
Re[2]: Попинайте плз выполненное тестовое задание
От: YaTL Россия  
Дата: 13.11.10 08:46
Оценка:
Здравствуйте, 0xC0DE, Вы писали:

CDE>Детально не вчитывался в алгоритм, просмотрел практически по-диагонали. Сразу бросилось в глаза, что написано в сишном стиле. Возможно, люди хотели увидеть синглтон, абстрактную фабрику или что-то подобное, труЪ C++ и все такое. Структуры, содержащие const wchar_t* режут глаз. Где конструктор копирования, оператор присваивания? Понятно, что оно, м.б. и не надо в данном случае, но... И почему const wchar_t* вместо std::string? И почему вообще wchar_t вместо TCHAR (ну, это мой личный пунктик, м.б. не все согласятся)? Легко ли расширить твой алгоритм для двоичной системы?


Насчет двоичной системы вопрос не совсем понятный, 8 и 10 задаются в конструкторе параметрами. А Вы не заметили что все эти const wchar_t* позволили выделить данные о языках в отдельные файлы с этими структурами, отделить их от функции/алгоритма? Других языков не знаю, но над переводом "я подумал", согласитесь.
Re[7]: Попинайте плз выполненное тестовое задание
От: elmal  
Дата: 13.11.10 09:12
Оценка: 1 (1) +1
Здравствуйте, YaTL, Вы писали:

YTL>Я правильно понимаю, что задача не сложная и нужно было упор делать не на том чтобы выполнить ее "от и до", т.е. даже то чего не просили но намекали (с англ.яз.), а не думая над упрощением кода демонстрировать "а еще я знаю шаблоны, паттерны..."?

Не надо ничего демонстрировать, упаси боже. Нужно писать так, чтобы:
1) Легко читалось, чтоб чужой человек сходу бы понял как сделано. Сходу — беглым взглядом. Если невозможно беглым из за хитрых алгоритмов — это должно быть откомментировано;
2) Не должно быть явных багов;
3) Нужно быть готовым к тому, что попросят что то дописать, нужно предугадать возможные изменения и должен был быть план как будем развивать.
Паттерны и все такое являются средством решения, а не самоцелью. На мелких задачах их применять редко когда есть смысл.
Основное — это пункт 1. После п.1 будут смотреть 2, и только потом 3 .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.