5 aṣoju awọn iṣẹ ifọrọwanilẹnuwo JavaScript: itupalẹ ati awọn solusan

5 aṣoju awọn iṣẹ ifọrọwanilẹnuwo JavaScript: itupalẹ ati awọn solusan

Lati ọdọ onitumọ: atejade ohun article fun o Maria Antonietta Perna, ti o sọrọ nipa awọn iṣẹ-ṣiṣe JavaScript ti o wọpọ, julọ nigbagbogbo funni si awọn olubẹwẹ idagbasoke lakoko awọn ifọrọwanilẹnuwo. Nkan naa yoo wulo, ni akọkọ, si awọn olupilẹṣẹ alakobere.

Awọn ifọrọwanilẹnuwo ni awọn ile-iṣẹ imọ-ẹrọ ti jẹ ọrọ ti ilu fun igba pipẹ. Eyi ko yẹ ki o jẹ iyalẹnu - ṣiṣe ifọrọwanilẹnuwo ni aṣeyọri yoo fun ọ ni aye lati gba iṣẹ to dara. Ṣugbọn eyi kii ṣe rọrun pupọ, nitori awọn iṣoro idiju nigbagbogbo nilo lati yanju.

Pẹlupẹlu, julọ nigbagbogbo, pupọ julọ awọn iṣẹ ṣiṣe wọnyi ko ni ibatan si iṣẹ ti olubẹwẹ yoo ṣe, ṣugbọn wọn tun nilo lati yanju. Nigba miiran o ni lati ṣe lori igbimọ, laisi ṣayẹwo pẹlu Google tabi eyikeyi orisun miiran. Bẹẹni, ipo naa n yipada diẹdiẹ, ati pe awọn ile-iṣẹ kan kọ iru awọn ifọrọwanilẹnuwo silẹ, ṣugbọn ọpọlọpọ awọn agbanisiṣẹ tun faramọ aṣa yii. Nkan yii jẹ iyasọtọ si itupalẹ awọn iṣẹ-ṣiṣe JavaScript aṣoju ti a lo nigbagbogbo bi awọn iṣẹ ṣiṣe fun awọn ti n wa iṣẹ.

A leti: fun gbogbo awọn oluka ti "Habr" - ẹdinwo ti 10 rubles nigbati o forukọsilẹ ni eyikeyi iṣẹ-ẹkọ Skillbox nipa lilo koodu ipolowo “Habr”.

Skillbox ṣe iṣeduro: Ilana ti o wulo "Olugbese Alagbeka PRO".

Ohun akọkọ ni lati murasilẹ daradara fun ifọrọwanilẹnuwo rẹ.

Bẹẹni, ṣaaju ki a to bẹrẹ wiwo awọn iṣẹ-ṣiṣe, jẹ ki a wo diẹ ninu awọn imọran igbaradi ifọrọwanilẹnuwo gbogbogbo.

Ohun akọkọ ni lati mura tẹlẹ. Ṣe idanwo bawo ni o ṣe ranti awọn algoridimu ati awọn ẹya data, ati ilọsiwaju imọ rẹ ni awọn agbegbe ti o ko faramọ pẹlu. Ọpọlọpọ awọn iru ẹrọ ori ayelujara ti o le ṣe iranlọwọ fun ọ lati mura silẹ fun awọn ifọrọwanilẹnuwo. A ni imọran geeksforgeeks, Pramp, Ifọrọwanilẹnuwo.io и Ami koodu.

O tọ lati kọ ẹkọ lati sọ ipinnu ni gbangba. O ni ṣiṣe lati so fun awọn olubẹwẹ nipa ohun ti o ṣe, ki o si ko o kan kọ lori awọn ọkọ (tabi tẹ koodu sinu awọn kọmputa, tun laiparuwo). Ni ọna yii, ti o ba ṣe aṣiṣe ninu koodu naa, ṣugbọn ojutu ni gbogbogbo, o le mu awọn aye rẹ ti aṣeyọri pọ si.

O nilo lati ni oye iṣoro naa ṣaaju ki o to bẹrẹ lati yanju rẹ. Ni awọn igba miiran, o le loye iṣẹ-ṣiṣe kan laiṣe ati lẹhinna lọ si ọna ti ko tọ. O le tọsi bibeere awọn ibeere alaye diẹ si olubẹwo naa.

