5 gnìomhan àbhaisteach agallamh JavaScript: mion-sgrùdadh agus fuasglaidhean

5 gnìomhan àbhaisteach agallamh JavaScript: mion-sgrùdadh agus fuasglaidhean

Bhon eadar-theangair: artaigil fhoillseachadh dhut Maria Antonietta Perna, a tha a 'bruidhinn mu ghnìomhan cumanta JavaScript, mar as trice air a thabhann do thagraichean leasaiche rè agallamhan. Bidh an artaigil feumail, an toiseach, do luchd-prògramaidh ùr.

Tha agallamhan le companaidhean teignigeach air a bhith a’ bruidhinn a’ bhaile o chionn fhada. Chan eil seo na iongnadh - tha crìochnachadh soirbheachail an agallaimh ga dhèanamh comasach obair mhath fhaighinn. Ach chan eil seo cho sìmplidh, oir gu tric feumar fuasgladh fhaighinn air duilgheadasan iom-fhillte.

A bharrachd air an sin, mar as trice chan eil a’ mhòr-chuid de na gnìomhan sin co-cheangailte ris an obair a nì an tagraiche, ach feumaidh iad fhathast a bhith air am fuasgladh. Uaireannan feumaidh tu a dhèanamh air a 'bhòrd, gun a bhith a' sgrùdadh le Google no stòr sam bith eile. Tha, tha an suidheachadh ag atharrachadh mean air mhean, agus ann an cuid de chompanaidhean tha iad a 'diùltadh agallamhan mar sin, ach tha mòran luchd-fastaidh fhathast a' cumail ris an traidisean seo. Tha an artaigil seo gu sònraichte airson mion-sgrùdadh air gnìomhan àbhaisteach JavaScript a bhios gu tric air an cleachdadh mar ghnìomhan airson tagraichean.

Tha sinn a ’cur nar cuimhne: airson a h-uile leughadair de "Habr" - lasachadh de 10 rubles nuair a chlàraicheas tu ann an cùrsa sam bith Skillbox a 'cleachdadh a' chòd adhartachaidh "Habr".

Tha Skillbox a’ moladh: Cùrsa practaigeach "Mobile Developer PRO".

Is e am prìomh rud ullachadh gu mionaideach airson an agallaimh agad.

Tha, mus tòisich sinn a 'briseadh sìos na gnìomhan, leig dhuinn sùil a thoirt air cuid de mholaidhean coitcheann airson ullachadh airson agallamh.

Is e am prìomh rud ullachadh ro-làimh. Dèan cinnteach dè cho math 'sa tha thu a' cuimhneachadh air algorithms agus structaran dàta, agus leasaich an t-eòlas agad ann an raointean air nach eil thu gu math eòlach. Tha mòran àrd-ùrlaran air-loidhne ann a chuidicheas tu ag ullachadh airson agallamhan. Tha sinn a 'comhairleachadh geòlagan, Pramp, Agallamh.io и Comharradh còd.

Is fhiach ionnsachadh an co-dhùnadh a ràdh a-mach àrd. Tha e ciallach innse do thagraichean dè a tha thu a’ dèanamh, agus chan ann dìreach sgrìobhadh air a’ bhòrd (no cuir a-steach còd air a’ choimpiutair, cuideachd gu sàmhach). Mar sin, ma nì thu mearachd sa chòd, ach gu bheil am fuasgladh ceart san fharsaingeachd, faodaidh tu na cothroman soirbheachais agad a mheudachadh.

Feumaidh tu an duilgheadas a thuigsinn mus tòisich thu air a fuasgladh. Ann an cuid de chùisean, faodaidh tu an obair a thuigsinn gu h-àrd agus an uairsin sìos an t-slighe cheàrr. Is dòcha gum b’ fhiach beagan cheistean soilleireachaidh iarraidh air an neach-agallaimh.

