7+ лет опыта во фронтенде | Собеседование frontend #10
Vložit
- čas přidán 23. 08. 2024
- Запись на индивидуальное менторсво: telegram.me/fr...
🥷 Discord: / discord
🐦 Telegram: t.me/frontendiya
⭐ TikTok: / frontendiya
💡 Instagram: / frontendiya
#войтивайти #dev #frontend #interview
Мы занимаемся индвидуальным менторством для фронтов, подробнее можно узнать у нашего менеджера в тг @frontendiya_manager
😂😂😂😂😂 ребята не смешите
@@swiftuicoder8504 что случилось?)
тайм-коды уже стали такой обыденностью, что без них смотреть видео не хочется...
Бывает(
Менторство от 14-летних сеньоров с 10 годами опыта
Что еще придумаешь?)
😂👍
пхахахах 😀
первая задача можно и лучше наверное но решил за минуты 3-4
const foo = (str) => {
let answer =''
let count = 1;
for(let i = 1; i
С массивом будет за O(n) и O(n) по памяти, а с конкатенацией строк O(n ** 2) по времени и O(n ** 2) по памяти
@@vvindover объясни плз свой коммент, как у тебя вышло O(n ** 2) что по времени что по памяти?
@@vvindover полную хрень написал
Очень странное собеседование для уровня 7+ лет. 3 базовых вопроса, 2 задачки (1я уровня джун/трини) + разговор за ̶ж̶и̶з̶н̶ь̶ стек - ну такое. Собеседуемый про web workers упоминает, логично было бы туда капнуть, узнать про service workers (в конце конечно было, но уровень знаний собеседуемого в этой теме не раскрыт), например и тд. Ощущение после просмотра, как будто немного не дотянули собещедующие ребята. Не сочтите за токсичность, делюсь впечатлением после просмотра.
Родной, всё в цвет нацарапал🤙
напиши плз какие должен сеньор решать и как решение этих задач поможет реальным бизнесовым задачам
ты на этих "мамкиных менторов" посмотри )
@@artiomborisov6838 у сеньоров почти такие же вопросы на собесах, как у джунов, только ответ ожидается более развернутый с пониманием сути. Сеньор может не решить задачу "джуна" из-за того что совсем другими задачами на работе занимался, а не писал сортировки
Менторы)) во второй задаче условия перечитайте и поменяйте результат если условие "сохранив оригинальную сортировку" вам нужно)) а так вот вам два решения, и соблюдением первого условия и второго, учитесь менторы))
const Todo = (arr) => {
const result = arr.map((el) => {
el *= el
return el
})
return result
}
//[-4,-1,0,3,10]
// result [16, 1, 0, 9, 100] сохранив оригинальную сортировку
const Todo = (arr) => {
const result = arr.map((el) => {
el *= el
return el
})
return result.sort((a,b) => a-b)
}
//[-4,-1,0,3,10]
// result [0, 1, 9, 16, 100] по возрастанию
Ну не завидуй )))
Не знал что дети из ясель в айтишке менторят кого-то
:)))
задача убрать символы решается проще)
var input = 'abbcdafec';
var output = [...new Set('abbcdafec')].join('');
console.log('input: ' + input);
console.log('output: ' + output);
///
input: abbcdafec
output: abcdfe
Там нужно посчитать кол-во вхождений каждого элемента и выводить это число после символа.
Что-то я потух на первом же тех. вопросе...
Без обид, я бы не писал такой коммент, если бы вы не сказали ниже "Мы занимаемся индвидуальным менторством для фронтов"...
Ну куда вам?
Кандидат - молодчик. Все круто и он сам крут. Пусть убивает своего самозванца.
По интервью:
1. Long-Pooling? SSE? Где же вы это юзаете?
2. Потом, прям мягко поехал в CORS. Это же прям фронт решать должен. Ведь если фронт это решает - это дно.
3. Event Loop и ре-рендер - собеседующие понимающе кивают... Занавес...
4. Отдельный поток - это не про Service Worker, а про Web Workers... Но собеседующие этого не знают...
5. Все выше не интересно, давайте про Babel... И даже тему транспиляции не раскрыли...
6. Окей, давайте поговорим про TS - классы и абстрактные классы... Тип рассказывает про абстракции - собеседующий едет в Enum и то, почему его не стоит использовать, ведь так на хабре сказали... Как он читал... И даже читал чушь... Кандидат даже сказал, что это обьект... Но нет, собеседующий читал)))
7. Pick/Omit/Record - это интересно, Jenerics - это лишнее))) Поклон собеседующим...
8. "По вашему взгляду, есть ли у вас Manual QA" - как на это отвечать?
9. Давайте поговорим о сборщиках, ведь вы собеседуете настройщика билда.
10. Как же сделать лучше? Собеседующий - я не знаю...
11. Память/сложность - чуваки, ну реально, вы ничего об этом не знаете...
12. unshift/push - нет понимания в чем разница? печалька...
13. Куда дальше, "лиды/архитекторы"? - а вы что об этом знаете?
14. Общая задачка, но при каких обстоятельствах это нужно на фронте? Какая цена такой оптимизации?
15. ДА! Рассказывают, как запускают ракеты. Твитч - проще ракеты.
Тут роли можно спокойно менять. Вопросы не прорабатывались собесудующими, такое впечетление что они их выписали на листочек и ставят галочки, даже без понимания ответа. Да и уровень проверки - поверхностный.
Для формошлепства и страничек по типу казино и подобных сайтиков по готовым апишкам пойдет, там как раз такие болванчики и нужны. Но для нормального проекта/стартапа уж извольте нет, тут максимум уровень вопросов это мидл. Тут нету даже разбора полетов о декораторах и их написания та даже конфигурации проекта. А это между прочим Ангуляр, огромная балда, с которой нужно хоть какое то понимание как оно работает ибо там избыточного функционала в коробке слишком много.
Это для школьного проекта кто-то интервью берёт? Ничего не понимаю.
Для ясельного
@@frontendiya Я не хотел оскорбить, но пригласите кого-то из взрослых на интервью. Это важно. Взрослый человек к вам приходит на собеседование, у него семья, ипотека, дача, у него совсем другая жизнь. О чём ему с вами говорить?
Отвечать на заученные вопросы, а дальше то что?
@@dimitritarasenko9960 а причем здесь это к работе? И да, такие ребята тоже проходил у нас собеса, смотри другие видео
Куда катится наш IT 😢
Покажу свое решение:
const countDuplicates = (str) => {
const hash = {};
let res = "";
for (let i = 0; i < str.length; i++) {
const el = str[i];
if (Object.hasOwn(hash, el)) {
hash[el]++;
} else {
hash[el] = 1;
}
}
for (let key in hash) {
res += key;
res += hash[key];
}
return res;
};
не оптимально как по памяти так и по скорости. Такое не собесах не принимают обычно
@@MassEffecn да, для этой задачи действительно, я проглядел немного, думал нужно сократить так, чтобы не было повторяющихся букв и выводилось их кол-во.
Странный фидбэк от задач.
По первой, если проверяется знание языка, то почему интервьюер не спросил решение через методы, тот же Array.reduce.
По второй. Для разработчика с 7летним опытом странно не знать, как работает unshift по технике, для интервьюера странно не знать, как работает unshift по памяти. У вас длина конечного массива уже известна, зачем каждый раз выделять память? Создали массив той же длины, что начальный и с конца по индексам заполняете.
Так себе, собес, я бы чела взял на джун+/мидл-
Как часто вы используете unshift в своей работе? Я бы даже спросил когда последний раз это было, у меня например когда я изучал массивы в js то есть в прошлом десятилетии)
А reduce сразу переводит разработчика на уровень синьора?
Кстати из глубинных знаний, которые опять же на хер не кому не нужны - операция unshift более тяжёлая, так как перестраивает массив, а push легче потому что дописывает в конец.
Я к тому что по таким вопросам, никого не разделить на джунов и сеньоров.
O(N), по памяти O(1)
решил за 10 мин, при наблюдателях конечно сложнее сконцентрироваться
function zip(str){
let start = 0;
let end = 0;
let currentSymbol = str[0];
let result = '';
for(let i = 1; i < str.length+1; i++){
if(str[i] === currentSymbol){
end++;
} else {
const dif = end-start;
if (dif
Квадрат по времени у вас :)
@@codingjerk объясни, где внутри цикл видишь?
const task = str => Object.entries(str.split('').reduce((acc, rec) => {
if (acc[rec]) {
acc[rec] += 1
return acc
} else {
return {...acc, [rec] : 1}
}
},[])).flat().join('')
как такое решение ?
@@user-zw7tl7ic4k неправильно работает. Попробуй DDDDAAAADDD. И лучше больше строк написать зато читабельность не пострадает
Ребзя, ну отсобесьте меня, я джун, войтишник, с диким синдромом самозванца, начал изучать фронт с нуля 01.10.22, работаю с 1.05.2023
Хочу понять, джун я или просто фартит… до конца не понимаю вообще соответствую ли уровню джуна , решаю ли задачи джуна. Дудьте бобры, отсобесьте
@@IT-therapyахахахах
@@IT-therapyкакие пет-проекты ты делал, чтобы попасть на первую работу? и какие у тебя обязанности на работе?
@@Nikita-po3sj Туду лист с беком, поисковик книг на апишке гугл букс, это реакт, на вью кастомный редактор текста, ну и все.
Обязанности делать все что не касается бекенда. Это верстка, адаптив, кроссбраузерность, доступность, бизнес логика , интеграция сторонних сервисов, виртуализация данных, написание Кастомных плагинов для опенсорсных интеграций под наши задачи, работа с базой данных, создание граф кьюэль запросов, написание тестов, ну в основном вот
@@Nikita-po3sj также на мне вся архитектура фронта той части приложения над которой я работаю
Первый паззл решается в одну строку: const reduceStr = (str) => str.replace(/(.)\1+/g, (m, c) => c + m.length);
Вторую можно решить за O(N), а чувак сделал O(N^2) на ровном месте из-за гребаных аншифтов.
Ух ти бозе мой, алгоритмы кому то в глаз попали. Не понятно ему видите ли, как можно чего то не знать
твоя 1 строчка, хуже по скорости чем его решение
@@inqvisitor3722 этот вывод сделан на основе замеров, или на основе "богатого" опыта в js? Судя по всему, второе, потому что когда я стал сравнивать, выяснилось, что решение из видоса неправильное - рисует единицы после однократных символов (но это легко поправить).
Запустил в консоли. В Хроме на mac os решение с регуляркой быстрее в 1.1-1.5 раза, а в Сафари - в 3 раза (Сафари славится своим движком регексов)
@@alexandroppolus запусти 100000 раз, посмотри на время выполнения
я скидывал пример в комментариях, мое решение примерно в 2 раза быстрее регулярки
Собес на сеньора, но не собеседующий, не кандидат не помнят как работает unshift..... как минимум странно)
Воо деревня, как ты думаешь, как часто он использует это? Возможно последним 5 лет он его и не юзал, и это нормально.
@@user-ft9ei2yi3p сужу по себе, я почему-то более чем уверен, что такие методы как push и unshift, хоть 5 лет я не буду использовать, вспомню как они работают и что возвращают)
Вы в продакшене используете unshift? Серьезно? Если вас это так сильно удивляет, то это лишь означает, что изучать язык вы начали достаточно недавно.
20 летние чуваки берут интервью у 30 летнего чувака с 10 летним опытом который решает задачи 3 урока JS и то еле справляется + невнимательность высшего уровня.
Неужели за 10 лет, хорошо, за 7, нельзя было в начальники выбиться 😮
Теперь понятно почему у нас сфера IT в таком состоянии
эмм о каком состоянии речь? у нас сфера ИТ в очень неплохом состоянии по сравнению с другими странами..
const task = str => Object.entries(str.split('').reduce((acc, rec) => {
if (acc[rec]) {
acc[rec] += 1
return acc
} else {
return {...acc, [rec] : 1}
}
},[])).flat().join('')