Бале, пеш аз он ки мо ба баррасии вазифаҳо шурӯъ кунем, биёед ба баъзе маслиҳатҳои умумии омодасозии мусоҳиба назар андозем.
Хӯроки асосии он аст, ки пешакӣ тайёр кунед. Санҷед, ки то чӣ андоза алгоритмҳо ва сохторҳои додаҳоро хуб дар хотир доред ва дониши худро дар соҳаҳое, ки бо онҳо чандон ошно нестед, такмил диҳед. Бисёр платформаҳои онлайн мавҷуданд, ки метавонанд ба шумо барои омодагӣ ба мусоҳиба кӯмак расонанд. маслихат медихем geeksforgeeks, Прамп, Interviewing.io и CodeSignal.
Бо овози баланд гуфтани қарорро ёд гирифтан меарзад. Тавсия дода мешавад, ки ба довталабон дар бораи корҳое, ки шумо мекунед, нақл кунед, на танҳо дар тахта нависед (ё кодро ба компютер ворид кунед, инчунин хомӯшона). Бо ин роҳ, агар шумо дар код хато кунед, аммо роҳи ҳалли он умуман дуруст аст, шумо метавонед имконияти муваффақияти худро зиёд кунед.
Пеш аз оғози ҳалли он шумо бояд мушкилотро фаҳмед. Дар баъзе мавридҳо, шумо метавонед як вазифаро рӯякӣ фаҳмед ва сипас ба роҳи нодуруст равед. Мумкин аст, ки ба мусоҳиб чанд саволи равшан диҳанд.
Ба шумо лозим аст, ки бо дастнависии код машқ кунед, на дар компютер. Чунин мешавад, ки ҳангоми мусоҳиба ба довталаб маркер ва тахтаи сафед дода мешавад, ки дар он ҳеҷ маслиҳат ё форматкунии автоматӣ вуҷуд надорад. Ҳангоми ҷустуҷӯи роҳи ҳалли он, рамзи худро дар варақ ё бевосита дар тахта навиштан лозим аст. Агар шумо ҳама чизро дар сари худ нигоҳ доред, шумо метавонед як чизи муҳимро фаромӯш кунед.
Вазифаҳои қолабӣ дар JavaScript
Баъзе аз ин вазифаҳо шояд ба шумо аллакай шинос бошанд. Шумо ё мусоҳибаҳое доштед, ки дар он шумо бояд як чизи шабеҳро ҳал мекардед ё ҳангоми омӯзиши JavaScript бо онҳо амал мекардед. Хуб, ҳоло вақти он расидааст, ки онҳоро дубора ҳал кунем ва бо шарҳи муфассали раванд.
Палиндрома
Палиндрома калима, ҷумла ё пайдарпаии аломатҳоест, ки ҳам дар самти муқаррарӣ ва ҳам дар самти муқобил комилан якхела хонда мешаванд. Масалан, "Анна" палиндром аст, аммо "миз" ва "Ҷон" не.
Марҳилаи
Сатр дода мешавад; ба шумо лозим аст, ки функсияеро нависед, ки ба шумо имкон медиҳад, ки агар сатр палиндром бошад, ҳақиқӣ баргардад ва агар не, бардурӯғ. Дар ин ҳолат, шумо бояд фосилаҳо ва аломатҳои пунктуатсияро ба назар гиред.
Идеяи асосӣ дар ин ҷо баргардонидани сатр аст. Агар сатри "акс" ба сатри аслӣ комилан шабеҳ бошад, пас мо палиндром гирифтем ва функсия бояд ҳақиқӣ баргардад. Агар не, дурӯғ.
ҳалли
Дар ин ҷо кодест, ки палиндромро ҳал мекунад.
const palindrome = str => {
// turn the string to lowercase
str = str.toLowerCase()
// reverse input string and return the result of the
// comparisong
return str === str.split('').reverse().join('')
}
Шумо бояд функсияеро нависед, ки рақамҳоро аз 1 то n ба консол чоп мекунад, ки дар он n ададест, ки функсия ҳамчун параметр қабул мекунад, бо шартҳои зерин:
const fizzBuzz = num => {
for(let i = 1; i <= num; i++) {
// check if the number is a multiple of 3 and 5
if(i % 3 === 0 && i % 5 === 0) {
console.log('fizzbuzz')
} // check if the number is a multiple of 3
else if(i % 3 === 0) {
console.log('fizz')
} // check if the number is a multiple of 5
else if(i % 5 === 0) {
console.log('buzz')
} else {
console.log(i)
}
}
}
Функсия бо истифода аз изҳороти шартӣ санҷишҳои заруриро анҷом медиҳад ва натиҷаи аз ҷониби корбар талабшударо медиҳад. Дар масъала ба тартиби иборањои if...else таваљљўњ кардан лозим аст: бо шарти дугона (&&) оѓоз карда, бо њолате, ки ададњои сершумор пайдо нашуданд, ба охир мерасад. Дар натиҷа, мо ҳама вариантҳоро фаро мегирем.
Анаграмма
Ин номи калимаест, ки тамоми ҳарфҳои калимаи дигарро дар як адад, вале бо тартиби дигар дар бар мегирад.
Марҳилаи
Мо бояд функсияеро нависем, ки оё ду сатр анаграмма мебошанд ва парванда аҳамият надорад. Танҳо аломатҳо ҳисоб карда мешаванд; холй ё аломатхои пунктуация ба назар гирифта намешаванд.
Мо ҳама аломатҳои ғайрифаъолро аз муқоиса хориҷ мекунем. Беҳтарин барои кор бо ибораҳои муқаррарӣ.
ҳалли
// helper function that builds the
// object to store the data
const buildCharObject = str => {
const charObj = {}
for(let char of str.replace(/[^w]/g).toLowerCase()) {
// if the object has already a key value pair
// equal to the value being looped over,
// increase the value by 1, otherwise add
// the letter being looped over as key and 1 as its value
charObj[char] = charObj[char] + 1 || 1
}
return charObj
}
// main function
const anagram = (strA, strB) => {
// build the object that holds strA data
const aCharObject = buildCharObject(strA)
// build the object that holds strB data
const bCharObject = buildCharObject(strB)
// compare number of keys in the two objects
// (anagrams must have the same number of letters)
if(Object.keys(aCharObject).length !== Object.keys(bCharObject).length) {
return false
}
// if both objects have the same number of keys
// we can be sure that at least both strings
// have the same number of characters
// now we can compare the two objects to see if both
// have the same letters in the same amount
for(let char in aCharObject) {
if(aCharObject[char] !== bCharObject[char]) {
return false
}
}
// if both the above checks succeed,
// you have an anagram: return true
return true
}
Ба истифода диққат диҳед Object.keys() дар порчаи боло. Ин усул массиви дорои номҳо ё калидҳоро бо ҳамон тартибе, ки онҳо дар объект пайдо мешаванд, бармегардонад. Дар ин ҳолат массив чунин хоҳад буд:
['f', 'i', 'n', 'd', 'e', 'r']
Бо ин роҳ мо хосиятҳои объектро бидуни анҷом додани як ҳалқаи оммавӣ ба даст меорем. Дар мушкилот шумо метавонед ин усулро бо хосияти .length истифода баред, то тафтиш кунед, ки оё ҳарду сатр шумораи якхела доранд - ин як хусусияти муҳими анаграммаҳо мебошад.
Ба истифодаи усули .includes() диққат додан муҳим аст. Он барои ҳам сатрҳо ва ҳам массивҳо дастрас аст. Он бояд барои муайян кардани он ки оё массив арзиши муайян дорад, истифода шавад. Ин усул ҳақиқиро бармегардонад, агар массив арзиши муайяншударо дар бар гирад ва агар ин набошад, нодуруст бошад.
Ин усули .match () -ро истифода мебарад, ки ба шумо имкон медиҳад ҷустуҷӯи муассирро амалӣ кунед. Агар ифодаи муқаррарӣ ҳамчун аргументи метод дар дохили сатри муайяншуда пайдо шавад, он гоҳ арзиши бозгашт массиви аломатҳои мувофиқ аст. Хуб, агар ягон мувофиқат вуҷуд надошта бошад, пас .match() нулро бармегардонад.
Фибоначчи
Вазифаи классикӣ, ки онро дар мусоҳибаҳо дар сатҳҳои гуногун пайдо кардан мумкин аст. Бояд хотиррасон кард, ки пайдарпаии Фибоначӣ як қатор ададҳоест, ки ҳар яки баъдӣ маблағи дуи қаблӣ мебошад. Ҳамин тариқ, даҳ рақами аввал чунинанд: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.
Марҳилаи
Шумо бояд функсияеро нависед, ки сабти n-ро бо пайдарпаии муайян баргардонад ва n рақамест, ки ҳамчун аргумент ба функсия дода мешавад.
Фибоначчи (3) // —> 2
Ин вазифа аз давра гузаштан ба миқдори маротибаи дар аргумент нишондодашуда, баргардонидани арзиш дар мавқеи мувофиқ иборат аст. Ин тарзи гузоштани мушкилот истифодаи ҳалқаҳоро талаб мекунад. Агар шумо ба ҷои он рекурсияро истифода баред, он метавонад мусоҳибаро шод кунад ва ба шумо чанд нуктаи иловагӣ диҳад.
ҳалли
const fibonacci = num => {
// store the Fibonacci sequence you're going
// to generate inside an array and
// initialize the array with the first two
// numbers of the sequence
const result = [0, 1]
for(let i = 2; i <= num; i++) {
// push the sum of the two numbers
// preceding the position of i in the result array
// at the end of the result array
const prevNum1 = result[i - 1]
const prevNum2 = result[i - 2]
result.push(prevNum1 + prevNum2)
}
// return the last value in the result array
return result[num]
}
Дар мавриди рекурсия, ҳама чиз соддатар ва ҳамзамон мураккабтар аст:
const fibonacci = num => {
// if num is either 0 or 1 return num
if(num < 2) {
return num
}
// recursion here
return fibonacci(num - 1) + fibonacci(num - 2)
}