powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Впечатления от собеседования (связано с .Net)
25 сообщений из 83, страница 2 из 4
Впечатления от собеседования (связано с .Net)
    #39466959
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Молотком по пальцам таким собеседователям.
Супер_ПавПо поводу второго вопроса. lock забраковали, мол блокирует потоки. Единственное решение задачи - это класс ReaderWriterLockSlim
А если один резво пишет, другие никогда не прочитают.

Вообще каждый случай должен разбираться отдельно, но лучший вариант из коробки
Cat2Если несколько потоков, то надо использовать ConcurrentDictionary
https://msdn.microsoft.com/ru-ru/library/dd287191(v=vs.110).aspx
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39466962
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_Пав,

1. Метод GetValue(), который модифицирует коллекцию -- вот, что должно не нравиться в этом коде. GetOrAddValue() -- куда ни шло. Ну и TryGetValue() внутри, да.
2. Порочный вопрос. Нужно использовать ConcurrentDictionary, а не переизобретать колесо.
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39466970
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_ПавХорош. Вы суммарное время работы со 100к элементов указали, разница в 1.5 секунды не впечатляет.
А если сперва заполнить словари (о чем говорилось на собеседовании, было условие, что 99% записей существуют в словаре), то поиск не отличается.
Внимательнее смотри. Основной цикл
Код: c#
1.
2.
3.
4.
5.
			for(int i = 0; i < test_value.Length; i++) {
				for(int j = i; j < test_value.Length; j += 100) {
					var guid = tdc.GetValue(test_value[j]);
				}
			}


словарь изначально пустой, в процессе работы наполняется 100к элементами, но итераций цикла 50 050к, т.е. в 99.8% случаев записи были найдены.

Разницу надо не в секундах смотреть, а в процентах. Но не забывать погрешность таймера учитывать. Там 1 мс погрешность, поэтому твои замеры с результатом 0-2 мс это погрешность.
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39466971
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучСупер_Пав,

1. Метод GetValue(), который модифицирует коллекцию -- вот, что должно не нравиться в этом коде. GetOrAddValue() -- куда ни шло. Ну и TryGetValue() внутри, да.
2. Порочный вопрос. Нужно использовать ConcurrentDictionary, а не переизобретать колесо.

1. Название метода не важно.
2. Потоки появились во втором вопросе, в первом случает вопрос был больше по поиску.
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39466982
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_Пав1. Название метода не важно.
Не о названии речь
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467200
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1) Что Вам не нравится в приведенном коде:
название метода
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467325
Фотография RocknRolla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВМолотком по пальцам таким собеседователям.
Супер_ПавПо поводу второго вопроса. lock забраковали, мол блокирует потоки. Единственное решение задачи - это класс ReaderWriterLockSlim
А если один резво пишет, другие никогда не прочитают.

Вообще каждый случай должен разбираться отдельно, но лучший вариант из коробки
Cat2Если несколько потоков, то надо использовать ConcurrentDictionary
https://msdn.microsoft.com/ru-ru/library/dd287191(v=vs.110).aspx
+1
ТС не расстраивайтесь, клоунада полнейшая. Очередные математеги, хорошо что про расчет цикломатической сложности неспрашивали.
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467383
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_ПавПо поводу второго вопроса. lock забраковали, мол блокирует потоки. Единственное решение задачи - это класс ReaderWriterLockSlim
Если это единственное решение, то Вы походу нам условия задачи озвучили не полностью. Опустили важный момент :)
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467398
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСупер_ПавПо поводу второго вопроса. lock забраковали, мол блокирует потоки. Единственное решение задачи - это класс ReaderWriterLockSlim
Если это единственное решение, то Вы походу нам условия задачи озвучили не полностью. Опустили важный момент :)
я вообще не понял, вот этой фразы "блокируются потоки". Какие потоки и где блокируется. Типа при RWLS и ConcurentDictionary они не блокируются и все операции атомарны :)
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467407
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesskyANAпропущено...

Если это единственное решение, то Вы походу нам условия задачи озвучили не полностью. Опустили важный момент :)
я вообще не понял, вот этой фразы "блокируются потоки". Какие потоки и где блокируется. Типа при RWLS и ConcurentDictionary они не блокируются и все операции атомарны :)
В документации жеж все расписано...
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467411
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если коротко, то ReaderWriterLockSlim рекомендуется когда до фига чейтателей и один чукча :)
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467418
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_ПавВакансию нашел в разделе Вакансии сего сайта
А дайте тынц..
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467426
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь сравниваются обычный лок, ReadWriteLockSlim, ConcurrentDictionary в двух граничных ситуациях Mostly Misses/Mostly Hits. По результатам получается, что для "Mostly Misses" лучше обычный лок, а для "Mostly Hits" - ConcurrentDictionary.
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467471
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_ПавПо поводу второго вопроса. lock забраковали, мол блокирует потоки. Единственное решение задачи - это класс ReaderWriterLockSlimReaderWriterLockSlim потоки не блокирует?
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467486
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСупер_ПавПо поводу второго вопроса. lock забраковали, мол блокирует потоки. Единственное решение задачи - это класс ReaderWriterLockSlimReaderWriterLockSlim потоки не блокирует?если нет писателей, то не должен, вернее вероятность этого очень близка к нулю

