@gogolang

Страница 82 из 1630
Daniel
22.12.2016
10:34:05
70% кандидатов отсеиваются

Google
Andrey
22.12.2016
10:35:37
кстати в такой формулировки у меня проблемы с русским языком выявились :) я не сразу сообразил что обращение это реверс :)

Evgeny
22.12.2016
10:35:44
что есть обращение?

Daniel
22.12.2016
10:35:45
Почему не реализация бинарного дерева?
обращение односвязного списка - это 10-20 строк кода. быстро спросить, быстро писать, быстро проверять. и там есть двойное дно - можно доп. вопрос задать

что есть обращение?
вот таким путем :)

Evgeny
22.12.2016
10:36:13
вот таким путем :)
походу я провалил тест )

Daniel
22.12.2016
10:36:25
не до конца

но в сторону провала, да

Andrey
22.12.2016
10:36:50
а до конца это еще надо спросить что такое односвязный список? )

Daniel
22.12.2016
10:36:57
ага

Evgeny
22.12.2016
10:37:08
не до конца
ок, обращение - что-то циклическое?

Daniel
22.12.2016
10:37:24
в форме "а покажите мне реальную задачу, в которой используется односвязный список"

ок, обращение - что-то циклическое?
обращение матрицы - это что такое?

Google
Daniil
22.12.2016
10:39:23
А ТЕПЕРЬ ВОПРОС. Какую литературу посоветуете, чтобы были и алгоритмы рассмотрены и реализации? Пока смотрю на "Алгоритмы разработка и применение" Клейнберга.

Мерлин
22.12.2016
10:40:06
О, кстати мне на последнем собеседовании задавали вопрос, как найти обратную матрицу

Evgeny
22.12.2016
10:40:25
обращение матрицы - это что такое?
и тут мои знания меня подвели. Пойду погуглю

Aleksandr
22.12.2016
10:51:12
но в сторону провала, да
а если я по англоязычным учебникам учился?

Daniel
22.12.2016
10:51:15
Aleksandr
22.12.2016
10:51:18
тоже провал да?

Daniel
22.12.2016
10:52:06
тензорное исчисление не имеет отношения к односвязным спискам

Evgeny
22.12.2016
10:52:42
я пошутил, бро, извини
ну я, по крайне мере, понял что есть обращение списка :)

Daniel
22.12.2016
10:53:14
а если я по англоязычным учебникам учился?
then your question will be about reverse linked list

Andrey
22.12.2016
10:53:23
давайте мы это ещё к нам в слак запостим?
Помнится правила говорили что нужны ссылки и больше инфы а не просто собирание базы лидов по го

Aleksandr
22.12.2016
10:55:08
then your question will be about reverse linked list
ну вот совсем другое дело :) а то "обращение"..

Slava
22.12.2016
10:55:16
если подробности будут не в личную - то почему бы и не запостить на всех =)

Daniel
22.12.2016
10:59:40
Aleksandr
22.12.2016
11:00:39
it is an official translate, ващета
да я не спорю, но я не на факультете компьютер сайнс учился, так что совковых учебников не застал. а то, что читал сам, естественно было на ангельском

Daniel
22.12.2016
11:01:19
гугл вполне годную википедию выдает первой же ссылкой на этот запрос

так что - не катет ваша гипотенуза

Aleksandr
22.12.2016
11:02:57
ну так гугл и алгоритм reverse linked list выдаёт в первой ссылке. мы же про гипотетическое собеседование говорим

Google
Anya
22.12.2016
11:13:48
Помнится правила говорили что нужны ссылки и больше инфы а не просто собирание базы лидов по го

Простите великодушно, кину сюда ссылку, как красивое описание будет готово))

Daniil
22.12.2016
12:19:38
Теоретический Вопрос по Mutex. Допустим, у нас есть слайс типов, которе сами по себе структура. MyType и sliceMyType. В этом слайсе мы храним MyType, как они есть. И вдруг я создаю слайс с указателями на этот тип из sliceMyType, называю его slicePointMyTypes, заполняю его указателями. Потом я сделал Mutext на действия с slicePointMyTypes и циклом по указателю поле поле во всех MyType. Вопрос будет ли применён Mutex на оригинальный sliceMyType? Хоть мы его и не используем, но по указателю мы идём к его данным. Не знаю как проверить на практике, что блокируется, а что нет. Нарисовал схемку. (пжлст сильно не бейте)

Daniel
22.12.2016
12:20:47
есть подозрение, что вы не понимаете, как работают мутексы в go

