Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6   вперед  Ctrl      все
 Re: Вопросы на собеседовании  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3334
Пылинка
А зачем тогда вообще проверять знание SQL? Его аналогично можно "изучить". Аналогично можно "за неделю изучить" множество разных вещей.
Как это для чего? чтобы начать общаться, например, в этом топике никто так и не смог привести правильный ответ: все приведенные запросы могут как удалить "не дубликаты", так и не удалить дубликаты, просто потому, что в базу доступ обычно конкурентный.
15 янв 19, 12:26    [21785540]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
mayton
Member

Откуда: loopback
Сообщений: 42452
Смотрите. Само по себе знание SQL назубок никому не нужно. Пускай этим бравируют
ребята в топика Oracle по пятницам.

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

По сути даже если не знает как группировать - пускай нарисует цикл или алгоритм на императивном
языке. Если нарисует - значит 99% понимает. Это важно.

А зубрёжка SQL - это дело практики.
15 янв 19, 12:39    [21785550]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Пылинка
А зачем тогда вообще проверять знание SQL? Его аналогично можно "изучить". Аналогично можно "за неделю изучить" множество разных вещей.
Как это для чего? чтобы начать общаться, например, в этом топике никто так и не смог привести правильный ответ: все приведенные запросы могут как удалить "не дубликаты", так и не удалить дубликаты, просто потому, что в базу доступ обычно конкурентный.


а какой правильный запрос может гарантированно удалить все дубликаты, которые появятся после? Я чего то не понял.
Если вы про уровень изоляции транзакции типа READ COMMITED, то это режим по умолчанию для баз, а AutoCommit нынче стоит по умочланию в большинстве реализаций jdbc драйверов.
15 янв 19, 13:02    [21785574]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3334
Озверин
а какой правильный запрос может гарантированно удалить все дубликаты, которые появятся после? Я чего то не понял.
Ну а "после" тут причем? вот вы в delete завязались на то, что удаляете все что не min/max, какие гарантии что в соседней сессии кто-то этот самый min/max не удалит?
15 янв 19, 13:12    [21785589]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
а какой правильный запрос может гарантированно удалить все дубликаты, которые появятся после? Я чего то не понял.
Ну а "после" тут причем? вот вы в delete завязались на то, что удаляете все что не min/max, какие гарантии что в соседней сессии кто-то этот самый min/max не удалит?


там, где having count(id)>1 - таким.
15 янв 19, 13:14    [21785594]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3334
Озверин
там, где having count(id)>1 - таким.
это как? вот вы запустили свой убер-delete, в соседней сессии ваш min/max удалили, ваша транзакция этот min/max все еще видит, что получаем на выходе? удаленный "недубликат".
15 янв 19, 13:34    [21785622]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Андрей Панфилов
Озверин
там, где having count(id)>1 - таким.
это как? вот вы запустили свой убер-delete, в соседней сессии ваш min/max удалили, ваша транзакция этот min/max все еще видит, что получаем на выходе? удаленный "недубликат".


похожее поведение будет и без аналитических функций, если кто-то не удалит, а вставит данные. А если кто то параллельно удалить ваши данные, а кто-то еще параллельно вставит их - так поведение и вовсе будет полностью аналогичным. Тут можно придумать что угодно, но это не решается на уровне запроса - это решается на уровне логики приложения или конкретной СУБД.

В общем случае - это решается блокировкой таблицы, но это также не относится к запросу, а только к реализации или логики приложению.
15 янв 19, 14:10    [21785673]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Ilya007
Member

Откуда:
Сообщений: 118
Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал:

Что не так с методом? и почему.

public boolean equalsMethod(String a){

return a.equals("String");
}
15 янв 19, 15:08    [21785779]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
mayton
Member

Откуда: loopback
Сообщений: 42452
Ilya007,

Потенциальный NPE.
15 янв 19, 15:19    [21785792]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
andreykaT
Member

Откуда:
Сообщений: 2421
это проблема?
15 янв 19, 15:22    [21785800]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
mayton
Member

Откуда: loopback
Сообщений: 42452
andreykaT
это проблема?

Это не проблема. Это просто code review point.
15 янв 19, 15:31    [21785819]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Nixic
Member

Откуда: Perm
Сообщений: 1888
Ilya007
Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал:
Что не так с методом? и почему.
public boolean equalsMethod(String a){
return a.equals("String");
}

Это что еще за ахтунг!!? )))
ну фиг с ним нуллПоинтерЭксепшеном) ревертнём икьюалс и избавимся от него.
Но что этот метод вообще за ерунду делает?)
15 янв 19, 16:47    [21785900]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
mayton
Member

