Поиск натуральных чисел на SQL

Недавно мне написал рекрутер и сказал, что его клиент ищет программиста с моими навыками, но для получения работы мне нужно написать тест. Я говорю - ну ладно, без проблем напишу. Мне присылают тест из трёх заданий. Я все их точно не помню но одно кажется было - найти все натуральные числа в диапазоне. Казалось бы, вполне классическая задача, решение которой можно найти в интернете без проблем, но тут же приписано, что я должен это сделать на Transact-SQL. 

Я даже не стал заморачиваться и писать этот тест, просто подобного я даже не встречал. Но задание вполне интересное и если кто-то хочет решить, то интересно было бы увидеть, как бы ты это сделал?

Интересно еще твое мнение, что ты думаешь о таком задании и что оно говорит о том программисте, которого тестируют.


Комментарии

Сергей

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

Сергей

месяц назад решил такую задачу. через Процедуру. показать код?

СкульРидер

-- Тут тебе и в консольку вывод и если нужно в таблицу с последующим селектом. Вывод для примера до 50

CREATE TABLE #Numbers(
[id] [int] IDENTITY(1,1) NOT NULL,
[Number] [int] NOT NULL
)
GO

DECLARE
    @i INT,
    @a INT
    
SET @i = 50
SET @a = 1
WHILE (@a <= @i)
            BEGIN
                PRINT @a
                INSERT INTO #Numbers (Number) VALUES (@a)
                SET @a = @a + 1
            END
GO

SELECT Number FROM #Numbers
GO

DROP TABLE #Numbers

СкульРидер

-- Ну или для совсем ленивых
CREATE TABLE #Numbers([id] [int] IDENTITY(1,1) NOT NULL)
GO

INSERT INTO #Numbers default values
GO 50

SELECT ID FROM #Numbers
GO

DROP TABLE #Numbers
GO

Test

Чушь собачья такие задания. Помню собеседовался в конторе которая использует для работы исключительно CMS, с нуля сами не делают. Пишут, как я понял, чисто сайты. Собеседование было тупо по основам .NET и C#, я бы на эти вопросы ответилбы даже до того как начал работать с C#. Просили показать пример когда, я прислал тестовое задание за пару дней до собеседование которое когда-то делал в другую контору на Entity Framework, async/await, ASP.NET MVC, WebAPI, AngularJS, Bootstrap, но им этого было мало, сразу после собеседования впарили 3 мини задания ещё - одно посчитать факториал, второе что-то вроде валидации числа, а третье было более математическим надо было понять что делает код, я в итоге не понял, так как не спец в математике, в ответе на задание сказали, что оно делает "Values are the same but the distribution is changed". Так вот вопрос нафиг было давать дополнительные задания, если я прислал тестовое неплохое, отлично отвечал на вопросы, ещё и вопросы с математикой от людей которые вообще кроме своих CMS ничего не используют, наверное без них сами и сайт не напишут. В общем в итоге они предложили работу, но я отказался.

Юра

По идее, рассчитано на знание SQL (вполне возможно, что у той компании много всяких legacy БД с кучей хранимых процедур и т.п.).

А вообще, задание классное. И есть возможность его не просто сделать, а выпендриться перед потенциальным работодателем, например, задействовав хак конкретной СУБД, который сгенерирует числа без лишних усилий (это как вычислять факториал в C++ на этапе компиляции...). Но даже если придеться писать свою функцию, то можно не просто накодить, но и сделать проверки на граничные значения, написать тесты для функции (на Python, к примеру), и все это запускать на In-Memory БД.

Dmitry Romanenko

Судя по всему вся фича в использовании функций и процедур из-за их возможности поддержки циклов. А дальше почти тоже самое как на других языках.

Александр

Это задачка на хорошее знание циклов, хотя доводилось видеть на sql вывод фрактала мандельброта. Возникает лишь вопрос. А зачем оно надо?

Евгений

Если программист, которого тестируют успешно справился с заданием, то вероятно он недавно закончил учебное заведение и помнит свойства натуральных чисел, а если не справился, то "школьные задачки" для него в далеком прошлом и если бы он открыл справочник по математике, то тоже скорее всего бы справился. Ценность этого задания - никакая. И вообще все эти тесты являются проявлением недоверия к опыту работы соискателя, если он у него конечно есть. Ну а если нет, то можно и потестировать. Сколько у нас к конторе не пытались проводить тесты для соискателей никто не мог в полной мере ответить на большинство вопросов. Вероятно из-за стресса и академического характера такого подхода. Однако испытательный срок эту погрешность всегда исправляет. Кто-то уходил, а кто-то вполне успешно работал долгое время, несмотря на то, что тест то он прошел не особо хорошо.


Добавить Комментарий

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповидания на русском или английском языке.

Пишите мне