O nilo lati ṣe adaṣe koodu kikọ pẹlu ọwọ, kii ṣe lori PC kan. O ṣẹlẹ pe lakoko awọn ifọrọwanilẹnuwo olubẹwẹ naa ni a fun ami ami kan ati board funfun kan, nibiti ko si awọn amọran tabi tito akoonu laifọwọyi. Nigbati o ba n wa ojutu kan, o tọ lati kọ koodu rẹ si ori iwe kan tabi taara lori igbimọ. Ti o ba pa ohun gbogbo mọ ni ori rẹ, o le gbagbe nkan pataki.

Awọn iṣẹ-ṣiṣe awoṣe ni JavaScript

Diẹ ninu awọn iṣẹ-ṣiṣe wọnyi le ti mọ tẹlẹ si ọ. O ti ni awọn ifọrọwanilẹnuwo nibiti o ni lati yanju nkan ti o jọra, tabi adaṣe lori wọn lakoko kikọ JavaScript. O dara, bayi o to akoko lati yanju wọn lẹẹkansi, ati pẹlu alaye alaye ti ilana naa.

Palindrome

Palindrome jẹ ọrọ kan, gbolohun ọrọ tabi ọkọọkan awọn ohun kikọ ti o ka ni pato kanna mejeeji ni itọsọna deede ati ni idakeji. Fun apẹẹrẹ, "Anna" jẹ palindrome, ṣugbọn "tabili" ati "John" kii ṣe.

iṣeto

Ti fi fun okun; o nilo lati kọ iṣẹ kan ti o fun laaye laaye lati pada si otitọ ti okun ba jẹ palindrome, ati eke ti kii ba ṣe bẹ. Ni idi eyi, o nilo lati ṣe akiyesi awọn aaye ati awọn aami ifamisi.

palindrome ('racecar') === otitọ
palindrome ('tabili') === eke

Jẹ ki a ṣe itupalẹ iṣẹ naa

Ero akọkọ nibi ni lati yi okun pada. Ti okun "yiyipada" jẹ aami patapata si atilẹba, lẹhinna a ti gba palindrome kan ati pe iṣẹ naa yẹ ki o pada si otitọ. Ti kii ba ṣe bẹ, eke.

Ipinnu

Eyi ni koodu ti o yanju palindrome.

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('')
}

Igbesẹ akọkọ ni lati yi awọn kikọ inu okun titẹ sii pada si kekere. Eyi jẹ ẹri pe eto naa yoo ṣe afiwe awọn ohun kikọ funrararẹ, kii ṣe ọran tabi ohunkohun miiran.

Igbese keji ni lati yi ila pada. Eyi ko ṣoro lati ṣe: o nilo lati yi pada si ọna orun nipa lilo ọna .pipin () (Iwe ikawe okun). Lẹhinna a yi ọna kika pada nipa lilo .reverse () (Iwe ikawe Array). Igbesẹ ti o kẹhin ni lati yi ọna kika pada si okun nipa lilo .join () (Iwe ikawe Array).

Bayi gbogbo ohun ti o nilo lati ṣe ni afiwe okun “yiyipada” pẹlu okun atilẹba, da abajade pada ni otitọ tabi eke.

FizzBuzz

Ọkan ninu awọn iṣẹ-ṣiṣe olokiki julọ ni awọn ifọrọwanilẹnuwo.

iṣeto

O nilo lati kọ iṣẹ kan ti o tẹ awọn nọmba lati 1 si n si console, nibiti n jẹ odidi ti iṣẹ naa gba bi paramita, pẹlu awọn ipo wọnyi:

  • o wu fizz dipo ti 3;
  • o wu Buzz dipo ti awọn nọmba ti o wa ni ọpọ ti 5;
  • iṣẹjade fizzbuzz dipo awọn nọmba ti o jẹ ọpọlọpọ awọn mejeeji 3 ati 5.

Apeere:

Fizzbuzz (5)

Esi

// Ọdun 1
// Ọdun 2
// fizz
// Ọdun 4
//buzz

Jẹ ki a ṣe itupalẹ iṣẹ naa

