LINUX.ORG.RU
ФорумTalks

Логические вопросы на собесах

 ,


0

1

Как вы относитесь к подобного типа заданиям?

Это клоунада или действительно помогает кого-то выбрать адыкватного?

Дан массив содержащий числа. Нужно отсортировать его по убыванию, но не трогая положительные значения, сохраняя их позицию

P.S.: Я бы не решил с 1 раза за предложенные 10 минут, хотя у меня богатый внутренний экспириенс и вообще мне каждую неделю по крайней мере 2 раза говорят «спасибо» за проделанную работу. ( но денег больше не дают). Просто никогда не пригодилось сие знание.

Ах да конторка не гугль и не фэйсбучек. Просто российская галера с жуткой текучкой.

ПЫСЫ:

мне не нужно. я просто дорвался до уровня интервьюера из пред. темы. И сделал вывод, что если бы устраивался сюда по этой портянке ( которая до меня передавалась поколениями) - то просто бы не прошел …



Последнее исправление: ivanich10 (всего исправлений: 4)

российская галера с жуткой текучкой с 1 раза за предложенные 10 минут

Тут, всё сходится. Быстро приносить кабанчику деньги из-за каверзных запросов клиентов (а они каверзные не потому, что сами того хотят, а потому, что их клиенты каверзные тоже).
Поугорать от выгорания разве что годится. Денег там тоже не дадут, т.к. всегда мало угара.
Ищут олимпиадников за немного денег.
Но реальных олимпиадников разбирают ещё борзыми щенками.
Поэтому набирают по объявлению. Вдруг у кого-то трудная жизненная ситуация.

TomBOY ★★
()

Дан список содержащий числа. Нужно отсортировать его по убыванию, но не трогая положительные значения, сохраняя их позицию

Как отсортировать -1, 10, -1, 5, -1, 8 если хочешь-не хочешь, а 5 и 8 надо менять местами?

Xintrea ★★★★★
()

Список или массив?

Если список, то какая ещё позиция? Если массив, то как отсортировать [1,2,3]? Или можно выполнять арифметические операции над элементами?

knovich
()

Тебе код надо было писать для этого?

Вообще по идее их дают не ради результата в ради процесса.

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

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

ivanich10
() автор топика
Ответ на: комментарий от ya-betmen

я лучше за 10 минут задам 50 вопросов по теме, чем мучать человека полчаса на 1-2 логической задачке. Сразу же виден уровень профпригодности по ответам.

ivanich10
() автор топика
Последнее исправление: ivanich10 (всего исправлений: 2)
Ответ на: комментарий от ya-betmen

критерии чего? Ответов на вопросы? Ну давай определим. Как на экзамене? 3 гос оценка? Ок - 38 вопрос отвечено - тест пройдет

ivanich10
() автор топика
Ответ на: комментарий от ya-betmen

а это ты про «стрессоусточивость, усидчивость, умение работать в команде, умение решать нестандартную проблему за короткий срок, уровень запращиваемой ЗП» и прочую чушь?

ivanich10
() автор топика
Последнее исправление: ivanich10 (всего исправлений: 1)
Ответ на: комментарий от ivanich10

Ясно. Ничего себе формулировка. Почему бы не сказать: «Отсортировать по убыванию без учёта положительных значений». А то «не трогая» не значит «не учитывая».

knovich
()

Нужно отсортировать его по убыванию, но не трогая положительные значения, сохраняя их позицию

Это же старое доброе «СТОЙ ТАМ ИДИ СЮДА», только на айтишном.

thesis ★★★★★
()
Ответ на: комментарий от Psilocybe

А сколько у вас стоит 10 минут рабочего времени? готов заплатить при адыкватной стоимости переводом по номеру телефона

ivanich10
() автор топика

Задача детсадовского уровня, о чем трагедия?

data = [1,10,20,-1,-4,5,-2, 8]


def my_sort(l: list[int]) -> list[int]:
    negatives = iter(sorted(i for i in data if i < 0))
    return [i if i >=0 else next(negatives) for i in l]

print(my_sort(data))
FishHook
()
Ответ на: комментарий от ivanich10

Слишком много времени потрачено на выяснение коряво поставленной задачи.

knovich
()
Ответ на: комментарий от ivanich10

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

ya-betmen ★★★★★
()

Это клоунада или действительно помогает кого-то выбрать адыкватного?

Любую задачу можно превратить в софистическую клоунаду:
сортировка массива возможна не только по значению, но и по любому демагогически постулированному лексикографическому порядку, например, по количеству цифр в числе, цвету, кеглю, топологической связности евойных пикселов, … :)

quickquest ★★★★★
()

Это может показаться шокирующим, но большинство программистов понятия не имеют как проводить собеседование себе подобных, и поэтому копируют практики, с которыми они сталкивались сами по другую сторону стола. В итоге получается такая вот долгоживущая поколенческая травма, когда одни обезьяны задают тупые задачки другим обезьянам, потому что «тут так принято».

