РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА MIDDLE/SENIOR FRONTEND РАЗРАБОТЧИКА С ЗП 300К В ФИНТЕХ
HTML-код
- Опубликовано: 7 фев 2025
- 👉 Помощь в трудоустройстве - goo.su/xeDj
👉 Подписывайся на ТГ канал с полезной инфой - t.me/m1sha_fro...
👉 ТГ для связи со мной - t.me/m1sha_bbn
JavaScript:
00:00 - Вакансия
01:00 - Тех часть
06:30 - Неудачная задача
08:10 - Тех часть
1:23:00 - Результат собеса
==================== Теги
#frontend #react #js #javascript #фронтенд #реакт #it #айти #программирование #webdevelopment #software #собеседование #собеседованиефронтенд #ulbitv #ульби #frontendсобеседование #реальноесобеседование #redux #reduxtoolkit #reactjs #антонназаров #middlefrontend #frontendразработчик #frontendразработчикснуля #frontendroadmap #seniorfrontend #войтивайти #войтивit #reactjs #typescript
Помощь в трудоустройстве - goo.su/xeDj
ТГ канал - t.me/m1sha_frontend
ТГ для связи со мной - t.me/m1sha_bbn
Крутое собеседование! Огромное спасибо за выпуск:)
Спасибо за видео, хотелось бы конкретные временные метки на тех части.
а мне собес понравился, много полезной инфы, а то все привыкли к одним и тем же вопросам, а здесь человек местами копает вглубь, и это интересно)
оч душный чел, с таким неприятно работать, провалить этот собес и не пересекаться с таким челом это благосклонность судьбы
Поглядывал-поглядывал собеседования, работая на начальных уровнях мидла и думая, что умный, а потом попался этот собес и понял, что тупой)
вы про паттерны и безопасность ?
Собеседование интересное. Респект интервьюеру за доходчивое объяснение. Единственный на мой взгляд минус - какой смысл был спрашивать про книги в самом начале? Что бы что? Если кандидат ответил что читал, ты его будешь краткий пересказ глав спрашивать, а если не читал то закончишь интервью?
Пушка!
С таким допросом компания долго будет искать подходящего кандидата.
Компания ищет сотрудника высокого уровня, а не эникейщика, значит позиция предполагает серьезные задачи, а не джуниорские
Я смог пройти. Узнал человека, кто собесил
@@AndreyEricksonGame скок офер дали?)
@@rogiawos8737 300к
@@rogiawos8737 300к
Как у тебя хватило сил и терпения ЭТО слушать - моё уважение. Я бы уже попрощался и ливнул после вопроса о KISS, откуда пошёл этот принцип. Оказывается, от армии США в 70х годах. Абсолютный маразм и духота.
Спасибо за собес, интересные вопросы были
круто что ты дотерпел это до конца
Правильное решение первой задачи
const flat = (arr, n) => {
const res = [];
if (!n) {
return arr;
}
for (let item of arr) {
if (typeof item === "number") {
res.push(item);
} else {
res.push(...item);
}
}
return flat(res, n - 1);
};
Было бы круто если бы подобные собесы, где мало практических задач ты выкладывал их в телегу в формате подкаста 😊
хорошие вопросы на самом деле. Если ищут уверенного в своих знаниях кандидата, то самое то. Про KISS и армию США конечно мем))
Это было в Промсвязьбанк? Недавно у них собесился, похожие вопросы и задачки были)
А разве реквест анимейшн подходит для тяжеловесных задач ? Он же как раз вызывается перед каждым
рендером, а вот про айдл ты правильно сказал
Интервьювер сам не понимает о чем говорит на 24:01, текучий интерфейс обязан возвращать селф-ссылку, то есть this, а это ссылка на экземеляр класса, на котором был вызван первый из методов всей цепочки, с промисами же другая история, каждый метод цепочки методов возвращает НОВЫЙ экземпляр
1:00:35 - так di основан на декораторах
На 1:23:18 речь идет о паттерне fluent interface. Хотя я бы его паттерном не назвал.
А потом приходишь и кнопочки красишь
Это собеседование на СЕО джаваскрипта?
я вижу многие по-разному понимают что есть helper функция. обычно это функция, которая возвращает другую функцию с аргументами в замыкании. а некоторые понимают это как утилиту. где-то на 54:00 тут такое же недопонимание проскользнуло.
Непонятно, откуда вы такое взяли. Helper-функция это вспомогательная функция, что нужно для основной функции, то она и возвращает
хелпер- утилита, а то что ты описал- это декоратор
@@maxzm1279 не согласен
Про XXS атаки я вообще не понимаю, банк все дела но он кажется идет кнопочки красить а не взламывать безопасность банка.
Интервьюер так занят своим эго, что не замечает, что интервьюируемый гуглит или что-то в таком духе. Но однозначно отвечает как-то неестественно. Более того, если речь идёт о теории, то отвечает практически на все вопросы, а на практике лажает.
К примеру, я знаю о принципе yagni и если бы у меня за него спросили, то сходу бы ответил, что это за принцип (расшифровывать не обязательно). А там сразу видно, что опрашиваемый не знал.
Да норм интервью, че гоните в коментах. Бывали и хуже вопросы у меня в европе
че за духота
Я бы после такого собеса впал в депрессию, что со мной в команде будет работать такой душный чел.
что то я не понял как сработает рекурсия в первой задаче, если n - 1 передается в push, а не в flat
видимо опечатка, но смысл понятен, что нужно во flat
@@art7653 Так написано же в задаче что flat нельзя использовать
Promise это разве не push. 21:30
действительно сложный собес. По безопасности вообще ничего бы не ответил))
ребят, сколько в среднем может пройти времени от момента, как тебя в лонг-лист занесли, до собеса (если, конечно, тебя просто не скипнут)?
Максимум 2 недели
Душновато, но вопросы реально на сеньора
Очень душно, такое впечатление, словно цель собеса не найм, а потешить самолюбие главного разраба...
Расскажите собеседующему, что на дворе 2024 год, есть интернет - все гуглится.
300 к платят за знание, а не за гугление
@@Todortodorov62 Любое знание, получаешь гуглением) или ты родился с знаниями, на 300к))
@@Todortodorov62 за опыт деньги платят, а не за знания
@@kawaikaino5277 гуглить умеют все, а вот знания накапливаются годами таких гуглений. Вы пишете примерно следующее - я умею гуглить, я достоин 300к
@@enoughfornow7310 опыт разный бывает. Кто то джуниорские задачи решает всю жизнь в одной и той же конторе и удивляется, почему ему выше 150 никто не предалагает. Не предлагают потому что уровень знаний низкий, а опыт 10 лет...
А нельщя чтоли linq использыать?
Дали оффер по итогам ?
Интересно, после такого собеседования, хоть один трезвый человек пойдёт туда работать
Я бы пошел. Приятно работать со специалистами с высоким уровнем знаний, а не выпускниками двухнедельных курсов
Да ты бы и в рот взял судя по твоим комментариям
На ангуляр 12)))
Это шутка какая-то?) Первая задача решена неверно.
У вебворкера нет своего стека, результат его выполнения- это макротаска (postMessage), которая помещается в очередь макротасок
const flat = (arr, n) => {
const res = [];
if (!n) {
return arr;
}
for (let item of arr) {
if (typeof item === "number") {
res.push(item);
} else {
res.push(...item);
}
}
return flat(res, n - 1);
};
жесть задушил
В случае с промисами, клиент сам запрашивает данные у сервера, когда они готовы, но не получает их напрямую, а вместо этого получает callback-функцию, которая будет вызвана, когда данные будут готовы. Промис это же полл-система, а не пуш
а RxJS использует push-систему для передачи данных от источника к подписчику.
Промисы это пуш система, ведь при выполнении промиса, когда он переходит в состояние выполнен или отклонен, результаты автоматически передаются в обработчики.
@@rusfungame Когда промис переходит в состояние выполнен (fulfilled) или отклонен (rejected), результаты автоматически не передаются в обработчики. Вместо этого, вы должны использовать методы, такие как then и catch, чтобы обработать результаты промиса.
@@enoughfornow7310 а then это что не обработчик что ли? Или мы заставляем пользователей руками вызывать их?
@funfunfunnyfun8821 then и catch это фактически подписки на изменение состояния промиса, которые в момент изменения состояния запускаются рантаймом. Поэтому и пуш - они запускаются извне в некий момент времени.
Скрипты с defer никогда не блокируют страницу.
речь шла о выполнении скриптов после загрузки. Выполнение блокирует
@@riman1132 Скрипт дождется когда отрендерится и только потом начет выполняться, поэтому никак не может заблокировать, тут речь шла про выполнение с атрибутом defer
Не понятно что он хотел увидеть с классом очередей на двух стеках. Обычно реализуется кольцевая очередь на одном массиве. Или однонаправленный список с двумя указателями
классическая задача просто не для js "очередь на двух стеках" гуглится легко
@@xxxxPomaHxxxx ага нашел. можно и на js реализовать, конечно.
паттерн чейнинг
HTTP only защищает от csrf, а не от xss
Если допустить, что на инджект скрипта уже произошел, то чисто теоретически можно спиздить данные из куков, например, если токены авторизации хранятся не в хттп онли, а дальше, если на сайте есть что-то в духе комментариев, можно прям туда все это кидать
от csrf . samesite:strict
Интервьюер глубоко в теме. Респект
Сам себя похвалил?) Ты вызвал у людей которые посмотрели это видео с тобой исключительно негатив и отторжение
@@AntinMak ну не скажи норм мужик.
@@AntinMak ты болеешь? на видео не я. Стыдно стало за свой низкий уровень знаний и пытаешься тут утвердиться? Смешно
Отложил 15к, чтобы сходить к тебе, если новую работу не найду, а ты уже до 20к и 50% поднял :(
! Он не прав async script никогда не блокирует parsing HTML. Различие состаит в том что async script может начать работать не ждав когда DOM оканчетельно парсится а defer ждет когда дом оканчетельно парсится потом начинает работать !!!
ты даун
Как решили эту задачу? @frontend-m0ney
// Реализовать очередь с помощью 2-х стеков
class Stack {
constructor () {
this.storage = []
}
push (data) {
this.storage.push(data)
}
pop () {
return this.storage.pop()
}
size () {
return this.storage.length
}
}
class Queue {
constructor () {
this.stack1 = new Stack()
this.stack2 = new Stack()
}
// Добавить в очередь
enqueue (data) {}
// Вернуть следующего в очереди
dequeue () {}
// Сколько в очереди
count () {}
}
const queue = new Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.dequeue() // 1
queue.enqueue(3)
queue.enqueue(4)
queue.dequeue() // 2
queue.dequeue() // 3
Стек 1 - С1, стек 2 - С2. С1 будет хранить один элемент, означающий первый элемент очереди. С2 хранит все последующие элементы. Метод dequeue будет доставать элемент из С1, после чего нужно перевернуть С2 путём его перемещения в С1. По завершению переворота достаём один элемент из С1 (перевёрнутый С2), это будет следующий элемент очереди, запоминаем. Теперь можно вернуть элементы из С1 в С2 с переворотом без запомненного. В результате мы имеем первый элемент очереди, который нужно вернуть по завершению выполнения функции, второй элемент очереди, который теперь хранится в С1 и С2 без второго элемента очереди.
enqueue 1
С1 - [1]
С2 - []
enqueue 2, 3, 4
C1 - [1]
C2 - [2, 3, 4]
dequeue
result - 1
C1 - []
C2 - [2, 3, 4]
+ rotation 1
C1 - [4, 3, 2] (while C2.length -> C1.push(C2.pop())
C2 - []
+ запоминаем и rotation
next = C1.pop() // 2
C1 - [next]
C2 - [3, 4]
итог:
C1 - [2]
C2 - [3, 4]
и результат выполнения 1
Вроде так можно решить задачу
Душновато, но вопросы реально на сеньора