Отличное, а главное, познавательное собеседование. Я смотрю все собеседования от "Отсобеседование", "Web interview", и ещё много где понемногу, но нигде ни разу не видел, чтобы интервьюер так подробно разжовывал алгоритм действий решения задачи для зрителя и самого собеседуемого. Это было очень полезно, спасибо большое!
@@UlbiTV были бы почаще такие интервьюеры, чтобы джунам, которые пробуют впервые ходить на собеседования - было понятно, что стоит подучить/подтянуть. Спасибо за видео
А я считаю зачем париться просто плейлист создать собеседования и уровни в превью видео с должностью и всё, как бы вопросы не повторялись люди то разные, и смотреть интересно(а интересные уже определять самим время от времени ну или просто кидать в плейлист) думаю каждый вынесет для себя что то полезное, возможно узнаёт себя, не знаю как у всех ,для меня слово собеседование наверное на втором месте после слова очередь и ремонт.
Случайно попался на видос интервью в Блумберг там собеседуемого попросили дополнить алгоритм по поиску в бинарном дереве, там тоже интервьювер помогал и разжёвывал
Блин очень крутой формат видео, особенно, когда один на один с книжками и курсами, а тут вдруг слышишь, как решают задачи. Одновременно видишь и слышишь. Вдвойне приятно)) Буд-то с наставником разбираешь задачи.
Задачу со скобками можно было решить проще, вместо стека объявить счётчик и если встречаем открывающуюся скобку увеличиваем, если закрывающуюся уменьшаем. В конце счётчик должен быть равным нулю, иначе скобок разное количество
@@Max-mv6gr, в общем то да :) но это не противоречит условию задачи. Сказано, что скобки могут быть в произвольном порядке, вопрос тут конкретно стоит в том, что если есть равное количество открывающих скобок и закрывающих, значит вернуть true. В твоем примере у нас одна закрывающая скобка и одна открывающая, собственно, условие соблюдено)) Короче говоря, нужно уточнять условия задачи чтобы 100% понимать какие есть нюансы.
Спасибо за видео! Нужно больше роликов, готовящих к собесам. Ты одновременно учишь теорию и практикуешься, когда ищешь решение задачки. Очень эффективно и в целом интересно.
@@UlbiTV Привет, я смотрел твой ролик про firebase и как так сделать авторизацию и при созданий папки, я использовал базовую комплектацию, и у меня нету индекс.нтмл ( 7:16 в том видео ), мне стоит начинать все с начало, или есть другой путь?
Many thanks to you, man. Your lessons are just great. They are very helpful for those who are really interested in learning something new or improving and enhancing one's skills. Learned a lot from your tutorials and interview videos. May you be prosperous in this good job of yours. Thanks a lot.
Seems that you are interested in that comment more than in video itself, my friend. I just dont write grammatically correct in russian. Hope this will be the last question.
Пора дисклеймер в название писать:))) как раз к выходным видео, спасибо большое! 2 года изучения, очень интересно, чуть позже гляну обязательно!!! Пс: всем приятного просмотра
Работаю год фронтом. Забавная вещь - я на теоретические вопросы не на все смог сразу ответить. А на практические - на все кроме одного. Это к вопросу о разнице между собесом на первую работу, когда соискатель знает кучу теории, но как правило имеет очень мало практики, и спустя год работы - когда куча неиспользуемой теории забывается, а мозг заточен под решение практических задач. Друзья, кто ищет первую работу - больше практикуйтесь! Постоянно пишите код )
Я тоже Джун, начал учить фронт с верстки 4 месяца назад, видео я начал с теоретических вопросов, и расстраивался когда она отвечала раньше меня или более четко чем я (ну типа "блин, вот она тоже Джун, но более смышлёная, а я видимо никогда не научусь программированию такими темпами"). Но когда я досмотрел видео, а потом узнал что оказывается у нее уже есть два года коммерческого опыта, то прям камень с плеч упал, ахахах. Спасибо автору за видео!
Спасибо за такой формат видео. Решал задачи параллельно с просмотром. По задаче про уникальные, не дублирующие значение, есть вариант короче, с одним циклом. const num = [1,1,2,4,6,6,5]; function unique(arr) { const unicArr = []; for (const item of arr) { const pos = unicArr.indexOf(item, 0); if (pos === -1) { unicArr.push(item); } else { unicArr.splice(pos, 1); } } return unicArr; } unique(num ) // [2, 4, 5]
Со скобочками можно было без стека обойтись, делать +1 или -1 к сумме и проверять на каждой итерации что не меньше нуля, после всех итераций проверить что сумма равна нулю и всё.
Или же взять создать один массив с открытыми скобками а другой с закрытыми,и в конце сравнивать длину массивов. Если равно то правильно если нет то нет.
Классное собеседование, узнал для себя несколько новых интересных вещей. Сам уже больше года разрабатываю на реакт, а про такую вещь, как React.memo не знал. Как говорится век живи, век учись!) Девушка молодец, успехов ей!)
Пожалуйста поясните кто-нибудь: почему Татьяна, которая работает фронтом 2 года и ее основной стек это уже реакт - собесится на позицию джуна. То есть чувак с курсов без опыта и Татьяна будут претендовтаь на одну и ту же позицию джуна в теории. Что-то я не понимаю явно
Это было интересно, мне понравился сценарий опроса, попробую применить его на своих собесах🙃 Спасибо, Тимур🤠 Было бы интересно посмотреть собес на сеньора или мидла++ по фронту
@@UlbiTV а к стати может видео запилишь на счет работы Джуна что он делает до того как начнёт самостоятельно работать краткое видео думаю многим бы было интересно таких видео я не встречал
У меня только такое вышло function withoutRepeat(array) { const repeat = arr.map((el, idx) => idx !== array.indexOf(el) && el) return arr.filter((el) => !repeat.includes(el)) }
@@nickolayivanov2848 Если банально посчитать количества и сравнить в конце, то нет. Пример: )( явно противоречит этому варианту. Нужно немного модифицировать подсчёт, берём счётчик со значением 0 пройдёмся по массиву, если встретим откр. скобку увеличиваем счётчик на 1, если закр. скобка то уменьшаем. Если счётчик ушёл в минус можно остановить цикл и вернуть false а после цикла проверяем уже равняется ли счётчик нулю.
13 лет опыта, 4 года проработал в Google и Google Nest, я бы походу провалил твое интервью xDDD, к примеру блок с finally меня поймал я наверное пишу код как-то специфически, что подобное никогда не использовал )))))
@@falsetrue7910 если счетчик будет меньше 0, на любой из итераций, сразу будет неправильная последовательность. так что решение со счетчиком корректное.
Можно сделать два счетчика один на открывающие другой на закрывающие. В цикле проверять условие что открывающий всегда больше или равен закрывающему иначе брэйк. По итогу сравнить два счетчика если они равны тру иначе фолс.
я бы страдал фигней, с распихиванием этих скобок по разным массивам, и потом сравнивал их длинну, за одно можно было бы понять, на сколько тех или иных скобок больше, если длинна массивов не ровна.
Работаю уже более 2х лет с реактом, интересно было просмотреть ролик (пусть и немного на перемотке, потому что ответ и так был известен), думаю новичкам вообще зайдёт на ура. А всякие мемо, тем кто учит реакт, надо на заметку брать и пользоваться на практике.
А в задаче со скобками можно было так решить, вроде даже понятнее? function checkBrackets(str) { str = str.split('') let counter = 0 for (let i = 0; i < str.length; i++) { const elem = str[i]; if (elem == '(') { ++counter }else if (elem == ')') { --counter } if (elem == '{') { ++counter }else if (elem == '}') { --counter } if (elem == '[') { ++counter }else if (elem == ']') { --counter } } if (counter == 0) { return true }else { return false } }
Раз уж юзаем методы массива, так юзаем) Можно конечно упороться и в строку вытянуть, но так более читаемо ну и доп скобки можно в фильтр прям запихивать function checkBrackets(str) { const arr = str.split(''); const leftBracketsCount = arr.filter(item => item === "(").length; const rightBracketsCount = arr.filter(item => item === ")").length; return leftBracketsCount === rightBracketsCount; }
32:00 Я не уверен как работает in, но сложновато поверить что она работает за О(1) В худшем случае (когда все значения разные) он будет каждый раз поиск делать по количеству уникальных значений на данный момент, что тоже n в общем случае, так что сложность чуть меньше n^2
Если я правильно помню, то O(n) - это случай когда длительность обработки увеличивается линейно относительно длины обрабатываемого массива В этом случае можно решить почти O(n). Почти, потому-что сначала придётся отсортировать массив, а O сортировки может быть разным. У меня получилось так: function removeDuplicate(array) { function compNumber(a,b) { if (a>b) return 1; if (a==b) return 0; if (b>a) return -1; } let result = new Array let current = null let add = false array.sort(compNumber) for(let i = 0; i
Оператор in в javascript поверяет наличие ключа в хеш-мапе. Это не поиск, там всегда либо есть такой ключ, либо его нет. Доступ по ключу в хешмапе происходит за O(1), как и во всех других языках программирования Другое дело что в некоторых языках программирования оператор in можно вызвать и в списках, что действительно уже не будет O(1), но это не тот случай, в js оператор in на списках не вызывают, так как это не имеет смысла, т.к. он не ищет элементы таким образом
По задачке с массивами. Имхо с объектом не очень читабельно if/else потом foreach с вложенным условием еще. Мне кажется самый простой вариант (хотя в плане скорости он серьёзно уступает): function filter (array) { const result = [] for ( let i = 0; i < array.length; i++) { const items = array.filter((el) => { return el === array[i] }) if (items.length < 2) result.push(array[i]) } return result; }
Задачу со скобками можно решить без циклов и счетчиков. function checkBrackets(str) { if (str.split(" ").filter(i => i === (" ").length === str.split('').filter(i => i === ')').length) { return true } return false }
по задаче со скобками - проще и дешевле использовать счетчик, открывающая скобка - инкримент, закрывающая декремент, результат функции сравнение каунтера на ноль (если ноль, знач все ок), стэк не столь эффективен в этом для множества скобок нужен объект с каунтерами, результат если все каунтеры нули :)
со скобками первое что в голову пришло ставим счетчик = 0 за каждую '(' + 1 за каждую ')' - 1, если в любой момент -1 то false, если в конце не 0 то false, остальное true ------------------------------------ а если брать с разными скобками, то логика почти таже, правило с отрицательным счетчиком остается только массив счетчиков и как только идет смена типа скобки '(' то подключается следующий, при закрывающейся смене скобки должен быть 0 иначе false в конце если массив не 0 или счетчик не 0 то false, иначе true
Как то замудрёно со скобками, не проще под каждый вид скобок завести простую переменную аля int8/16 и инкриментить/декриментить на 1 при встрече ( и ) соотвественно, а в результат проверку на 0 этой переменной.
У меня нет IT образования, самоучка с 2005 года. Никогда не лез в конторы на работу, считая это без образования бесмысленным. Это первое видео с собеседованием что я увидел. Первые 10 вопросов я вообще был удивлен их наличию, в силу их простоты для меня. Про DOM дерево и null/undefined, вообще офигел. Походу если я для проверки себя попробую, то спокойно пройду собеседованиеи ...учитывая степень сложности этих вопросов для меня. А задачу со скобками...решение писец какое сложное. Разве что только для наглядности работы стека подходит. Обычный цикл, подсчет и тех и тех...и сравнивать количество. Ну или ещё короче, без цикла: const check = str => str.split('(').length === str.split(')').length;
Задача с массивом (удалить все чила , которые дублируется) я бы решил двумя способами : 1. Создать Set от входящего массива , и для каждого элемента сета проверить если indexOf() и lastIndexOf() этого элемента во входном массиве равны - значит такой элемент единственный и добавить его в массив , который вернет функция в результате 2. Отсортировать массив и использовав for () проитерироваться с начальным индексом итерации 0 и для каждого значения сравнить если индекс итерации не равен lastIndexOf() элемента в массиве тогда присвоить индекс итерации lastIndexOf() элемента , а если равен то добавить значине в конечный результат функции
Хотелось бы видео про хуки от тебя, про useContext useReducer особенно, сравнение с редаксом или мобХ, почему нельзя использовать только их и тд. За видеотоже спасибо, было интересно послушать