Зарплата слишком низкая, и я хочу уйти в отставку.Очень сложно отвечать на вопросы на собеседовании.
Повторные интервью натолкнулись на препятствия, поэтому приходите и смотрите по одному вопросу в день.
В свободное время я организую несколько предварительных вопросов для интервью и письменные тестовые вопросы, которые я организую в ежедневный вопрос, а затем отправлю его всем в официальном аккаунте.На один вопрос в день уходит всего несколько минут. , Вы получите лучшийoffer. Сегодняшняя статья представляет собой подборку некоторых из лучших вопросов из недавнего ежедневного вопроса и некоторых ответов, которыми поделились фанаты и друзья, которые копают, в надежде помочь вам. В то же время, обратите внимание на публичный аккаунт [Некоторые играют на фронтенде] и отправляйте ежедневный вопрос вовремя в 8:40 каждое утро.
Тема 1
тема
Теперь есть список карманных денег, который моя жена дает каждый месяц, но по некоторым причинам в некоторые месяцы нет карманных денег, как показано в следующих данных.
// 一月,二月, 五月的零花钱
{1:200, 2:140, 5:400}
Пожалуйста, преобразуйте вышеуказанный формат данных в[200, 140, null, null, 400, null, null, null, null, null, null, null], где длина массива12, что соответствует двенадцати месяцам, заполните следующий код
const obj = { 1: 200, 2: 140, 5: 400 };
function translate(obj) {
// 请在此处添加代码
}
// 输出 [200, 140, null, null, 400, null, null, null, null, null, null, null]
console.log(translate(obj));
Отвечать
На этот вопрос может быть много ответов. Ниже перечислены ответы, предоставленные несколькими друзьями группы для справки.
ответь один
const obj = { 1: 200, 2: 140, 5: 400 };
function translate(obj) {
return Array.from({ length: 12 }).map((_, index) => obj[index + 1] || null);
}
// 输出 [200, 140, null, null, 400, null, null, null, null, null, null, null]
console.log(translate(obj));
Ответить два
const obj = { 1: 200, 2: 140, 5: 400 };
function translate(obj) {
return Object.assign(Array(13).fill(null), obj).slice(1);
}
// 输出 [200, 140, null, null, 400, null, null, null, null, null, null, null]
console.log(translate(obj));
Ответ три
const obj = { 1: 200, 2: 140, 5: 400 };
function translate(obj) {
// 请在此处添加代码
let result = Array(12).fill(null)
Object.entries(obj).forEach(([key, value]) => {
result[key - 1] = value;
});
return result;
}
// 输出 [200, 140, null, null, 400, null, null, null, null, null, null, null]
console.log(translate(obj));
тема вторая
тема
пожалуйста вывод1прибыть400Количество единиц, содержащихся во всех числах между ними, например числах1содержит1, количество11содержит два1,количество20не входит в1,количество1прибыть21ККТ включает13индивидуальный1.
function getCount() {
}
// 输出 180
console.log(getCount())
Отвечать
ответь один
Этот ответ более классический, и производительность тоже очень хорошая.
const sum1s = num => {
let numstr
if (!num) return 0
if (typeof num === 'string') numstr = num
else numstr = String(num)
if (Number(numstr) === 0) return 0
const curr =
numstr[0] > 1
? 10 ** (numstr.length - 1) +
numstr[0] * (numstr.length - 1) * 10 ** (numstr.length - 2)
: sum1s(10 ** (numstr.length - 1) - 1) + 1
return curr + sum1s(numstr.substr(1))
}
// 输出 180
console.log(sum1s(400))
Ответить два
Это использует регулярность, но для регулярности длинных строк производительность может быть немного хуже.
function countOne(num){
// num为正整数,方法有点儿暴力
return Array.from({length:num},(v,i)=>i+1).join('').replace(/[^1]/g,'').length
}
console.log(countOne(400))
Ответ три
Следующий ответ является вполне удовлетворительным ответом, преобразуйте каждое число в строку, а затем посчитайте1номер
function getCount() {
let count = 0
for(let i=1;i<400;i++) {
count = count + `${i}`.split('1').length - 1
}
return count
}
// 输出 180
console.log(getCount())
тема три
Шторы павильона с висящими занавесками свисают, кого волнует Хуай Сихуай? Тени играют цветами, ветки и цветы играют тенями, шелк ведет вербовую нить ивовую нить. Это палиндром, то есть каждое предложение читается одинаково вперед и назад. Следующий вопрос является числом-палиндромом, то есть числа читаются одинаково вперед и назад, например11,1221,2112и т.п.
тема
пожалуйста распечатайте1 - 10000Все числа палиндрома между ними. в1~9Поскольку цифра всего одна, она не считается палиндромом.
Отвечать
ответь один
const palindrome = length => {
const res = []
const digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
const add = (current, length) => {
if (length <= 1) return
digits.forEach(digit => {
res.push(digit + current + digit)
add(digit + current + digit, length - 2)
})
}
digits.forEach(num => {
add(num, length - 1)
res.push(num + num)
add(num + num, length - 2)
})
return res.filter(num => !num.startsWith('0'))
}
// 总共189个
console.log(palindrome(4))
Ответить два
function palindrome (max) {
return Array(max + 1).fill('').reduce((a, c, i) => {
if (i > 10) {
const arr = Array.from(`${i}`)
const [x, y] = [`${i}`, arr.reverse().join('')]
x === y && a.push(i)
}
return a
}, [])
}
// 总共189个
console.log(palindrome(10000))
Ответ три
const result = [...Array(10000).keys()].filter((x) => x> 10 && x === Number(x.toString().split('').reverse().join('')) )
console.log(result)
тема четвертая
тема
Пожалуйста, реализуйте функцию в коде нижеfn, чтобы он мог выводить указанныйidВсе соответствующие родителяidи самid
const data = [
{
id: 1,
name: '222',
children: [{
id: 2,
name: '34',
children: [{
id: 112,
name: '334',
}, {
id: 113,
name: '354',
}
]
}]
}
]
function fn(id) {
}
// 输出 [1, 2, 112]
console.log(fn(112))
Отвечать
ответь один
const data = [
{
id: 1,
name: '222',
children: [{
id: 2,
name: '34',
children: [{
id: 112,
name: '334',
}, {
id: 113,
name: '354',
}
]
}]
}
]
function fn(id) {
const res = []
const find = _ => {
if (!_) return
return _.find(item => (item.id === id || find(item.children)) && res.push(item.id))
}
find(data)
return res.reverse()
}
console.log(fn(112))
Ответить два
const fn = (id, ancestors = [], current = data) => {
for (let i = 0; i < current.length; i++) {
if (current[i].id === id) return ancestors.concat(id)
if (current[i].children && current[i].children.length) {
const ret = fn(id, ancestors.concat(current[i].id), current[i].children)
if (ret) return ret
}
}
}
console.log(fn(112))
Ответ три
function fn(id) {
const arr = []
const getIds = (ids) => {
for (const v of ids) {
arr.push(v.id)
if (v.id === id) {
return
} else if (v.children) {
getIds(v.children)
} else {
arr.pop()
}
}
}
getIds(data)
return arr
}
console.log(fn(112))
пятая тема
тема
Пожалуйста, реализуйте функцию, которая будетentryПеревести вoutputформат данных
const entry = {
'a.b.c.dd': 'abcdd',
'a.d.xx': 'adxx',
'a.e': 'ae'
}
// 要求转换成如下对象
const output = {
a: {
b: {
c: {
dd: 'abcdd'
}
},
d: {
xx: 'adxx'
},
e: 'ae'
}
Отвечать
ответь один
function transform(obj) {
const res = {}
for (let [keys, value] of Object.entries(obj)) {
keys
.split('.')
.reduce((prev, cur, idx, arr) =>
prev[cur] = prev[cur] || (arr[idx + 1] ? {} : value)
, res)
}
return res
}
Ответить два
const transform = (input: { [P in string]: string }): Object => {
const ret = {}
Object.entries(input).forEach(([keys, val]) => {
let root = ret
keys.split('.').forEach((key, ind, arr) => {
if (ind === arr.length - 1) root[key] = val
else {
root[key] = root[key] || {}
root = root[key]
}
})
})
return ret
}
Ответ три
const entry = {
'a.b.c.dd': 'abcdd',
'a.d.xx': 'adxx',
'a.e': 'ae',
}
const convert = (data) => {
let res = {}
const entries = Object.entries(data)
for (let i = 0; i < entries.length; i++) {
let temp = res
let [key, value] = entries[i]
const everyOne = key.split('.')
for (let j = 0; j < everyOne.length; j++) {
if (j === everyOne.length - 1) {
temp[everyOne[j]] = value
}
temp[everyOne[j]] = temp[everyOne[j]] || {}
temp = temp[everyOne[j]]
}
}
return res
}
console.log(convert(entry))
Суммировать
Эти ежедневные вопросы, разобранные на этот раз, представляют собой некоторые вопросы по программированию, некоторые из которых представляют собой проблемы, с которыми мы можем столкнуться в нашей повседневной разработке.Выполняя эти вопросы, вы также можете проверить свое мастерство в этих практических навыках программирования. Один вопрос в день поступает из официального аккаунта [Некоторые играют на фронтенде], он доставляется вовремя в 8:40 каждое утро в будние дни, один вопрос в день и немного роста каждый день.
Эпилог
Не истощайте свое вдохновение и воображение, не будьте рабом своих моделей. - Винсент Ван Гог