GraphQL у свiтi компонентiв від Катерини Поршнєвої — React fwdays онлайн | 27 березня
×Закрыть
Сеньорю за похлебку в Google
  • Вопросы C#/.NET junior на собеседовании

    Где? Я написал все правильно, а вот ты накосячил в 2х местах и додумал за меня то, что я не говорил (см ответ коллеги, где this написан перед source на той же строке). Опять таки, прямо над твоим ответом есть ответ человека, не прикидывающегося дурачком, где все написано правильно.

  • Вопросы C#/.NET junior на собеседовании

    Бывает. Ну и это же был не единственный вопрос на собеседовании, так, дать кандидату немного размяться :)

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

  • Вопросы C#/.NET junior на собеседовании

    Полегче на поворотах, дружище. Коллега Антон прекрасно понял что имелось в виду — и this написан перед source в сигнатуре метода (который, к тому же, должен быть статическим), потому что where в linq это extension method который как раз пишется.

    За отношение — низачет.

  • Вопросы C#/.NET junior на собеседовании

    пропущен this перед source, а так — думаю что после первого уточнения с примером кода вопрос был бы засчитан :)
    Безусловно, в .net framework это же написано намного сложнее, но я не хотел в это углубляться.

  • Вопросы C#/.NET junior на собеседовании

    более чем тривиальная задача, в идеале проверяющая знание человеком что такое ienumerable, yield, extension methods и predicate, но я просил чтобы кандидат написал хотя бы любой вариант, который приходит в голову.

    Поддержал: Андрей Литвинов
  • Вопросы C#/.NET junior на собеседовании

    Еще интересная Framework Design Guidelines, которая дает мотивацию тех или иных советов (хотя она тоже подустарела уже, наверное).

  • Вопросы C#/.NET junior на собеседовании

    Я иногда задавал вопрос — напишите Where из Linq. 5 лет назад этот вопрос ставил в тупик где-то 25%-30% интервьюируемых.

  • Вопросы C#/.NET junior на собеседовании

    Не совсем понял последнее предложение, но, если мне память не изменяет, интернирование, gchandle, weak references — это все было в Рихтере. Понятное дело, что того, чего в природе не существовало на момент выхода книги там не будет.

    И вообще — много ли проектов на .net core? потому что из того, что я вижу, для .net framework почти все актуально. То, о чем ты говоришь, это специальные случаи, которые в ежедневной практике большинство программистов просто не увидит, по причине ненадобности.

    Безусловно, Рихтер неидеален (и, к тому же, по языку я рекомендовал другую книгу, которая мне до сих пор нравится), и если топикстартер попросит, то можно набросать список глав которые можно пролистать вместо чтения, но, опять таки, есть системный подход, когда в получении знаний есть какая-то организация, а есть подход «левша-самоучка, который нахватывается знаний из блогов». Я сторонник системного подхода и советую изучать так, как я изучал это. Безусловно, чтение того же ayende.com тоже помогало сильно, равно как и блоги Липперта и прочей C# тимы, но я считаю что туда стоит идти уже с базой, чтобы базу корректировать.

  • Вопросы C#/.NET junior на собеседовании

    Без обид, но спор уже идет с каким-то Рихтером в голове, а не с книгой. Я открыл честно украденное 4е издание — упомянутые тобой Parallel.For, ForEach, Invoke есть в оглавлении, страница 713. Потом идет PLinq

    Страница 700 — рассказ про таски.

    Опять таки — для новичка лучше что-то, что дает систему знаний, чем хаотично рыться в блогах, хотя, безусловно, некоторые вещи я бы сейчас просто пропускал.

    Я так понимаю, что Dataflow популярностью не пользуется, потому что в 80% случаев достаточно вариантов producer-consumer с bounded queue или continuation tasks а если идет выход за границы процесса (что, в принципе, is a must для случаев когда мы начинаем пилить пайплайны), то dataflow, насколько я понял, ничего из коробки для этого не содержит.

  • Вопросы C#/.NET junior на собеседовании

    это слишком банально, если честно.

  • Вопросы C#/.NET junior на собеседовании

    Все получится, «Лупайте сю скалу!», просто надо понимать что язык/фреймворк не самоцель, а цель это иметь возможность решить поставленную задачу используя их. В мое время это было так:

    "
    вакансия 1. c#/wpf
    вакансия 2. c#/asp.net/немного html/css
    вакансия 3. c# и unity
    знание wcf (надеюсь оно уже здохло) приветсвуется, ms sql тоже в плюс"

    Сейчас, к счастью, в тех компаниях куда я собеседуюсь (сша), никто не спрашивает о деталях джавы или какая буква будет напечатана в результате выполнения этого кода (где мозговыносящая комбинация наследования, реализации интерфейсов и new/override/экстеншен методов).

    Майндсет «решение задач с использованием языка/технологии» поможет в будущем. Да, я не знаю как работает nodejs, но я видел уже большое количество подобных вещей раньше, и знаю что там ожидать и куда смотреть. Хорошие коллеги, несколько десятков код ревью и я буду писать достойный код на ней тоже. Не советую быть «разработчиком на C#», советую быть разработчиком, который использует C#.

    Конечно, на родине где нужны гайкозакручиватели с этим посложнее.

    Горящие глаза или их отсутствие могут быть как плюсом так и минусом. Мы недавно не приняли кандидата который ± решил все задачи, но общий вердикт команды был «there is nothing exciting about him».

  • Вопросы C#/.NET junior на собеседовании

    TPL.DataFlow

    К сожалению, Microsoft имеет привычку иногда подзабивать на проекты, и Dataflow кажется подзабитым экспериментом, судьбой чем-то напоминающим Rx. Буду рад ошибаться, впрочем. А вот Task<> и async/await торчат везде.

    Семафор, возможно, не так часто используется, а вот какой-нибудь CountdownEvent (который я считаю тоже примитивом), может пригодиться почаще.

  • Вопросы C#/.NET junior на собеседовании

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

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

    p.s. Вот этот комментарий меня смутил сразу, и я решил уточнить

    Refference типы становятся по-молчанию не nullable.

    MSDN Magazine пишет что не становятся, наверное прагма будет или еще что-то такое :)

    To avoid overwhelming developers with warnings as soon as they start using the C# 8.0 compiler, instead Nullability support will be turned off by default—thus no breaking change. To take advantage of it, therefore, you’ll need to opt-in by enabling the feature.

  • Есть ли возможность перемещений в пределах крупных корпораций?

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

  • Вопросы C#/.NET junior на собеседовании

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

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

    The goal of keeping a ref struct type as a stack-allocated variable introduces several rules that the compiler enforces for all ref struct types.

    You can’t box a ref struct. You cannot assign a ref struct type to a variable of type object, dynamic, or any interface type.
    You can’t declare a ref struct as a member of a class or a normal struct.
    You cannot declare local variables that are ref struct types in async methods. You can declare them in synchronous methods that return Task, Task or Task-like types.
    You cannot declare ref struct local variables in iterators.
    You cannot capture ref struct variables in lambda expressions or local functions.

    Безусловно, это крутые вещи и знать о них полезно, но дихотомия ref/value никуда не девается, потому что это, в принципе, философское различие — у одной вещи концептуально есть/может быть identity, а у другой нет (не должно), из которого вытекают особенности размещения в памяти: хип или стек и работы с ними.

    Roslyn — да, это был большой шаг вперед. type forwarding — возможно это что-то новое с тем же именем, но TypeForwardedToAttribute был в дотнете очень давно.

  • Вопросы C#/.NET junior на собеседовании

    Не хочу спросить с очевидно работающим профессионалом в этой области, но все же, видимо, у нас разные крайности — я рекомендовал вещи которые считаю базой, хотя, безусловно, могли подустареть, а ты сразу идешь с cutting edge (например ne-nullable references, версия языка с которыми еще даже не релизнута).

    Кроме глобальных изменений мало ощутимых пользователю — появление нового компилятора,SDK, gc, jit и новой модели хостинга приложений(подгрузка зависимостями, развертывание запуск).
    Есть и принципиальные изменения в базовых понятиях в последних версиях clr и компилятора —
    значимые типы были наделены полной семантикой reference типов.

    что это значит? Вот это? docs.microsoft.com/...​emantics-with-value-types

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

    Refference типы становятся по-молчанию не nullable.

    C# 8.0 еще даже не вышел

    Появляются новые примитивы, а для них другой low level api — (пример — вместо string продвигаеться новый тип UTF8String).

    который невозможно найти в msdn: social.msdn.microsoft.com/...​&emptyWatermark=true&ac=4

    Что касается памяти — GC с его проблемами уже выглядит тоже как не совсем актуальные темы для разговоров с его борьбой с утечками и тому подобное — теперь выделяем память на стеке в коде и используем unsafe инструкции из Managed кода(без unsafe и тому подобное).

    и статическая хеш-таблица будет теперь память освобождать и gc стал обходиться без рутов?

    Поменялся подход для работы с буферами — вместо Streams повсеместных, продвигаеться Span, Memmory и Slices.
    С появлением low alloc апи начали появляться новые требовательные к производительности и памяти возможности для работы с растром, графикой написанные на C#(то что всегда до этого делалось на C++ и вызывалось через P\Invoke) и тому подобное.

    это круто

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

    Но не все

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

    Без тонны in/reference value это все еще так. Сама идея того, что одно на стеке другое в куче никуда не девается

  • Docker. О чём хотите послушать?

  • Вопросы C#/.NET junior на собеседовании

    Спорить не буду — я все же дотнетом занимался довольно давно (4е издание вышло в 2013, как раз последний год когда я писал на C# в продакшене. Все что после это было просто примеры из блогов, чтобы совсем уж не забывать).

    Рихтер пишет местами спорные вещи (например меня никогда не нравился его совет использовать дотнетовские названия типов, место C#-повских), но для начала все равно будет полезен. Я не думаю, что там что-то фундаментально устарело, хотя про дотнет кор там скорее всего ничего нет :)

    Какую книгу(-и) сейчас советуют вместо Рихтера?

  • Вопросы C#/.NET junior на собеседовании

    Мой совет для дотнетчиков —
    CLR via C# для глубины
    C# in a Nutshell — для языка

    Если эти книги прочтены и поняты, то знание c# и .net будет уже далеко не джуновским

  • Вопросы C#/.NET junior на собеседовании

    Как можно в работе использовать 10% возможностей языка? (в моем списке около половины, если не больше, это фичи языка-платформы)

← Сtrl 1... 262728293031 Ctrl →