Ohun akọkọ nibi ni ọna lati wa ọpọlọpọ nipa lilo JavaScript. O le ṣe imuse nipa lilo oniṣẹ modulus tabi iyokù -%, eyiti o fun ọ laaye lati ṣafihan iyoku nigbati o pin awọn nọmba meji. Ti iyokù ba jẹ 0, o tumọ si pe nọmba akọkọ jẹ ọpọ ti keji.

12% 5 // 2 -> 12 kii ṣe ọpọ ti 5
12% 3 // 0 -> 12 jẹ ọpọ ti 3

Nitorinaa, ti o ba pin 12 nipasẹ 5, iwọ yoo gba 2 pẹlu iyoku 2. Ti o ba pin 12 nipasẹ 3, iwọ yoo gba 4 pẹlu iyoku 0. Ni ọran akọkọ, 12 kii ṣe pupọ ti 5, ni ekeji. , 12 jẹ ọpọ ti 3.

Ipinnu

Ojutu ti o dara julọ yoo jẹ koodu atẹle:

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)
    }
  }
}

Iṣẹ naa n ṣe awọn sọwedowo pataki nipa lilo awọn alaye ipo ati gbejade abajade ti olumulo nilo. Ninu iṣoro naa, o tọ lati san ifojusi si aṣẹ ti if ... awọn alaye miiran: bẹrẹ pẹlu ipo ilọpo meji (&&) ati pari pẹlu ọran nibiti ọpọlọpọ awọn nọmba ko le rii. Bi abajade, a bo gbogbo awọn aṣayan.

Anagram

Eyi ni orukọ fun ọrọ kan ti o ni gbogbo awọn lẹta ti ọrọ miiran ninu nọmba kanna, ṣugbọn ni ọna ti o yatọ.

iṣeto

A nilo lati kọ iṣẹ kan ti o ṣayẹwo boya awọn okun meji jẹ anagrams, ati pe ọran naa ko ṣe pataki. Nikan ohun kikọ ti wa ni kà; awọn aaye tabi awọn aami ifamisi ko ṣe akiyesi.

anagram ('oluwari', 'Ọrẹ') -> otitọ
anagram ('hello', 'bye') -> eke

Jẹ ki a ṣe itupalẹ iṣẹ naa

Ohun pataki lati ronu nibi ni pe o nilo lati ṣayẹwo lẹta kọọkan ninu awọn laini titẹ sii meji ati nọmba wọn ni laini kọọkan.

oluwari —> f: 1 ore —> f: 1
emi: 1r: 1
n:1 emi:1
d:1 e:1
e:1 n:1
r:1 d:1

Lati tọju data anagram, o yẹ ki o yan eto kan gẹgẹbi ohun JavaScript gangan. Bọtini ninu ọran yii jẹ ohun kikọ ti lẹta naa, iye naa jẹ nọmba awọn atunwi rẹ ni laini lọwọlọwọ.

Awọn ipo miiran wa:

  • O nilo lati rii daju pe ọran ti awọn lẹta ko ṣe akiyesi nigbati o ba ṣe afiwe. A kan yipada awọn okun mejeeji si isalẹ tabi nla.
  • A ifesi gbogbo ti kii-ohun kikọ lati lafiwe. Ti o dara julọ lati ṣiṣẹ pẹlu deede expressions.

Ipinnu

// 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
}

San ifojusi si lilo Object.keys() ni snippet loke. Ọna yii da pada akojọpọ ti o ni awọn orukọ tabi awọn bọtini ni aṣẹ kanna ti wọn han ninu ohun naa. Ni idi eyi, eto yoo jẹ bi eleyi:

['f', 'i', 'n', 'd', 'e', ​​'r']

Ni ọna yii a gba awọn ohun-ini ti nkan naa laisi nini lati ṣe lupu olopobobo. Ninu iṣoro kan, o le lo ọna yii pẹlu ohun-ini gigun lati ṣayẹwo boya awọn okun mejeeji ni nọmba kanna ti awọn ohun kikọ - eyi jẹ ẹya pataki ti awọn anagrams.

Wa awọn faweli

A iṣẹtọ o rọrun-ṣiṣe ti o igba wa soke ni awọn ibere ijomitoro.

iṣeto