Откуда: loopback
Сообщений: 42452
Да. Второй поинт это Naming convention.

Название метода должно говорить о сути.
15 янв 19, 17:07    [21785931]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
andreykaT
Member

Откуда:
Сообщений: 2421
да, надо его назвать иквалз и заоверрайдить
15 янв 19, 17:33    [21785970]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
andreykaT
Member

Откуда:
Сообщений: 2421
Nixic
Ilya007
Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал:
Что не так с методом? и почему.
public boolean equalsMethod(String a){
return a.equals("String");
}

Это что еще за ахтунг!!? )))
ну фиг с ним нуллПоинтерЭксепшеном) ревертнём икьюалс и избавимся от него.
Но что этот метод вообще за ерунду делает?)

нормально всё. там чуть выше вон даблы на переполнение проверяют сравниванием дабл==дабл+1
15 янв 19, 17:34    [21785971]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Ilya007
Member

Откуда:
Сообщений: 118
mayton
Ilya007,

Потенциальный NPE.


Это верный ответ.
15 янв 19, 17:40    [21785984]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
andreykaT
Member

Откуда:
Сообщений: 2421
Ilya007,

юзай опшн
15 янв 19, 17:42    [21785990]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
забыл ник
Member

Откуда:
Сообщений: 3024
Ilya007
Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал:

Что не так с методом? и почему.

public boolean equalsMethod(String a){

return a.equals("String");
}

Правильный ответ - этот метод нах не нужен
15 янв 19, 17:45    [21785995]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Dr.Hofmann
Member

Откуда:
Сообщений: 249
Ilya007
Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал:

Что не так с методом? и почему.

public boolean equalsMethod(String a){

return a.equals("String");
}


А в чем прикол ? Проверки на null нету ?
15 янв 19, 18:23    [21786042]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Ilya007
Member

Откуда:
Сообщений: 118
Dr.Hofmann
Ilya007
Я так думаю лучше вот такой вопрос задать - сразу видно, что человек писал на JAVA, а не книжку прочитал:

Что не так с методом? и почему.

public boolean equalsMethod(String a){

return a.equals("String");
}


А в чем прикол ? Проверки на null нету ?


Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);.
15 янв 19, 18:28    [21786046]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
Dr.Hofmann
Member

Откуда:
Сообщений: 249
Ilya007
Dr.Hofmann
пропущено...


А в чем прикол ? Проверки на null нету ?


Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);.


Это из-за типа хранения стринг пула в случае "String", где храняться строки а не объекты поэтому NPE не выбрасывается? Так ?
15 янв 19, 18:52    [21786064]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
mayton
Member

Откуда: loopback
Сообщений: 42452
Dr.Hofmann
Ilya007
пропущено...


Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);.


Это из-за типа хранения стринг пула в случае "String", где храняться строки а не объекты поэтому NPE не выбрасывается? Так ?

Это из за того что любой вызов метода объекта предполагает что объект не пуст.
И этой проблеме - более полу-века лет. О ней писал Тони Хоар в шестидесятых.
Проблему обозвали ошибкой ценой в миллиард.

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

Или по крайней мере не доказывается ее невозможность.
15 янв 19, 19:58    [21786131]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
andreykaT
Member

Откуда:
Сообщений: 2421
Ilya007
Dr.Hofmann
пропущено...


А в чем прикол ? Проверки на null нету ?


Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);.

не согласен.
считаю что там где ты не ожидаешь никогда увидать нпе ты не должен его хендлить.
если придет нпе и ты сделаешь так как нужно делать всегда то ты вместо нпе вообще получишь фолс который пробросится дальше и алга лови жуков в самых необычных местах.
15 янв 19, 20:11    [21786145]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
andreykaT
Member

Откуда:
Сообщений: 2421
Dr.Hofmann
Ilya007
пропущено...


Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);.


Это из-за типа хранения стринг пула в случае "String", где храняться строки а не объекты поэтому NPE не выбрасывается? Так ?

что такое тип хранения стрингпула? что за строки а не объекты? объекты это тоже строки. стрингпул это тоже объект. можно ли сравнивать стрингпул со стрингой -> нет. Уважаемый Майтон уже сказал почему.
15 янв 19, 20:13    [21786148]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы на собеседовании  [new]
mayton
Member

Откуда: loopback
Сообщений: 42452
andreykaT
Ilya007
пропущено...


Может прийти null и тогда на методе a.equals - сломается (NPE). Нужно писать всегда так "String".equals(a);.

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

Это спор о цене последствий.
15 янв 19, 20:20    [21786153]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6   вперед  Ctrl      все
Все форумы / Java Ответить