@@SBeregovoyRU ну в принципе, этому есть объяснение, чаще, джуна берут без опыта, и чтобы понять какая у него база, логика такого количества вопросов есть. Однако, Я бы больше обращал внимание на его софт скилы, на умение коммуницировать и знание английского.
Очень познавательно. Посмотрел пару собеседований на вашем канале. Как предложение: заморочьтесь с монтированием, и там где кандидат не ответил, или ответил не всё, вставляйте врезки "как бы я ответил / какой правильный краткий ответ", мне кажется поможет поднять популярность видосов
Главная проблема такого подхода в том, что ответы на эти вопросы ты никогда не запомнишь при таком подходе "все в одном месте". По хорошему необходимо ставить на паузу после каждого вопроса, отвечать на него, гуглить вопрос, удостовериться в правильности ответа, продолжать смотреть. Если ответ не верный - выписать на листок этот вопрос. От того, что ты загуглишь лишний раз ты только лучше запомнишь и не будешь мандраж от сомнений ловить)
побольше таких собесов! ставлю на паузу и отвечаю сам) помогает. Если ответы еще будете выводить на экран, как бы вы ответили, цены бы не было) спасибо)
Отличная рубрика! Помогает понять, на что делать акцент, когда готовишься к собесам. По ощущениям, джунов гоняют на собесах сильнее, чем мидлов. Когда проходил собес на мидла, это скорее выглядело, как диалог о том, что я делал на прошлом месте работы, с какими проблемами сталкивался и как их решал. Когда ты джун, нужно доказать, что ты сможешь сам решать задачи - что добавляет сложности, т.к. это тяжело проверить. Виталий, удачи тебе, заполни пробелы в знаниях и у тебя все получится! p.s. привет из Тольятти)
У нас джунов гоняют даже на порядок больше чем в этом ролике, глянул как-то вопросы у нашего теха на столе, а там в стиле какие паттерны проектирования вы знаете и расскажите о них. Потом в стиле, что вы можете рассказать про паттерн фабричный метод. Ещё до кучи вопросы про триггеры и хранимые процедуры в SQL. Не особо понял зачем джунов этим грузят, дать простые задания и посмотреть как решает, а дальше в процессе работы уже втянется) Ну не суть. Приходил к нам как-то человек, хотел устроиться на позицию джуна, технически всё делал правильно, тестовое задание тоже все выполнил отлично, видно что мозги работают как надо. А вот речь не поставленна, запинается, плохо формулирует мысли, не может объяснить и техническими вопросами до кучи допинали. Сказали ему что он не подходит и ему ещё надо подучиться, а через пару дней его взяли в нашем же бизнес центре в другой компании на ту же позицию. А наши вместо него взяли чувака который разбирался кое-как, зато язык был подвешен и уверенности будто он второй Марк Цукерберг и красный диплом вишенкой на торте. Как итог, за 3 с небольшим года тот первый парень вырос в крутого спеца, из серии "было скучно, выучил за ночь норвежский", а наше второе пришествие Марка Цукерберга уволили не продержав и месяца потому что он был необучаем и считал что уже всё знает.
@@timtom489 Прям поставил бы +миллион к вашему комментарию. Действительно, от программистов, в том числе и потенциальных, не стоит ждать супер подвешенного языка. Рад за того парня, который попал в ту компанию, где вырос
@@timtom489 Это говорит о том, что компании, в основном, хотят, чтобы джун в теории разбирался на заебись, Это бред. Джун на то и джун, чтобы на работе многое изучать. Стажеры и вовсе почти ничего не знают. В баню. Этому челу нужно на уровень миддла собеседоваться, если он практик, конечно. Там не будет дурацких теоретических вопросов.
@@timtom489 я удивляюь, откуда джун будет помнить фабричный метод, когда у него практики мало. Для того, чтобы запомнить паттерн, нужно его пару раз на практике попробовать. А этих паттернов общеизвестных десятки. Пока все опробуешь, уже года полтора продет. Уже нужно будет на позицию миддла устраиваться, а не юниора.
Очень здорово 👍 побольше бы такого контента. я так погрузилась в это собеседование, что меня даже потряхивало немного) как будто я на месте этого парня собес прохожу)
Спасибо, Сергей, за ваш канал. Видео интересное, парню удачи в обучении и поиск работы. Данный формат видео - золотая жила. И было бы здорово, если бы вы озвучивали правильные ответы если собеседник ошибается
Интересный и очень полезный ролик для тех, кто только начинает карьеру. Но, возможно, некоторые вопросы слишком широкие для джуна. К примеру как работает сборка мусора. Очень обширная тема, начиная с простого упоминания поколений, режимов работы GC и заканчивая наличием allocation context и причин выпадения OOM. Кажется, что для джуна может быть сложновато. По мелочам, про Using. Развернется он не в try/catch/finally, а в try/finally - но мелочь, просто небольшая придирка с моей стороны)) И мне кажется, что для джуна жестковато подразумевать, что он полезет на старте изучения в IL-код и будет смотреть, что во что разворачивается)) По поводу рекомендации изучить как работает стек и куча - отличная рекомендация, которая действительно поможет в базе понять, как аллоцируется память и как там размещаются данные. Возможно, на базовые важные вопросы парень и не ответил, но в целом кругозор весьма неплох, подтянется немного и пойдет дальше, я считаю, что держался весьма достойно. В общем, Степан, большой респект вам за подобные видео, я думаю, что многим начинающим будет полезно посмотреть. Но не с целью понять и заучить, а что же спрашивают на собеседованиях, а с целью изучения именно того, что первоначально нужно для начала нормальной работы.
37:58 тут ошибочка, строка работает так же, как и все другие ссылочные типы, то есть если присвоить одну строку к другой, то они будут ссылаться на один и тот же объект в памяти. Мало того, благодаря такой штуке, как string interning, даже str1 = "foo"; str2 = "foo"; Будут ссылаться на один и тот же объект. И даже str1 = "foobar"; str2 = "foo" + "bar"; Ссылаются на один и тот же объект (то есть когда конкатенация может быть выполнена на этапе компиляции)
Можно базу не пропустить, а часть базы забыть. Например, я неплохо знаю С++ уровня 2014 года. С# немного знаю. Если спросят по плюсам, на которых я прагаю совсем не часто, не факт, что на все теоретические вопросы я отвечу. Если спросят про С#, на котором я тоже прагаю редко, то я не отвечу на треть теоретических вопросов. Вот так. Нужно дать тестовое онлайн и посмотреть как он справится с ним. Офлайн тестовое на несколько часов без оплаты - плохой тон.
Miposhka пробует себя в програмировании, честно сказать не ожидал, но парень молодец даже после победы на TI 10 всё равно ищет разные способы реализации!
К собеседующему претензия, что если кандидат не отвечает на вопрос, он должен сам ответить, потому что такие ответы усвоятся сразу и надолго! Так делают в нормальных компаниях, а не то, что собеседующий всегда отвечает "Ну там потом почитаешь". При таком ответе собеседующего у меня возникают вопросы к его компетенции!
Спасибо за видео, Степан. Очень познавательно. Сам хочу свитчнуться (36) и ожидаю своего 4 технического собеса. две трети вопросов из озвученных здесь мне никогда даже не задавали, никогда не знаешь что тебя ждёт.
@@Tinyismyson то есть, вы пошли на собеседование, немного его завалили и вам потом сказали, что .NET разработчиком взять не могут, но могут предложить работу (стажировку) QA C#?
Спасибо большое, даже несмотря то что собеседование об C#, помогло мне вспомнить некоторые детали Java. Немного было сложно понимать некоторые вопросы из за недостатка незнание слов на русском, так как изучал на итальянском..
37:57 нет, при присвоении строки копируются по ссылке, другое дело, что изменить их внутренне нельзя, потому что они неизменяемые (immutable), у них нет состояния, а при присвоении литерала в новую переменную попадает новая ссылка, поэтому в старой переменной остается прошлое значение
@@Hunter314414 Нет, строки копируются по ссылке. Правило интернирования действует только на известные во время компиляции строки (т.е. на константы) и тогда, когда вы явно вызываете String.Intern.
Интересно, а что делать если собеседователь неправ?) Как, например на 38:00 . s2 в данном моменте будет иметь ссылку на ТУ ЖЕ строку что и s. Отличается только поведение при попытке "переписать" строку, так как она immutable.
У меня в том году было 4е собеседования, 2 - на XAMARINе, 1 - Fullsteck и 1 - WPF и Backend. И ни на одном у меня не спрашивали то чего спрашивали в первой половине видео, спрашивали про опыт про паттерны, показывали код или я показывал код, для последнего собеседования сделал тестовое задание. Про GC спрашивали на двух собеседованиях, почти везде про DI, ну и про ООП
Душнилово собес. Всегда поражался с таких уважаемых. Я б спросил работу с памятью, оптимизацию, паттерны, структуры данных и вуаля. Беги парень от таких собесов)
@@SergFreest Это ты прикалываешься? Если бы парень был полным нолем, то он почти ни на один вопрос правильно бы не ответил. Ноль это ты, скорее всего. Теоретически может быть ты и не ноль, а по практике около ноля. Знаю такие конторы, которые только по теоретическим знаниям берут. Потом увольняют таких работников.
Привет! Спасибо за интервью, но я так и не понял почему на 37:30 говорится, что ссылки будут указывать на разные объекты в памяти? Они же будут ссылаться на 1 обьект. В данном случае строки ведут себя как ссылочный тип
Давайте не путать собеседование с экзаменом. Экзамены в университете, в результате которых заносится оценка в ведомость и выдается диплом. Спрашивать на собеседовании часами - не только глупо, но и портит репутацию компании. Так как рабочее время расходуется неадекватно. Засиживаться на работе ради вас часами никто не будет.
А сколько обычно такие собесы отводится времени? Или они дробятся, сегодня познакомились пообщались с hr, бабки мотивация , цели, в другой день уже техническое собес и потом тестовое?
@@zergzerg4844 Тестовое не везде есть. Тестовое, если оно офлайн, не должно выполняться за бесплатно. Особенно, если на его выполнение уйдет больше 1-2 часов. В крупных компаниях собес дробится на, минимум, 2 части: 1) hr; 2) техническое интервью. По видосу видно, что контора не далеко ушла от шараш-монтажа.
Собеседование обычно 1 час максимум и их обычно 3 штуки: 1. с HR - до получаса, 2. С техлидом - до 1 часа. Вместо этого может быть назначено тестовое (отдельное время и степень неадеквата тут может быть самой разной как по времени так и по задачам) + разговор по тестовому заданию. 3. С принимающим на работу - разговор по деньгам + подписание документов, если готов сделать это сразу - до получаса.
Согласен. + Вопросы лушные, я бы уже на втором вопросе ливнул. Что будет если поделить 2 на 3 в INT. Брет блять. Бан будет, достаточно знать что нехер в целочисленный тип, сунуть результат деления, даже если он без остатка.
Кандидат держался достойно, видно, что сейчас изучает многие вещи и имеет стартовые знания. Но при этом ни раз кандидат говорил КАК делать правильно, но не мог капнуть и рассказать ПОЧЕМУ. ИМХО, я бы рекомендовал не зацикливаться на книжках, а закрывать именно те пробелы, что вскрываются на подобных собеседованиях. Можно даже попробовать еще пройти где-то собеседования и понять какие вообще знания сейчас нужны на рынке. Посмотреть на какую сумму могут оценить текущие знания и понять, что нужно подтянуть, если хочется прыгнуть выше. Или же просто посмотреть статьи на Хабре на тему собеседований, изучить список типичных вопросов и ответов.
Парень молодец, очень много знает для джуна, с вопросами про стек и кучу не ответил, это серьезный минус, еще не был задан вопрос про "ref и out" параметры, как они изменяются в методе, это тоже часто спрашивают. Если отталкиваться от знаний шарпа, то много тем было пропущено, да и вообще оценить уровень фундаментальных знаний в шарпе не так уж и просто, при желании человека всегда можно отсеять, если копнуть чуть глубже, хотя бы до уровня Рихтера. Для быстрого "въезда" c# не подходит, так же как и c++ или java, другое дело python или рhp, парню однозначно уважение и надеюсь ему повезет с работой, потому что фундаментальные знания это хорошо, но даже они без практики быстро забываются, а вечно учить теорию не возможно, через какое то время одна информация, начнет затирать другую. Автору спасибо за ролик, я как человек с опытом в шарпе для себя некоторые вещи новые узнал.
Спасибо за поддержку :) про стек и кучу я потом посмотрел и я бы не сказал, что эти знания сильно помогают в работе, если до этого я знал про то, что вэлью типы работают быстрее, что они копируются при передаче в метод, а чтобы не копировались нужно передавать с ref, что out параметр кидает значение в переменную метода, помеченную, как out, что ссылочные типы наоборот не копируются при передаче в метод и нужно делать велосипед в виде var ... = new ... {New.p1 = old.p1, ... }. Когда знаешь про область видимости переменных в методах. Я копал как бы в практические, так сказать, постулаты, применения методов, но не в их причину. Через стек и кучу можно в это зайти и будет даже быстрее понимание. Но само здание что стек это быстрая память приложения, а куча память компьютера и что в стеке хранятся вэлью и ссылки, а в куче значения ссылок, не рассматривая исключения, типа когда программист зачем-то сделал структуру и засунул в нее 3 ссылочных типа и подобных штук, не помогает в работе. Я учил, получается, именно как можно делать и как нельзя делать по причине просто потому что опытные ребята так сказали, если копнуть глубже то там оказывается вот теория про память, которая не применяется, а если ещё глубже, то там будет уровень ассемблера, а ещё глубже физика процессора и разных поколений. Но при этом я выбрал C#, как высокоуровневый язык как раз, чтобы не копать туда, я мог бы выбрать Си или ассемблер и я пытался в них разобраться, но это просто не интересно было. Мне нравится делать рабочие прототипы программ, чтобы данные удобно водились пользователем, ошибки обрабатывались, на сервере все тоже хорошо обрабатывалась, приложение работало быстро и приносило пользу. В последнее время мне ещё стала интересна тема архитектуры приложения и я туда копать стал, но никак не в более низкий уровень. Этому и ответы такие были. Ну и собес был чтобы закрыть свои дыры как раз. Если провести итог, то я редко хочу узнать, что лежит под копотом штук, которые дали разработчики языка или разработчики nuget. Для меня главное, чтобы они работали так, как указано в их документации. Детали реализации там обычно никто не указывает. И всякие вопросы по типу: а во что разворачивается out на уровне il кода? А на asembler? А как это на процессоре передается? Или аналог про слова string, int, delegate, new, this, event, using, class, virtual и т.д. Завалить можно, как ты сказал, на чем угодно, если копнуть поглубже, согласен.
@@VetalGimbarr На практике большинство из того что спрашивают на собеседовании редко нужно, даже если затрагивать тему оптимизации, то пока у тебя все работает, то заботится о ней не нужно, а все эти вопросы только для того чтобы пройти собеседование, я не так давно проходил собеседование в один крупный банк и у меня все это спрашивали, понятно что везде разные требования и junior это надолго пока не научишься не только повторять это, но и думать в контексте этих данных. Но ты молодец и советы коллеги тебе дают хорошие, удачи.
@@darkcrusaderzxc Согласен)) НО, если появится "узкий" кусок кода, ты не сможешь его оптимизировать, если про память и ASM ничего не знаешь)) Другое дело, что вряд ли в работе современного "бэкэндера" он появится)) На моей практике, такие куски кода появляются только в моих домашних проектах, вот последний раз писал A* для поиска пути на большой карте, для моего бота WoW, там пригодилось, все-таки граф в 100 000 000 нод - это не шутки)) Бизнесу нужны тупые, повторяющиеся действия, высшая математика и знания компуктера почти не требуется)) Особенно смешно, что современные "Веб-программисты" мидл уровня даже не знают как сеть работает, а зачастую не смогут даже HTTP запрос в блокноте написать, ну а что такое маска сети это вообще тайна)))
@@HeIvis "вы хорошо прошли собеседование, но мы нашли кандидата с более глубоким опытом". С год примерно, но тут у каждого свой график, по свободному времени. У меня его было мало
Все опнравилось, но честно говоря, первый вопрос очень с float/decimal/double душный. От кандидата я бы просто хотел услышать в таком случае, что при работе с критичиски важными арифметическими операциями нужно граммотно подходить к типам данных чисел. А валидный тип можно путем поиска инфы в гугле найти
string s = "привет"; string s2 = s; - ответ не правильный! ссылаться будут на один объект т.к. есть такая штука, как интернирование! и строки изменить можно небезопасным кодом, но потом не только поменяются значения всех её переменных, но и вызов и присвоение неизменённой версии будет возвращать всегда изменённую!
Это какой язык? В C++ и C# не так. В данном случае переменная s2 не будет ссылаться на переменную s. В C++: string & s2 = s - будет ссылаться на переменную s. В C#: ref string s2 = ref s.
@@vladimirandreev9022 так тут и не написано, что переменная s2 ссылается на переменную s! Они обе ссылаются на один и тот же объект в памяти, и если изменить переменную s = "пока", то только она будет указывать на новый объект в памяти, в то время, как s2 будет хранить старое значение, тобиш "привет".
26:18 порядок булевых операторов же, сначала идёт &&, потом ||, те понимание различия есть, но ответ абсолютно неправильный. Т.е. в первом выражении если A=true, то дальше ничего не проверяем
@@VetalGimbarr Ну те по вашей логике, если вас спрашивают про правило жи-ши, а всё остальное предложение написано абсолютно неправильно и с ошибками 1 класса, то плевать, главное то, про что спросили?
Так про строки собеседующий сам не в курсе. Когда пишут string s = "a"; string s1=s; Не будет создаваться новая строка для s1. Откуда вы вообще взяли это? При конкатенации да, будет, но не в этом случае. Это блин принципиальный момент, можно сказать идеологический
Очень хорошее видео, Спасибо!! Смотрю и вижу, что было с моей стороны правильным решением изучать С++ по видеолекциям с торрента. После них нет вопросов по массивам и типам данных. Видимо в лекциях по С# это упускают. Кодить приходилось кустарно и на С++ и больше всего на С#.
37:30 Не совсем с вами согласен. s2 действительно будет ссылкой и они вместе с s будут ссылаться на одну область памяти. Но строки immutable, изменить значение по ссылке не является возможным. Это кстати легко проверить var s = "hello"; var s2 = s; Console.WriteLine(object.ReferenceEquals(s, s2)); //OUTPUT: true
Тоже когда смотрел, т.к. есть понимание АСМ и т.д. и того, что строки иммутабельны, возник в башке вопрос - "а нахрена в случае копирования создавать новую строку?")) И Было предположение, что вряд ли создатся, что просто копируется адрес и что майки не дегенеры))) Спасибо, что подтвердили)
ну нормальный пацан на самом деле. по теории проседает, но на практике вроде какой-то опыт есть - а теория она приходит по факту. ко мне приходили на мидлов и похуже :) и я вообще с позиции swift на все это смотрю, некоторые моменты удивляют, но в целом все достаточно похоже, ну за рядом отличий, например у нас сборки мусора нет - есть ARC и по нему обычно хорошо гоняют на собесах. по факту это просто retain release на этапе компиляции, но многие "мидлы" думают что это какой-то там цикл в рантайме ( некоторые даже ранлуп вспоминают ради этого ), который убивает мусор. забавно что у нас была одинаковая реакция когда он упомянул про наследование и про DI - я тоже втупил и аж на паузу поставил чтоб осознать :)
На вопросе "36:18 - Какая особенность при передаче ссылочных типов? Ссылочные vs значимые типы.". Вы спросили, будут ли 2 строки ссылаться на один и тот же участок памяти, вы отвечаете нет. Если 2 строки привести к object и сравнить в ReferenceEquals то будет true, а ReferenceEquals как раз таки сравнивает равенство ссылок. Разве здесь не работает правило интервирования строк ?
Касательно ИИ, у OpenAI уже есть ИИ, который интерпретирует текстовые команды на натуральном языке в готовый код. Например, ему говоришь: "напиши программу, которая проверяет является ли строка палиндромом", и он выдаёт непосредственно код, например, на питоне. На ютубе есть их ролик, вроде
Он просто шаблоны тебе выдает, это не ИИ который пишет осмысленный код, до этого еще далеко, современным процам и накопителям, так и подавно, лет (вы столько не проживете) можете быть спокойны господа)
@@ЕвгенийГорелов-е1з Не совсем понял про шаблоны. Что вы понимаете под этим? Ему написали: "сделай так, чтобы игрок мог двигаться вправо-влево стрелочками" и он написал соответствующий код с нуля, о каком именно шаблоне речь?
@@anonim1788 такого нет, есть хня, когда ты набираешь начало функции или название и она варианты предлагает, то что вы выдели просто рекламная байда, с оправданием типа "это прототип, но если вы нам дадите денег, то мы уж точно сделаем...."
@@ЕвгенийГорелов-е1з Вы уверены, что мы говорим об одном и том же проекте? Почему Вы говорите, что такого нет, если буквально то, что я написал, есть. Они даже раздают демку
@@leonidpro3664 Хз, как по мне решать в какой-то степени чью то судьбу ответственный, нервный процесс. Не хочется принять ошибочное решение причем ошибочным может быть как найм так и отказ.
Скорее всего не сможешь и это будет нормально. Объем знаний который он спрашивает какой то неибический. я 3 года уже работаю и даже на половину фиг отвечу с наскоку. На самом деле когда хуячишь в прод , большинство из этих знаний не пригождаются и вылетают из головы через месяц. Чтобы уверенно рассуждать на все эти темы нужно не уметь писать код, а уметь проходить собеседования. Эти навыки пусть и частично перекрывают друг друга , но по большей части они разные. Более того , я закинул видос в чат и у нас даже синьоры сказали что это как то слишком круто для джуна.
var s = “a”; var s1 = s; s и s1 ссылаются на один объект. Но var s = “a”; var s1 = s + “b”; ссылаются на разные объекты. Таблица интернирования строк !
"var s = “a”; var s1 = s; s и s1 ссылаются на один объект" - вы не правы. В данном случае это не ссылка, а копия. В новую переменную копируется значение другой переменной. Так в JavaScript, C++, C#.
Не думаю что вы ответите, НО ОЧЕНЬ ХОТЕЛОСЬ БЫ. Перерыл пол интернета, но адекватного ответа не нашел. Почему все таки в типе decimal при добавлении 10 раз числа 0.1 будет не 1.0?..Компилятор боится лишний раз превращать десятичную дробь в целое число? Я знаю что double и float округляют значения после 6 и 15 цифры после запятой, но ведь тут четко написанно 0.1 а не 0.999999999...
Это не компилятор и его особенности. Это особенности работы процессора и вообще устройства чисел с плавающей запятой. Есть видео на эту тему у Тимофея Хирьянова. Точно в каком видео не скажу
Да, как говорил Михаил Портнов, отвечайте только то что вас спросили и не давайте лишнюю информацию) Если спрашивают знаете ли вы сколько времени, надо отвечать да, а не называть время, ибо вас спросили знаете ли, а не сколько сейчас на часах))
Правильный тон собеседования это когда кандидат ошибся или не знает, объяснить/расскрыть кратко ему правильный ответ. Иди читай.. Не очень комфортный вариант
так стопе. С строками какая то лажа. Как это при при вот таком у нас два разных объекта будут? объект один и ссылка в пуле на него var s = "test"; var s2 = s; Console.WriteLine("s.GetHashCode= " + s.GetHashCode()); Console.WriteLine("s2.GetHashCode= " + s2.GetHashCode()); Console.WriteLine(s.Equals(s2)); Console.WriteLine(s == s); Console.ReadLine();
@@SBeregovoyRU даже без интернирования строки копируются по ссылке. С интернированием у всех одинаковых строковых литералов одинаковая ссылка, т.е. изменив литерал в одной ссылке, изменяются все строковые литералы в других ссылках, все в рамках safe кода.
По поводу string. Да он immutable class, но в нем реализован паттерн flyweight, есть внутренний механизм интернирования строк. Если string s = "привет" и string s1 = "привет" - то это автоматически не схлопнет в один экземпляр на куче и s и s1 разве не станут ссылаться на один и тот же объект?
Интернируются автоматически только строки, которые заложены во время сборки. Строки, образованные во время исполнения не интернируются, и на то есть причина - это неоправданно дорого. Рассмотрим простой пример, где есть определенная область взаимодействия с пользователем - обработчик запроса в asp net. Допустим, мы хотим, чтоб мы взяли из запроса две строки, сложили их и вернули пользователю. Если бы дотнет интернировал строки, полученные в рантайме, то по окончанию запроса две изначальные строки и одна итоговая останутся в памяти, так как они интернированы. Получается, каждый запрос увеличивал бы использование памяти на три строки. А что будет, если произойдет тысяча разных запросов?
string Text = "Привет"; string SubText = Text; В данном случае SubText будет указывать на тот же самый объект строки в памяти. Ничего нового создаваться не будет. Это можно проверить "object.ReferenceEquals(Text , SubText)". Но если вдруг переменная SubText измениться, то только тогда приведёт к созданию нового объекта в памяти.
На mid/senior совсем другой принцип собеса. На Junior мало кто ждёт правильного ответа на все вопросы. Тут важнее узнать общий кругозор. Ну и увидеть принцип мышления. В выборе джуна важнее то, как хорошо и быстро он будет учиться и какая у него есть база. При выборе мидла и сеньора мы берём уже сформировавшегося разраба и на его обучение не хочется тратить деньги и время. Тут важнее узнать про его опыт, как он решал те или иные проблемы. И, возможно, про конкретные технологии, которые используются в компании. По итогу, собеседование на джуна, как мне кажется, самое сложное.
Я на собесах задаю подобные вопросы и все факапятся)) Все знают про СОЛИД и ни один про память и как все устроено) Но честно говоря, для продукта, который разрабатываем мы, это и не надо, потому берем, даже если человек не знает основ, главное чтобы код показал....
Я себя считаю вообще нолячим трейни, но когда я вижу, что человек, который находится на тестовом периоде в компании не знает отличия между стеком и кучей, у меня возникает много вопросов. Хотя со стороны видно, что он показал какие-то конспекты, какие-то книги читал, но все, что ч выше перечислил - это элементарщина из видеоуроков, на ютубе
где ты нашел информацию про тестовый период в компании? Это собеседование спустя год изучения интервалами неделя учебы через 3 месяца отдыха и 1 месяцем целенаправленной учебы), т.е. по факту времени где-то 2-2,5 месяца. За это время изучены только курсы, метанит. К собеседованию целенаправленно не готовился, просто было интересно что спрашивают на тот момент по C#, к чему готовиться, насколько досконально спрашивают теорию, которая никогда не пригодится и т.п. Если ты знаешь все, что спросили тут и у тебя есть практика, как у меня была на тот момент, потому что я именно практику делал, я на тот момент за 2,5 месяца сделал 3 прототипа игр на unity + C#, штук 20 различных консольных приложений, 3 приложения на wpf, одно на asp net core. И, честно, ни в одном не понадобилось именно определение из книжек стека и кучи, знания реализации стринги и стринг билдера под копотом и т.п. Вполне достаточно знаний о том, что есть разные области видимости переменных, знание, что есть IDisposable объекты, есть объекты на которые хранятся ссылки в памяти и их нужно обнулять вовремя. Я лично, спустя 2 месяца после этого собеса подтянул знания, ещё больше практиковался и устроился на работу и по сей день работаю, так что и тебе советую устроиться, потому что в этом собесе большинство базы есть, а некоторые вещи даже на уровне senior задач спрашиваются.
Степан, здравствуйте. Подскажите пожалуйста, какой из этих двух людей на ваш взгляд станет программистом - Первый это тот, кто фанатеет от программирования, но не обладает хорошим логарифмическим мышлением. А второй наоборот - имеет среднюю мотивацию к изучению, но очень хорош в математике и логарифмах ? Вопрос веду к тому, что более ценно в программировании - фанатизм, усидчивость или с рождения умение решать хорошо задачи и качественно ? Но выбрать можно только одно.
Здравствуйте. Вы упоминали в вопросах про объекты что вроде как в стеке хранятся некоторые метаданные этих объектов. Не могли бы вы кратко сказать, что это за данные и по каким тегам о них можно найти информацию?
Как человек за кучу вопросов к нему поймет что-то о компании и что ему следует здесь работать? Кроме того что здесь очень нудно и время тратится впустую
Яб тоже попробовал пройти собеседование. Только на работу чтоб взяли, если подойду))) Более 18 лет системный админ. И возраст уже не тот( Не хотят в регионе брать.
В целом хорошо, но как то мало про .NET, где про CLR, компиляцию программы, сборку, модификаторы доступа, дженерики, коллекции, linq. Лучше вместо partial классов, спросил бы, например, про отличие абстрактного класса от интерфейса. Про TPL тоже стоило спросить, не согласен с тем, что это не надо трогать, общее понимание должно быть, хотя бы что это такое и зачем нужно
В чем отличие абстрактного класса от интерфейса - самый заезженный вопрос. И особенно бесит, когда правильным считается ответ "Класс наследуется, а интерфейс имплементируется". Увольнял бы собеседовальщиков за такое.
Я вот сейчас начал изучать c# мне 32 года. Образование 11 классов и заброшенная вышка. На сайте Юлерн бесплатно пока прохожу программу, думаю какие курсы купить. Вакансий много, проблем с трудоустройством не вижу.
Аналогично, у нас многие джунов не читавших Рихтера даже рассматривать не хотят и часто гоняют по паттернам и внутреннему устройству самой платформы, причем далеко не верхами. Вспоминая как я заканчивал универ 5 лет назад, у нас 80% были нулями и ушли в макдак, процентов 15 максимум с гуглом и косяками вывезли бы сделать калькулятор, ещё процента 4 смогли бы запрограммировать алгоритмы быстрой, пузырьковой сортировки, бинарный поиск и алгоритм Дейкстры, на этом всё и вот только один на сотню был такого приличного уровня. В итоге почти все кто хоть что-то умел как-то устроились на последнем году обучения через приходивших в универ рекрутеров, а вот самый умный чувак, имея награды за проекты, возможно из-за скалада своего характера, оказался за бортом и пять лет работает за 20к руб сис админом в поликлинике.
Кошмар, собесы на джуна самые душные. То ли дело на сеньора, посидели, обсудили прошлые проекты, задачи, решения и разошлись, ждешь оффер. Никаких тебе зачем дабл и децимал.
может ли появиться интерес к программированию в процессе выполнения например тестовых заданий или стартапа? Хочу войти в IT, но пока только привлекают такие плюсы этой профессии как возможность удаленной работы, зарплата выше средней, но никак не могу привить интерес к написанию кода, но сдаваться просто так не хочу.
Наверно у каждого по разному, но у меня скорее наоборот. Раньше любил, но программирование на практике - это такая рутина процентов на 90%, что реально приходится убеждать себя, что тебе это нравится. Например, вспоминаю, предыдущие работы с более низкой зарплатой - такая себе, но мотивация.
Удаленная работа и зарплаты есть не только в IT. Ищите варианты для себя, программист должен в первую очередь любить писать программы. А потом все остальное.
@@SBeregovoyRU Согласен, что реализовать себя можно не только в IT. Ради зарплаты нет смысла идти, если не нравится или нет способностей, потому что можно выгореть, или очень медленно развиваться, или вообще не пройти ни одного собеседования.
Оценим шансы кандидата получить первую работу. Как по вашему, возьмут на работу с такими знаниями или надо еще доучивать?
Junior гоняют серьезней чем На Middle, проходил через это
@@artemartem6993 Как думаете, почему так?
@@SBeregovoyRU ну в принципе, этому есть объяснение, чаще, джуна берут без опыта, и чтобы понять какая у него база, логика такого количества вопросов есть. Однако, Я бы больше обращал внимание на его софт скилы, на умение коммуницировать и знание английского.
Можно я следующий - тоже так хочу ))) Только из Юриста в Программисты =)) Да еще и в 34 =)
@@lerokanz3482 Возраст в этой сфере не важен) Всегда учишься.
Очень познавательно. Посмотрел пару собеседований на вашем канале.
Как предложение: заморочьтесь с монтированием, и там где кандидат не ответил, или ответил не всё, вставляйте врезки "как бы я ответил / какой правильный краткий ответ", мне кажется поможет поднять популярность видосов
в топ)
Мне кажется я тут прокомментировал почти все вопросы или по крайней мере дал наводку на ответ.
Главная проблема такого подхода в том, что ответы на эти вопросы ты никогда не запомнишь при таком подходе "все в одном месте". По хорошему необходимо ставить на паузу после каждого вопроса, отвечать на него, гуглить вопрос, удостовериться в правильности ответа, продолжать смотреть. Если ответ не верный - выписать на листок этот вопрос. От того, что ты загуглишь лишний раз ты только лучше запомнишь и не будешь мандраж от сомнений ловить)
Совет действительно годный
че он еще должен? спасибо и за то, что уже заморочился сделать видео...они ему еще советы дают
побольше таких собесов! ставлю на паузу и отвечаю сам) помогает. Если ответы еще будете выводить на экран, как бы вы ответили, цены бы не было) спасибо)
Работаю мидлом. Смотрю собес джуна и все равно пару новых вещей узнал) Спасибо
Отличная рубрика! Помогает понять, на что делать акцент, когда готовишься к собесам. По ощущениям, джунов гоняют на собесах сильнее, чем мидлов.
Когда проходил собес на мидла, это скорее выглядело, как диалог о том, что я делал на прошлом месте работы, с какими проблемами сталкивался и как их решал.
Когда ты джун, нужно доказать, что ты сможешь сам решать задачи - что добавляет сложности, т.к. это тяжело проверить.
Виталий, удачи тебе, заполни пробелы в знаниях и у тебя все получится!
p.s. привет из Тольятти)
У нас джунов гоняют даже на порядок больше чем в этом ролике, глянул как-то вопросы у нашего теха на столе, а там в стиле какие паттерны проектирования вы знаете и расскажите о них. Потом в стиле, что вы можете рассказать про паттерн фабричный метод. Ещё до кучи вопросы про триггеры и хранимые процедуры в SQL. Не особо понял зачем джунов этим грузят, дать простые задания и посмотреть как решает, а дальше в процессе работы уже втянется) Ну не суть. Приходил к нам как-то человек, хотел устроиться на позицию джуна, технически всё делал правильно, тестовое задание тоже все выполнил отлично, видно что мозги работают как надо. А вот речь не поставленна, запинается, плохо формулирует мысли, не может объяснить и техническими вопросами до кучи допинали. Сказали ему что он не подходит и ему ещё надо подучиться, а через пару дней его взяли в нашем же бизнес центре в другой компании на ту же позицию. А наши вместо него взяли чувака который разбирался кое-как, зато язык был подвешен и уверенности будто он второй Марк Цукерберг и красный диплом вишенкой на торте. Как итог, за 3 с небольшим года тот первый парень вырос в крутого спеца, из серии "было скучно, выучил за ночь норвежский", а наше второе пришествие Марка Цукерберга уволили не продержав и месяца потому что он был необучаем и считал что уже всё знает.
@@timtom489 поучительная история, и пишете вы классно)) 👍
@@timtom489 Прям поставил бы +миллион к вашему комментарию. Действительно, от программистов, в том числе и потенциальных, не стоит ждать супер подвешенного языка. Рад за того парня, который попал в ту компанию, где вырос
@@timtom489 Это говорит о том, что компании, в основном, хотят, чтобы джун в теории разбирался на заебись, Это бред. Джун на то и джун, чтобы на работе многое изучать. Стажеры и вовсе почти ничего не знают. В баню. Этому челу нужно на уровень миддла собеседоваться, если он практик, конечно. Там не будет дурацких теоретических вопросов.
@@timtom489 я удивляюь, откуда джун будет помнить фабричный метод, когда у него практики мало. Для того, чтобы запомнить паттерн, нужно его пару раз на практике попробовать. А этих паттернов общеизвестных десятки. Пока все опробуешь, уже года полтора продет. Уже нужно будет на позицию миддла устраиваться, а не юниора.
Очень здорово 👍 побольше бы такого контента. я так погрузилась в это собеседование, что меня даже потряхивало немного) как будто я на месте этого парня собес прохожу)
У меня опыт 2 года и то некоторые вопросы пошел гуглить. Люблю такие видео, т.к. помогают развиваться.
+++ аналогично
Тут ситуация как с вождением, водить все умеют, а отправь сейчас повторно на экзамен по вождению и если повезет то может треть с правами останется)
А это потому что спрашивают ненужную чепуху которую не используют в реале.
Спасибо, Сергей, за ваш канал. Видео интересное, парню удачи в обучении и поиск работы. Данный формат видео - золотая жила. И было бы здорово, если бы вы озвучивали правильные ответы если собеседник ошибается
Интересный и очень полезный ролик для тех, кто только начинает карьеру. Но, возможно, некоторые вопросы слишком широкие для джуна. К примеру как работает сборка мусора. Очень обширная тема, начиная с простого упоминания поколений, режимов работы GC и заканчивая наличием allocation context и причин выпадения OOM. Кажется, что для джуна может быть сложновато. По мелочам, про Using. Развернется он не в try/catch/finally, а в try/finally - но мелочь, просто небольшая придирка с моей стороны)) И мне кажется, что для джуна жестковато подразумевать, что он полезет на старте изучения в IL-код и будет смотреть, что во что разворачивается)) По поводу рекомендации изучить как работает стек и куча - отличная рекомендация, которая действительно поможет в базе понять, как аллоцируется память и как там размещаются данные.
Возможно, на базовые важные вопросы парень и не ответил, но в целом кругозор весьма неплох, подтянется немного и пойдет дальше, я считаю, что держался весьма достойно.
В общем, Степан, большой респект вам за подобные видео, я думаю, что многим начинающим будет полезно посмотреть. Но не с целью понять и заучить, а что же спрашивают на собеседованиях, а с целью изучения именно того, что первоначально нужно для начала нормальной работы.
37:58 тут ошибочка, строка работает так же, как и все другие ссылочные типы, то есть если присвоить одну строку к другой, то они будут ссылаться на один и тот же объект в памяти.
Мало того, благодаря такой штуке, как string interning, даже
str1 = "foo";
str2 = "foo";
Будут ссылаться на один и тот же объект. И даже
str1 = "foobar";
str2 = "foo" + "bar";
Ссылаются на один и тот же объект (то есть когда конкатенация может быть выполнена на этапе компиляции)
"Если пропускаешь базу, то потом специфичность становится магическим!", - хорошо сказано!
Можно базу не пропустить, а часть базы забыть. Например, я неплохо знаю С++ уровня 2014 года. С# немного знаю. Если спросят по плюсам, на которых я прагаю совсем не часто, не факт, что на все теоретические вопросы я отвечу. Если спросят про С#, на котором я тоже прагаю редко, то я не отвечу на треть теоретических вопросов. Вот так. Нужно дать тестовое онлайн и посмотреть как он справится с ним. Офлайн тестовое на несколько часов без оплаты - плохой тон.
парнишка молодчина, желаю ему успеха в его цели)
Miposhka пробует себя в програмировании, честно сказать не ожидал, но парень молодец даже после победы на TI 10 всё равно ищет разные способы реализации!
Честно вообще не похож
Мипошке до конца жизни теперь можно не работать. А вот товарищ реально не похож.
К собеседующему претензия, что если кандидат не отвечает на вопрос, он должен сам ответить, потому что такие ответы усвоятся сразу и надолго! Так делают в нормальных компаниях, а не то, что собеседующий всегда отвечает "Ну там потом почитаешь". При таком ответе собеседующего у меня возникают вопросы к его компетенции!
Ну собеседующий к тому же часть вопрос сам смотрит с тетрадки или с чего то еще)
я на собесах всегда тупо спрашиваю а какой правильный ответ и почему, 20 собесов и считай книжку прочитал 5 раз))
@@MrNBelkovхарооош)
Отличнейший формат . Кандидату спасибо за смелость ,ты очень не плох . Жду интервью о твоей первой работе разработчика 👍
А вот тут проблемка будет, нужен опыт, а чтобы был опыт нужна работа))
@@denisn6408 ну как то люди начинают работать ,иначе бы никто и не работал 🤣
@@Ruslan__Ishmuratov по факту, конверсия очень маленькая.
@@denisn6408 а вы сами работаете ?
Уже работает) Мой коллега)
Спасибо за видео, Степан. Очень познавательно. Сам хочу свитчнуться (36) и ожидаю своего 4 технического собеса. две трети вопросов из озвученных здесь мне никогда даже не задавали, никогда не знаешь что тебя ждёт.
как успехи?
@@yourownazog8069 предлагали тогда идти на qa я чет отказался :) сижу дальше ищу
@@Tinyismyson то есть, вы пошли на собеседование, немного его завалили и вам потом сказали, что .NET разработчиком взять не могут, но могут предложить работу (стажировку) QA C#?
@@Tinyismyson вы уже больше 4 собеседований посетили?
@@yourownazog8069 ага, теперь пробуюсь поварится в опенсорс, на проекте space station 14. Как начну читать его без проблем - попробую еще раз
Спасибо большое, даже несмотря то что собеседование об C#, помогло мне вспомнить некоторые детали Java. Немного было сложно понимать некоторые вопросы из за недостатка незнание слов на русском, так как изучал на итальянском..
Ля сеньор, муча грасиэс дэ компайлер
37:57 нет, при присвоении строки копируются по ссылке, другое дело, что изменить их внутренне нельзя, потому что они неизменяемые (immutable), у них нет состояния, а при присвоении литерала в новую переменную попадает новая ссылка, поэтому в старой переменной остается прошлое значение
Изменить при желании можно)
string s1 = "Привет";
string s2 = s1;
bool EqualsResult = Object.ReferenceEquals(s1, s2); // TRUE
@@Hunter314414 Нет, строки копируются по ссылке. Правило интернирования действует только на известные во время компиляции строки (т.е. на константы) и тогда, когда вы явно вызываете String.Intern.
Шикарно, чем жестче, тем интереснее и полезнее, спасибо!
Интересно, а что делать если собеседователь неправ?) Как, например на 38:00 . s2 в данном моменте будет иметь ссылку на ТУ ЖЕ строку что и s. Отличается только поведение при попытке "переписать" строку, так как она immutable.
Говоришь, что собеседователь не прав и доказываешь.
У меня в том году было 4е собеседования, 2 - на XAMARINе, 1 - Fullsteck и 1 - WPF и Backend. И ни на одном у меня не спрашивали то чего спрашивали в первой половине видео, спрашивали про опыт про паттерны, показывали код или я показывал код, для последнего собеседования сделал тестовое задание. Про GC спрашивали на двух собеседованиях, почти везде про DI, ну и про ООП
взяли хоть на работу
еще раз вам спасибо ! очень хочется с вами по общаться в свободное время !
Душнилово собес. Всегда поражался с таких уважаемых. Я б спросил работу с памятью, оптимизацию, паттерны, структуры данных и вуаля. Беги парень от таких собесов)
С такими собесами на джуна, лучше сразу на мидла идти)))
Прикалываешься? Парень ноль полный
@@SergFreest Это ты прикалываешься? Если бы парень был полным нолем, то он почти ни на один вопрос правильно бы не ответил. Ноль это ты, скорее всего. Теоретически может быть ты и не ноль, а по практике около ноля. Знаю такие конторы, которые только по теоретическим знаниям берут. Потом увольняют таких работников.
Спрашивать про оптимизацию, работу с памятью у человека претендующего на позицию джуна?)
Ну вроде обычный собес, что бы прощупать
Привет! Спасибо за интервью, но я так и не понял почему на 37:30 говорится, что ссылки будут указывать на разные объекты в памяти? Они же будут ссылаться на 1 обьект. В данном случае строки ведут себя как ссылочный тип
Давайте не путать собеседование с экзаменом. Экзамены в университете, в результате которых заносится оценка в ведомость и выдается диплом. Спрашивать на собеседовании часами - не только глупо, но и портит репутацию компании. Так как рабочее время расходуется неадекватно. Засиживаться на работе ради вас часами никто не будет.
А сколько обычно такие собесы отводится времени? Или они дробятся, сегодня познакомились пообщались с hr, бабки мотивация , цели, в другой день уже техническое собес и потом тестовое?
@@zergzerg4844 Тестовое не везде есть. Тестовое, если оно офлайн, не должно выполняться за бесплатно. Особенно, если на его выполнение уйдет больше 1-2 часов. В крупных компаниях собес дробится на, минимум, 2 части: 1) hr; 2) техническое интервью. По видосу видно, что контора не далеко ушла от шараш-монтажа.
Собеседование обычно 1 час максимум и их обычно 3 штуки:
1. с HR - до получаса,
2. С техлидом - до 1 часа. Вместо этого может быть назначено тестовое (отдельное время и степень неадеквата тут может быть самой разной как по времени так и по задачам) + разговор по тестовому заданию.
3. С принимающим на работу - разговор по деньгам + подписание документов, если готов сделать это сразу - до получаса.
Согласен. + Вопросы лушные, я бы уже на втором вопросе ливнул. Что будет если поделить 2 на 3 в INT. Брет блять. Бан будет, достаточно знать что нехер в целочисленный тип, сунуть результат деления, даже если он без остатка.
@@eduardlazarenko7910я вообще считаю, что не нужны эти вопросы на собеседованиях, пустая трата времени. ничего они не дают
Знания как для начального уровня хорошие, кандидат молодец!
Читаю книгу Троелсена и оказывается там описано все что было бы на собеседовании
Про свою жену и детей он там не пишет?
@@TheNofxsss вроде нет у Рихтера(CLR) вроде бы написано о своей семье
Кандидат держался достойно, видно, что сейчас изучает многие вещи и имеет стартовые знания.
Но при этом ни раз кандидат говорил КАК делать правильно, но не мог капнуть и рассказать ПОЧЕМУ.
ИМХО, я бы рекомендовал не зацикливаться на книжках, а закрывать именно те пробелы, что вскрываются на подобных собеседованиях.
Можно даже попробовать еще пройти где-то собеседования и понять какие вообще знания сейчас нужны на рынке. Посмотреть на какую сумму могут оценить текущие знания и понять, что нужно подтянуть, если хочется прыгнуть выше. Или же просто посмотреть статьи на Хабре на тему собеседований, изучить список типичных вопросов и ответов.
Парень молодец, очень много знает для джуна, с вопросами про стек и кучу не ответил, это серьезный минус, еще не был задан вопрос про "ref и out" параметры, как они изменяются в методе, это тоже часто спрашивают. Если отталкиваться от знаний шарпа, то много тем было пропущено, да и вообще оценить уровень фундаментальных знаний в шарпе не так уж и просто, при желании человека всегда можно отсеять, если копнуть чуть глубже, хотя бы до уровня Рихтера. Для быстрого "въезда" c# не подходит, так же как и c++ или java, другое дело python или рhp, парню однозначно уважение и надеюсь ему повезет с работой, потому что фундаментальные знания это хорошо, но даже они без практики быстро забываются, а вечно учить теорию не возможно, через какое то время одна информация, начнет затирать другую.
Автору спасибо за ролик, я как человек с опытом в шарпе для себя некоторые вещи новые узнал.
Спасибо за поддержку :) про стек и кучу я потом посмотрел и я бы не сказал, что эти знания сильно помогают в работе, если до этого я знал про то, что вэлью типы работают быстрее, что они копируются при передаче в метод, а чтобы не копировались нужно передавать с ref, что out параметр кидает значение в переменную метода, помеченную, как out, что ссылочные типы наоборот не копируются при передаче в метод и нужно делать велосипед в виде var ... = new ... {New.p1 = old.p1, ... }. Когда знаешь про область видимости переменных в методах. Я копал как бы в практические, так сказать, постулаты, применения методов, но не в их причину. Через стек и кучу можно в это зайти и будет даже быстрее понимание. Но само здание что стек это быстрая память приложения, а куча память компьютера и что в стеке хранятся вэлью и ссылки, а в куче значения ссылок, не рассматривая исключения, типа когда программист зачем-то сделал структуру и засунул в нее 3 ссылочных типа и подобных штук, не помогает в работе. Я учил, получается, именно как можно делать и как нельзя делать по причине просто потому что опытные ребята так сказали, если копнуть глубже то там оказывается вот теория про память, которая не применяется, а если ещё глубже, то там будет уровень ассемблера, а ещё глубже физика процессора и разных поколений. Но при этом я выбрал C#, как высокоуровневый язык как раз, чтобы не копать туда, я мог бы выбрать Си или ассемблер и я пытался в них разобраться, но это просто не интересно было. Мне нравится делать рабочие прототипы программ, чтобы данные удобно водились пользователем, ошибки обрабатывались, на сервере все тоже хорошо обрабатывалась, приложение работало быстро и приносило пользу. В последнее время мне ещё стала интересна тема архитектуры приложения и я туда копать стал, но никак не в более низкий уровень. Этому и ответы такие были. Ну и собес был чтобы закрыть свои дыры как раз.
Если провести итог, то я редко хочу узнать, что лежит под копотом штук, которые дали разработчики языка или разработчики nuget. Для меня главное, чтобы они работали так, как указано в их документации. Детали реализации там обычно никто не указывает. И всякие вопросы по типу: а во что разворачивается out на уровне il кода? А на asembler? А как это на процессоре передается? Или аналог про слова string, int, delegate, new, this, event, using, class, virtual и т.д. Завалить можно, как ты сказал, на чем угодно, если копнуть поглубже, согласен.
@@VetalGimbarr На практике большинство из того что спрашивают на собеседовании редко нужно, даже если затрагивать тему оптимизации, то пока у тебя все работает, то заботится о ней не нужно, а все эти вопросы только для того чтобы пройти собеседование, я не так давно проходил собеседование в один крупный банк и у меня все это спрашивали, понятно что везде разные требования и junior это надолго пока не научишься не только повторять это, но и думать в контексте этих данных. Но ты молодец и советы коллеги тебе дают хорошие, удачи.
@@darkcrusaderzxc Согласен)) НО, если появится "узкий" кусок кода, ты не сможешь его оптимизировать, если про память и ASM ничего не знаешь)) Другое дело, что вряд ли в работе современного "бэкэндера" он появится)) На моей практике, такие куски кода появляются только в моих домашних проектах, вот последний раз писал A* для поиска пути на большой карте, для моего бота WoW, там пригодилось, все-таки граф в 100 000 000 нод - это не шутки)) Бизнесу нужны тупые, повторяющиеся действия, высшая математика и знания компуктера почти не требуется)) Особенно смешно, что современные "Веб-программисты" мидл уровня даже не знают как сеть работает, а зачастую не смогут даже HTTP запрос в блокноте написать, ну а что такое маска сети это вообще тайна)))
Чтобы ответить на вопросы про стек и кучу нужно знать С++ хотя бы на более-менее сносном уровне. Он его явно не знает.
Гораздо прикольнее когда себеседующий отвечает на вопросы а не просто говорит - иди почитай.
а что гениально и умнее кажешься хD
Интересный ролик, полезный, спасибо автору.
Прошел собеседование благодаря этому видео, многие вопросы повторялись. Правда результата пока жду)
И как, прошел? Сколько вообще заняло обучение?
@@HeIvis "вы хорошо прошли собеседование, но мы нашли кандидата с более глубоким опытом". С год примерно, но тут у каждого свой график, по свободному времени. У меня его было мало
Все опнравилось, но честно говоря, первый вопрос очень с float/decimal/double душный. От кандидата я бы просто хотел услышать в таком случае, что при работе с критичиски важными арифметическими операциями нужно граммотно подходить к типам данных чисел. А валидный тип можно путем поиска инфы в гугле найти
string s = "привет"; string s2 = s; - ответ не правильный! ссылаться будут на один объект т.к. есть такая штука, как интернирование! и строки изменить можно небезопасным кодом, но потом не только поменяются значения всех её переменных, но и вызов и присвоение неизменённой версии будет возвращать всегда изменённую!
Это какой язык? В C++ и C# не так. В данном случае переменная s2 не будет ссылаться на переменную s. В C++: string & s2 = s - будет ссылаться на переменную s. В C#: ref string s2 = ref s.
@@vladimirandreev9022 Это какой язык? В английском не так. В данном случае вообще буквы не из того алфавита.
@@vladimirandreev9022 так тут и не написано, что переменная s2 ссылается на переменную s! Они обе ссылаются на один и тот же объект в памяти, и если изменить переменную s = "пока", то только она будет указывать на новый объект в памяти, в то время, как s2 будет хранить старое значение, тобиш "привет".
26:18 порядок булевых операторов же, сначала идёт &&, потом ||, те понимание различия есть, но ответ абсолютно неправильный. Т.е. в первом выражении если A=true, то дальше ничего не проверяем
Вопрос был про разницу между && и &. Весьма странный комментарий)
@@VetalGimbarr Ну те по вашей логике, если вас спрашивают про правило жи-ши, а всё остальное предложение написано абсолютно неправильно и с ошибками 1 класса, то плевать, главное то, про что спросили?
@@DardellX эм, разумеется, про что спросили, про то и ожидается ответ. Котлеты отдельно, мухи отдельно.
Так про строки собеседующий сам не в курсе. Когда пишут
string s = "a";
string s1=s;
Не будет создаваться новая строка для s1. Откуда вы вообще взяли это?
При конкатенации да, будет, но не в этом случае. Это блин принципиальный момент, можно сказать идеологический
bingo
Отличное видео, полезный контент, интересно временами посмотреть коллег по цеху, познавательно) 👍
Степан, можете оставлять вопросы с таймкодами, спасибо за выпуск!
Насправді дуже круте відео, дякую за такий контент.
рад, что видео полезно для вас
Сергей, борода Вам очень шла к лицу.
Надоела
Но отрастает быстро) Если че дело не долгое :-)
@@SBeregovoyRU не стоит вестись на чужое мнение. Будь собой
Очень хорошее видео, Спасибо!! Смотрю и вижу, что было с моей стороны правильным решением изучать С++ по видеолекциям с торрента. После них нет вопросов по массивам и типам данных. Видимо в лекциях по С# это упускают. Кодить приходилось кустарно и на С++ и больше всего на С#.
1:17:40 внимание на субтитры XD
Мне страшно представить какие вопросы задаются на собеседование джуна C++
37:30
Не совсем с вами согласен. s2 действительно будет ссылкой и они вместе с s будут ссылаться на одну область памяти. Но строки immutable, изменить значение по ссылке не является возможным.
Это кстати легко проверить
var s = "hello";
var s2 = s;
Console.WriteLine(object.ReferenceEquals(s, s2));
//OUTPUT: true
Да, я уже писал в комментах, что пример неудачный.
Тоже когда смотрел, т.к. есть понимание АСМ и т.д. и того, что строки иммутабельны, возник в башке вопрос - "а нахрена в случае копирования создавать новую строку?")) И Было предположение, что вряд ли создатся, что просто копируется адрес и что майки не дегенеры))) Спасибо, что подтвердили)
@@Hunter314414
var s = "hello";
var s2 = new String("hello"); // ReferenceEquals false
@@demonspel При чем в данном случае new? Вы сознательно указали новый объект строки.Конечно здесь ссылки будут разные.
ну нормальный пацан на самом деле.
по теории проседает, но на практике вроде какой-то опыт есть - а теория она приходит по факту.
ко мне приходили на мидлов и похуже :)
и я вообще с позиции swift на все это смотрю, некоторые моменты удивляют, но в целом все достаточно похоже, ну за рядом отличий, например у нас сборки мусора нет - есть ARC и по нему обычно хорошо гоняют на собесах. по факту это просто retain release на этапе компиляции, но многие "мидлы" думают что это какой-то там цикл в рантайме ( некоторые даже ранлуп вспоминают ради этого ), который убивает мусор.
забавно что у нас была одинаковая реакция когда он упомянул про наследование и про DI - я тоже втупил и аж на паузу поставил чтоб осознать :)
спасибо. Отличное видео)
Это на Junior или на Middle?
Для Junior вполне нормально - я бы его взял
Спасибо. Видео очень полезное.
почему написано, что собеседование? это больше смахивает на экзамен с натягиванием отличной оценки со стороны препода))
На вопросе "36:18 - Какая особенность при передаче ссылочных типов? Ссылочные vs значимые типы.". Вы спросили, будут ли 2 строки ссылаться на один и тот же участок памяти, вы отвечаете нет. Если 2 строки привести к object и сравнить в ReferenceEquals то будет true, а ReferenceEquals как раз таки сравнивает равенство ссылок. Разве здесь не работает правило интервирования строк ?
Да, здесь ошибся он немного, в данном случае ссылка будет одна, если бы вопрос был с применением StringBuilder, например, были бы разные
спасибо, интересно вышло, лайк от СЕООНЛИ
22:00 (приблизительно и дальше пару минут)
Почему у него в компиляторе выходит с неточностью (скриншот) , а у меня на VS 2010 ULTIMATE всё корректно?
Подскажите как работать со звуком, генерировать и анализировать на низком уровне. Какая библиотека.
Касательно ИИ, у OpenAI уже есть ИИ, который интерпретирует текстовые команды на натуральном языке в готовый код. Например, ему говоришь: "напиши программу, которая проверяет является ли строка палиндромом", и он выдаёт непосредственно код, например, на питоне. На ютубе есть их ролик, вроде
В райдере уже встроена поддержка ИИ, уже шарит по гитхабу и выдает варианты.
Он просто шаблоны тебе выдает, это не ИИ который пишет осмысленный код, до этого еще далеко, современным процам и накопителям, так и подавно, лет (вы столько не проживете) можете быть спокойны господа)
@@ЕвгенийГорелов-е1з Не совсем понял про шаблоны. Что вы понимаете под этим? Ему написали: "сделай так, чтобы игрок мог двигаться вправо-влево стрелочками" и он написал соответствующий код с нуля, о каком именно шаблоне речь?
@@anonim1788 такого нет, есть хня, когда ты набираешь начало функции или название и она варианты предлагает, то что вы выдели просто рекламная байда, с оправданием типа "это прототип, но если вы нам дадите денег, то мы уж точно сделаем...."
@@ЕвгенийГорелов-е1з Вы уверены, что мы говорим об одном и том же проекте? Почему Вы говорите, что такого нет, если буквально то, что я написал, есть. Они даже раздают демку
Почему проходит собеседование он, а дикий мандраж у меня? Тоже начал стул в разные стороны крутить :D
Испанский мандраж😁
Да, собес это нервное дело. И кстати для того кто спрашивает тоже.
@@SBeregovoyRU значит неправильно подходите к этому процессу
@@leonidpro3664 Хз, как по мне решать в какой-то степени чью то судьбу ответственный, нервный процесс. Не хочется принять ошибочное решение причем ошибочным может быть как найм так и отказ.
Виталий силен. Программировать будет по любому. Умный парень. Интересно узнать - работает ли он уже?
Работает)) собес помог найти слабые стороны, подтянуть их и устроиться
начну изучать С#
через 3 месяца посмотрю это видео, посмотрим смогу ли ответить на вопросы
Скорее всего не сможешь и это будет нормально.
Объем знаний который он спрашивает какой то неибический. я 3 года уже работаю и даже на половину фиг отвечу с наскоку.
На самом деле когда хуячишь в прод , большинство из этих знаний не пригождаются и вылетают из головы через месяц.
Чтобы уверенно рассуждать на все эти темы нужно не уметь писать код, а уметь проходить собеседования. Эти навыки пусть и частично перекрывают друг друга , но по большей части они разные.
Более того , я закинул видос в чат и у нас даже синьоры сказали что это как то слишком круто для джуна.
@@gogibeet та я уже c++ изучаю, ОТМЕНА ПАРНИ ОТМЕНА
@@gogibeet тут на самом деле ещё довольно лайтовое собеседование, в реальности джунов ещё на порядок сильнее гоняют.
@@timtom489 откуда такая уверенность?
@@gamb5730 Как успехи , что в итоге изучили?
Спасибо за видос, помогло устроиться на стажировку в классную IT компанию)
Привет, а не скажешь в какую компанию ?
@@licajina9882 Godel Tech
37:30 Хм... А разве не произойдет интернирование строк?
Думал коммент написать, а уже есть. В данном примере это будет ссылка на одну область памяти.
var s = “a”; var s1 = s; s и s1 ссылаются на один объект. Но var s = “a”; var s1 = s + “b”; ссылаются на разные объекты. Таблица интернирования строк !
"var s = “a”; var s1 = s; s и s1 ссылаются на один объект" - вы не правы. В данном случае это не ссылка, а копия. В новую переменную копируется значение другой переменной. Так в JavaScript, C++, C#.
@@vladimirandreev9022 так я про это и говорю
Мне одному кажется, что Виталий его сын?)
Да с парнем все предельно ясно - это вылитый прогер, бледный флегмат в очках), а за собес лайк
Когда гость канала уже ответил на вопрос, очень не хватает правильного ответа или дополнения ответа.
Я очень много прокомментировал и где-то дал ну очень развернутые ответы. На реальном собесе такого не будет.
Не факт
Не думаю что вы ответите, НО ОЧЕНЬ ХОТЕЛОСЬ БЫ. Перерыл пол интернета, но адекватного ответа не нашел. Почему все таки в типе decimal при добавлении 10 раз числа 0.1 будет не 1.0?..Компилятор боится лишний раз превращать десятичную дробь в целое число? Я знаю что double и float округляют значения после 6 и 15 цифры после запятой, но ведь тут четко написанно 0.1 а не 0.999999999...
Это не компилятор и его особенности. Это особенности работы процессора и вообще устройства чисел с плавающей запятой. Есть видео на эту тему у Тимофея Хирьянова. Точно в каком видео не скажу
Децимал это что-то про децла?
когда он сказал про DI я уже за него испугался там столько вопросов можно было не для джуна закинуть)))
Да, как говорил Михаил Портнов, отвечайте только то что вас спросили и не давайте лишнюю информацию) Если спрашивают знаете ли вы сколько времени, надо отвечать да, а не называть время, ибо вас спросили знаете ли, а не сколько сейчас на часах))
Правильный тон собеседования это когда кандидат ошибся или не знает, объяснить/расскрыть кратко ему правильный ответ. Иди читай.. Не очень комфортный вариант
так стопе. С строками какая то лажа. Как это при при вот таком у нас два разных объекта будут? объект один и ссылка в пуле на него
var s = "test";
var s2 = s;
Console.WriteLine("s.GetHashCode= " + s.GetHashCode());
Console.WriteLine("s2.GetHashCode= " + s2.GetHashCode());
Console.WriteLine(s.Equals(s2));
Console.WriteLine(s == s);
Console.ReadLine();
Да, не удачный пример. Отработает интернирование
@@SBeregovoyRU даже без интернирования строки копируются по ссылке. С интернированием у всех одинаковых строковых литералов одинаковая ссылка, т.е. изменив литерал в одной ссылке, изменяются все строковые литералы в других ссылках, все в рамках safe кода.
По поводу string. Да он immutable class, но в нем реализован паттерн flyweight, есть внутренний механизм интернирования строк. Если string s = "привет" и string s1 = "привет" - то это автоматически не схлопнет в один экземпляр на куче и s и s1 разве не станут ссылаться на один и тот же объект?
и не только, если у тебя есть string s2 = "при" + "вет" это тоже интернируется
Интернируются автоматически только строки, которые заложены во время сборки. Строки, образованные во время исполнения не интернируются, и на то есть причина - это неоправданно дорого. Рассмотрим простой пример, где есть определенная область взаимодействия с пользователем - обработчик запроса в asp net. Допустим, мы хотим, чтоб мы взяли из запроса две строки, сложили их и вернули пользователю. Если бы дотнет интернировал строки, полученные в рантайме, то по окончанию запроса две изначальные строки и одна итоговая останутся в памяти, так как они интернированы. Получается, каждый запрос увеличивал бы использование памяти на три строки. А что будет, если произойдет тысяча разных запросов?
это я знаю, я ж описал ситуацию где идет интернирование в момент компиляции. Кстати, интернирование еще можно вызвать вручную на объекте string
@@ВячеславДудка-к2м мне показалось, там был вопрос, и я на него просто ответил.
👍
string Text = "Привет";
string SubText = Text;
В данном случае SubText будет указывать на тот же самый объект строки в памяти. Ничего нового создаваться не будет. Это можно проверить "object.ReferenceEquals(Text , SubText)".
Но если вдруг переменная SubText измениться, то только тогда приведёт к созданию нового объекта в памяти.
сппсибо вам огромное !
Если это Junior, то как тогда выглядит собеседование на Mid и Senior? Боюсь представить 🤣🙈
На mid/senior совсем другой принцип собеса. На Junior мало кто ждёт правильного ответа на все вопросы. Тут важнее узнать общий кругозор. Ну и увидеть принцип мышления. В выборе джуна важнее то, как хорошо и быстро он будет учиться и какая у него есть база.
При выборе мидла и сеньора мы берём уже сформировавшегося разраба и на его обучение не хочется тратить деньги и время. Тут важнее узнать про его опыт, как он решал те или иные проблемы. И, возможно, про конкретные технологии, которые используются в компании.
По итогу, собеседование на джуна, как мне кажется, самое сложное.
это точно на джуна собес? :)
Вопросы лёгкие, просто почитать документацию и запомнить важное)
Ко всем легким вопросам готов не будешь. Никакая документация не поможет. Память не бесконечная.
Я на собесах задаю подобные вопросы и все факапятся)) Все знают про СОЛИД и ни один про память и как все устроено) Но честно говоря, для продукта, который разрабатываем мы, это и не надо, потому берем, даже если человек не знает основ, главное чтобы код показал....
Другое дело.
Добрый день! Как то можно попасть к Степану на такое же собеседование?
var s = "Привет";
var s2 = a;
У нас тут создается новая строка???? Серьезно???? Может вы перепутали со сравнением строк по значению?
Я себя считаю вообще нолячим трейни, но когда я вижу, что человек, который находится на тестовом периоде в компании не знает отличия между стеком и кучей, у меня возникает много вопросов. Хотя со стороны видно, что он показал какие-то конспекты, какие-то книги читал, но все, что ч выше перечислил - это элементарщина из видеоуроков, на ютубе
где ты нашел информацию про тестовый период в компании? Это собеседование спустя год изучения интервалами неделя учебы через 3 месяца отдыха и 1 месяцем целенаправленной учебы), т.е. по факту времени где-то 2-2,5 месяца. За это время изучены только курсы, метанит. К собеседованию целенаправленно не готовился, просто было интересно что спрашивают на тот момент по C#, к чему готовиться, насколько досконально спрашивают теорию, которая никогда не пригодится и т.п. Если ты знаешь все, что спросили тут и у тебя есть практика, как у меня была на тот момент, потому что я именно практику делал, я на тот момент за 2,5 месяца сделал 3 прототипа игр на unity + C#, штук 20 различных консольных приложений, 3 приложения на wpf, одно на asp net core. И, честно, ни в одном не понадобилось именно определение из книжек стека и кучи, знания реализации стринги и стринг билдера под копотом и т.п. Вполне достаточно знаний о том, что есть разные области видимости переменных, знание, что есть IDisposable объекты, есть объекты на которые хранятся ссылки в памяти и их нужно обнулять вовремя. Я лично, спустя 2 месяца после этого собеса подтянул знания, ещё больше практиковался и устроился на работу и по сей день работаю, так что и тебе советую устроиться, потому что в этом собесе большинство базы есть, а некоторые вещи даже на уровне senior задач спрашиваются.
Степан, здравствуйте. Подскажите пожалуйста, какой из этих двух людей на ваш взгляд станет программистом - Первый это тот, кто фанатеет от программирования, но не обладает хорошим логарифмическим мышлением. А второй наоборот - имеет среднюю мотивацию к изучению, но очень хорош в математике и логарифмах ?
Вопрос веду к тому, что более ценно в программировании - фанатизм, усидчивость или с рождения умение решать хорошо задачи и качественно ? Но выбрать можно только одно.
Конечно тот кто фанатеет в конечном счете значительно превзойдет того у кого хорошая база
Что такое логарифмическое мышление? Это умение решать алгоритмичиские задачки по логарифмической сложности?
Здравствуйте. Вы упоминали в вопросах про объекты что вроде как в стеке хранятся некоторые метаданные этих объектов. Не могли бы вы кратко сказать, что это за данные и по каким тегам о них можно найти информацию?
Почитайте, например, Рихтера
Как человек за кучу вопросов к нему поймет что-то о компании и что ему следует здесь работать? Кроме того что здесь очень нудно и время тратится впустую
если вам нудно программировать и заниматься самосовершенствованием в программировании - вы явно выбрали не ту профессию
@@SBeregovoyRU тут дело не в нудности, а в неадекватности подборщика
Степан, добрый день. Изучаю С# больше года. Еще не работал. Можешь ли ты провести собеседование со мной? Заранее спасибо
А смысл проводить с каждым? Включаешь это видео и проверяешь, сможешь ли ты ответить на эти вопросы или нет?
Яб тоже попробовал пройти собеседование. Только на работу чтоб взяли, если подойду))) Более 18 лет системный админ. И возраст уже не тот( Не хотят в регионе брать.
Единственный интересный вопрос Отличие IEnumerable от IQuerable - но на уровень Expression Tree так оттуда и не спустились
Про коллекции бы еще спросили )
ДУШНО ОЧЕНЬ xDDD
Может форточку открыть?
@@SBeregovoyRU На собесах у себя форточки открывайте)
Жаль сразу нет ответов на вопросы :)
Это собеседование на сеньора. Я не верю, что такими знаниями должен обладать джуниор.
любой, кто прочитал пару книг по шарпу ответит на все вопросы и даже глубже на все вопросы из первой части видео
@@sp1ne2104 какие книги посоветуете?
@@lucefan2816 Andrew Troelsen "Pro C# 10 with .NET 6"
@@doberman7395 спасибо!
Как запуститть в Viual Studio Code интерактивный режим?
В целом хорошо, но как то мало про .NET, где про CLR, компиляцию программы, сборку, модификаторы доступа, дженерики, коллекции, linq. Лучше вместо partial классов, спросил бы, например, про отличие абстрактного класса от интерфейса. Про TPL тоже стоило спросить, не согласен с тем, что это не надо трогать, общее понимание должно быть, хотя бы что это такое и зачем нужно
Понятно, что можно было много чего еще спрашивать. Но у нас тут не марафон на знания .net. Итак собеседование заняло 2 часа.
В чем отличие абстрактного класса от интерфейса - самый заезженный вопрос. И особенно бесит, когда правильным считается ответ "Класс наследуется, а интерфейс имплементируется". Увольнял бы собеседовальщиков за такое.
@@9285550
Интерфес уже может содержать имплементацию функций. В современном C#, где-то с версии 9.0.
Прогресс, однако... :)
Впринципе теории вполне достаточно для прохождения собеседования, но я бы больше смотрел на код.
Привет! Можно ли как-нибудь связаться с участником ? ) Очень интересно с ним пообщаться
Я вот сейчас начал изучать c# мне 32 года. Образование 11 классов и заброшенная вышка. На сайте Юлерн бесплатно пока прохожу программу, думаю какие курсы купить. Вакансий много, проблем с трудоустройством не вижу.
Как успехи спустя пол года ?
забросил или устроился куда7
Не думаю, что с такими знаниями возьмут на джуна. Я год назад в епам на треннинг проходил собес, там вопросы были гораздо сложнее.
Аналогично, у нас многие джунов не читавших Рихтера даже рассматривать не хотят и часто гоняют по паттернам и внутреннему устройству самой платформы, причем далеко не верхами. Вспоминая как я заканчивал универ 5 лет назад, у нас 80% были нулями и ушли в макдак, процентов 15 максимум с гуглом и косяками вывезли бы сделать калькулятор, ещё процента 4 смогли бы запрограммировать алгоритмы быстрой, пузырьковой сортировки, бинарный поиск и алгоритм Дейкстры, на этом всё и вот только один на сотню был такого приличного уровня. В итоге почти все кто хоть что-то умел как-то устроились на последнем году обучения через приходивших в универ рекрутеров, а вот самый умный чувак, имея награды за проекты, возможно из-за скалада своего характера, оказался за бортом и пять лет работает за 20к руб сис админом в поликлинике.
@@timtom489 алгоритмы, которые потом почти некогда не используются в проектах
Степан, если я правильно помню, то using развернется не в try - catch - finally, а в try - finally, Поправьте , если я не прав.
да. верно
Да, так и есть. Т.е. using это так называемый 'syntax sugar'.
Каждое собеседования для программиста, это как экзамен! Страшно!
Це дочно на джуна інтервью?
А интересно, а опыт кандидата не испугает проводящего собеседование?
Если он соотносится с IT не испугает, а наоборот обрадует. Т.к. можно получить джуна с каким-то опытом.
@@SBeregovoyRU в том то и дело, что опыт огромный. Миллионы строк, но в других языках. Вот что важнее опыт, может не в том языке, или язык...
@@АлександрЧерепнев-ф7щ точно не испугает если это опыт программиста, но надо будет подумать как объяснить смену стека
@@SBeregovoyRU никак не объяснить.
Кошмар, собесы на джуна самые душные. То ли дело на сеньора, посидели, обсудили прошлые проекты, задачи, решения и разошлись, ждешь оффер. Никаких тебе зачем дабл и децимал.
может ли появиться интерес к программированию в процессе выполнения например тестовых заданий или стартапа? Хочу войти в IT, но пока только привлекают такие плюсы этой профессии как возможность удаленной работы, зарплата выше средней, но никак не могу привить интерес к написанию кода, но сдаваться просто так не хочу.
Наверно у каждого по разному, но у меня скорее наоборот. Раньше любил, но программирование на практике - это такая рутина процентов на 90%, что реально приходится убеждать себя, что тебе это нравится. Например, вспоминаю, предыдущие работы с более низкой зарплатой - такая себе, но мотивация.
Удаленная работа и зарплаты есть не только в IT. Ищите варианты для себя, программист должен в первую очередь любить писать программы. А потом все остальное.
@@SBeregovoyRU Согласен, что реализовать себя можно не только в IT. Ради зарплаты нет смысла идти, если не нравится или нет способностей, потому что можно выгореть, или очень медленно развиваться, или вообще не пройти ни одного собеседования.
@@verushkan ради за в гаспром на место милера
@@verushkan Способности к разработке есть у всех. Только у всех они разные.