Daniil
22.12.2016
12:21:09
Верное :(

Zver
22.12.2016
12:33:30
Верное :(
Мютекс используется, для выполнения каких-то действий эксклюзивно. Если вы знаете, что к каким-то данным будет обращение из нескольких потоков, то все действия с этими данными оборачиваете в мютексы и все. Внутри одного потока мютексы не нужны.

Daniel
22.12.2016
12:34:12
Верное :(
действие мутекса распространяется только на сам мутекс

то, что горутина блокируется на попытке взять занятый мутекс - это побочный эффект

полезный побочный эффект

соответственно, если ваш код берет (лочит) мутекс - он этот эффект может использовать

не берет - не может

Daniel
22.12.2016
12:36:52
в отличие от явы, где мутекс распростряняется на synced блок кода, в го мутекс надо явным образом отпускать

если вы забудете его отпустить - его никто больше не возьмет

кстати, @kirilldanshin , это было бы полезно втащить в ваш goodlng

как и реентерабельные мутексы

Daniil
22.12.2016
12:39:19
А теперь вот так вот: Две функции, которые меняют переменную. Они могут вызваться одновременно (ну или во время исполнения одной из них) из параллельных горутин. Обе обёрнуты в mutex ЧТо произойдёт? Одна гоурутина будет ждать пока выполнит действия первая над этой переменной? Или т.к. это разные функции, то они выполнятся одновременно? Что синхронизирует mutex область памяти или действия одной функции?

Daniel
22.12.2016
12:40:02
первая горутина вызывает Lock(), и он возвращается сразу

вторая горутина вызывает Lock() - и он не возвращается, пока первая не вызовет Unlock()

как только первая вызвала Unlock() - управление из Lock() второй горутины возвращается в нее

Google
Daniel
22.12.2016
12:41:09
так понятно?

никаких других связей ни с переменными, ни с кодом у мутекса нет

Daniil
22.12.2016
12:42:11
Всё теперь понял. Я просто думал они ждут не освободили ли переменную. Т.е. получается не важно что заблокировано, горутины будут просто ждать, пок кто-то не отпустит Mutex?

Daniel
22.12.2016
12:42:22
именно

и не кто-то, а тот, кто его взял

впрочем - я не проверял!

Daniil
22.12.2016
12:42:54
Эх.. в мечтах было красивее.

Daniel
22.12.2016
12:43:11
ну - в go мутексы так себе

Admin
ERROR: S client not available

Daniel
22.12.2016
12:43:34
поэтому большую часть того, что мы привыкли делать на мутексах, надо делать на каналах

например, две функции

Slava
22.12.2016
12:43:50
Daniil
22.12.2016
12:43:53
Т.е. много Mutex очень вредно, как тогда ещё можно синхронизировать работу над одной областью пмяти?

Daniel
22.12.2016
12:43:59
еще канал и еще одна горутина

две функции пишут в канал, а третья из канала читает и монопольно переменную меняет

Daniil
22.12.2016
12:44:44
А кналы не на Mutex реализованы?

Zver
22.12.2016
12:44:46
ну - в go мутексы так себе
Они там вполне стандартные.

Daniel
22.12.2016
12:45:01
А кналы не на Mutex реализованы?
в каждом по два мутекса, насколько я помню

поэтому канало сыщественно медленнее мутексов

Slava
22.12.2016
12:45:16
на mutex но там есть хитрости

Google
Мерлин
22.12.2016
12:45:24
Т.е. много Mutex очень вредно, как тогда ещё можно синхронизировать работу над одной областью пмяти?
Если у вас целые типы uint64, то можно использовать атомарные операции, без блокировок

Daniel
22.12.2016
12:45:27
но ctst строгие отцы говорят нам игнорировать это

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

Daniil
22.12.2016
12:46:35
Не, у меня задумка над паралелльной работй с одним слайсом, кто-то может читать, 10 других гоурутин заходят написать или убрать в него что-то.

Мерлин
22.12.2016
12:46:43
Мне with в go не хватает :с

Slava
22.12.2016
12:47:30
@onokonem ты можешь сам такую функцию написать =)

Daniel
22.12.2016
12:47:38
какую?

Slava
22.12.2016
12:48:24
какую?
которая будет имитировать блок с мьютексом

Daniil
22.12.2016
12:49:29
тогда изучите RWMutex
Да, это я уже делал, просто одним придётся ждать, пока другие пишут, вот я и хотел поделить на разные слайсы (когда был неверно одурманен мыслями про mutex)

Kirill
22.12.2016
12:51:54
"напишите обращение односвязного списка"
чуть не испортил тебе вопрос для этого чята уточнением а-ля *кусок кода* ты это имел ввиду?. потом задумался. тут же ничего другого не придумаешь. слаб я в русских терминах.

Daniel
22.12.2016
12:53:06
ааааааа!

взять лок может один, а отпустить другой

аааа!!!111

https://play.golang.org/p/oVZZsCBmQp

даже вот так: https://play.golang.org/p/cVnVhL7gql

понятно, почему мутексы нереентерабельные

Kirill
22.12.2016
12:56:19
это одна из причин, по которой я не люблю mutex'ы

Страница 82 из 1630