Подобные задачи имеют смысл только если ты собеседуешь полного нуба, у которого нет ни опыта, ни аккаунта на гитхабе с кодом в впопенсорце, ни вообще чего угодно, и тебе нужно отсеять тупых нубов от не слишком тупых. В противном случае, когда у тебя в резюме 10 лет опыта, а тебя спрашивают вот такое, стоит задуматься о выходе в дверь.

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

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 2)

Ну ты чо не смог написать сортировку пузырьком, только брать не j+1 элемент, а искать первый не положительный от j+1?

cobold ★★★★★
()
Ответ на: комментарий от Xintrea

Ключ возможно кроется в «по убыванию». Тут либо в задании ловушка и на самом деле подразумевается «по не возрастанию» и предполагается что кандидат уточнит этот момент и ряд других(например можно ли новый массив заводить, какие ограничения на O(n)), либо в задаче гарантируется, что входной массив состоит из уникальных значений

cobold ★★★★★
()

Вообще отношусь как к головолмке. Возможность поразмять мозги. Ну а для рекрутера возможность сбить зарплатные ожидания :)

cobold ★★★★★
()

Даже если ты вообще не знаешь ни одного алгоритма сортировки (или не уверен что сообразишь написать модифицированный пузырёк за 10 минут), можно решить задачу в лоб запомнив индексы и значения положительных элементов, удалив их из массива, отсортировать массив стандартной функцией сортировки, а потом на-insert-ить сохранённые положительные значения в нужные позиции.

Раз дано 10 минут, то никакой речи об оптимальности и идеальности решения нет, речь о том что ты в принципе способен как из кирпичиков лего что-то собрать из кода под задачу.

А то что ты в условиях интервью создал себе ложную дихтомию «либо идеально, либо никак» (а как ещё объяснить, что ты с задачей не справился, тупое решение предложенное мною кодится за 10 минут на любом языке, который имеет функцию сортировки в стандартной библиотеке и который кандидат не в первый раз видит, сама идея как решать задачу пришла мне в голову в первые 15 секунд чтения поста) само по себе вполне маркер, что ты будешь слишком жёстко подходить к задачам на работе не балансируя между красотой кода и интересами бизнеса.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 3)
=>WITH cte_a AS (
        SELECT 
                 a.i
                ,a.e
                ,CASE WHEN a.e < 0 THEN ROW_NUMBER() OVER(PARTITION BY a.e < 0 ORDER BY a.e ASC) END AS rne
                ,CASE WHEN a.e < 0 THEN ROW_NUMBER() OVER(PARTITION BY a.e < 0 ORDER BY a.i ASC) END AS rni
        FROM UNNEST(ARRAY[1,10,20,-1,-4,5,-2,8]) WITH ORDINALITY AS a(e, i)
)
,cte_negsort AS (
        SELECT 
                a1.e
                ,CASE WHEN a1.e < 0 THEN a2.i ELSE a1.i END AS i
        FROM cte_a a1 LEFT JOIN cte_a a2 ON a1.rne = a2.rni
)
SELECT array_agg(n.e ORDER BY n.i) FROM cte_negsort n
;
       array_agg        
------------------------
 {1,10,20,-4,-2,5,-1,8}
(1 строка)

=>

прямо сказать - далеко не 10 минут пыхтел.

-------------

Вот вам задачка на логику с реального собеседования:

Сколько раз в течение суток встречаются минутная и часовая стрелки.
Гуглить нельзя. Говорить ртом в видеокамеру.

Toxo2 ★★★★
()
Ответ на: комментарий от Toxo2

Сколько раз в течение суток встречаются минутная и часовая стрелки.

1 раз, очевидно же. Главное забыть завести часы и вручную откорректировать стрелки. Я правильно ответил?

ivanich10
() автор топика
Последнее исправление: ivanich10 (всего исправлений: 1)

Обычная сортировка, только 2 условия добавляются

public class Main {
    
    public static void main(String[] args) {
        
        int[] input = {1, -1, -8, 15, 4, -5, -18, -3, 1};
        
        for (int i = 0; i < input.length; i++) {

            if (input[i] >= 0) {
                continue;
            }
            for (int j = i + 1; j <  input.length; j++) {
                if (input[j] >= 0) {
                    continue;
                }
                if (input[i] < input[j]) {
                    int temp = input[i];
                    input[i] = input[j];
                    input[j] = temp;
                }
            }
        }

        for (int i : input) {
            System.out.print(i + " ");
        }
    }
}

Что тут делать 10 минут хз

slyjoeh ★★★
()
Ответ на: комментарий от ivanich10

Я правильно ответил?

Нет. После поиска ответа в Гугле - начинает казаться, что можно было догадаться.

