|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Всем привет! Знает кто ответ? Можете пояснить ? 1. Первый вопросКакой тип должен быть установлен вместо вопроса, чтобы метод работал корректно? Код: java 1. 2. 3. 4.
2. УсловиеЕсть две таблицы Table1(Продукты) Table2(Магазины) тип многие ко многим. вопросКакой максимально возможный набор вариантов сущностей может существовать при таком отношении? 3. В таблице есть дубликаты: Table id | name | surname -------------------- 1 | Ivan | surname 2 | Ivan | surname 3 | Petr | surname 4 | Petr | surname 5 | Borya | surname Напишите запрос удаляющий дубликаты, что бы получилось: Table id | name | surname -------------------- 1 | Ivan | surname 3 | Petr | surname 5 | Borya | surname Нашел ответ: Код: sql 1. 2.
Но я его не понимаю, можете объяснить на пальцах как он работает ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:15 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3.
Тут закинута целая лопата навоза на турбину. Во первых тип может быть любой из алгебраических (byte, short, int, long). Пожалуй кроме вещественных. Во вторых результат - тождественно FALSE потому что для известных арифметик a + 1 == a дает отсутствие истины. В третьих формат названия метода simpleMethod() ну... не прошел-бы code-review. Будут это спрашивать или нет ХЗ. Но я-бы добавил к ответу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:26 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
авторВо вторых результат - тождественно FALSE потому что для известных арифметик a + 1 == a дает отсутствие истины Тогда возникает вопрос для чего это метод нужен ? И зачем о нем вести речь на собеседовании если результат FALSE ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:30 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannУсловиеЕсть две таблицы Table1(Продукты) Table2(Магазины) тип многие ко многим. вопросКакой максимально возможный набор вариантов сущностей может существовать при таком отношении? Декартово произведение двух таблиц как раз даёт нам прямоугольник (матрицу) уникальных комбинаций. И count - вернет количество. Для Oracle SQL вот такой компактный вариант. Для ANSI SQL там возможно надо добавить JOIN. Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:32 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannавторВо вторых результат - тождественно FALSE потому что для известных арифметик a + 1 == a дает отсутствие истины Тогда возникает вопрос для чего это метод нужен ? И зачем о нем вести речь на собеседовании если результат FALSE ? Я думаю что в этот вопрос заложены смыслы на разных уровнях. Как в Библию. И в зависимости от того кому задан этот вопрос - можно получить ответы разных детализаций. Как задачка про червяка который грызёт две книги. Она решаема за 1 минуту для школьника и нерешаема для академика. Просто разные уровни восприятия. На мой субъективный взгляд это легкий троллинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:35 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
1. на первый взгляд любые числовые, плюс стринга. может ругнется на что. суть вопроса видимо, соберется ли вообще или нет. верно? 2. непонятен вопрос. очевидно, Продукт, Магазин, ПродуктМагазин. третий не обязателен. 3. работает как дистинкт но только по имени ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:39 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonDr.Hofmannпропущено... пропущено... Декартово произведение двух таблиц как раз даёт нам прямоугольник (матрицу) уникальных комбинаций. И count - вернет количество. Для Oracle SQL вот такой компактный вариант. Для ANSI SQL там возможно надо добавить JOIN. Код: plsql 1.
а мне показалось если речь о сущностях то говорят об орме. хотя в некоторых вопросах на собеседованиях искать смысл это как с черной кошкой которой нет не было никогда и не будет у этих людей. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:42 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
mayton, Я ответил так же как оба ваших поста - но к сожалению было сказано, что это не правильные ответы, на вопрос почему авторы оставили за собой право не давать никаких комментариев. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:44 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonDr.Hofmannпропущено... Тогда возникает вопрос для чего это метод нужен ? И зачем о нем вести речь на собеседовании если результат FALSE ? Я думаю что в этот вопрос заложены смыслы на разных уровнях. Как в Библию. И в зависимости от того кому задан этот вопрос - можно получить ответы разных детализаций. Как задачка про червяка который грызёт две книги. Она решаема за 1 минуту для школьника и нерешаема для академика. Просто разные уровни восприятия. На мой субъективный взгляд это легкий троллинг. как тебе такой код: Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:45 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Он не имеет эффекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:46 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.Hofmannmayton, Я ответил так же как оба ваших поста - но к сожалению было сказано, что это не правильные ответы, на вопрос почему авторы оставили за собой право не давать никаких комментариев. надо было настоять на озвучке их версии ответа и подискутировать. если отказываются - то проявить агрессию и назвать их тупыми неучами с которыми тебе не по пути и громко хлопнуть дверью. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:47 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.Hofmannmayton, Я ответил так же как оба ваших поста - но к сожалению было сказано, что это не правильные ответы, на вопрос почему авторы оставили за собой право не давать никаких комментариев. Знакомая ситуация. Я лет 10 назад делал тестовые задания. Сейчас не делаю никогда. Именно по этой причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:47 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonОн не имеет эффекта. и смысла ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:47 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTDr.Hofmannmayton, Я ответил так же как оба ваших поста - но к сожалению было сказано, что это не правильные ответы, на вопрос почему авторы оставили за собой право не давать никаких комментариев. надо было настоять на озвучке их версии ответа и подискутировать. если отказываются - то проявить агрессию и назвать их тупыми неучами с которыми тебе не по пути и громко хлопнуть дверью. (пожимая плечами) А что это изменит? Лучше как можно быстрее разпрощайтесь и идите на следующий собес в другую контору. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:49 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonDr.Hofmannmayton, Я ответил так же как оба ваших поста - но к сожалению было сказано, что это не правильные ответы, на вопрос почему авторы оставили за собой право не давать никаких комментариев. Знакомая ситуация. Я лет 10 назад делал тестовые задания. Сейчас не делаю никогда. Именно по этой причине. а я делаю если они в рамках часа-двух. недавно вот изменил себе и взялся за задание которое объективно с хорошей проработкой заняло бы неделю. я забил и применил много упрощений. потратил наверное один день. челам это не понравилось. всё на собеседовании спрашивали почему не применил то не написал то обложил только десятком тестов. снова наступил на грабли. больше не буду. выходной день который я на это похерил очень жалко до сих пор. даже комментов не дали почему и что им не понравилось. так из интонации понял что они восприняли мой код как небрежный с малым уделением времени к деталям. не делайте тз никогда. поговорили и хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:53 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Как называется контора? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:54 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonandreykaTпропущено... надо было настоять на озвучке их версии ответа и подискутировать. если отказываются - то проявить агрессию и назвать их тупыми неучами с которыми тебе не по пути и громко хлопнуть дверью. (пожимая плечами) А что это изменит? Лучше как можно быстрее разпрощайтесь и идите на следующий собес в другую контору. ну как зачем. выброс эмоций продлевает жизнь и делает человека счастливее )) у меня товарищ так на собеседовании (не экстремально) и распрощался. сказал просто парни короче я всё понял давайте пока ищите кого-нибудь другого. это когда он спросил тестируете ли вы свой код а они сказали мы его пишем сразу без ошибок ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:54 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTmaytonпропущено... (пожимая плечами) А что это изменит? Лучше как можно быстрее разпрощайтесь и идите на следующий собес в другую контору. ну как зачем. выброс эмоций продлевает жизнь и делает человека счастливее )) у меня товарищ так на собеседовании (не экстремально) и распрощался. сказал просто парни короче я всё понял давайте пока ищите кого-нибудь другого. это когда он спросил тестируете ли вы свой код а они сказали мы его пишем сразу без ошибок Надо просто иметь какой-то заряд иронии. Не знаю будет-ли интересно. Есть украинский сайт йоб аное ойти https://ebanoe.it/ здесь полно всяких забавных историй. Почитаешь ... и вроде как у тебя не всё так уж плохо ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 16:58 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
авторнадо было настоять на озвучке их версии ответа и подискутировать. если отказываются - то проявить агрессию и назвать их тупыми неучами с которыми тебе не по пути и громко хлопнуть дверью. Обычно агрессию проявляю если есть латентный пи...др который пытается до тебя докопаться или быдло который считает себя супергероем, в том контексте и ситуации таких людей не было))) Контора инфосистемы джет по первому вопросу ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 17:06 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.Hofmannавторнадо было настоять на озвучке их версии ответа и подискутировать. если отказываются - то проявить агрессию и назвать их тупыми неучами с которыми тебе не по пути и громко хлопнуть дверью. Обычно агрессию проявляю если есть латентный пи...др который пытается до тебя докопаться или быдло который считает себя супергероем, в том контексте и ситуации таких людей не было))) Контора инфосистемы джет по первому вопросу Если это Skype-Call - просто положите трубку. Любые другие действия могут потенциально вас внести в black-list для рекрутинга. Там проставят галочку - матершинник и неадекват а потом сложно будет вобщем... Быть Платовым уёво.. и Адамовским тоже не сахар. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 17:26 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
справедливое замечание. но если ты не через РК то ... ну да всё равно лучше сдержаннее быть. земля то квадратная. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 17:40 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonЕсть украинский сайт йоб аное ойти https://ebanoe.it/ здесь полно всяких забавных историй. Насколько я знаю в том региноне украинцев нет. Зато есть много выходцев из Украины/Израиля. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 18:00 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
RonibGreat, ну ты содержание сайта читал? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 18:27 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonRonibGreat, ну ты содержание сайта читал? Просмотрел... даже пару статей попробовал найти на других источниках, типа гугля, яндекса, кьюквикк, яху но не нашел. Вывыд: статьи высосаны из яйца. Дальше много контента с картинками, которые соответствуют тому чот проишодит в Калифорнии и никакого отношеия к другим регионам мира о которых пушут в статьях нет. Человек, сочняющий статьи явно пишт из Калифорнии, собственно о том что он видит вокруг себя. Тут и ка равину ходить не надо - простое наблюдение. Я знаю русский, украинский хорошо и украинский/р(г)усский язык, культуру Украины - обороты речи в статьях далеко от Украины, то есть человек за этим сайтом на Украине не жил. Судя по однотипной плоскости статей - пишет один человек. Видимо у него хобби такое либо с головой не так - каждый приспосабливается в этом мире. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 18:53 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
RonibGreatmaytonRonibGreat, ну ты содержание сайта читал? Просмотрел... даже пару статей попробовал найти на других источниках, типа гугля, яндекса, кьюквикк, яху но не нашел. Вывыд: статьи высосаны из яйца. Дальше много контента с картинками, которые соответствуют тому чот проишодит в Калифорнии и никакого отношеия к другим регионам мира о которых пушут в статьях нет. Человек, сочняющий статьи явно пишт из Калифорнии, собственно о том что он видит вокруг себя. Тут и ка равину ходить не надо - простое наблюдение. Я знаю русский, украинский хорошо и украинский/р(г)усский язык, культуру Украины - обороты речи в статьях далеко от Украины, то есть человек за этим сайтом на Украине не жил. Судя по однотипной плоскости статей - пишет один человек. Видимо у него хобби такое либо с головой не так - каждый приспосабливается в этом мире. Это - развлекательный сайт. По крайней мере если ты читал дисклеймер внизу то там пишут. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 18:54 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
mayton, Это надо быть с "хорошим" диагнозом чтобы так развлекаться. Хотя в Калифорнии все остальные равлечения стоят дорого. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 18:59 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
При чем тут вообще Калифорния? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 19:01 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
mayton, Имел ввиду в Южных Штатах. Хотя не исключено что чел живет имено в Калифорнии. Клаудера офис вроде как бы в Калифорнии (Сан-Франциско), где сайт хостится. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 19:10 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Вообще перпендикулярно где хостится. Ладно давай проедем эту тему. Ты просто выброси конспирологические теории. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 19:13 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
mayton, Да мне собственно пофиг. Я сейчас делаю отчетност по налогам за прошлый год, и так между прочим заглядываю на скл.ру. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 19:17 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
1. Вопрос для обсуждения. И первый мой вопрос был бы - что значит корректно? На первый взгляд кажется, что любые целые числа и char. 2. Как бе похоже на декартово произведение 3. Код: sql 1. 2.
Какая-то фигня, а не запрос. NOT - лишний. Код: sql 1. 2.
Это отработает для данной постановки, но лучше, конечно, добавить и фамилию в группировку, а то как-то совсем криво: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 23:35 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин1.что значит корректно? Значит возвращать TRUE и FALSE а не только false как уже здесь обсуждалось. Озверин2. Это отработает для данной постановки, но лучше, конечно, добавить и фамилию в группировку, а то как-то совсем криво: Как это сделать можете написать? у меня просто идей нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2019, 23:58 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.Hofmann, так я и написал запрос с фамилией, самый нижний. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:01 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.Hofmann, насчет true или false - ну тогда double. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:08 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Вот обитель зла https://jet.su/ Историю ведет с 93 года. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:08 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинDr.Hofmann, насчет true или false - ну тогда double. можете еще и float - где там бесконечности еще есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:09 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Сравнение с Nan и c Inf тоже будет давать false. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:17 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonСравнение с Nan и c Inf тоже будет давать false. вопрос был про тип. Если тип будет , допустим, double, то можно не только бесконечно передавать, но и обычное вещественное число. Вот и будет true или false. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:18 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинmaytonСравнение с Nan и c Inf тоже будет давать false. вопрос был про тип. Если тип будет , допустим, double, то можно не только бесконечно передавать, но и обычное вещественное число. Вот и будет true или false. Беря во внимание общие правила сравнения вещественных чисел (через == не сравнивают). Я-бы сказал что здесь очень маловероятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:21 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинDr.Hofmann, так я и написал запрос с фамилией, самый нижний. Я тупо не врубаюсь зачем вычислять максимальный id группировать по имени по фамилии, можно как-то по подробней этот момент объяснить: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:28 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonОзверинпропущено... вопрос был про тип. Если тип будет , допустим, double, то можно не только бесконечно передавать, но и обычное вещественное число. Вот и будет true или false. Беря во внимание общие правила сравнения вещественных чисел (через == не сравнивают). Я-бы сказал что здесь очень маловероятно. ну мне скахали, что надо true или false - мол так корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:29 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannОзверинDr.Hofmann, так я и написал запрос с фамилией, самый нижний. Я тупо не врубаюсь зачем вычислять максимальный id группировать по имени по фамилии, можно как-то по подробней этот момент объяснить: Код: sql 1.
ну если посмотреть на то, что было и как стало, то удалили дубликаты с max id Допустим, был 1-ivan, 2-ivan. Остался 1-ivan. Тоже самое Petr. HAVING count(*)>1 отсеет записи, у которых нет дублпикатов. Насчет, почему по имени и фамилии, да потому, что а вдруг имена будут совпадать в другой таблице, а фамилии - различаться? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:36 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинDr.Hofmannпропущено... Я тупо не врубаюсь зачем вычислять максимальный id группировать по имени по фамилии, можно как-то по подробней этот момент объяснить: Код: sql 1.
ну если посмотреть на то, что было и как стало, то удалили дубликаты с max id Допустим, был 1-ivan, 2-ivan. Остался 1-ivan. Тоже самое Petr. HAVING count(*)>1 отсеет записи, у которых нет дублпикатов. Насчет, почему по имени и фамилии, да потому, что а вдруг имена будут совпадать в другой таблице, а фамилии - различаться? А ну все правильно, у меня почему-то отложилось что дубликаты с одинаковыми id должны быть, поэтому понятно какой из них максимальный. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:49 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannОзверин1.что значит корректно? Значит возвращать TRUE и FALSE а не только false как уже здесь обсуждалось. не ну если так загоняться то может речь о рейскандишене? а==а+1 это ж наверняка не атомарная. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:52 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинDr.Hofmann, насчет true или false - ну тогда double. вот ведь срань я попробовал максинт и максбайт а максдабл не попробовал вопрос из разряда как получить отрицательное значение из Math.abs ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:57 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Забыл написать вопрос: авторВ памяти храняться 5 объектов которые сиквентально ссылаются друг на друга, попадут ли эти объекты под очистку в JVM gabrage коллектором, если не будет связи ссылки с одним из главных объектов в хипе? Мой ответ был да, это правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 00:57 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
имхо такое знать это либо столкнуться с каким нибудь гамнокодом где прошло переполнение и найти багу, либо загоняться пазлерами. вопрос из разряда "сам вчера узнал". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:00 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannЗабыл написать вопрос: авторВ памяти храняться 5 объектов которые сиквентально ссылаются друг на друга, попадут ли эти объекты под очистку в JVM gabrage коллектором, если не будет связи ссылки с одним из главных объектов в хипе? Мой ответ был да, это правильно? джиси рут если есть то не попадут. если нет то умрут. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:01 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannЗабыл написать вопрос: авторВ памяти храняться 5 объектов которые сиквентально ссылаются друг на друга, попадут ли эти объекты под очистку в JVM gabrage коллектором, если не будет связи ссылки с одним из главных объектов в хипе? Мой ответ был да, это правильно? я полез гуглить слово сиквентально. а что значит главный объект? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:06 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинDr.HofmannЗабыл написать вопрос: пропущено... Мой ответ был да, это правильно? я полез гуглить слово сиквентально. а что значит главный объект? очередной вышибон )) последовательно сказать видать религия не позволяет они наверное ходят сугубо на ланчи и дринкают смузи. речь о gc root https://stackoverflow.com/questions/27186799/what-are-gc-roots-for-classes ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:10 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
мне вот интересно почему Integer.MAX_VALUE+1 не равно Integer.MAX_VALUE а Double.MAX_VALUE+1 равно Double.MAX_VALUE? чо за гон. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:14 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинDr.HofmannЗабыл написать вопрос: пропущено... Мой ответ был да, это правильно? я полез гуглить слово сиквентально. а что значит главный объект? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:16 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTОзверинпропущено... я полез гуглить слово сиквентально. а что значит главный объект? очередной вышибон )) последовательно сказать видать религия не позволяет они наверное ходят сугубо на ланчи и дринкают смузи. речь о gc root https://stackoverflow.com/questions/27186799/what-are-gc-roots-for-classes вопрос не имеет смысла, потому что этих 5 гипотетических объектов могут располагаться в разных сегментах хипа и собственно быть этими самыми рутами. Потому я все еще слово сиквентально. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:17 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
не думаю что там кто то глубоко копал еще и придумали какой то главный объект. что за такой главный объект и насколько он главный. самый главный или не очень главный? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:20 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTне думаю что там кто то глубоко копал еще и придумали какой то главный объект. что за такой главный объект и насколько он главный. самый главный или не очень главный? )) Извиняюсь не главный а рутовый объект А - будет рутовый ссылка someLink ссылается на него. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:22 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTмне вот интересно почему Integer.MAX_VALUE+1 не равно Integer.MAX_VALUE а Double.MAX_VALUE+1 равно Double.MAX_VALUE? чо за гон. Double внутри имеет структуру научной формы записи. И для очень больших double добавление Единички не оказывает влияния на мантиссу.. Это как к диаметру вселенной добавить ещё сантиметр. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:23 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
какие тонкости. т.е. где есть Е там плюс один дает ничего а где нет там оно оборачивается. какие оригиналы те кто делал жвм. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:28 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannОзверинпропущено... я полез гуглить слово сиквентально. а что значит главный объект? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
интересно, где такие вопросы спрашивают? Уже озвучивали? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:29 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTкакие тонкости. т.е. где есть Е там плюс один дает ничего а где нет там оно оборачивается. какие оригиналы те кто делал жвм. математика - бессердечная ты с**а. Бесконечность+1 = Бесконечность. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:29 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Давайте не вводить англицизмы. Приводите оригинал. Без интерпретаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:29 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинandreykaTкакие тонкости. т.е. где есть Е там плюс один дает ничего а где нет там оно оборачивается. какие оригиналы те кто делал жвм. математика - бессердечная ты с**а. Бесконечность+1 = Бесконечность. да но дабл то конечен. вот бигдец уже куда ни шло. а дабл не канает. максдабл логически ничем не отличается от максинта. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:31 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTОзверинпропущено... математика - бессердечная ты с**а. Бесконечность+1 = Бесконечность. да но дабл то конечен. вот бигдец уже куда ни шло. а дабл не канает. максдабл логически ничем не отличается от максинта. У дабла есть обозначение положительной бесконечности и отрицательной. И это не максдабл - это именно бесконечность. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:35 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
у дабла есть максимальное число. оно есть. оно известно. оно никуда не делось и оно конечно выше него число не получить. у бигинта нету. а тут прям игрища как со скоростью света и теорией относительности ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:37 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
насчет бесконечности.. если ты сделаешь бесконечность минус один ты вещественного числа не получишь. если ты "бесконечное число дабл" минус 1 сделаешь ты его получишь. следовательно максдабл != бесконечность. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:39 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинвопрос не имеет смысла, потому что этих 5 гипотетических объектов могут располагаться в разных сегментах хипа и собственно быть этими самыми рутами. Потому я все еще слово сиквентально. Можно рассмотреть два варианта? Когда они хранятся либо в Young или в Old generation. Дополнительное уточнение к знатокам, ссылки на объекты разве в хипе храняться или Permanent generation ? или Non-heap Meta space? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:42 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
с джавы восемь вообще нет никакого пермгена. да и не хранятся (хранились) там никогда объекты которые ты создаешь в приложении. там чот с классами и их метадатой связано. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:45 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
сорян, не объекты разумеется, а ссылки на них. а то ща заклюют ) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:46 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Или не. Объекты. )) Короче я спать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:50 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTсорян, не объекты разумеется, а ссылки на них. а то ща заклюют ) кроме статических переменных и статических ссылок которые хранятся в метаспейсе? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 01:50 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинandreykaTкакие тонкости. т.е. где есть Е там плюс один дает ничего а где нет там оно оборачивается. какие оригиналы те кто делал жвм. математика - бессердечная ты с**а. Бесконечность+1 = Бесконечность. А можно ещё сравнивать бесконечности. И окажется что одни из них больше других. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 10:01 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин2. Как бе похоже на декартово произведение Нет, не похоже. Если принять, что речь шла не об ORM-сущностях, а о комбинациях данных, то декартово произведение для 1 магазина (S) и 3 продуктов (a,b,c) даст 1*3=3, в то время как комбинаций там больше — Sa, Sb, Sc, Sab, Sac, Sbc, Sabc. Т.е. сумма сочетаний из n по k=1…n, что равно N=2**n - 1. Это для одного магазина. Конкретный вариант для каждого магазина можно воспринимать как число в N-ричной системе счисления, тогда количество комбинаций «много ко многим» будет равно N**число_магазинов Итого для n товаров и m магазинов получаем (2**n - 1)**m. Т.е. овердофига, а вовсе не декартово произведение. Если учитывать вариант «магазин без товаров», то -1 из скобочек убираем. ОзверинЭто отработает для данной постановки, но лучше, конечно, добавить и фамилию в группировку, а то как-то совсем криво: Код: sql 1. 2.
«Это отработает для данной постановки» — факт, отработает. А вот если дубликатов будет больше одного, то уже нехорошо получится. Код: sql 1. 2. 3. 4. 5. 6. 7.
Корректную обработку null оставим топикстартеру как упражнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 18:38 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vsl, 1. может быть с набором данных это и имелось ввиду. Из постановки вообще мало что понятно. 2. Запрос составлен корректно, сколько бы дубликатов там не было. Вы как-то излишне усложнили довольно простой запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 18:54 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vsl, насчет комбинаторики, я как бе не очень помню, но есть подозрение, что тут присутствует количество сочетаний без повторений, а это - n1(для варианта, когда n=m). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 19:10 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинvsl, насчет комбинаторики, я как бе не очень помню, но есть подозрение, что тут присутствует количество сочетаний без повторений, а это - n1(для варианта, когда n=m). n! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 19:10 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинОзверинvsl, насчет комбинаторики, я как бе не очень помню, но есть подозрение, что тут присутствует количество сочетаний без повторений, а это - n1(для варианта, когда n=m). n! а ну нет. Комбинаторика - ваще не мое. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 19:21 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин2. Запрос составлен корректно, сколько бы дубликатов там не было. Вы как-то излишне усложнили довольно простой запрос. Код: plaintext 1. 2. 3. 4. 5.
Запрос вида Код: sql 1.
просто по определению удалит только одну строчку для каждой группы дубликатов. В моём примере будет удалена строка с id=4, и запрос придётся прогонять повторно, чтобы удалить ещё и строку с id=3. Поэтому нужно выбирать для удаления все строки, относящиеся к дубликатам, кроме какой-то одной. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 19:21 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинОзверинvsl, насчет комбинаторики, я как бе не очень помню, но есть подозрение, что тут присутствует количество сочетаний без повторений, а это - n1(для варианта, когда n=m). n! Нет, n! - это перестановки, а не сочетания. Но можно даже без комбинаторики. Есть n товаров, каждый из них либо есть в магазине, либо нет => получаем двоичное число разрядностью n, что даёт 2**n значений. Минус 1, если исключать вариант «магазин без товаров». ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 19:24 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vslОзверин2. Запрос составлен корректно, сколько бы дубликатов там не было. Вы как-то излишне усложнили довольно простой запрос. Код: plaintext 1. 2. 3. 4. 5.
Запрос вида Код: sql 1.
просто по определению удалит только одну строчку для каждой группы дубликатов. В моём примере будет удалена строка с id=4, и запрос придётся прогонять повторно, чтобы удалить ещё и строку с id=3. Поэтому нужно выбирать для удаления все строки, относящиеся к дубликатам, кроме какой-то одной. кстати, да. Для таблиц с дубликатом записей более 2х - проблема ;( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 19:37 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Добралсо до дома, написал более читаемый запрос: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 21:58 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
авторИтого для n товаров и m магазинов получаем (2**n - 1)**m. Т.е. овердофига, а вовсе не декартово произведение. Если учитывать вариант «магазин без товаров», то -1 из скобочек убираем. Я не въезжаю двойка откуда взялась? Поясните пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 22:02 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannавторИтого для n товаров и m магазинов получаем (2**n - 1)**m. Т.е. овердофига, а вовсе не декартово произведение. Если учитывать вариант «магазин без товаров», то -1 из скобочек убираем. Я не въезжаю двойка откуда взялась? Поясните пожалуйста. Писал дальше. vsl Есть n товаров, каждый из них либо есть в магазине, либо нет => получаем двоичное число разрядностью n, что даёт 2**n значений. Минус 1, если исключать вариант «магазин без товаров». ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 00:02 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинДобралсо до дома, написал более читаемый запрос: «Я печатаю со скоростью 800 знаков в минуту... но такая фигня получается...» Озверин Код: sql 1. 2. 3. 4.
select id ... where id in (select min(id) ...) - внешний select бесполезен HAVING count(id)>1 OR count(id)=1 - не хватает только условия на зависание монетки в воздухе Если вам так не нравится join, то можно и без него (по крайней мере, в тексте): Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 00:10 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Примерно так Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 01:50 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vslОзверинДобралсо до дома, написал более читаемый запрос: «Я печатаю со скоростью 800 знаков в минуту... но такая фигня получается...» Озверин Код: sql 1. 2. 3. 4.
select id ... where id in (select min(id) ...) - внешний select бесполезен HAVING count(id)>1 OR count(id)=1 - не хватает только условия на зависание монетки в воздухе Если вам так не нравится join, то можно и без него (по крайней мере, в тексте): Код: sql 1. 2. 3. 4. 5.
странные у вас комментарии, просто вместо SELECT использовать DELETE - очевидно же. Мне не нравятся join`ы по текстовым полям, да еще и по нескольким. Имею право, почему нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 08:23 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vsl, а насчет minus - ну это специфичная инструкция не из стандарта SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 08:24 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин, Пожалуйста, посмотрите на запрос на удаление дубликатов в самом первом посте темы. Он правильный. Зачем уже четвёртую страницу вы его неправильно переписываете? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 08:39 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
niteshadeОн правильный.Нет, там еще фамилия же. Вообщем в лоб (без всяких group by, аналитических функций и пр): Код: sql 1. 2. 3. 4. 5. 6. 7.
PS. кто ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 09:09 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
niteshadeОзверин, Пожалуйста, посмотрите на запрос на удаление дубликатов в самом первом посте темы. Он правильный. Зачем уже четвёртую страницу вы его неправильно переписываете? не, он неправильный. Можно по шагам разобрать: Код: sql 1.
выбрать записи с максимальным id, если эти записи имеют более 1го дупликата по полю name Код: sql 1. 2.
удалить все остальные записи. То есть те записи, которые НЕ дублируются, будут удалены, останутся только дубликаты с максимальным айди - все наоборот же. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 09:15 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинvsl, а насчет minus - ну это специфичная инструкция не из стандарта SQL. Нет minus - будет except или ещё что-нибудь. Не будет ничего - значит, не повезло, возвращаемся к join'ам. Вариант с exists, который предлагался ниже, тоже не из стандарта - насколько я помню, в стандарте (по крайней мере, в 92) нельзя назначать alias таблицам у delete и update. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 09:43 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vslОзверинvsl, а насчет minus - ну это специфичная инструкция не из стандарта SQL. Нет minus - будет except или ещё что-нибудь. Не будет ничего - значит, не повезло, возвращаемся к join'ам. Вариант с exists, который предлагался ниже, тоже не из стандарта - насколько я помню, в стандарте (по крайней мере, в 92) нельзя назначать alias таблицам у delete и update. возвращайтесь к join`ам, кто ж против. Но есть варианты и без них обойтись. стандарт ныне 2008 года, но, думаю, что в 92 все это было, правда, я не понимаю, к чему вы это говорите. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 09:52 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинvslselect id ... where id in (select min(id) ...) - внешний select бесполезен HAVING count(id)>1 OR count(id)=1 - не хватает только условия на зависание монетки в воздухе странные у вас комментарии, просто вместо SELECT использовать DELETE - очевидно же. Мне не нравятся join`ы по текстовым полям, да еще и по нескольким. Имею право, почему нет? Какое решение - такие и комментарии. В третий (или в какой, в четвёртый?) раз наступить на те же грабли, удаляя по одной строке из группы - это пустяк, главное ведь читаемость. Ох, погодите-ка, там же ещё было добавлено крайне полезное условие «A ИЛИ НЕ A». Читаемость на высоте, да. Что касается join'ов по текстовым полям - ну так модель данных такая. Если бы дубликаты определялись числовыми полями - были бы join'ы по числам :) Ладно, вот вам другое решение без join'ов: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 09:59 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vsl, так мой последний запрос - некорректен? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 10:05 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vsl Код: sql 1. 2. 3. 4. 5. 6.
максимально понятный запрос ;))))) ладно, хватит меня веселить, примените свои знания и злобу лучше к своей работе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 10:07 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинvsl, так мой последний запрос - некорректен? Конечно. Возможно, вы хотели написать там NOT IN, но не написали. Код: sql 1.
Вот так было бы нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 10:15 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vslОзверинvsl, так мой последний запрос - некорректен? Конечно. Возможно, вы хотели написать там NOT IN, но не написали. Код: sql 1.
Вот так было бы нормально. Я написал выбору "правильных" кодов, если вы не обратили внимание. Переделать на DELETE - как бе вопрос не сложный ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 10:16 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
vsl, ну и то, что вы написали - неправильно ;( ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 10:17 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинvsl, ну и то, что вы написали - неправильно ;( ну по крайней мере не то, что писал я. Хотя, можно и так, видимо ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 10:18 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей ПанфиловniteshadeОн правильный.Нет, там еще фамилия же. Вообщем в лоб (без всяких group by, аналитических функций и пр): Я вот уверен, что на собеседовании как раз хотят проверить знает ли претендент как раз эти самый аналитические. И другие решения в зачет просто не пойдут ибо "не знает". Также как в первом вопросе - знает ли про потерю точности при сложении в "плавающей арифметике". Хотя сформулирована 1 задача в каком-то олимпиадном стиле. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 10:44 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ПылинкаЯ вот уверен, что на собеседовании как раз хотят проверить знает ли претендент как раз эти самый аналитические.А какой смысл проверять знает кандидат аналитические функции (или хотябы о их существовании) или нет? На их изучение нужно от силы потратить неделю, так что их знание или незнание никак не добавляет и не умаляет ценности кандидата, а вот внимательность - это офигеть какой важный навык, который из за год не получить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 11:03 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей ПанфиловА какой смысл проверять знает кандидат аналитические функции (или хотябы о их существовании) или нет? На их изучение нужно от силы потратить неделю, так что их знание или незнание никак не добавляет и не умаляет ценности кандидата, а вот внимательность - это офигеть какой важный навык, который из за год не получить. А зачем тогда вообще проверять знание SQL? Его аналогично можно "изучить". Аналогично можно "за неделю изучить" множество разных вещей. Про смысл нужно спрашивать у тех кто задания задает, я лишь пытаюсь смоделировать их цели, понять какие они критерии используют при тестировании, для конкретной узкой задачи - успешно пройти их тест (выдать им ожидаемый ответ). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 11:40 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ПылинкаА зачем тогда вообще проверять знание SQL? Его аналогично можно "изучить". Аналогично можно "за неделю изучить" множество разных вещей.Как это для чего? чтобы начать общаться, например, в этом топике никто так и не смог привести правильный ответ: все приведенные запросы могут как удалить "не дубликаты", так и не удалить дубликаты, просто потому, что в базу доступ обычно конкурентный. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 12:26 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Смотрите. Само по себе знание SQL назубок никому не нужно. Пускай этим бравируют ребята в топика Oracle по пятницам. Мне кажется на собесе важно увидеть как человек рассуждает когда он видит проблему. Какие он видит пути решения. По сути даже если не знает как группировать - пускай нарисует цикл или алгоритм на императивном языке. Если нарисует - значит 99% понимает. Это важно. А зубрёжка SQL - это дело практики. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 12:39 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей ПанфиловПылинкаА зачем тогда вообще проверять знание SQL? Его аналогично можно "изучить". Аналогично можно "за неделю изучить" множество разных вещей.Как это для чего? чтобы начать общаться, например, в этом топике никто так и не смог привести правильный ответ: все приведенные запросы могут как удалить "не дубликаты", так и не удалить дубликаты, просто потому, что в базу доступ обычно конкурентный. а какой правильный запрос может гарантированно удалить все дубликаты, которые появятся после? Я чего то не понял. Если вы про уровень изоляции транзакции типа READ COMMITED, то это режим по умолчанию для баз, а AutoCommit нынче стоит по умочланию в большинстве реализаций jdbc драйверов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 13:02 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверина какой правильный запрос может гарантированно удалить все дубликаты, которые появятся после? Я чего то не понял.Ну а "после" тут причем? вот вы в delete завязались на то, что удаляете все что не min/max, какие гарантии что в соседней сессии кто-то этот самый min/max не удалит? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 13:12 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей ПанфиловОзверина какой правильный запрос может гарантированно удалить все дубликаты, которые появятся после? Я чего то не понял.Ну а "после" тут причем? вот вы в delete завязались на то, что удаляете все что не min/max, какие гарантии что в соседней сессии кто-то этот самый min/max не удалит? там, где having count(id)>1 - таким. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 13:14 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинтам, где having count(id)>1 - таким.это как? вот вы запустили свой убер-delete, в соседней сессии ваш min/max удалили, ваша транзакция этот min/max все еще видит, что получаем на выходе? удаленный "недубликат". ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 13:34 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей ПанфиловОзверинтам, где having count(id)>1 - таким.это как? вот вы запустили свой убер-delete, в соседней сессии ваш min/max удалили, ваша транзакция этот min/max все еще видит, что получаем на выходе? удаленный "недубликат". похожее поведение будет и без аналитических функций, если кто-то не удалит, а вставит данные. А если кто то параллельно удалить ваши данные, а кто-то еще параллельно вставит их - так поведение и вовсе будет полностью аналогичным. Тут можно придумать что угодно, но это не решается на уровне запроса - это решается на уровне логики приложения или конкретной СУБД. В общем случае - это решается блокировкой таблицы, но это также не относится к запросу, а только к реализации или логики приложению. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 14:10 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал: Что не так с методом? и почему. public boolean equalsMethod(String a){ return a.equals("String"); } ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 15:08 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Ilya007, Потенциальный NPE. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 15:19 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
это проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 15:22 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTэто проблема? Это не проблема. Это просто code review point. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 15:31 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Ilya007Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал: Что не так с методом? и почему. public boolean equalsMethod(String a){ return a.equals("String"); } Это что еще за ахтунг!!? ))) ну фиг с ним нуллПоинтерЭксепшеном) ревертнём икьюалс и избавимся от него. Но что этот метод вообще за ерунду делает?) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 16:47 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Да. Второй поинт это Naming convention. Название метода должно говорить о сути. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 17:07 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
да, надо его назвать иквалз и заоверрайдить ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 17:33 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
NixicIlya007Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал: Что не так с методом? и почему. public boolean equalsMethod(String a){ return a.equals("String"); } Это что еще за ахтунг!!? ))) ну фиг с ним нуллПоинтерЭксепшеном) ревертнём икьюалс и избавимся от него. Но что этот метод вообще за ерунду делает?) нормально всё. там чуть выше вон даблы на переполнение проверяют сравниванием дабл==дабл+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 17:34 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
maytonIlya007, Потенциальный NPE. Это верный ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 17:40 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Ilya007, юзай опшн ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 17:42 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Ilya007Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал: Что не так с методом? и почему. public boolean equalsMethod(String a){ return a.equals("String"); } Правильный ответ - этот метод нах не нужен ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 17:45 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Ilya007Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал: Что не так с методом? и почему. public boolean equalsMethod(String a){ return a.equals("String"); } А в чем прикол ? Проверки на null нету ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 18:23 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannIlya007Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал: Что не так с методом? и почему. public boolean equalsMethod(String a){ return a.equals("String"); } А в чем прикол ? Проверки на null нету ? Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 18:28 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Ilya007Dr.Hofmannпропущено... А в чем прикол ? Проверки на null нету ? Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);. Это из-за типа хранения стринг пула в случае "String", где храняться строки а не объекты поэтому NPE не выбрасывается? Так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 18:52 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannIlya007пропущено... Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);. Это из-за типа хранения стринг пула в случае "String", где храняться строки а не объекты поэтому NPE не выбрасывается? Так ? Это из за того что любой вызов метода объекта предполагает что объект не пуст. И этой проблеме - более полу-века лет. О ней писал Тони Хоар в шестидесятых. Проблему обозвали ошибкой ценой в миллиард. И спустя пол-века программисты продолжают писать код где эта ошибка воспроизводится. Или по крайней мере не доказывается ее невозможность. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 19:58 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Ilya007Dr.Hofmannпропущено... А в чем прикол ? Проверки на null нету ? Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);. не согласен. считаю что там где ты не ожидаешь никогда увидать нпе ты не должен его хендлить. если придет нпе и ты сделаешь так как нужно делать всегда то ты вместо нпе вообще получишь фолс который пробросится дальше и алга лови жуков в самых необычных местах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 20:11 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Dr.HofmannIlya007пропущено... Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);. Это из-за типа хранения стринг пула в случае "String", где храняться строки а не объекты поэтому NPE не выбрасывается? Так ? что такое тип хранения стрингпула? что за строки а не объекты? объекты это тоже строки. стрингпул это тоже объект. можно ли сравнивать стрингпул со стрингой -> нет. Уважаемый Майтон уже сказал почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 20:13 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
andreykaTIlya007пропущено... Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);. не согласен. считаю что там где ты не ожидаешь никогда увидать нпе ты не должен его хендлить. если придет нпе и ты сделаешь так как нужно делать всегда то ты вместо нпе вообще получишь фолс который пробросится дальше и алга лови жуков в самых необычных местах. Это спор о цене последствий. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2019, 20:20 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
ОзверинniteshadeОзверин, Пожалуйста, посмотрите на запрос на удаление дубликатов в самом первом посте темы. Он правильный. Зачем уже четвёртую страницу вы его неправильно переписываете? не, он неправильный. Можно по шагам разобрать: Код: sql 1.
выбрать записи с максимальным id, если эти записи имеют более 1го дупликата по полю name Код: sql 1. 2.
удалить все остальные записи. То есть те записи, которые НЕ дублируются, будут удалены, останутся только дубликаты с максимальным айди - все наоборот же. да, был невнимателен правильный: Код: sql 1. 2.
определение оригинала, как записи с минимальным id - это ваше домысливание тем не менее, в такой постановке заменяем max на min ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 06:00 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей ПанфиловniteshadeОн правильный.Нет, там еще фамилия же. Вообщем в лоб (без всяких group by, аналитических функций и пр): Код: sql 1. 2. 3. 4. 5. 6. 7.
PS. кто есть типовой запрос: Код: sql 1. 2.
он просто и эффективен зачем переписывать его в более сложной и менее эффективной форме? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 06:05 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
niteshadeесть типовой запрос: Код: sql 1. 2.
он просто и эффективен зачем переписывать его в более сложной и менее эффективной форме? Ну для начала, попробуйте найти ошибку в "типовом" запросе - она там есть и довольно существенная. Во вторых с "эффективностью" там так себе: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 07:00 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
niteshade, он правильный только для данного набора данных, вроде уже обсудили. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 08:24 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей Панфилов, а почему во втором случае 0 physical reads? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 09:33 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
в моем случае разница не велика в пользу агрегирования(быстрее, чем джоины) на таблице в 15000 записей и при условии, что ни одна из них не будет удалена. В случае, если перейти на выборку по одному текстовому полю, а не по двум - результаты остаются очень похожими. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 09:58 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 09:59 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин, и вариант со сравнением по 2м полям: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 10:00 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин, и наконец, корректный вариант дает очень схожу картину мира: EXPLAIN ANALYZE DELETE FROM temp.names t1 WHERE t1.id NOT IN(SELECT min(t2.id) FROM temp.names t2 GROUP BY t2.f, t2.s HAVING count(t2.id)>1 OR count(t2.id)=1); "Delete on names t1 (cost=742.56..1127.83 rows=8331 width=6) (actual time=35.358..35.358 rows=0 loops=1)" " -> Seq Scan on names t1 (cost=742.56..1127.83 rows=8331 width=6) (actual time=35.357..35.357 rows=0 loops=1)" " Filter: (NOT (hashed SubPlan 1))" " Rows Removed by Filter: 15729" " SubPlan 1" " -> HashAggregate (cost=551.89..715.32 rows=10895 width=40) (actual time=23.995..28.049 rows=15729 loops=1)" " Filter: ((count(t2.id) > 1) OR (count(t2.id) = 1))" " -> Seq Scan on names t2 (cost=0.00..343.62 rows=16662 width=40) (actual time=0.007..6.850 rows=15729 loops=1)" "Total runtime: 35.475 ms" Все это связано с тем, что после 1-2х запросов большинство баз создает свой какой-нить хэш-агрегат и уже работает с ним. Потому, чтобы показать РЕАЛЬНУЮ разницу между по сути очень похожими запросами, надо поработать с базой, поудалять оттуда данные, повставлять новые, повыполнять запросы на удаление, а потом уже анализировать итоги. Как и в java - надо бе разогреться. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 10:09 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверина почему во втором случае 0 physical reads?Потому что табличка с индексом в память легла - оракл может себе позволить, а вопрос скорее всего в том, почему в первом случае (group by) не 0, ответ тут простой: оно сортировку решило не в памяти делать, а на диске (1 sorts (disk)). В случае ваших 15 тыс. смотреть даже нечего, сделайте несколько миллионов и индекс нормальный, типа (дубликат, id). Ну и еще доводы в пользу exists: в случае group by возникают краевые эффекты на пустых полях: в данном случае "получится" что null=null, т.е. группируем налы, а удаляем уже по id из-за NOT IN возникают краевые эффекты на пустых id, т.е. если в таблице есть пустой id, то запрос вообще ничего не удалит в случае exists я могу базу бомбить несколькими запросами одновременно, просто добавив во внешнее условие name like 'A%', name like 'B%' и пр. В случае group by условие нужно добавлять уже в два места чтобы они коррелировали ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 10:16 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей Панфилов, так если сделать 15 млн, то и не ляжет вся она в память, а только - частично. О том и разговор, что первый запрос при всей неэффективности отработал всего на 1 секунду медленее, но НА ДИСКЕ. Короче, на неразогретом оракле. В моем случае он отработал быстрее в обоих случаях. 1. это специфичное для оракла? В пг группировка по null - всегда отдельная группа и никакого сравнения просто нет. 2. пустой primary key? это уже эффект какой-то подозрительный. 3.при like уже под большим вопросом вообще использование индексов, так что делать то вы можете что угодно, но как это повлияет на план запроса - вы не знаете. Правда я вообще не понял, про что этот пункт. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 11:10 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин, единственное, что, для PG - not in менее эффективен в плане работы, чем exists. Потому можно на него перейти, проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 11:13 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей Панфиловniteshadeесть типовой запрос: Код: sql 1. 2.
он просто и эффективен зачем переписывать его в более сложной и менее эффективной форме? Ну для начала, попробуйте найти ошибку в "типовом" запросе - она там есть и довольно существенная. Во вторых с "эффективностью" там так себе: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
индексы откуда появились? опять домысливания? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 11:53 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Для Oracle всё ещё проще: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 11:59 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озвериндля PG для PG кстати работает еще такой запрос (не знаю, пробегал ли - не читал топик целиком) Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 11:59 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
niteshadeиндексы откуда появились? опять домысливания? не откуда, а какие - полнотекстовые какие-нибудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 11:59 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверин, это уже какая-то яростная дичь) в первом сообщении топика есть условия исходя из них необходимо решить задачу может, хватит уже натягивать сову на глобус?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:12 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
chpashaОзвериндля PG для PG кстати работает еще такой запрос (не знаю, пробегал ли - не читал топик целиком) Код: sql 1. 2. 3. 4.
я как-то с сомнением, если развернуть запрос похоже на : Код: sql 1. 2.
то есть похоже, что он сделает ровно обратное. Я не прав? p.s. в данном случае USING -специфичен для базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:17 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
niteshadeОзверин, это уже какая-то яростная дичь) в первом сообщении топика есть условия исходя из них необходимо решить задачу может, хватит уже натягивать сову на глобус?)) вопрос пошел немного дальше. Правильные запросы уже были. Что вам не нравится? Не хотите - не обсуждайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:18 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинchpashaпропущено... для PG кстати работает еще такой запрос (не знаю, пробегал ли - не читал топик целиком) Код: sql 1. 2. 3. 4.
я как-то с сомнением, если развернуть запрос похоже на : Код: sql 1. 2.
то есть похоже, что он сделает ровно обратное. Я не прав? p.s. в данном случае USING -специфичен для базы. а не, вроде все ок. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:22 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Execution plan будем смотреть? Потому-что для некоторых dbms существует т.н. аналитические функции которые тоже позволяют решать данную задачу. Вообще - удаление дубликатов - это страшный боян и в профильных топиках уже на это не отвечают а просто кидают тебя в Stackoverflow или в какой-то ФАК. И зачем мы это мурыжым? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:57 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Я ждал выступления начальника транспортного цеха и вади... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 15:14 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Озверинтак если сделать 15 млн, то и не ляжет вся она в память, а только - частично.Ну а какая разница-то? С group by появляется дополнительная операция, как ни крути, она чего-то да и стоит, а изначальный пойнт был в том, что exists - ну это вообще супер сложно и неэффективно, пока автору сего утверждения правоту доказать не удалось. Озверин1. это специфичное для оракла? В пг группировка по null - всегда отдельная группа и никакого сравнения просто нетну вот есть таблица idname1null2null в результате group by с max(id) она превратится в: idname2null в итоге delete удалит первую запись, вопрос: это ожидаемое поведение с т.з. постановки задачи или нет? Т.е. когда мы говорим про дубликаты, null = null или нет (когда мы в контексте СУБД, то там все null разные)? Озверин2. пустой primary key? это уже эффект какой-то подозрительный.ну это вы по названию колонки домыслили уже, а без DDL таблицы что там в действительности - неизвестно. Озверин3.при like уже под большим вопросом вообще использование индексов, так что делать то вы можете что угодно, но как это повлияет на план запроса - вы не знаете. Правда я вообще не понял, про что этот пункт.ну вот у вас есть PostgreSQL, который не умеет parallel а в базе триллион записей, вопрос: как ускорить удаление? В целом же, любая логика, основанная на отрицании - она априори неправильная, потому что заставляет думать в четыре раза больше, так что если можно писать прямо, то нужно так и делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 16:09 |
|
Вопросы на собеседовании
|
|||
---|---|---|---|
#18+
Андрей Панфилов, 0. Изначальный поинт был про сложно воспринимаемый (человеком для быстрого осмысления) запрос, где много джоинов по текстовым полям. Не знаю, причем тут exist. 1. это странно считать, что за счет доп операции алгоритм будет менее эффективным. Если бы запросы были абсолютно идентичными и в один из них мы вставили доп операцию - это высказывание хотя бы логику имело. 2. Я не знаю, являются ли для постановщика задачи null равными между собой или нет. Спросите у постановщика. 3. Если домысливать нельзя, то изначально дискуссия не имеет смысла и подходит любой запрос для 5 строк. Если бы нельзя было "домысливать", то зачем вы сделали индексы для таблицы, а потом по ним план запроса построили? 4. Если у меня будет триллион записей и этот запрос не будет справляться, я буду смотреть какой запрос лучше справиться с триллионом записей, как я буду смотреть, какой запрос лучше справиться с миллионом записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 17:33 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2121531]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
165ms |
get tp. blocked users: |
1ms |
others: | 331ms |
total: | 594ms |
0 / 0 |