ЕвгенийВ,
на одном проце разницы почти нет, ну а вообще на другом вдруг будет - потому идиологически, конечно, 2-й вариант правильнее

я memorize в питоне вообще через обработку исключений делал и это было быстрее
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467505
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Алексей Кпропущено...
ReaderWriterLockSlim потоки не блокирует? если нет писателей, то не должен, вернее вероятность этого очень близка к нулюЯ в курсе, только в утверждении не было никаких если.
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467540
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кkealon(Ruslan)пропущено...
если нет писателей, то не должен, вернее вероятность этого очень близка к нулюЯ в курсе, только в утверждении не было никаких если.
А разве где-то выше утверждалось, что ReaderWriterLockSlim не блокирует потоки? :)
Не тратьте время на домыслы...
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467573
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСупер_ПавВакансию нашел в разделе Вакансии сего сайта
А дайте тынц..
тынц

З.Ы. по поводу доп условия....ну если только, что 99% ключей, передаваемых в метод, существуют. Больше никаких.
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467601
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все верно что не взяли. Судя по обсуждению, знания у соискателя слабые.

Ну и что, что тестирование содержит провокационный вопрос?
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467621
yabs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_Павпо мне, так дело вкуса. Мне больше первый вариант нравится: проверил, выполнил. Во втором случает лишняя переменная появляется.
так тебе эта переменная все равно нужна
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public Guid GetValue(string key)
        {
            Guid value;
            if (dict.TryGetValue(key, out value))
                return value;

            value = Guid.NewGuid();
            dict.Add(key, value);

            return value;
        }



или, кому религия запрещает больше одного return'а
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        public Guid GetValue(string key)
        {
            Guid value;
            if (dict.TryGetValue(key, out value) == false)
            {
                value = Guid.NewGuid();
                dict.Add(key, value);
            }
            return value;
        }



а вообще, хорошая тема
благодаря твоему собеседованию много для себя узнал
у меня завтра очередное ))
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467628
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yabsСупер_Павпо мне, так дело вкуса. Мне больше первый вариант нравится: проверил, выполнил. Во втором случает лишняя переменная появляется.
так тебе эта переменная все равно нужна
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public Guid GetValue(string key)
        {
            Guid value;
            if (dict.TryGetValue(key, out value))
                return value;

            value = Guid.NewGuid();
            dict.Add(key, value);

            return value;
        }



или, кому религия запрещает больше одного return'а
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        public Guid GetValue(string key)
        {
            Guid value;
            if (dict.TryGetValue(key, out value) == false)
            {
                value = Guid.NewGuid();
                dict.Add(key, value);
            }
            return value;
        }



а вообще, хорошая тема
благодаря твоему собеседованию много для себя узнал
у меня завтра очередное ))
Собеседования вообще полезные мероприятия, иногда, что-то новое узнаешь =)
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467638
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вам не нравиться в этом коде?
Код: c#
1.
 if (dict.TryGetValue(key, out value) == false)
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467644
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВА что вам не нравиться в этом коде?
Код: c#
1.
 if (dict.TryGetValue(key, out value) == false)


Если вопрос мне, то ничего против не имею.
А что вам не нравится в?
Код: c#
1.
2.
 if (dict.ContainsKey(key))
     return dict[key];
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467688
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВА что вам не нравиться в этом коде?
Код: c#
1.
 if (dict.TryGetValue(key, out value) == false)

Для того булевы придумали, чтобы на равенство не проверять.

Кстати, я бы "зарезал" только за утверждение
ТС1. Название метода не важно. И еще потребовал документировать заголовок в стиле Доксигена итп

На практике это получается потом гораздо важнее говнокода внутри.
...
Рейтинг: 0 / 0
Впечатления от собеседования (связано с .Net)
    #39467741
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЕвгенийВА что вам не нравиться в этом коде?
Код: c#
1.
 if (dict.TryGetValue(key, out value) == false)

Для того булевы придумали, чтобы на равенство не проверять.

Кстати, я бы "зарезал" только за утверждение
ТС1. Название метода не важно. И еще потребовал документировать заголовок в стиле Доксигена итп

На практике это получается потом гораздо важнее говнокода внутри.
пытаетесь казаться умным? Название не важно было в приведенном примере. В тесте, который давали, имя метода было другое, какое, я не помню.
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 2 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Впечатления от собеседования (связано с .Net)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]