Если вы ищете вопросы на основе кода javascript для практики на собеседовании или мозгового штурма, я бы сказал, что вы находитесь в нужном месте, чтобы учиться. Я постараюсь осветить все каверзные и ключевые вопросы, которые не являются частью теоретического Javascript. Для лучшего понимания я бы порекомендовал взять ручку и бумагу и сначала попытаться решить ее, это будет хорошим началом.
1. Каковы будут выходные данные приведенных ниже строк кода?
console.log("11"-1); // 10 console.log("11"+1); // "111" console.log(0 === [[[0]]]); // false console.log(0 == [[[0]]]); // true console.log(0 === "0"); // false console.log(0 == "0"); // true console.log([1,[2,[3,[4,[5]]]]].toString()) // 1,2,3,4,5
2. Как эффективно преобразовать многомерный массив в одномерный массив?
const arr = [1,[2,[3,[4,[5]]]]] const dArray = arr.toString().split(',').map((num) => Number(num))
Тестовый массив объявляется для проверки нашего кода в первой строке. В следующей строке мы преобразовали тестовый массив в строковый формат после того, как наш результат будет выглядеть как «1,2,3,4,5». последним шагом будет разделение на основе «,» и преобразование в число.
3. Создайте числовые обещания от 1 до 10 со случайной задержкой и распечатайте их непрерывными сериями от 1 до 10.
const delay = (val, ms) => new Promise(resolve => setTimeout(resolve(val), ms)); const promiseArr = [] for(let i=1; i<=10;i++) { promiseArr.push(delay(i, Math.random()%5)); } const result = Promise.all(promiseArr) result.then(res => { console.log(res) // [1,2,3,4,5,6,7,8,9,10] })
Функция задержки создает новое обещание с заданным значением и задержкой.
Метод Promise.all() принимает итерацию промисов в качестве входных данных и возвращает один Промис, который разрешается в массив результатов входных промисов. Это возвращенное обещание будет выполнено, когда все обещания ввода будут выполнены или если итерация ввода не содержит обещаний. Он немедленно отклоняет любое из входных обещаний, отклоняющих или не промисов, выдающих ошибку, и отклоняет это первое сообщение об отклонении/ошибке.
4. Как проверить, является ли значение объекта объектом или нет?
typeof yourVariable === 'object' && yourVariable !== null
5. Как создать собственный переключатель в Javascript?
const match = (expr, allCases) => { return allCases[expr] || allCases?.default; } const allCases = { Hi: 'good morning', Red: "color", BMW: "my favourite", default: "not available" } const matched = match('Hi', allCases) const notMatched = match('Not', allCases) console.log(matched) // Good Morning console.log(notMatched) // not available
match — это функция, которая принимает все случаи и ваше выражение для сопоставления, если ваше выражение не существует, то оно найдет значение по умолчанию. allCases — это объект ключевого значения, который содержит все наши дела.
6. Что будет на выходе приведенного ниже кода?
const a = Number(1) const b = Number(2) const c = "1" const d = "2" console.log(typeof a * b) // NaN console.log(typeof c * d) // NaN console.log(typeof a * c) // NaN console.log((a*b) == (c*d)) // true console.log((a*b) === (c*d)) // true console.log(typeof Number(a * b)) // number console.log(typeof Number(c * d)) // number
7. Что будет на выходе приведенного ниже кода?
const arr = [1,2,3,4] arr.length = 0; // don't do this in your life console.log(arr) // [] console.log("1" - "2" + "3" + "4" * "5") // first * occurs and result will be // "1" - "2" + "3" + "20" // now left to right flow goes // "-1" + "3" + "20" // "-1320"
8. У нас есть три промиса с именем и задержкой: (медленно, 200), (быстро, 50), (мгновенно, 0), и все они должны разрешаться одновременно, а порядок должен поддерживаться в медленных, быстрых и мгновенных сериях. .
const slow = new Promise(resolve => { setTimeout(resolve, 200, 'slow'); }); const instant = new Promise(resolve => { setTimeout(resolve, 0, 'instant'); }); ; const quick = new Promise(resolve => { setTimeout(resolve, 50, 'quick'); }); const result = Promise.all([slow, quick, instant]) result.then((res) => { console.log(res) })
9. Что выведет приведенный ниже код?
var a={name:"RKstar"} var b={name:"RKstar"} console.log(a===b); // false console.log(a==b); // false
10. Если массив является экземпляром объекта, то как вы будете различать объект или массив? Как прогой сделать разницу между ними?
console.log(diff([])) // Array console.log(diff({})) // Object console.log(diff(null)) // Null or Undefined function diff(obj) { if(Object.prototype.toString.call(obj) === '[object Array]') { return 'Array' } else if(typeof obj === 'object' && obj !== null) { return 'Object' } else { return 'Null or Undefined' } }
Некоторые теоретические вопросы и вопросы по коду для вас, пожалуйста, прокомментируйте свое решение здесь.
в чем разница между null и undefined?
Написать анализатор JSON, нельзя использовать встроенный анализатор JSON.
И это подводит нас к концу! Большое спасибо за то, что дочитали до конца — если эта статья была полезна в каком-либо смысле, я был бы признателен за подписку, которая поможет мне достичь моей цели. :)
Не стесняйтесь посетить мой веб-сайт, и если у вас есть какие-либо вопросы, связанные с JS/DevOps, не стесняйтесь связаться со мной.
https://ritikchopra.netlify.app
Удачи!
Ритик Чопра😘