Вот интересно - есть тут кто живой и настоящий, кто догадается.

Toxo2 ★★★★
()

Мне в крайний раз задавались довольно толковые вопросцы, ответил на 90% из них. Была предложена должность, но я не пошёл туда из-за

галера с жуткой текучкой.

Ибо с меня её хватит, этой вашей текучки.

И, да, - предложенная должность звалась «ведущий разработчик баз данных».

sparkie ★★★★★
()
Ответ на: комментарий от ivanich10

Я правильно ответил?

А сам-то как считаешь?😉😎

sparkie ★★★★★
()
Ответ на: комментарий от slyjoeh

Я бы прошёлся по массиву, создал массив индексов отрицательных элементов index, а затем в алгоритме сортировки заменил бы все операции [i] на [index[i]], а input.length — на index.length (или на какое-нибудь negative_els_num, если index фиксированной длины был). Так, по-моему, немного лучше в том смысле, что не надо в два разных места вставлять лишний if.

knovich
()
Ответ на: комментарий от FishHook

else next(negatives)

Хорошая идея, я сразу не догадался. Моя вариация на тему:

(ns doublesort)

(defn doublesort
  "Sorts negative elements of `xs`, leaving nonnegative ones alone in
  their places. Optional `comparator` can be provided."
  ([xs]
   (doublesort xs nil))
  ([xs comparator]
   (let [sorted-negs (sort (or comparator compare) (filter neg? xs))]
     (loop [xs xs sorted-negs sorted-negs doublesorted-xs []]
       (cond
         (empty? xs)       doublesorted-xs
         (neg? (first xs)) (recur (rest xs)
                                  (rest sorted-negs)
                                  (conj doublesorted-xs (first sorted-negs)))
         :else             (recur (rest xs)
                                  sorted-negs
                                  (conj doublesorted-xs (first xs))))))))
(def xs [1 10 20 -1 -4  5 -2  8])

;; ascending

(doublesort xs)
;; => [1 10 20 -4 -2 5 -1 8]

;; descending

(doublesort xs (fn [a b] (compare b a)))
;; => [1 10 20 -1 -2 5 -4 8]
Nervous ★★★★★
()

Дан массив содержащий числа. Нужно отсортировать его по убыванию, но не трогая положительные значения, сохраняя их позицию

Дан массив содержащий числа. Нужно найти самое положительное, из представленных отрицательных чисел.

QsUPt7S ★★
()
Ответ на: комментарий от QsUPt7S

самое положительное, из представленных отрицательных

Это однозначно гвоздь программы любого собеседования, прям как классическая задача про составление слова «счастье» из букв «Ж», «О», «П» и «А».

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous
 жжж  о   о     пп   ааа  жжжжж  о      папап
ж     о   о    п п  а       ж    о      а
ж      оооо   пппп  а       ж    оооо   папап
ж         о  п   п  а       ж    о   о  а
 жжж      о  п   п   ааа    ж    оооо   папап
Irma ★★
()

Дан массив содержащий числа. Нужно отсортировать его по убыванию, но не трогая положительные значения, сохраняя их позицию

Кстати, если задача вида [2, -5, 8, -3] -> [2, -3, 8, -5], то решается она в три шага:

  1. Вытащить отрицательные числа в отдельный массив.
  2. Отсортировать вытащенное.
  3. Вбить обратно.
QsUPt7S ★★
()
Ответ на: комментарий от Toxo2

В гугле популярны варианты как 22, так и 23. Почему-то встречается еще вариант 37 (sic!) - ну так это «ответы mail.ru». Мне вот любопытно ваше понимание разницы между 22 и 23.

t3n3t
()
Ответ на: комментарий от Toxo2

. Потом переживать, что до самого не дошло.

Зачем? Вам логические задачки решать или на дядю пахать в продукт компани ?

ivanich10
() автор топика
Ответ на: комментарий от QsUPt7S

о! правильно построил логику решения. НО судя по твоим комментам - ты наглядный пример бесполезности применения такого тестового задания ( если ты конечно не злостный тролль).

ivanich10
() автор топика
Последнее исправление: ivanich10 (всего исправлений: 1)
Ответ на: комментарий от t3n3t

Про разницу в скорости 24-2 (из Гугла) - я так и не понял.

Поэтому тупо закрыл глаза и представил как они крутятся. в 12, около 1, чуть менее около 2, еще чуть менее около 3...

Насчитал 11 раз за круг. Следовательно - 22 раза за два круга.

На собеседовании на видеокамеру было неловко закрывать глаза и медитировать.

----

Давайте вторую задачку оттуда? Попробуйте тоже без Гугла.

8 монет. Одна фальшивая (она легче). Есть только простые весы с чашками. За ДВА взвешивания найти фальшивую.

Toxo2 ★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)