Собеседование JUNIOR FRONTEND REACT разработчика

  Рет қаралды 280,365

Ulbi TV

Ulbi TV

Күн бұрын

Пікірлер
@Davidovich_aka_smoozydrinker
@Davidovich_aka_smoozydrinker 3 жыл бұрын
Поддерживаю видосы по оптимальному решению сложных задачек с собеседований. Простых в сети уже навалом.
@Cos6a4oK
@Cos6a4oK 3 жыл бұрын
Заходите на литкод и решаете задачи любого уровня и смотрите как можно было решить совсем иначе.
@mikeneikovych3700
@mikeneikovych3700 3 жыл бұрын
Отличное, а главное, познавательное собеседование. Я смотрю все собеседования от "Отсобеседование", "Web interview", и ещё много где понемногу, но нигде ни разу не видел, чтобы интервьюер так подробно разжовывал алгоритм действий решения задачи для зрителя и самого собеседуемого. Это было очень полезно, спасибо большое!
@UlbiTV
@UlbiTV 3 жыл бұрын
Рад слышать, спасибо!
@HatWriter
@HatWriter 3 жыл бұрын
@@UlbiTV были бы почаще такие интервьюеры, чтобы джунам, которые пробуют впервые ходить на собеседования - было понятно, что стоит подучить/подтянуть. Спасибо за видео
@Independent19c
@Independent19c 3 жыл бұрын
А я считаю зачем париться просто плейлист создать собеседования и уровни в превью видео с должностью и всё, как бы вопросы не повторялись люди то разные, и смотреть интересно(а интересные уже определять самим время от времени ну или просто кидать в плейлист) думаю каждый вынесет для себя что то полезное, возможно узнаёт себя, не знаю как у всех ,для меня слово собеседование наверное на втором месте после слова очередь и ремонт.
@kvadro_id
@kvadro_id 3 жыл бұрын
@@UlbiTV Татьяну в итоге взяли?
@ProSergeant
@ProSergeant 2 жыл бұрын
Случайно попался на видос интервью в Блумберг там собеседуемого попросили дополнить алгоритм по поиску в бинарном дереве, там тоже интервьювер помогал и разжёвывал
@-inside4478
@-inside4478 3 жыл бұрын
Блин очень крутой формат видео, особенно, когда один на один с книжками и курсами, а тут вдруг слышишь, как решают задачи. Одновременно видишь и слышишь. Вдвойне приятно)) Буд-то с наставником разбираешь задачи.
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо) Успехов!
@chicken_naggets3561
@chicken_naggets3561 3 жыл бұрын
Задачу со скобками можно было решить проще, вместо стека объявить счётчик и если встречаем открывающуюся скобку увеличиваем, если закрывающуюся уменьшаем. В конце счётчик должен быть равным нулю, иначе скобок разное количество
@chicken_naggets3561
@chicken_naggets3561 3 жыл бұрын
Ещё можно делить входящию на две части и одновременно их обрабатывать
@Max-mv6gr
@Max-mv6gr 3 жыл бұрын
@@chicken_naggets3561 А если будет такой пример: ')(', то счётчик же тоже равен 0
@xenon671games7
@xenon671games7 3 жыл бұрын
@@Max-mv6gr каждую итерацию проверяем, что переменная >= 0
@v.k.samurai
@v.k.samurai 3 жыл бұрын
@@Max-mv6gr, в общем то да :) но это не противоречит условию задачи. Сказано, что скобки могут быть в произвольном порядке, вопрос тут конкретно стоит в том, что если есть равное количество открывающих скобок и закрывающих, значит вернуть true. В твоем примере у нас одна закрывающая скобка и одна открывающая, собственно, условие соблюдено)) Короче говоря, нужно уточнять условия задачи чтобы 100% понимать какие есть нюансы.
@ivannebyshynets8829
@ivannebyshynets8829 3 жыл бұрын
А если ещё и скобки разные, ок да.
@Valeryi07
@Valeryi07 3 жыл бұрын
Отличное собеседование,на одном дыхании посмотрел,и конкретно для меня ,оно очень познавательное..спасибо ребят..👍🙂
@UlbiTV
@UlbiTV 3 жыл бұрын
Благодарю!
@lordunitaz
@lordunitaz 3 жыл бұрын
Спасибо за видео! Нужно больше роликов, готовящих к собесам. Ты одновременно учишь теорию и практикуешься, когда ищешь решение задачки. Очень эффективно и в целом интересно.
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо за отзыв!)
@SmirnovVladimir
@SmirnovVladimir 2 жыл бұрын
Работаю год фронтом. Забавная вещь - я на теоретические вопросы не на все смог сразу ответить. А на практические - на все кроме одного. Это к вопросу о разнице между собесом на первую работу, когда соискатель знает кучу теории, но как правило имеет очень мало практики, и спустя год работы - когда куча неиспользуемой теории забывается, а мозг заточен под решение практических задач. Друзья, кто ищет первую работу - больше практикуйтесь! Постоянно пишите код )
@OpankiDeLegend
@OpankiDeLegend 2 жыл бұрын
Чтобы на собесе ничего не ответить по теории?) Замкнутый круг
@djdisik
@djdisik Жыл бұрын
@@hdfghfhhj2475 если по теории отшили, значит не нужна вам такая работа) на работе вы никому теорию рассказывать не будете
@Семён-ь9ь3в
@Семён-ь9ь3в 7 ай бұрын
@@djdisik подскажите, образование необходимо или нет?
@djdisik
@djdisik 7 ай бұрын
@@Семён-ь9ь3в у каждой компании по разному, где-то возьмут без образования, но зачастую требуют высшее техническое
@itpro952
@itpro952 3 жыл бұрын
Ждал собес, щас активно готовлюсь, вспоминаю теорию, спасибо Тимур.
@UlbiTV
@UlbiTV 3 жыл бұрын
Успехов!
@serikabsadykov9260
@serikabsadykov9260 3 жыл бұрын
@@UlbiTV Привет, я смотрел твой ролик про firebase и как так сделать авторизацию и при созданий папки, я использовал базовую комплектацию, и у меня нету индекс.нтмл ( 7:16 в том видео ), мне стоит начинать все с начало, или есть другой путь?
@МаксимПучко-ь9э
@МаксимПучко-ь9э 3 жыл бұрын
Как успехи с собесом?
@sharover455
@sharover455 2 жыл бұрын
@@МаксимПучко-ь9э он забухал и насваем сейчас торгует
@МаксимПучко-ь9э
@МаксимПучко-ь9э 2 жыл бұрын
@@sharover455 жесть, коменту уже 10 месяцев
@nuriddintashpulatov4233
@nuriddintashpulatov4233 3 жыл бұрын
Я тоже Джун, начал учить фронт с верстки 4 месяца назад, видео я начал с теоретических вопросов, и расстраивался когда она отвечала раньше меня или более четко чем я (ну типа "блин, вот она тоже Джун, но более смышлёная, а я видимо никогда не научусь программированию такими темпами"). Но когда я досмотрел видео, а потом узнал что оказывается у нее уже есть два года коммерческого опыта, то прям камень с плеч упал, ахахах. Спасибо автору за видео!
@viktord3507
@viktord3507 2 жыл бұрын
Тут уже миддл?
@SNSDfOu
@SNSDfOu Жыл бұрын
так то у нее опыта для джуна прилично, да и женщина 86 года.
@victormog
@victormog 3 жыл бұрын
Видео по практическим задачам всегда интересны!
@МиланаАкопян-ц7м
@МиланаАкопян-ц7м 3 жыл бұрын
Очень ёмкое и полезное видео!!! Спасибо за такой качественный контент!👍🏻
@UlbiTV
@UlbiTV 3 жыл бұрын
Благодарю!
@DmitryDolganov
@DmitryDolganov 3 жыл бұрын
Заранее благодарю! Сейчас начну смотреть!))
@UlbiTV
@UlbiTV 3 жыл бұрын
Приятного просмотра!
@step_6512
@step_6512 3 жыл бұрын
Всё конкретно, понятно и без лишней воды. Спасибо!
@moscowtv5767
@moscowtv5767 3 жыл бұрын
Автор дает наводки, считаю это очень правильным походом. Татьяна молодец, автор молодец. :)
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо!)
@ДмитрийЯковлев-д6э
@ДмитрийЯковлев-д6э 2 жыл бұрын
на самом деле очень интересно) и пусть будут заезженные вопросы! продолжай контент очень интересный.
@ipa_stor
@ipa_stor 3 жыл бұрын
Пора дисклеймер в название писать:))) как раз к выходным видео, спасибо большое! 2 года изучения, очень интересно, чуть позже гляну обязательно!!! Пс: всем приятного просмотра
@РусланРастегаев-з1э
@РусланРастегаев-з1э 2 жыл бұрын
Спасибо за такой формат видео. Решал задачи параллельно с просмотром. По задаче про уникальные, не дублирующие значение, есть вариант короче, с одним циклом. 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]
@olehsolomka8268
@olehsolomka8268 4 ай бұрын
indexOf тож цикл, O(n^2) будет
@СветланаРомашкина-з6б
@СветланаРомашкина-з6б 15 күн бұрын
const cleanDuplicates = (arr) => { const sortedArr = [...arr].sort(); //можно спилить, если по условию задачи массив на входе отсортирован const res = []; sortedArr.forEach((el, i) => { if (sortedArr[i + 1] !== el && sortedArr[i - 1] !== el) { //если в _отсортированном_ массиве элемент не равен ни одному из соседей, то он уникален res.push(el) } }); return res; } console.log(cleanDuplicates([1,1,2,3,4,4,5,6,6,7,7,8,9])) //[2, 3, 5, 8, 9] но это O(NlogN), если вход не отсортирован, чисто экзотика, чтобы не считать вхождения)
@victorchilari
@victorchilari 3 жыл бұрын
Нормальный эксперимент получился, удачи в долнейшем
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо)
@garikmelqonyan6011
@garikmelqonyan6011 2 жыл бұрын
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.
@powerrampage
@powerrampage 2 жыл бұрын
You watched the video with subtitles ?
@garikmelqonyan6011
@garikmelqonyan6011 2 жыл бұрын
I understand russian, my friend.
@powerrampage
@powerrampage 2 жыл бұрын
@@garikmelqonyan6011 if you know, why you wrote in English
@garikmelqonyan6011
@garikmelqonyan6011 2 жыл бұрын
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.
@powerrampage
@powerrampage 2 жыл бұрын
@@garikmelqonyan6011 sorry bro =)
@derw1sz
@derw1sz 3 жыл бұрын
Со скобочками можно было без стека обойтись, делать +1 или -1 к сумме и проверять на каждой итерации что не меньше нуля, после всех итераций проверить что сумма равна нулю и всё.
@swaxshow8404
@swaxshow8404 Жыл бұрын
Или же взять создать один массив с открытыми скобками а другой с закрытыми,и в конце сравнивать длину массивов. Если равно то правильно если нет то нет.
@samoyed1
@samoyed1 3 жыл бұрын
const withoutRepeat = array => array.filter(x => array.filter(y => y === x).length === 1)
@artemalesenko9855
@artemalesenko9855 3 жыл бұрын
У меня только такое вышло function withoutRepeat(array) { const repeat = arr.map((el, idx) => idx !== array.indexOf(el) && el) return arr.filter((el) => !repeat.includes(el)) }
@КрасавчикИкиса
@КрасавчикИкиса 3 жыл бұрын
const withoutRepeat = arr => arr.filter((x) => arr.indexOf(x) === arr.lastIndexOf(x))
@suvar8667
@suvar8667 3 жыл бұрын
спасибо за труд! такие интервью отлично подкрепляют изученные темы + позволяют расширить существующие знания.
@met1388
@met1388 3 жыл бұрын
Да, интересные задачи было бы круто увидеть как вы их решаете оптимально
@omnomnom1323
@omnomnom1323 2 жыл бұрын
Пожалуйста поясните кто-нибудь: почему Татьяна, которая работает фронтом 2 года и ее основной стек это уже реакт - собесится на позицию джуна. То есть чувак с курсов без опыта и Татьяна будут претендовтаь на одну и ту же позицию джуна в теории. Что-то я не понимаю явно
@yuravychiwskii553
@yuravychiwskii553 7 ай бұрын
Решение задачи со скобками в 1 строку: function checkBrackets(str) { return ( str.replace(/[^\[({]+/g, '').length === str.replace(/[^\])}]+/g, '').length ); }
@MACTEP_SHIFU
@MACTEP_SHIFU Жыл бұрын
У меня нет IT образования, самоучка с 2005 года. Никогда не лез в конторы на работу, считая это без образования бесмысленным. Это первое видео с собеседованием что я увидел. Первые 10 вопросов я вообще был удивлен их наличию, в силу их простоты для меня. Про DOM дерево и null/undefined, вообще офигел. Походу если я для проверки себя попробую, то спокойно пройду собеседованиеи ...учитывая степень сложности этих вопросов для меня. А задачу со скобками...решение писец какое сложное. Разве что только для наглядности работы стека подходит. Обычный цикл, подсчет и тех и тех...и сравнивать количество. Ну или ещё короче, без цикла: const check = str => str.split('(').length === str.split(')').length;
@-And6053
@-And6053 Жыл бұрын
составь ка вопросы для уровня middle, а мы посмотрим)
@chcylabrab
@chcylabrab 3 жыл бұрын
Спасибо за контент, а так же за то, что смонтировали ролик. Это Ваше конкурентное преимущество среди блогеров которые выкладывают интервью.
@programming5944
@programming5944 3 жыл бұрын
Вопросов по реакту хотелось бы больше и поглубже рассмотреть какие то моменты
@uNkind33
@uNkind33 3 жыл бұрын
Ждем видос с оптимальными решениями задач!
@keeprock1529
@keeprock1529 2 жыл бұрын
Решение задачи с дубликатами (23:40) на Typescript и разными edge case. Time complexity будет O(n) + O(n) за счет двух циклов обхода. Что в итоге получается как O(2n). Далее, 2-ка из 2n отбрасывается и получается просто O(n). O(n^2) это когда внутри цикла цикл. Подряд два цикла друг за другом не дают O(n^2), а складываются между собой. const arr = [1, 1, 1, 0, 3, 4, 5, 5, 6, 7] const arr2 = [0] const arr3 = [] as number[] const arr4 = [1, 1, 1, 1, 1, 1, 1, 1] function withoutRepeat(arr: T[]): T[] { const arrItemCountDict = new Map(); arr.forEach((item, i) => { arrItemCountDict.set(item, arrItemCountDict.has(item) ? arrItemCountDict.get(item) + 1 : 1) }) return arr.filter((item) => arrItemCountDict.get(item) === 1) } console.log(withoutRepeat(arr)) console.log(withoutRepeat(arr2)) console.log(withoutRepeat(arr3)) console.log(withoutRepeat(arr4))
@vovayankers8956
@vovayankers8956 3 жыл бұрын
Хорошая подача! Поддерживаю видосы по оптимальному решению сложных задачек с собеседований.
@dimabashynskyi4984
@dimabashynskyi4984 3 жыл бұрын
спасибо большое, очень интересные видосы с заданиями.
@UlbiTV
@UlbiTV 3 жыл бұрын
Благодарю!)
@YuriiLutsyk0304
@YuriiLutsyk0304 3 жыл бұрын
Отличный видос получился! Ждем новые видео)
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо!
@alexnikolaienko3478
@alexnikolaienko3478 3 жыл бұрын
Классное видео. Просмотрел с удовольствием.
@orionpro79
@orionpro79 2 жыл бұрын
Работаю уже более 2х лет с реактом, интересно было просмотреть ролик (пусть и немного на перемотке, потому что ответ и так был известен), думаю новичкам вообще зайдёт на ура. А всякие мемо, тем кто учит реакт, надо на заметку брать и пользоваться на практике.
@Antonym-b5o
@Antonym-b5o 2 жыл бұрын
полный бред, никто вам не позволит этого сделать
@orionpro79
@orionpro79 2 жыл бұрын
@@Antonym-b5o бот?
@dariabannaya2681
@dariabannaya2681 2 жыл бұрын
Спасибо большое! Очень интерсный формат. Нравится больше всего у тебя смотреть
@ОльгаЮзбашева
@ОльгаЮзбашева 2 жыл бұрын
Все что касается собеседования очень нравится )) вдохновляет и настраивает, спасибо!
@__online7250
@__online7250 3 жыл бұрын
Четко и информативно! Спасибо за такой формат!
@Wynell
@Wynell 3 жыл бұрын
если честно не знал что такая интересная ситуация с try catch finally спасибо за видео
@efreitorhabibulin238
@efreitorhabibulin238 3 жыл бұрын
13 лет опыта, 4 года проработал в Google и Google Nest, я бы походу провалил твое интервью xDDD, к примеру блок с finally меня поймал я наверное пишу код как-то специфически, что подобное никогда не использовал )))))
@delir0
@delir0 3 жыл бұрын
За return в finally нужно сразу увольнять
@efreitorhabibulin238
@efreitorhabibulin238 3 жыл бұрын
@@delir0 хахахаххаха
@kirillgabov705
@kirillgabov705 3 жыл бұрын
32:00 Я не уверен как работает in, но сложновато поверить что она работает за О(1) В худшем случае (когда все значения разные) он будет каждый раз поиск делать по количеству уникальных значений на данный момент, что тоже n в общем случае, так что сложность чуть меньше n^2
@untured6167
@untured6167 3 жыл бұрын
Если я правильно помню, то 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
@DmitriiRepnikov
@DmitriiRepnikov 2 жыл бұрын
Оператор in в javascript поверяет наличие ключа в хеш-мапе. Это не поиск, там всегда либо есть такой ключ, либо его нет. Доступ по ключу в хешмапе происходит за O(1), как и во всех других языках программирования Другое дело что в некоторых языках программирования оператор in можно вызвать и в списках, что действительно уже не будет O(1), но это не тот случай, в js оператор in на списках не вызывают, так как это не имеет смысла, т.к. он не ищет элементы таким образом
@demonicchannel5372
@demonicchannel5372 Жыл бұрын
Задачу со скобками можно решить без циклов и счетчиков. function checkBrackets(str) { if (str.split(" ").filter(i => i === (" ").length === str.split('').filter(i => i === ')').length) { return true } return false }
@ОлегПетров-п4у
@ОлегПетров-п4у 3 жыл бұрын
Очень полезное видео! Тимур, спасибо за качественный контент! Плюсую за решение задачек.
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо, Олег! Скоро будет видео!
@kostasancez2358
@kostasancez2358 3 жыл бұрын
Видео с задачами ждём!)))
@robertarakelyan4629
@robertarakelyan4629 2 жыл бұрын
Задачку с массивом можно решить так: function withoutRepeat(arr) { const res = []; arr.forEach(item => { const indx = arr.indexOf(item); const lastIndx = arr.lastIndexOf(item); if (indx === lastIndx) res.push(item); }); return res; }
@Kleo_Wyatt
@Kleo_Wyatt Жыл бұрын
У меня еще вот так получилось. Работает только с отсортированным массивом. const withoutRepeat =(array) => { const uniqueValue = [] let count = 0 ; for(let i = 0; i < array.length; i++ ) { if(array[i] !== array[i+1] & count === 0) { uniqueValue.push(array[i]) } else if(array[i] !== array[i+1] & count > 0) { count = 0; } else { count ++; } } return uniqueValue }
@helenit4365
@helenit4365 3 жыл бұрын
Собеседование понравилось! Татьяна молодец!
@КириллТерешкин-ю8м
@КириллТерешкин-ю8м 3 жыл бұрын
Классное собеседование, узнал для себя несколько новых интересных вещей. Сам уже больше года разрабатываю на реакт, а про такую вещь, как React.memo не знал. Как говорится век живи, век учись!) Девушка молодец, успехов ей!)
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо! Успехов!
@DennisTurbay
@DennisTurbay Жыл бұрын
Классное собеседование! Оба участника себя чувствовали комфортно, главный как по мне фактор в собесах.
@kanatasanaliev8763
@kanatasanaliev8763 3 жыл бұрын
Спасибо за видео было интересно познавательно готовлюсь к собеседованию мне зашло (лайк поставил)
@UlbiTV
@UlbiTV 3 жыл бұрын
Успехов в подготовке!
@kanatasanaliev8763
@kanatasanaliev8763 3 жыл бұрын
@@UlbiTV а к стати может видео запилишь на счет работы Джуна что он делает до того как начнёт самостоятельно работать краткое видео думаю многим бы было интересно таких видео я не встречал
@kanatasanaliev8763
@kanatasanaliev8763 3 жыл бұрын
@@UlbiTV заранее спасибо
@snatvb
@snatvb 3 жыл бұрын
по задаче со скобками - проще и дешевле использовать счетчик, открывающая скобка - инкримент, закрывающая декремент, результат функции сравнение каунтера на ноль (если ноль, знач все ок), стэк не столь эффективен в этом для множества скобок нужен объект с каунтерами, результат если все каунтеры нули :)
@UlbiTV
@UlbiTV 3 жыл бұрын
С разными видами скобок все же лучше использовать стек
@alext1677
@alext1677 3 жыл бұрын
@@UlbiTV это если скобки идут друг за другом, расставив их по разным местам - уже не работает.
@forellko8600
@forellko8600 2 жыл бұрын
Очень крутой контент! Спасибо!
@IlyaShaforostoff
@IlyaShaforostoff 3 жыл бұрын
Если решаете задачу, как например со скобочками, то проверяйте как следует свои решения. А то у вас получилось, что верное решение будет только если строка состоит из двух символов, открывающейся и закрывающейся скобочки. Прежде чем писать реализацию функции, напишите сперва проверки, например такие console.assert(checkBrackets('(())') === true, 'not passed 1') console.assert(checkBrackets('))((') === false, 'not passed 2') console.assert(checkBrackets('(()') === false, 'not passed 3') console.assert(checkBrackets('()()(()())') === true, 'not passed 4') console.assert(checkBrackets('writeMe("hello world")'), 'not passed 5')
@UlbiTV
@UlbiTV 3 жыл бұрын
Учту!)
@НиколайГончаров-ъ2ь
@НиколайГончаров-ъ2ь 2 жыл бұрын
Задачу со скобочками можно решить через filter и сравнение длинны массивы 2 полученных массивов. А уникальные массивы задача с кодварса, легко решается, спасибо кодварсу :D => return arr.filter((x,i,array) => array.indexOf(x) === array.lastIndexOf(x))
@UlbiTV
@UlbiTV 2 жыл бұрын
Плохое решение, хоть и выглядит красиво Циклы вложенные в цикл
@nikishiro8278
@nikishiro8278 3 жыл бұрын
Еще так можно решить задачу со скобками: const getBracketCount = (str, type) => str.split('').reduce((acc, v) => { if (v === type) return acc + 1; return acc; }, 0); const checkEvenBrackets = (str) => { const openBrackets = getBracketCount(str, '('); const closeBrackets = getBracketCount(str, ')'); return openBrackets === closeBrackets; }; const result = checkEvenBrackets('((()))'); console.log('result', result);
@kostyakozlov5289
@kostyakozlov5289 2 жыл бұрын
Ага, только если у тебя сначала закрывающиеся скобки, а значит не правильная последовательность, то твоя функция вернет не верное значение
@bbnowhat
@bbnowhat Жыл бұрын
С удалением повторяющийся элементов в массиве можно: Перебирать массив со 2го по предпоследний элемент и если каждый очередной элемент не равен предыдущему или следующему то записываем в новый массив значение, это если упорядоченный исходный массив
@Vlad-yj2ny
@Vlad-yj2ny 3 жыл бұрын
Да, интересно, сделай видос по популярным задачкам с собесов, пожалуйста.
@НикитаКлусович
@НикитаКлусович 3 жыл бұрын
Топ канал, раньше минина канал был фаворитным, теперь этот)
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо!
@HatWriter
@HatWriter 3 жыл бұрын
Спасибо за видео. Многое для себя подчеркнул. И что стоит подтянуть.
@einh213viperz8
@einh213viperz8 3 жыл бұрын
Как то замудрёно со скобками, не проще под каждый вид скобок завести простую переменную аля int8/16 и инкриментить/декриментить на 1 при встрече ( и ) соотвественно, а в результат проверку на 0 этой переменной.
@fkinggaming934
@fkinggaming934 2 жыл бұрын
Круто, познавательно и интересно. Я вместе с вами решал все задачки ) и много чего нового узнал для себя. По больше бы подобных видосов !
@user-race-Vulcan
@user-race-Vulcan 3 жыл бұрын
6:50 Бро, спасибо огромное что поставил пробел после знака присваивания(связывания)..., у меня аж глаз чуть не задергался...
@irinamyskoooo
@irinamyskoooo 3 жыл бұрын
очень крутые видео и канал !!!
@falsetrue7910
@falsetrue7910 3 жыл бұрын
Задача со скобками по всей видимости самая любимая у интервьюеров, дважды решал ее когда на джуна устраивался
@KhoroshilovEI
@KhoroshilovEI 3 жыл бұрын
Проблема в том, что большинство задачь собеседования останутся на собеседовании и никогда не будут использованы в жизни)))) За редким исключением.
@drinkoron8063
@drinkoron8063 3 жыл бұрын
@@KhoroshilovEI Ну, будет у вас задача написать калькулятор, вот и решайте проблему со скобками.
@KhoroshilovEI
@KhoroshilovEI 3 жыл бұрын
@@drinkoron8063 пишу я, например, социальный сервис и тут мне вдруг срочно потребовался калькулятор? Еще и строковый?
@nickolayivanov2848
@nickolayivanov2848 3 жыл бұрын
Кстати, мне интересно, а можно было просто посчитать количество открывающих скобок и сравнить его с количеством закрывающих?)
@drinkoron8063
@drinkoron8063 3 жыл бұрын
@@nickolayivanov2848 Если банально посчитать количества и сравнить в конце, то нет. Пример: )( явно противоречит этому варианту. Нужно немного модифицировать подсчёт, берём счётчик со значением 0 пройдёмся по массиву, если встретим откр. скобку увеличиваем счётчик на 1, если закр. скобка то уменьшаем. Если счётчик ушёл в минус можно остановить цикл и вернуть false а после цикла проверяем уже равняется ли счётчик нулю.
@aruh5baruh528
@aruh5baruh528 3 жыл бұрын
со скобками первое что в голову пришло ставим счетчик = 0 за каждую '(' + 1 за каждую ')' - 1, если в любой момент -1 то false, если в конце не 0 то false, остальное true ------------------------------------ а если брать с разными скобками, то логика почти таже, правило с отрицательным счетчиком остается только массив счетчиков и как только идет смена типа скобки '(' то подключается следующий, при закрывающейся смене скобки должен быть 0 иначе false в конце если массив не 0 или счетчик не 0 то false, иначе true
@CapricornGaikov
@CapricornGaikov 3 жыл бұрын
Стек для скобок?)) Просто счетчик: +1 для открывающейся скобки, -1 для закрывающейся. После цикла если счетчик равен 0 то кол-во скобок совпадает. Если не 0 то получится кол-во лишних скобок и какого типа - как определить тип скобки из счетчика вы уже сами догадаетесь :) Все гениальное - просто! Да не за что!)
@admax811
@admax811 3 жыл бұрын
На разогревочных вопросах, я посыпался.. Когда начали говорит о стеках, я вообще офигел от слова стэк в javascript'e, подумал что звиздец, я между мидл-сеньером а не знаю о существования стэков в js.. Когда перешли с теории в практику, тут то все стало понятно.. в разговоре участвуют javascript программеры, которые на других языках не писали и не понимают различий между стеком и массивом, не понимают что оптимальное решение для такого типа задач не массивы а курсоры.. тут и стало понятно, почему это junior ))
@UlbiTV
@UlbiTV 3 жыл бұрын
Огооо, у нас тут синьоры, а что такое стек? расскажите пж:))
@admax811
@admax811 3 жыл бұрын
@@UlbiTV в рамках js, стэка нет, по-этому в поле js этого не описать, но да? функционально конечно массив можно принимать как тот же стэк, но в си - stack это не массив а отдельная структура данных оптимизированная под LILO, поэтому в рамках си программера массив и стэк - это разные понятия. И когда ты спросил о stack - я завис, что за структура есть в js которая не массив а stack..
@admax811
@admax811 3 жыл бұрын
Мне больше задача на 21:20 понравилась :) я сейчас попробовал несколько методов решений этой задачи и думал даже что может быть задача будет решаться быстрей, если не создавать новый объект а чистить массив от дубликатов при нахождении. Оказалось что это много раз медленней.. в итоге да, то решение что в видео оно почти самое быстрое (почти, потому что там используется каунтер, если без каунтера делать - то получается быстрей. function withCounter (array) { // Время исполнения 6 секунд const values = [], obj = {} for (let i = 0; i < array.length; i++) obj[array[i]] = obj[array[i]] ? obj[array[i]] + 1 : 1; Object.keys(obj).forEach((key) => obj[key] === 1 && values.push(key)) return values; } function withBoolean (array) { // Время исполнения 4 секунды const values = [], obj = {} for (let i = 0; i < array.length; i++) obj[array[i]] = obj[array[i]] === undefined; Object.keys(obj).forEach((key) => obj[key] && values.push(key)) return values; } такой порядок примерно
@UlbiTV
@UlbiTV 3 жыл бұрын
@@admax811 ну тогда почему идет принижение js-ников? Стек строится поверх массива или поверх связного списка, подразумевается функциональность, а не явный тип:) и да, собеседование было не на СИ
@admax811
@admax811 3 жыл бұрын
@@UlbiTV про принижение не знаю.. я в js входил без обучения, с большим стэком других языков и их алгоритмики. Сейчас, когда проще назвать на каких языках я не писал, мне наиболее импонирует js :) и соответственно понятия из-за большого стэка у меня смешиваются.. по-этому я и смотрю видео подобные этому, чтоб терминологию js ников понимать :)
@dimka_shchepa
@dimka_shchepa 3 жыл бұрын
Оо-о, видосы решения задачек на js вообще бы зашли идеально)) было бы не плохо, если б автор сделал это
@olgapilyugina5905
@olgapilyugina5905 2 жыл бұрын
Решение задачи с массивами: let arr = [1, 2, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9] function uniqueItems(n) { arrayUnique =[]; for (let i = 0; i < n.length; i++) { let item = n[i]; console.log(item); if (n.indexOf(item) === n.lastIndexOf(item)) arrayUnique.push(item); } return arrayUnique }
@UlbiTV
@UlbiTV 2 жыл бұрын
Какая сложность О у алгоритма?
@olgapilyugina5905
@olgapilyugina5905 2 жыл бұрын
@@UlbiTV Полагаю, что логарифмическая: O(log n)
@UlbiTV
@UlbiTV 2 жыл бұрын
@@olgapilyugina5905 неа, даже близко нет
@UlbiTV
@UlbiTV 2 жыл бұрын
@@olgapilyugina5905 цикл в любом случае линейная сложность, т.е уже о(n), и также, надо понимать, что методы массива, которые что то ищут, как например indexof это тоже о(n), тк чтобы что то найти, надо пройтись по массиву и сравнить каждый элемент. Итого сложность О(n в квадрате)
@denhost5033
@denhost5033 2 жыл бұрын
Интересна тема видео с решениями задач, записывай еще ))) Спасибо за видео очень крутой и познавательный контент.
@itsmekamikoto4940
@itsmekamikoto4940 2 жыл бұрын
Задача с массивом (удалить все чила , которые дублируется) я бы решил двумя способами : 1. Создать Set от входящего массива , и для каждого элемента сета проверить если indexOf() и lastIndexOf() этого элемента во входном массиве равны - значит такой элемент единственный и добавить его в массив , который вернет функция в результате 2. Отсортировать массив и использовав for () проитерироваться с начальным индексом итерации 0 и для каждого значения сравнить если индекс итерации не равен lastIndexOf() элемента в массиве тогда присвоить индекс итерации lastIndexOf() элемента , а если равен то добавить значине в конечный результат функции
@UlbiTV
@UlbiTV 2 жыл бұрын
Варианты хорошие, но неэффективные, квадратичная сложность
@NikDev19
@NikDev19 6 күн бұрын
Задачу с дубликатами по-моему можно в одну строку решить console.log(Array.from(new Set(arr))) Обращайтесь:))
@thtflx
@thtflx Жыл бұрын
Маленькая помощь, что бы было легче практиковаться самому. JavaScript. 1. В чем отличие null от undefined ? Ответ: null - это пустое значение которое присваивается самим разработчиком. undefined - например если контейнер создан или его вовсе не определили, то значение будет undefined. 2. У нас есть какой-то объект и у него есть поле. Этот объект приходит с backend. Этот поле может быть объектом или массивом. Как бы ты проверил, что это поле является массивом ? Ответ: через метод isArray() . 3. Что такое DOM-дерево и для чего он нам нужен ? Ответ: (Document Object Model) Это когда браузер в памяти компютера создаёт Объектную Модель Документа, на основании HTML кода полученного им от сервера. 4. Какие способы хранения данных ты знаешь ? Ответ: sessionStorage, localStorage. 5. Что выведет obj2 ? let obj1 = { name: 'ulbi tv' } let obj2 = obj1; obj1 = {name: 'UPDATED'} console.log(obj2); Ответ: name: 'ulbi tv', так как не происходит глубокое клонирование. 6. У тебя есть некий кусочек кода и ты понимаешь что там потенциально может быть ошибка. Как бы ты его обработал? Ответ: через try/catch 7. Какой результат будет если мы запустим эту функцию ? function someFn() { try { if (Math.random() a - b); } console.log(uniteUniq(arr)); 10. Написать Функцию Конструктор. Ответ: function User(name, age) { this.name = name; this.age = age; } const user = new User('Ulbi tv', 21); console.log(user); React. 11. Что такое props ? Отличие между state ? Ответ: props - это объект, содержащий свойства, которые передаются от родительского компонента к дочернему компоненту. Их изменять нельзя, они только читаемые. state - это состаяние, ими можно управлять методами жизненнего цикла и изменять. 12. React Хуки (расскажите) . Ответ: Хуки - это нововведение, которое было добавлено в React 16.8 . Это функции, которые позволяют использовать состояние и управлять им без написания Классовых компонентов. Они упрощают разработку. 13. Для чего нужен useContext ? Ответ: useContext - это хук в React, который предоставляет простой способ использования контекста в функциональных компонентах. 14. Задача по оптимизации рендера.
@evgeniyn1542
@evgeniyn1542 3 жыл бұрын
Супер, интересное собеседование. Плюсую за решение задачек.
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо!
@AGM140580
@AGM140580 3 жыл бұрын
Очень жду Ваших видео с решением задач!
@БогданГуківський
@БогданГуківський 3 жыл бұрын
Понимаю что это была подводка для задачи с разными типами скобок, но чисто для задачи с одним типом скобок, счетчик глубины не допускающий отрицательных значений будет достаточным, стек там не нужен. Если бы мне заадачу в такой постановке решили используя стек - это был бы минус.
@UlbiTV
@UlbiTV 3 жыл бұрын
Про "подводку" правильно подметили)
@alexi182k
@alexi182k 3 жыл бұрын
Та же ситуация с задачками, даже поработав несколько лет, если самому регулярно не решать что-то по алгоритмам, то сходу не сообразишь.
@UlbiTV
@UlbiTV 3 жыл бұрын
Согласен
@Kirdaro
@Kirdaro 3 жыл бұрын
Так а смысл от них вообще? Разве берут инженера, а не разработчика? Особенно если они не типовые. Называется изобрети еще раз велосипед ради процесса.
@КрасавчикИкиса
@КрасавчикИкиса 3 жыл бұрын
@@Kirdaro я так понимаю, оценивают ход мышления + умение разъяснить этапы решения + реакция на стрессовую ситуацию
@tyafizi
@tyafizi 3 жыл бұрын
В конце была фраза: "на работе не встречается, редко что то такое приходится реализовывать". А чем тогда на работе джуны занимаются?
@vladnasadyk3541
@vladnasadyk3541 3 жыл бұрын
Кнопки двигают влево-вправо)
@MrRadiostep
@MrRadiostep 3 жыл бұрын
делают 80% работы за 20% денег
@UlbiTV
@UlbiTV 3 жыл бұрын
@@MrRadiostep :D
@alexelkin2502
@alexelkin2502 3 жыл бұрын
У меня другой вопрос, - "Зачем тогда это на собесе обсуждать?"
@holinet6894
@holinet6894 3 жыл бұрын
А в задаче со скобками можно было так решить, вроде даже понятнее? 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 } }
@UlbiTV
@UlbiTV 3 жыл бұрын
Это неработающее решение, один счетчик для разных скобок
@Sunr1sen2
@Sunr1sen2 3 жыл бұрын
Раз уж юзаем методы массива, так юзаем) Можно конечно упороться и в строку вытянуть, но так более читаемо ну и доп скобки можно в фильтр прям запихивать function checkBrackets(str) { const arr = str.split(''); const leftBracketsCount = arr.filter(item => item === "(").length; const rightBracketsCount = arr.filter(item => item === ")").length; return leftBracketsCount === rightBracketsCount; }
@darkside2436
@darkside2436 3 жыл бұрын
Топ контент!!! Ещё есть вопрос: когда тесты?
@UlbiTV
@UlbiTV 3 жыл бұрын
Трудно сказать, как время появится)
@darkside2436
@darkside2436 3 жыл бұрын
@@UlbiTV 😂
@ВячеславРоманов-ч6л
@ВячеславРоманов-ч6л 3 жыл бұрын
Работает на фронте чуть больше двух лет, а такое к-во подсказок, непорядок. Может это так и надо чтобы собеседующий давал такое к-во подсказок конечно, но даже в задаче с дублями, просто ведь. Кто-то приврал нехило так свой опыт, работаю полгода на фрилансе backend php, но и с js доводиться сталкиваться часто. Решил бы первые задачки уж точно без подсказок)
@EctxD
@EctxD 2 жыл бұрын
На задачах со скобками можно было посчитать сумму скобок и просто проверить на четность.
@ВладиславКравец-г4в
@ВладиславКравец-г4в 2 жыл бұрын
у меня сразу в голову пришла идея на парность (если конечно не нужно указать где именно у нас ошибка)
@redhook777
@redhook777 3 жыл бұрын
Лайк! Ждём видос про задачи!!!
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо!
@frozeninside5004
@frozeninside5004 3 жыл бұрын
Поддерживаю видео о решении задач оптимальным способом
@UlbiTV
@UlbiTV 3 жыл бұрын
Будет!
@danilabrehov7259
@danilabrehov7259 3 жыл бұрын
В задаче на уникальность можно ещё indexOf использовать const withoutRepeat = (array) => { return array.filter(elem => { if(array.indexOf(elem, array.indexOf(elem) + 1) === -1) { return elem; } }); };
@SergioWahaWaher
@SergioWahaWaher 3 жыл бұрын
если уж на то пошло: arr.filter((x, i, arr) => arr.indexOf(x) === i)
@xapi_uz
@xapi_uz 3 жыл бұрын
Сложность O(n^2)
@NoakSV
@NoakSV 2 жыл бұрын
Спасибо, было интересно!
@yanmezinskiy8817
@yanmezinskiy8817 3 жыл бұрын
Задача на удаление повторяющихся цифр в массиве const removeDuplicate = (arr) =>{ let result = []; arr.forEach(num => { if(result.includes(num)){ result = result.filter(item => item !== num) } else { result.push(num) } }) return result }
@УльвияКарахмазли
@УльвияКарахмазли 3 жыл бұрын
буду благодарна за видосы по оптимальному решению сложных задачек с собеседований.
@vitaliihubariev2465
@vitaliihubariev2465 2 жыл бұрын
Задача с массивом (удалить все числа, которые дублируются) function withoutRepeat(arr){ const uniqArr = []; arr.forEach(element => { if(arr.indexOf(element) === arr.lastIndexOf(element)){ uniqArr.push(element) } }); return uniqArr; }
@aliaksand969
@aliaksand969 10 ай бұрын
@UlbiTV в задаче с удалением повторяющихся цифр из массива чем будет плох следующий вариант: 1. сортируем массив по возрастанию или убыванию 2. пробегаем по массиву, сравнивая с соседними элементами (если оба сравнения false, то забрасываем в ответ).
@ВіталійПлевако-д2ж
@ВіталійПлевако-д2ж 3 жыл бұрын
Спасибо, полезное видео!
@TG-lp5yd
@TG-lp5yd Жыл бұрын
Задачу с массивом можно решать в одну строку с помощью фильтра => первый индекс элемента в массиве == последний индекс этого же элемента
@Woodline29
@Woodline29 3 жыл бұрын
задачку со скобками решил, как мне кажется, сильно проще const checkers = (str) => { const arr = str.split('') const newArr = arr.filter((item) => item === '(') return (arr.length / newArr.length === 2) }
@Woodline29
@Woodline29 3 жыл бұрын
если нужно добавить другие скобки - просто усложняем немного фильтр: const newArr = arr.filter((item) => item === '(' || item === '[' || item === '{' )
@Алексей-ъ4з8с
@Алексей-ъ4з8с Жыл бұрын
переусложнили решение задачи со скобками, имхо, можно было просто посчитать дельту между количеством открывающих и закрывающих скобок
@MrDilord
@MrDilord 3 жыл бұрын
По задачке с массивами. Имхо с объектом не очень читабельно 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; }
@UlbiTV
@UlbiTV 3 жыл бұрын
Ключевой момент как раз в скорости
@vitalyvitmens
@vitalyvitmens Жыл бұрын
Задача с массивом (удалить все числа, которые дублируются): const arr = [1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 9] let withoutRepeat = (array) => array.filter((i) => array.indexOf(i) === array.lastIndexOf(i)) console.log(withoutRepeat(arr)) // [2, 3, 5, 8, 9]
@cseedrvr6627
@cseedrvr6627 3 жыл бұрын
Со скобками мне кажется можно было сделать просто на открывающуюся скобку +1 для закрывающейся -1, и на выходе должно получаться 0
@falsetrue7910
@falsetrue7910 3 жыл бұрын
А если будет вот такое выражение ")()()("?
@cseedrvr6627
@cseedrvr6627 3 жыл бұрын
@@falsetrue7910 ну да, для такого случая не сработает, но если условие просто чтобы для каждой закрытой скобки была открытая то пойдет
@nagalokgames8861
@nagalokgames8861 3 жыл бұрын
@@falsetrue7910 если счетчик будет меньше 0, на любой из итераций, сразу будет неправильная последовательность. так что решение со счетчиком корректное.
@Godrik99shadows
@Godrik99shadows 3 жыл бұрын
Можно сделать два счетчика один на открывающие другой на закрывающие. В цикле проверять условие что открывающий всегда больше или равен закрывающему иначе брэйк. По итогу сравнить два счетчика если они равны тру иначе фолс.
@arhim7650
@arhim7650 3 жыл бұрын
я бы страдал фигней, с распихиванием этих скобок по разным массивам, и потом сравнивал их длинну, за одно можно было бы понять, на сколько тех или иных скобок больше, если длинна массивов не ровна.
@scottwalker6071
@scottwalker6071 3 жыл бұрын
Это было интересно, мне понравился сценарий опроса, попробую применить его на своих собесах🙃 Спасибо, Тимур🤠 Было бы интересно посмотреть собес на сеньора или мидла++ по фронту
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо!) До собеседования middle ++ и сеньоров я еще не дорос)
@pie_company
@pie_company Жыл бұрын
можно к вам?
@АртёмНянченков-в5и
@АртёмНянченков-в5и 3 жыл бұрын
Опыт два года, собеседование на джуна..... Тут либо кандидат не силен либо у компании требования .
@UlbiTV
@UlbiTV 3 жыл бұрын
Татьяна оценила свой уровень как "junior", именно поэтому было такое собеседование)
@АртёмНянченков-в5и
@АртёмНянченков-в5и 3 жыл бұрын
@@UlbiTV Тогда вопросов ноль)
@AlexNesterov-f5q
@AlexNesterov-f5q 3 жыл бұрын
Задачи на джава скрипт оптимальным способом
@Rusu421
@Rusu421 3 жыл бұрын
где?
@outward6339
@outward6339 3 жыл бұрын
const arr = [1,1,10,2,4,4,9,8,14,5] const arrf = arr.filter(i=>arr.filter(item=> item===i).length===1) console.log(arrf) Что можете сказать о таком способе?
@ИннаОшмарина
@ИннаОшмарина 3 жыл бұрын
Супер!!
ТОП 10 вопросов на собеседовании ReactJS
29:52
Веб-разработка - DevMagazine
Рет қаралды 49 М.
Мен атып көрмегенмін ! | Qalam | 5 серия
25:41
Полный гайд по JavaScript собеседованию. Все в 1 видео!
1:41:32
50 вопросов на Vue JS собеседование
42:07