Feumaidh tu cleachdadh còd sgrìobhaidh le làimh, chan ann air PC. Tha e a’ tachairt gun tèid comharran agus bòrd a thoirt don tagraiche aig agallamhan far nach eil molaidhean no cruth fèin-ghluasadach ann. Nuair a bhios tu a’ coimhead airson fuasgladh, is fhiach do chòd a sgrìobhadh sìos air pìos pàipear no gu dìreach air a’ bhòrd. Ma chumas tu a h-uile càil nad cheann, is dòcha gu bheil thu a’ dìochuimhneachadh rudeigin cudromach.

Teamplaid gnìomhan ann javascript a

Is dòcha gu bheil thu eòlach mu thràth air cuid de na gnìomhan sin. Ghabh thu an dàrna cuid agallamhan far an robh agad ri rudeigin coltach ris fhuasgladh, no rinn thu eacarsaich orra fhad ‘s a bha thu ag ionnsachadh JavaScript. Uill, a-nis tha an t-àm ann am fuasgladh a-rithist, agus le mìneachadh mionaideach air a 'phròiseas.

Palindrome

’S e facal, seantans no sreath de charactaran a th’ ann am palindrome a tha air a leughadh dìreach mar an ceudna an dà chuid san t-slighe àbhaisteach agus an taobh eile. Mar eisimpleir, "Anna" - palindrome, ach chan eil "bòrd" agus "Iain".

A ’cumail suas

Le sreang ; feumaidh tu gnìomh a sgrìobhadh a leigeas leat tilleadh fìor mas e palindrome a th’ anns an t-sreang, agus ceàrr air dhòigh eile. Anns a 'chùis seo, feumaidh tu aire a thoirt do dh'àiteachan agus comharran puingeachaidh.

palindrome ('car-rèis') === fìor
palindrome ('clàr') === meallta

A' parsadh na h-obrach

Is e am prìomh bheachd an seo an sreang a thionndadh air ais. Ma tha an sreang “cùl” gu tur co-ionann ris an fhear thùsail, tha sinn air palindrome fhaighinn agus bu chòir don ghnìomh tilleadh gu fìor. Mura h-eil, ceàrr.

co-dhùnadh

Seo an còd a dh’ fhuasglas am 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('')
}

Is e a’ chiad cheum na caractaran sreang cuir a-steach a thionndadh gu cùis ìosal. Tha seo na ghealladh gum bi am prògram a’ dèanamh coimeas eadar na caractaran fhèin, agus chan e cùis no rudeigin eile.

Is e an dàrna ceum an loidhne a thionndadh air ais. Tha seo furasta a dhèanamh: feumaidh tu a thionndadh gu raon a’ cleachdadh an dòigh .split() (leabharlann sreang). An uairsin tionndaidhidh sinn an t-sreath air ais a’ cleachdadh .reverse() (leabharlann Array). Is e an ceum mu dheireadh an t-sreath cùil a thionndadh gu sreang le bhith a’ cleachdadh .join() (leabharlann Array).

A-nis chan eil agad ach coimeas a dhèanamh eadar an t-sreang “cùl” leis an t-sreang thùsail, a’ tilleadh an toraidh fìor no meallta.

FizzBuzz

Aon de na gnìomhan as mòr-chòrdte ann an agallamhan.

A ’cumail suas

Feumar gnìomh a sgrìobhadh a sheallas àireamhan bho 1 gu n chun a’ chonsail, far a bheil n na shlànaighear a tha an gnìomh a’ gabhail mar pharamadair, leis na cumhaichean a leanas:

  • toradh fizz an àite iomadan de 3;
  • buzz toraidh an àite àireamhan a tha nan iomadan de 5;
  • toradh fizzbuzz an àite àireamhan a tha nan iomadan de 3 agus 5.

Eisimpleir:

Fizzbuzz(5)

thoradh air

//1
//2
// fizz
//4
// buzz

A' parsadh na h-obrach

Is e am prìomh rud an seo dòigh air iomadan a lorg a’ cleachdadh JavaScript. Faodar a chuir an gnìomh le bhith a’ cleachdadh a’ ghnìomhaiche modulus no an còrr - %, a leigeas leat an còrr a shealltainn nuair a bhios tu a’ roinneadh dà àireamh. Ma tha an còrr 0, tha e a 'ciallachadh gu bheil a' chiad àireamh na iomadachadh den dàrna fear.

