Javascript собеседование вопросы для начинающих junior

  Рет қаралды 55,824

Web Developer Blog

Web Developer Blog

5 жыл бұрын

Мы продолжаем рубрику вопросов по собеседованию junior javascript разработчика. Рубрика с вопросами собранными с собеседований javascript поможет вам подготовится и устроиться на вашу первую работу возможно trainee или junior программистом js. Часто на собеседованиях программистам задают однотипные или те же самые вопросы, изучив их заранее у вас не составит никаких проблем ответить на них более чем идеально и получить заветное место в топовой it компании.
CSS Lab: / @steptoweb503

Пікірлер: 106
@simplewebdev1098
@simplewebdev1098 4 жыл бұрын
Блин, очень плохо раскрыта тема. Кому интересно про методы перебора массивов (map, filter, reduce, forEach) читайте дальше. Идея такова: отделить логику перебора массива от бизнес-логики (что мы делаем с элементами). Самые распространённые кейсы по перебору такие: - сделать что-то с каждым элементом массива (forEach). Изменяет исходный массив; - сделать новый массив, где каждый элемент будет зависеть от соответствующего элемента исходного (map). Не изменяет исходный массив; - сделать новый массив, в который войдёт часть элементов исходного, удовлетворяющих условию (filter). Не изменяет исходный массив; - получить какое-то одно значение на основании всех элементов исходного массива (reduce). Не изменяет исходный массив. Все они построены по схожему принципу: у массива есть метод, которому первым аргументом мы передаём функцию, которая будет применена к каждому элементу: arr.map( function ( ... ) { ... }). В эту функцию для каждого элемента будут переданы 3 параметра (для reduce 4): function ( item, index, array) { ... }. Item - ссылка на текущий элемент массива, index - индекс текущего элемента (точнее, номер итерации, в отличие от индекса, начинается с 1), array - собственно сам перебираемый массив. Мы именуем только те параметры, которые нам интересны, остальные игнорируем. У reduce есть пару отличий, о них позже. Например, у нас есть массив элементов, допустим учеников: const students = [ { id: 1, firstName: 'Василий', lastName: 'Иванов', age: 14, weight: 45, height: 160, math: 4, chemistry: 5, physics: 3 }, { id: 2, firstName: 'Андрей', lastName: 'Петров', age: 15, weight: 55, height: 163, math: 3, chemistry: 3, physics: 3 }, { id: 3, firstName: 'Семён', lastName: 'Сидоров', age: 14, weight: 62, height: 155, math: 5, chemistry: 5, physics: 5 }, ... ]; У каждого элемента массива поля одинаковые, различаются только значения. Для работы с такими массивами, в основном, и созданы эти методы. Допустим, нам нужен список учеников. Для этого можно получить новый массив, каждому элементу которого соответствует элемент исходного. Это метод map: const list = students.map( function (student) { return student.lastName + ' ' + student.firstName; }); Метод map возвращает новый массив, равный по длине исходному, где каждому элементу присваивается то, что вернёт функция. В примере мы получим массив, где каждым элементом будет строка фамилия + пробел + имя. Мы именуем только первый параметр, называем его как хотим (желательно осмысленно). Остальные нам тут не нужны, игнорируем их. Допустим, нам нужно выбрать учеников, которым 15 лет. Это метод filter: const age_15 = students.filter( function (student) { return student.age === 15; }); Метод filter возвращает новый массив, в который попадут только те элементы, для которых функция вернёт true. Мы не обязаны использовать элементы исходного массива в проверке, мы можем просто написать return true, и получить копию массива. Но смысла в этом не много. Допустим, мы хотим получить список дрищей. Тут тоже подойдёт filter: const drisches = students.filter( function (student) { return student.weight < 50; }); Допустим, нам нужно переименовать какое-то поле. Эту операцию нужно проделать на исходном массиве, для каждого элемента. Тут подойдёт forEach: students.forEach(function (student) { student.chem = student.chemistry; delete student.chemistry; }); Метод forEach ничего не возвращает, он работает с исходным массивом "на месте". Метод reduce имееет несколько отличий. Он проходит по всему массиву и передаёт некое значение от итерации к итерации. В результате работы он возвращает это значение (это легко может быть объект,не обязательно примитив). Записывается так: arr.reduce( function(acum, item, index, array) { ... }, initValue). В сам метод, кроме функции, передаётся начальное значение накопителя initValue. Если его не передать, то проход массива начнётся со второго элемента, а первый элемент полностью пойдёт в накопитель. Во внутреннюю функцию первым аргументом попадает накопитель, и дальше все те же, что и для остальных. Из внутренней функции мы должны вернуть то, что попадёт в качестве накопителя в следующую итерацию. Для этого у нас есть предидущее значение накопителя, ссылка на текущий элемент, индекс и ссылка на сам массив. Допустим, мы хотим узнать средний балл по физике: const avgPhysics = students.reduce( function (acum, student) { return acum + student.physics; }, 0)/students.length; Начальное значение накопителя мы указываем равным 0, иначе в первой итерации накопитель станет равен объекту, и после попытки сложения объекта с числом мы получим NaN, который пройдёт по всему циклу, и в итоге будет NaN. Во внутренней функции мы явно возвращаем значение накопителя + текущая оценка. Если мы не вернём его, то в следующей итерации acum будет undefined, да и итог reduce будет undefined. Как-то так.
@fantom9419
@fantom9419 4 жыл бұрын
Чувак, ты потрясающий 👍
@alexaxenov974
@alexaxenov974 3 жыл бұрын
Автор не ставил же за цель явно обьяснять как работает тот или иной метод, а в общем осветил какие есть вопросы на собесах.
@seriousman109
@seriousman109 3 жыл бұрын
Спасибо за дополнительную информацию.
@ilayvasilyev7157
@ilayvasilyev7157 2 жыл бұрын
спасибо за развернутые уточнения
@Jetixxxxxxxxxx
@Jetixxxxxxxxxx 2 жыл бұрын
Купил бы ваш учебник по js
@CocoShamil
@CocoShamil Жыл бұрын
let a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let sumArray = a.reduce((accum, item)=>{ if(item >= 5){ accum = accum + item **2; } return accum; },0); console.log(sumArray)
@vladislav8234
@vladislav8234 5 жыл бұрын
Спасибо автору!
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
И вам спасибо что смотрите
@armenian_global_animation_5872
@armenian_global_animation_5872 5 жыл бұрын
Тебе лайк, подписка css-нику теперь буду смотреть видос
@_Iokanaan_Marusidze_
@_Iokanaan_Marusidze_ 5 жыл бұрын
Thank you very much !
@vladkyselov
@vladkyselov 4 жыл бұрын
let arr = [1,2,3,4,5,6]; let result = arr.filter((value)=>value
@user-jl1jz5jv1g
@user-jl1jz5jv1g 5 жыл бұрын
Ты забыл сказать про важный момент это аргумент контекста this и в каком случае его использовать
@rosts_26
@rosts_26 3 жыл бұрын
Мне кажется "this" удостоен отдельного ролика)
@nickstojanovic9663
@nickstojanovic9663 4 жыл бұрын
Спрашивают про scope, контекст, замыкания, хостинг, сравнения типов, отличия let от var, задают вопросы с конкретными примерами по асинхронности (с подставой, на логику), promise... Если берут джуном на каком-нибудь фронте ваять типа vuejs, то будут и по нему вопросы задавать (store, router, хуки) и довольно много вопросов. Короче говоря джун должен уверенно знать язык. Никому не захочется с вами возиться, вы должны сами все уметь и быстро разбираться по ситуации. Если на собеседовании вас спрашивают что-то, чего вы не знаете, я имею ввиду какую-то технологию, например TypeScript (который вы не знаете, но до кучи указали в анкете, да, так тоже можно), лучше сказать "Я его пока только учу, у меня по нему курс".
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
По JavaScript тоже можно отвечать, я его пока только учу, у меня курс 😄😄😃
@nickstojanovic9663
@nickstojanovic9663 4 жыл бұрын
@@SuprunAlexey шутить изволите? )
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
Nick Stojanovic законом не запрещено:)
@user-gz1lz7hh9w
@user-gz1lz7hh9w 4 жыл бұрын
Начало на 1:30
@user-nh1ku5xs5z
@user-nh1ku5xs5z 5 жыл бұрын
расскажи про замыкания
@user-mq8eq3by6z
@user-mq8eq3by6z 5 жыл бұрын
Подскажите пожалуйста, возможно ли начать работу на фрилансе, делая сайты не с нуля, а по своим шаблонам? Я делаю небольшой интернет-магазин и хочу просто его подгонять под заказчиков, потом так же с лендингом. Будет ли заметная разница между заказами обрывков сайтов или их доработкой и заказами с таким подходом?
@khartower
@khartower 5 жыл бұрын
забудь вообще про фриланс, лучше в дворники иди, там хоть дышать свежим воздухом будешь, ведь на фрилансе то что стоит 5 000 выполняется за 500 руб, будешь неделю работать за 500 рублей, оно тебе нужно, дворники больше зарабатывают... Совсем забыл из-за недо-программистов цены сбиваются до нуля и работаешь без предоплаты, потом тебя кидают и месяц работы в жопу, лучше дворником за те жи 500 руб
@user-gn1jl9sg8h
@user-gn1jl9sg8h Жыл бұрын
Ну чё там, сеньер дворником стал ?
@saskirakosyan3788
@saskirakosyan3788 5 жыл бұрын
It was all about method of array's. But its olso important. Callback function, closure, this, classes.
@meashitakiit42
@meashitakiit42 5 жыл бұрын
Also*?)
@inkvatordor
@inkvatordor 4 жыл бұрын
Olso XD
@Indy_660
@Indy_660 5 жыл бұрын
Эммм, то есть если я учу только яву 1 месяц(ксс и хтмл немного знаю), и на все эти вопросы приблизительно правильно ответил, то меня возьмут в джуниоры?)
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
Приблизительно или правильно? Немного разные вещи))
@Indy_660
@Indy_660 5 жыл бұрын
@@SuprunAlexey с объектами я никогда толком не работал, но могу пример дать. А вот объяснить нет. методы хорошо знаю, так как часто тренюсь на кодварс. Кажется, что уж слишком просто
@blackch1p
@blackch1p 5 жыл бұрын
Тебя не возьмут потому что ты джаву Явой называешь:)
@T1nyAss
@T1nyAss 5 жыл бұрын
@@blackch1p тебя тоже не возьмут потому что ты джавасрипт называешь джавой
@user-tw3oe1nf5g
@user-tw3oe1nf5g 5 жыл бұрын
@@T1nyAss тебя тоже не возьмут потому что ты JavaScript называешь джаваскрипт
@vladisavvdovin6501
@vladisavvdovin6501 5 жыл бұрын
Лайк не глядя)
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
Спасибо!
@user-nr2us3ln5t
@user-nr2us3ln5t 5 жыл бұрын
топ
@strel9
@strel9 4 жыл бұрын
судя по всему автор не был на собеседовании уже лет 5
@user-zq7cv8uk5q
@user-zq7cv8uk5q 5 жыл бұрын
Чувак, тема reduce не раскрыта. Джун ничего кроме суммы сделать не сможет. Да и остальное так себе, на тройку.
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
Это что б напомнить людям перед собеседованием о том какие вопросы ожидать, если делать оооочень подробное видео с каждым примером оно конечно будет минут на 40 по этим темам)
@user-zq7cv8uk5q
@user-zq7cv8uk5q 5 жыл бұрын
@@SuprunAlexey тогда сразу паузу и списком на экран. Видосика на 5 секунд. Я не вам удивляюсь, я удивляюсь тем кто вам лайкает.
@Andrey-il8rh
@Andrey-il8rh 5 жыл бұрын
@@user-zq7cv8uk5q та лайкают полнейшие нубы которые доку в глаза не видели. Посмотри что тут спрашивают, люди не знают как вывести длину массива
@svgaryaev
@svgaryaev 5 жыл бұрын
Давно вы не ходили на собеседования. Где такие вопросы вообще задают?
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
А какие же по вашему задают?:)
@svgaryaev
@svgaryaev 5 жыл бұрын
@@SuprunAlexey области видимости с учётом es6+, лексическое окружение и this, прототипы, асинхронный код и промисы и тд Если кандидат знает эти вещи, то он наверняка знаком со встроенными методами объектов.
@khartower
@khartower 5 жыл бұрын
​@@svgaryaev а еще я много чего бы спросил, к примеру кто знает сколько байт в TCP/IPv4 и в TCP/IPv6 адресах, ааааа не знаете вонючие недо-праграммисты, все уволены, а ведь все этим пользуются...
@svgaryaev
@svgaryaev 5 жыл бұрын
@@khartower мои вопросы относятся к основной теме - javascript, ваши - нет. Их можно задать на собеседовании, чтобы проверить знания предметной области it, но среднему javascript разработчику это знать не обязательно. ps не бывает TCP/IP адресов, есть только ip адреса.
@khartower
@khartower 5 жыл бұрын
@@svgaryaev та не гони, что серьезно?
@skeelo3157
@skeelo3157 5 жыл бұрын
А разве без filter функция не вывела бы такой же результат?
@o_leh
@o_leh 5 жыл бұрын
нет
@vladkyselov
@vladkyselov 4 жыл бұрын
let arr = [1,2,3,4,5,6]; let result = arr.reduce((current, value)=>{ return value+current },0)
@simplewebdev1098
@simplewebdev1098 4 жыл бұрын
Что такое current? Текущий элемент? Или результат?
@vladkyselov
@vladkyselov 4 жыл бұрын
@@simplewebdev1098 сумма
@simplewebdev1098
@simplewebdev1098 4 жыл бұрын
@@vladkyselov current в переводе означает текущий.
@vladkyselov
@vladkyselov 4 жыл бұрын
@@simplewebdev1098 там должно быть (prev,current)
@simplewebdev1098
@simplewebdev1098 4 жыл бұрын
@@vladkyselov prev тоже не лучшее название. Это не предидущий элемент. Тут скорее sum какой-нибудь.
@klyasyuk8284
@klyasyuk8284 5 жыл бұрын
Что за холиварная тема : var или let? ES6 предлагает три способа объявления переменной: var, let и сonst ! Различие в том, что тип обьявления зависит от области видимости. var определяет переменные локально или глобально для всей функции не зависимо от области видимости, а let позволяет обьявлять переменные ограниченные по области видимости до блока, инструкции или выражения в которых они используются. Так что утверждение , что VAR в 2k19 году плохо или е правильно работает, просто популизм не подкреплённый ничем. Можно использовать и VAR и LET, в зависимости от необходимой области видимости. По большому счёту автор молодец.
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
Спасибо!
@user-mb2hn7ir3x
@user-mb2hn7ir3x 4 жыл бұрын
@@SuprunAlexey Вопрос не по теме,но все же....стоит ли изучать C# для андроида или веба?
@toyotominashimoto9963
@toyotominashimoto9963 4 жыл бұрын
.froEach как в php
@alexluy4673
@alexluy4673 5 жыл бұрын
не могу понять сколько можно var писать если повсюду уже только let и const
@jenncon2012
@jenncon2012 5 жыл бұрын
Var писали пишут и будут писать
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
Это уже придирки какие то
@skeelo3157
@skeelo3157 5 жыл бұрын
Alex Luy разницы никакой
@user-tp4id1hp3u
@user-tp4id1hp3u 5 жыл бұрын
Во всех коммерческих проектах используют транспайлер, так что по сути даже новые проекты используют "var", стандарт ES6 всего лишь предоставляет "синтаксический сахар", вся механика все равно реализуется на старом стандарте. А в данном случае автор всего лишь показал пример и использовал он var или let вообще похуй если честно
@Andrey-il8rh
@Andrey-il8rh 5 жыл бұрын
@@user-tp4id1hp3u бомбит от того что большая часть людей возбухающая по поводу var вообще не понимает как он работает и в чем вообще разница с let, им просто в Ютубе такие же умники прокукарекали что так надо, вот они теперь и ретранслируют
@user-yq1km9wl5q
@user-yq1km9wl5q 5 жыл бұрын
Можно ли быть хорошим бэкенд разработчиком, без фронтенда?
@subclox
@subclox 5 жыл бұрын
Ну, знать фронт на уровне построения шаблонов, базовых концепций html5/css3 и возможностью работы с сеткой того же bootstrap желательно. Лишним точно не не будет, а вот плюсом - однозначно хотя бы потому, что такой человек будет более конкурентоспособным на рынке труда.
@user-tl7cm9ij6m
@user-tl7cm9ij6m 5 жыл бұрын
forEach возвращает "undefined" var double = forEach...
@Andrey-il8rh
@Andrey-il8rh 5 жыл бұрын
Конечно, а почему она должна возвращать что-то другое?
@simplewebdev1098
@simplewebdev1098 4 жыл бұрын
@@Andrey-il8rh ну, в теории, было бы неплохо возвращать ссылку на массив. Так можно цепочку делать, типа, вызвал forEach, точка, вызвал ещё какую-то шнягу для массива. Всё равно ничего не возвращает.
@Andrey-il8rh
@Andrey-il8rh 4 жыл бұрын
@@simplewebdev1098 для этого есть map
@simplewebdev1098
@simplewebdev1098 4 жыл бұрын
@@Andrey-il8rh причём здесь map? Допустим, я хочу что-то сотворить с массивом, а потом его отфильтровать. Map я использую, если не хочу менять исходный массив. А если хочу? Так я сначала сделаю forEach, а потом следующей инструкцией arr.filter( ... ). А так я мог бы arr.foreach( ... ).filter( ... ). Жить, конечно, без этого можно, но почему бы и нет, всё равно forEach ничерта не возвращает.
@Andrey-il8rh
@Andrey-il8rh 4 жыл бұрын
@@simplewebdev1098 приравняй исходному массиву то что возвращает map
@user-jk1qf8il8x
@user-jk1qf8il8x 5 жыл бұрын
Доброго дня друзья. Ответьте на воброс кто знает? Хочу заняться разработкой браузерной игры онлайн покер стол. Что изучить ?как глубоко изучить?
@dzibiz
@dzibiz 5 жыл бұрын
поздновато решил видео выложить. меньше просмотров наберешь же
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
Посмотрим
@promoabys
@promoabys 3 жыл бұрын
Видео ни о чём. Затронуто пара тем, а вопросов реально больше )) Кликбейт какой-то.
@user-lj3fo5dp1o
@user-lj3fo5dp1o 5 жыл бұрын
Джун жс? Таких не ищут
@ldr08eldaradome50
@ldr08eldaradome50 5 жыл бұрын
А каких ишут?
@user-lj3fo5dp1o
@user-lj3fo5dp1o 5 жыл бұрын
@@ldr08eldaradome50 чекни на hh джунов по жс , даже в мск максимум парочку и обычно не жс а фронтендер и то обычно не Джун
@user-lj3fo5dp1o
@user-lj3fo5dp1o 5 жыл бұрын
@@ldr08eldaradome50 это мое мнение , возможно я глуп
@ldr08eldaradome50
@ldr08eldaradome50 5 жыл бұрын
@@user-lj3fo5dp1o просто python разрабов тоже не нужно никому...js можешь использовать и во фронтенде и в бэкенде
@user-lj3fo5dp1o
@user-lj3fo5dp1o 5 жыл бұрын
@@ldr08eldaradome50 питонисты по вакансиям (колличество ) сравнимы с джавой
@user-yw1qk7dc4c
@user-yw1qk7dc4c 5 жыл бұрын
Мне уже много лет и js я использую часто как на фронте так и на сервере. О функциях который автор рассказал вообще впервые слышу. Знать их нах не надо чтобы программировать на js. Все задачи, которые описал автор решаются через простой поэлементный перебор массива. А вообще при правильной архитектуре приложения перебором массивов никто не занимается. Это решается на стороне хранимых процедур баз данных.
@serega16bit
@serega16bit 5 жыл бұрын
Вам, батенька, тогда пора на Си переходить
@user-oy4um7ur5c
@user-oy4um7ur5c 5 жыл бұрын
@@serega16bit почему?
@VSsoviet
@VSsoviet 3 жыл бұрын
какой же бред, это наверное мотивационное видео для начинающих, чтобы они думали что там все так просто.
@VSsoviet
@VSsoviet 3 жыл бұрын
уахааххахахахаха это я еще дальше не посмотрел, чекните требования в вакансиях, у меня 2 раза разговорный английский потребовали НА ДЖУНА, по телефону просили пошпехать потом говори что без этого никак
@SuprunAlexey
@SuprunAlexey 3 жыл бұрын
Уахахах
@user-yz4rk8fv8q
@user-yz4rk8fv8q 2 жыл бұрын
Вы меня извините, но все эти теоретические простенькие примеры из справочника, можно выучить за час, просто немного зная основы программирования.Когда у вас будет конкретная задача и вам надо будет написать решение в виде кода, то вся эта теория с переборами массивов и возвратами числовых значений пойдёт в топку.Решайте реальные примеры для бизнеса с автоматизацией от и до, иначе придётся только дома для себя делать сайты - чтобы всплывали окна и прыгали кнопочки .На нормальную работу за это умение я думаю вас вряд ли возьмут, т.к. такую простоту сделает любой, попрактиковавшись пару дней на ютубе.
@SuprunAlexey
@SuprunAlexey 2 жыл бұрын
Но все равно у вас такое спросят
@user-jk8nq1rm9x
@user-jk8nq1rm9x 4 жыл бұрын
Я нашла аудиокнигу, где много ценных советов, как пройти собеседование kzfaq.info/get/bejne/osCEpMd8rp-ZiXk.html
@user-hn5ie9hx6q
@user-hn5ie9hx6q 3 жыл бұрын
Какой var, дядя, очнись, уже 2021 скоро, удаляй нахер, не пудри мозги новичкам
small vs big hoop #tiktok
00:12
Анастасия Тарасова
Рет қаралды 17 МЛН
FOOLED THE GUARD🤢
00:54
INO
Рет қаралды 61 МЛН
Children deceived dad #comedy
00:19
yuzvikii_family
Рет қаралды 4,8 МЛН
Каха ограбил банк
01:00
К-Media
Рет қаралды 9 МЛН
ТОП 10 вопросов на собеседовании ReactJS
29:52
Веб-разработка - DevMagazine
Рет қаралды 45 М.
Вопросы собеседование Javascript
6:51
Web Developer Blog
Рет қаралды 49 М.
SENIOR on JUNIOR Javascript Developer interview
26:35
BELOV
Рет қаралды 274 М.
JavaScript 5 типовых задач на собеседовании, решаем их!
10:41
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 124 М.
ТОП 10 ВОПРОСОВ НА СОБЕСЕДОВАНИИ НА JUNIOR NODEJS
11:49
ДЖАВАСКРИПТИЗЕРЫ | КИРИЛЛ ПОЗДНЯКОВ
Рет қаралды 6 М.
small vs big hoop #tiktok
00:12
Анастасия Тарасова
Рет қаралды 17 МЛН