O nilo lati kọ iṣẹ kan ti o gba okun bi ariyanjiyan ati da nọmba awọn faweli ti o wa ninu okun pada.
Awọn faweli naa jẹ “a”, “e”, “i”, “o”, “u”.

Apeere:

FindVowels('hello') // —> 2
FindVowels('idi') // —> 0

Ipinnu

Eyi ni aṣayan ti o rọrun julọ:

const findVowels = str => {
  let count = 0
  const vowels = ['a', 'e', 'i', 'o', 'u']
  for(let char of str.toLowerCase()) {
    if(vowels.includes(char)) {
      count++
    }
  }
  return count
}

O ṣe pataki lati san ifojusi si awọn lilo ti .pẹlu () ọna. O wa fun awọn okun mejeeji ati awọn akojọpọ. O yẹ ki o lo lati pinnu boya ohun orun ni iye kan ninu. Ọna yii yoo pada ni otitọ ti opo naa ba ni iye pàtó kan, ati eke ti ko ba ṣe bẹ.

Ojutu kukuru kan wa si iṣoro naa:

const findVowels = str => {
  const matched = str.match(/[aeiou]/gi)
  return matched ? matches.length : 0
}

Eyi nlo ọna .baramu (), eyiti o fun ọ laaye lati ṣe wiwa ti o munadoko. Ti ikosile deede bi ariyanjiyan ọna ti wa ni inu okun ti a sọ, lẹhinna iye ipadabọ jẹ akojọpọ awọn ohun kikọ ti o baamu. O dara, ti ko ba si awọn ere-kere, lẹhinna .match () pada asan.

fibonacci

Iṣẹ-ṣiṣe Ayebaye ti o le rii ni awọn ifọrọwanilẹnuwo ni awọn ipele oriṣiriṣi. O tọ lati ranti pe ọna Fibonacci jẹ lẹsẹsẹ awọn nọmba nibiti ọkan ti o tẹle ni apapọ awọn meji ti tẹlẹ. Nitorinaa, awọn nọmba mẹwa akọkọ dabi eyi: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

iṣeto

O nilo lati kọ iṣẹ kan ti o da igbasilẹ nth pada ni ọna kan, pẹlu n jẹ nọmba ti o kọja bi ariyanjiyan si iṣẹ naa.

fibonacci (3) // —> 2

Iṣẹ-ṣiṣe yii jẹ lati rin nipasẹ lupu nọmba awọn akoko ti a ṣalaye ninu ariyanjiyan, dada iye pada ni ipo ti o yẹ. Ọna yii ti farahan iṣoro naa nilo lilo awọn lupu. Ti o ba lo atunṣe dipo, o le wu olubẹwo naa ki o si fun ọ ni awọn aaye afikun diẹ.

Ipinnu

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]
}

Ninu akojọpọ awọn abajade, awọn nọmba meji akọkọ wa ninu jara nitori titẹ sii kọọkan ninu ọkọọkan jẹ apao awọn nọmba meji ti tẹlẹ. Ni ibẹrẹ ko si awọn nọmba meji ti o le mu lati gba nọmba atẹle, nitorinaa lupu ko le ṣe ina wọn laifọwọyi. Ṣugbọn, bi a ti mọ, awọn nọmba meji akọkọ jẹ nigbagbogbo 0 ati 1. Nitorina, o le ṣe ipilẹṣẹ awọn abajade esi pẹlu ọwọ.

Bi fun atunkọ, ohun gbogbo rọrun ati idiju diẹ sii ni akoko kanna:

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)
}

A n pe fibonacci (), ti o kọja awọn nọmba kekere ati kere bi awọn ariyanjiyan. A da duro nigbati ariyanjiyan ti o kọja jẹ 0 tabi 1.

ipari

O ṣeese julọ, o ti ni alabapade eyikeyi ninu awọn iṣẹ ṣiṣe wọnyi ti o ba ti ṣe ifọrọwanilẹnuwo fun iwaju iwaju tabi iṣẹ idagbasoke JavaScript (paapaa ti o ba wa ni ipele kekere). Ṣugbọn ti o ko ba pade wọn, wọn le wulo ni ọjọ iwaju - o kere ju fun idagbasoke gbogbogbo.

Skillbox ṣe iṣeduro:

orisun: www.habr.com

Fi ọrọìwòye kun