12% 5 // 2 -> Chan e iomadachadh de 12 a th’ ann an 5
12% 3 // 0 -> Tha 12 iomadaidh de 3

Mar sin, ma roinneas sinn 12 le 5, gheibh sinn 2 le còrr de 2. Ma roinneas sinn 12 le 3, gheibh sinn 4 leis a’ chòrr de 0. Anns a’ chiad chùis, chan e 12 iomadachadh de 5, anns a’ chiad chùis. san dàrna àite, tha 12 na iomadachadh de 3.

co-dhùnadh

Is e am fuasgladh as fheàrr an còd a leanas:

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

Bidh an gnìomh a’ coileanadh nan sgrùdaidhean riatanach a’ cleachdadh aithrisean cumhach agus a’ toirt a-mach an toradh a dh’ fheumas an neach-cleachdaidh. Anns an duilgheadas, is fhiach aire a thoirt do òrdugh nan aithrisean ma tha...eile: tòisich le suidheachadh dùbailte (&&) agus crìochnaich leis a’ chùis far nach b’ urrainnear grunn àireamhan a lorg. Mar thoradh air an sin, bidh sinn a 'còmhdach a h-uile roghainn.

Anagram

Is e seo ainm facal anns a bheil litrichean uile facal eile anns an aon àireamh, ach ann an òrdugh eadar-dhealaichte.

A ’cumail suas

Feumaidh sinn gnìomh a sgrìobhadh a nì sgrùdadh a bheil dà shreath ann an anagraman, agus nach eil a’ chùis gu diofar. Chan eil ach caractaran air an cunntadh; chan eilear a’ toirt aire do bheàrnan no comharran puingeachaidh.

anagram ('neach-lorg', 'Caraid') -> fìor
anagram ('hello', 'beannachd') --> meallta

A' parsadh na h-obrach

Is e an rud cudthromach ri beachdachadh an seo gum feum thu sgrùdadh a dhèanamh air gach litir anns an dà loidhne cuir a-steach agus an àireamh anns gach loidhne.

lorgar -> f: 1 charaid -> f: 1
i: 1 r: 1
n:1 i:1
d: 1 e:1
e: 1 n:1
r: 1 d: 1

Airson dàta anagram a stòradh, bu chòir dhut structar a thaghadh mar nì JavaScript litireil. Is e an iuchair anns a 'chùis seo caractar na litreach, is e an luach an àireamh de ath-aithris a th' ann san loidhne làithreach.

Tha suidheachaidhean eile ann cuideachd:

  • Feumaidh tu dèanamh cinnteach nach eilear a’ toirt aire do chùis litrichean nuair a thathar a’ dèanamh coimeas. Dìreach tionndaidh an dà shreath gu litrichean beaga no litrichean mòra.
  • Bidh sinn a 'dùnadh a h-uile neo-charactaran bhon choimeas. As fheàrr a bhith ag obair leis abairtean cunbhalach.

co-dhùnadh

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

Thoir aire don chleachdadh Object.keys() anns a' chriomag gu h-àrd. Bidh an dòigh seo a’ tilleadh sreath anns a bheil na h-ainmean no na h-iuchraichean san aon òrdugh ’s a nochdas iad san nì. Anns a 'chùis seo, bidh an t-sreath mar a leanas:

[‘f’, ‘i’, ‘n’, ‘d’, ‘e’, ‘r’]

San dòigh seo gheibh sinn feartan an nì gun a bhith a’ dèanamh lùb mhòr. Ann an gnìomh, faodaidh tu an dòigh seo a chleachdadh leis an t-seilbh .length - gus dèanamh cinnteach a bheil an aon àireamh de charactaran aig an dà shreath - tha seo na fheart cudromach de anagraman.

Lorg fuaimreag

Gnìomh gu math sìmplidh a thig gu tric ann an agallamhan.

