Проходим собеседование #11: собеседование на junior frontend developer

preview_player
Показать описание

00:00 Вступление
01:47 Знакомство с Никитой
03:40 Как выводятся 2 div'а, почему?
04:20 Какой длины будет блок, если родитель имеет длину 1000px? А если элемент с абсолютным позиционированием?
07:35 placeholder-shown псевдокласс, для чего он?
09:44 Почему мы можем менять константу?
11:55 Что получим при сложении числа и строки?
13:08 Вывести из массива число.
14:00 Задача 1 (КОСЯК! В Firefox работать не будет. ДоброДимыч указал на ошибку в комментариях, спасибо!)
37:25 Задача 2.
01:04:43 Задача 3.
01:28:30 Что выведется?
01:30:40 Задачка детская, на логику :)
Рекомендации по теме
Комментарии
Автор

В 1-ой задаче есть нюанс с (.) в Firefox - она при сортировке не уезжает в конец массива - Array(4) [ "5", ".", "7", "1" ]. Поэтому лучше наверное явно её отфильтровать. Либо сортировать по коду символа - b.charCodeAt(0) - a.charCodeAt(0).

izuchaikaru
Автор

Добрался до 11 части. Потихоньку двигаемся, вперед, решая все на пути ))

ЧеловексТопором
Автор

для position : absolute для родителя position : relative нужен вроде....

nlerszu
Автор

Хотел отметить одно субъективное наблюдение.
Если хорошо решать задачки в императивном стиле, то задачки легко решаются практически на любом другом языке программирования, на пример на Ruby. Так как циклы for, while, и ряд итераторов очень схожи в большинстве языков. И не вызывает сложности писать императивно на разных языках.
А вот функции в большинстве своем реализованы по разному, и вот тут может возникнуть сложность в решении одних и тех же задач на разных языках. Конечно же многие названия могут быть чем то похожу, но обычно на этом сходство и заканчивается. Взять к примеру метод сортировки в js sort и такой же метод сортировки sort в ruby, названия одни и те же, а вот принцип сортировки у них совершенно разный.

ЧеловексТопором
Автор

function getMax(number) {

if( typeof number === "number" ) {

const num = number.toString();

return +[...num]
.filter(item => +item)
.sort((a, b) => b-a)
.join("")

}


return NaN

}

TipAnswer
Автор

Во 2-й задаче в первом решении при строке "абв#г##д##" или "#абв#г##д##" на выходе будет "#", а должна быть пустая строка 🙃

juststart
Автор

function cleanString(s) {

const start = s.substr(0, 1)

const finish = s.split("#")

return start + finish[finish.length - 1]

}



TipAnswer
Автор

class Dev {

constructor(name) {
this.person = {
name,
skills : []
}
}

addSkill(skill) {

return this
}

loveFrame (frame) {
this.person.frame = frame
return this
}


build() {
return this.person
}

}

const person = new Dev("Павел")
.addSkill("ES6")
.addSkill("TypeScript")
.loveFrame("React")
.build()


console.log(person)

TipAnswer
Автор

Решение второй
function cleanString(str){
return str.includes('#')
? cleanString( str.replace(/([^#]?(\#))/, '') )
: str
}

ivanmakheline
Автор

В первой задачке почему то у меня ваше решение:

function getMax(num) {
return Number([...String(num)].sort((a, b) => b - a).join(""));
}

При передаче console.log(getMax(17.5)); Возвращает 5.71 Не могу понять почему.

Конечно я сначала решил самостоятельно и получилось вот, что:

function getMax(num) {
if (typeof num !== 'number') return NaN;

return [...('' + num)].sort().reverse().reduce((accum, elem) => elem !== '.' ? accum += elem : accum += '');
}

Но не могу понять, почему у вашего решения мне возвращается 5.71 , а у вас 751 ?

ЧеловексТопором
Автор

9:44 моя задачка)))
01:04:43 - прохожу php, уже нам и про фабрику и про синглтон говорили) и про многое другое))

pilyugin
Автор

Тоже начинающий, пришлось конечно подзапарится))

function Filter(num) {
if (typeof num !== "string") {
let ArrOfNumber = [];
for (i = 0; i < num.toString().length; i++) {
if {
continue;
} else {

}
}
return ArrOfNumber.sort((a, b) => {
return b - a;
}).join("");
} else {
return NaN;
}
}

ЕвгенийКоновалов-сщ
Автор

Задача №2 через рекурсию плюс регулярка
const cleanString = (str) => {
if ( !str.split("").includes("#") ) return str;
return cleanString( str[0] === "#" ? str.replace(/(#)/, "" ) : str.replace( /[^#]#/, "" )

);
};

АльКапоне-зн
Автор

Задачка 3, после php на js как-то все недоделано)) первая мысль - юзать магию и потом перевести в stdClass в методе build))) можно юзать любые методы и любые свойства))
Детская задачка прикольная))) с 5 литров отлить в 3, остается 2, выливаем 3 и заливаем эти 2, набираем еще 5 литров и доливаем литр во второй, он полный а у нас 4 литра в пятилитровке)) а, вот и так решили)

pilyugin