A ’cumail suas

Feumaidh tu gnìomh a sgrìobhadh a bheir sreang mar argamaid agus a thilleas an àireamh de fhuaimreagan a tha san t-sreang.
Is e na fuaimreagan "a", "e", "i", "o", "u".

Eisimpleir:

findVowels('hello') // -> 2
findVowels('carson') // --> 0

co-dhùnadh

Seo an roghainn as fhasa:

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
}

Tha e cudromach aire a thoirt do chleachdadh an dòigh .includes(). Tha e ri fhaighinn airson an dà chuid sreathan agus arrays. Bu chòir a chleachdadh gus faighinn a-mach a bheil luach sònraichte ann an raon. Bidh an dòigh seo a’ tilleadh fìor ma tha an luach ainmichte anns an raon, agus meallta mura h-eil.

Tha fuasgladh nas giorra air an duilgheadas:

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

Tha am modh .match() air a chleachdadh an seo, a leigeas leat rannsachadh èifeachdach a chur an gnìomh. Ma lorgar abairt àbhaisteach mar argamaid modh taobh a-staigh an t-sreang ainmichte, is e an luach tilleadh sreath de charactaran co-ionnan. Uill, mura h-eil maidsean ann, bidh .match() a’ tilleadh null.

Fibonacob

Gnìomh clasaigeach a ghabhas coinneachadh aig agallamhan de dhiofar ìrean. 'S fhiach cuimhneachadh gur e sreath de àireamhan a th' anns an t-sreath Fibonacci, far a bheil gach fear às dèidh sin na shuim den dhà roimhe. Mar sin, tha a’ chiad deich àireamhan a’ coimhead mar seo: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

A ’cumail suas

Feumaidh tu gnìomh a sgrìobhadh a thilleas an nmh clàr ann an sreath shònraichte, le n mar an àireamh a thèid a thoirt seachad mar argamaid don ghnìomh.

Fibonacob(3) // --> 2

Tha an obair seo a’ toirt a-steach a bhith a’ lùbadh tron ​​àireamh de thursan a tha air an sònrachadh san argamaid, a’ tilleadh an luach aig an t-suidheachadh iomchaidh. Feumaidh an dòigh seo air an duilgheadas a shuidheachadh a bhith a 'cleachdadh lùban. Ma chleachdas tu ath-chuairteachadh na àite, is dòcha gum bu toil leis an neach-agallaimh e agus bheir e beagan phuingean a bharrachd dhut.

co-dhùnadh

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

Anns an t-sreath thoraidhean, tha a’ chiad dà àireamh ann an sreath oir tha gach inntrigeadh san t-sreath a’ dèanamh suas suim an dà àireamh roimhe. Chan eil dà àireamh aig an fhìor thoiseach a ghabhas toirt gus an ath àireamh fhaighinn, agus mar sin chan urrainn dhan lùb an gineadh gu fèin-obrachail. Ach, mar a tha fios againn, tha a' chiad dà àireamh an-còmhnaidh 0 agus 1. Mar sin, faodaidh tu an sreath thoraidhean a thòiseachadh le làimh.

A thaobh ath-chuairteachadh, tha a h-uile dad nas sìmplidh agus nas iom-fhillte aig an aon àm:

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

Bidh sinn a’ cumail a’ gairm Fibonacob (), a’ dol seachad air àireamhan nas lugha agus nas lugha mar argamaidean. Bidh sinn a’ stad nuair a tha an argamaid seachad 0 no 1.

co-dhùnadh

Is coltaiche, tha thu air tachairt ri gin de na gnìomhan sin mu thràth ma chaidh agallamhan a dhèanamh leat airson obair leasaiche aghaidh no JavaScript (gu sònraichte ma tha e aig ìre òigridh). Ach mura h-eil thu air tighinn tarsainn orra, faodaidh iad a bhith feumail san àm ri teachd - co-dhiù airson leasachadh coitcheann.

Tha Skillbox a’ moladh:

Source: www.habr.com

Cuir beachd ann