Isuka kumguquleli: ukupapashele inqaku
Udliwano-ndlebe kwiinkampani zetekhnoloji kudala yaba yintetho yedolophu. Oku akufanele kumangalise - ukuphumelela udliwano-ndlebe ngempumelelo kukunika ithuba lokufumana umsebenzi olungileyo. Kodwa oku akuyondlwan’ iyanetha, ekubeni iingxaki ezintsonkothileyo zidla ngokufuna ukusonjululwa.
Ngaphezu koko, amaxesha amaninzi, uninzi lwale misebenzi ayinxulumananga nomsebenzi oza kwenziwa ngumfaki-sicelo, kodwa kusafuneka isonjululwe. Ngamanye amaxesha kufuneka uyenze ebhodini, ngaphandle kokujonga ngeGoogle okanye nawuphi na umthombo. Ewe, imeko iyatshintsha ngokuthe ngcembe, kwaye ezinye iinkampani zishiya udliwano-ndlebe olunjalo, kodwa abaqeshi abaninzi basabambelele kwesi siko. Eli nqaku linikezelwe kuhlalutyo lwemisebenzi yeJavaScript eqhelekileyo edla ngokusetyenziswa njengemisebenzi yabantu abafuna umsebenzi.
Siyakhumbuza: kubo bonke abafundi be "Habr" - isaphulelo se-ruble ye-10 xa ubhalisa kuyo nayiphi na ikhosi ye-Skillbox usebenzisa ikhowudi yokuphromotha "Habr".
I-Skillbox iyacebisa: Ikhosi esebenzayo
"UMqulunqi we-PRO" .
Into ephambili kukulungiselela kakuhle udliwano-ndlebe lwakho.
Ewe, phambi kokuba siqale ukujonga imisebenzi, makhe sijonge iingcebiso zokulungiselela udliwano-ndlebe ngokubanzi.
Into ephambili kukulungiselela kwangaphambili. Vavanya ukuba uzikhumbula kakuhle kangakanani ii-algorithms kunye nolwakhiwo lwedatha, kwaye uphucule ulwazi lwakho kwiindawo ongaziqhelanga kakhulu. Maninzi amaqonga e-intanethi anokukunceda ulungiselele udliwano-ndlebe. Siyacebisa
Kufanelekile ukufunda ukuthetha isigqibo ngokuvakalayo. Kuyacetyiswa ukuba uxelele abafaki zicelo malunga nento oyenzayo, kwaye ungabhali nje ebhodini (okanye uchwetheze ikhowudi kwikhompyuter, nangokuthula). Ngale ndlela, ukuba wenza iphutha kwikhowudi, kodwa isisombululo sichanekile ngokubanzi, unokwandisa amathuba akho okuphumelela.
Kufuneka uqonde ingxaki ngaphambi kokuba uqalise ukuyicombulula. Kwezinye iimeko, unokuwuqonda umsebenzi ngokuthe ngqo kwaye emva koko uhambe ngendlela engalunganga. Kusenokuba kufanelekile ukubuza imibuzo embalwa ecacisayo kudliwano-ndlebe.
Kufuneka uziqhelanise nekhowudi yokubhala ngesandla, hayi kwiPC. Kwenzeka ukuba ngexesha lodliwano-ndlebe umenzi-sicelo unikwe umakishi kunye nebhodi emhlophe, apho kungekho macebiso okanye ukufomatha ngokuzenzekelayo. Xa ufuna isisombululo, kuyafaneleka ukubhala phantsi ikhowudi yakho ephepheni okanye ngqo ebhodini. Ukuba ugcina yonke into entloko yakho, unokulibala into ebalulekileyo.
Imisebenzi yetemplate kwiJavaScript
Eminye yale misebenzi mhlawumbi sele uqhelene nawe. Mhlawumbi ukhe waba nodliwano-ndlebe apho kuye kwafuneka ukuba usombulule into efanayo, okanye uziqhelanise nalo ngelixa ufunda iJavaScript. Ewe, ngoku lixesha lokuzisombulula kwakhona, kunye nenkcazo ecacileyo yenkqubo.
I-Palindrome
I-palindrome ligama, isivakalisi okanye ukulandelelana koonobumba abafundeka ngokufanayo ngendlela eqhelekileyo nakwicala elichaseneyo. Umzekelo, "u-Anna" yi-palindrome, kodwa "itafile" kunye no "John" akunjalo.
Ukuqokelela
Unikwe umtya; kufuneka ubhale umsebenzi okuvumela ukuba ubuyele kwinyani ukuba umtya yi palindrome, kwaye bubuxoki ukuba akunjalo. Kule meko, kufuneka uthathele ingqalelo izithuba kunye neziphumlisi.
palindrome('racecar') === yinyani
palindrome('itafile') === bubuxoki
Makhe sihlalutye umsebenzi
Ingcamango ephambili apha kukubuyisela umva umtya. Ukuba umtya "wokubuyela umva" ufana ngokupheleleyo nowokuqala, ngoko sifumene i-palindrome kwaye umsebenzi kufuneka ubuyele inyaniso. Ukuba akunjalo, bubuxoki.
Isisombululo
Nantsi ikhowudi esombulula i-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('')
}
Inyathelo lokuqala kukuguqula abalinganiswa kumtya wegalelo kwityala elisezantsi. Esi sisiqinisekiso sokuba inkqubo iya kuthelekisa abalinganiswa ngokwabo, kwaye kungekhona imeko okanye nantoni na enye.
Inyathelo lesibini kukubuyisela umva umgca. Oku akunzima ukwenza: kufuneka uyiguqule ibeluluhlu usebenzisa i .split () indlela (ithala leencwadi). Emva koko sibuyisela umva uluhlu sisebenzisa .reverse() (Array library). Inyathelo lokugqibela kukuguqula uluhlu olubuyela umva lube ngumtya usebenzisa .join() (Array library).
Ngoku konke okufuneka ukwenze kukuthelekisa umtya othi "reverse" kunye nomtya wokuqala, ubuyisela umphumo oyinyani okanye ubuxoki.
FizzBuzz
Omnye wemisebenzi ethandwa kakhulu kudliwano-ndlebe.
Ukuqokelela
Kufuneka ubhale umsebenzi oshicilela amanani ukusuka ku-1 ukuya ku-n ukuya kwiconsole, apho u-n yinani elipheleleyo elithathwa ngumsebenzi njenge parameter, enemiqathango elandelayo:
- i-output fizz endaweni yophindaphindo lwesi-3;
- i-output buzz endaweni yamanani aziphindaphindwe ngo-5;
- imveliso yefizzbuzz endaweni yamanani aziziphindwayo zombini u-3 no-5.
Umzekelo:
I-Fizzbuzz(5)
Isiphumo
// 1
// 2
// iqhosha
// 4
//buzz
Makhe sihlalutye umsebenzi
Eyona nto iphambili apha yindlela yokufumana iziphindaphindo usebenzisa iJavaScript. Inokusetyenziswa kusetyenziswa umsebenzisi wemodyuli okanye intsalela - %, ekuvumela ukuba ubonise intsalela xa usahlula amanani amabini. Ukuba intsalela ngu-0, oko kuthetha ukuba inani lokuqala liphindwaphindwa lwesibini.
I-12% 5 // 2 -> i-12 ayiphindi isi-5
I-12% 3 // 0 -> i-12 iphinda-phinda isi-3
Ngoko ke, ukuba wahlulahlula u-12 ngo-5, ufumana u-2 ngentsalela ka-2. Ukuba wahlula-hlula u-12 ngo-3, ufumana u-4 ngentsalela ka-0. Kwimeko yokuqala, u-12 akaphindi ka-5, okwesibini. , i-12 luphinda-phindo lwesi-3.
Isisombululo
Esona sisombululo siya kuba yile khowudi ilandelayo:
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)
}
}
}
Umsebenzi wenza iitshekhi eziyimfuneko usebenzisa iinkcazo ezinemiqathango kwaye uvelise umphumo ofunwa ngumsebenzisi. Kwingxaki, kuyafaneleka ukunikela ingqalelo kumyalelo wokuba ... ezinye izitatimenti: qalisa ngemeko ephindwe kabini (&&) kwaye uphele ngemeko apho amanani amaninzi awazange afumaneke. Ngenxa yoko, sigubungela zonke iinketho.
Anagram
Eli ligama legama eliqulethe bonke oonobumba belinye igama abakwinani elifanayo, kodwa ngendlela eyahlukileyo.
Ukuqokelela
Kufuneka sibhale umsebenzi ojonga ukuba imitya emibini i-anagrams, kwaye imeko ayinamsebenzi. Ngabalinganiswa kuphela ababalwayo; izithuba okanye iziphumlisi azithathelwa ngqalelo.
anagram('finder', 'Friend') -> yinyani
anagram('molo', 'bye') -> bubuxoki
Makhe sihlalutye umsebenzi
Into ebalulekileyo ekufuneka uyiqwalasele apha kukuba kufuneka ujonge unobumba ngamnye kwimigca emibini yokufaka kunye nenani labo kumgca ngamnye.
umfumani —> f: 1 umhlobo —> f: 1
mna:1r:1
n: 1 mna:1
d: 1 e: 1
e: 1n: 1
r: 1d: 1
Ukugcina idatha ye-anagram, kufuneka ukhethe isakhiwo esinje ngeJavaScript into engokoqobo. Isitshixo kule meko ngumlingiswa weleta, ixabiso linani lokuphindaphinda kwalo kumgca wangoku.
Kukho ezinye iimeko:
- Kufuneka uqinisekise ukuba imeko yeeleta ayithathelwa ngqalelo xa uthelekisa. Simane siguqulela omabini imitya ibe ngonobumba osezantsi okanye aphezulu.
- Asibandakanyi bonke abangabalinganiswa kuthelekiso. Eyona nto ingcono ukusebenza nayo
iintetho eziqhelekileyo .
Isisombululo
// 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
}
Nika ingqalelo ekusetyenzisweni
['f', 'i', 'n', 'd', 'e', 'r']
Ngale ndlela sifumana iimpawu zento ngaphandle kokwenza iluphu eninzi. Kwingxaki, ungasebenzisa le ndlela ngepropathi .ubude ukujonga ukuba zombini iintambo zinenani elifanayo lamagama - oku kuyimpawu ebalulekileyo ye-anagrams.
Khangela izikhamiso
Umsebenzi olula ngokufanelekileyo odla ngokuvela kudliwano-ndlebe.
Ukuqokelela
Kufuneka ubhale umsebenzi othatha umtya njengengxabano kwaye ubuyisele inani lezikhamiso eziqulethwe kumtya.
Izikhamiso ngu-“a”, “e”, “i”, “o”, “u”.
Umzekelo:
fumana izikhamiso('molo') // —> 2
fumana izikhamiso('kutheni') // —> 0
Isisombululo
Nalu olona khetho lulula:
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
}
Kubalulekile ukunikela ingqalelo ekusetyenzisweni kwe-.ibandakanya () indlela. Iyafumaneka kuzo zombini iintambo kunye nemigangatho. Kufuneka isetyenziswe ukumisela ukuba uluhlu luqulathe ixabiso elithile. Le ndlela ibuyisela inyani ukuba uluhlu luqulathe ixabiso elichaziweyo, kwaye bubuxoki ukuba akunjalo.
Kukho isisombululo esifutshane kule ngxaki:
const findVowels = str => {
const matched = str.match(/[aeiou]/gi)
return matched ? matches.length : 0
}
Oku kusebenzisa indlela .match (), ekuvumela ukuba uphumeze uphendlo olusebenzayo. Ukuba intetho eqhelekileyo njengengxoxo yendlela ifunyanwa ngaphakathi komtya okhankanyiweyo, ngoko ixabiso lokubuyisela luludwe lwamagama ahambelanayo. Kulungile, ukuba akukho matshisi, ngoko .match() ibuyisela null.
Fibonacci
Umsebenzi weklasikhi onokufumaneka kudliwano-ndlebe kumanqanaba ahlukeneyo. Kuyafaneleka ukukhumbula ukuba ulandelelwano lweFibonacci luluhlu lwamanani apho nganye elandelayo iyisimbuku seesibini zangaphambili. Ngoko ke, amanani alishumi okuqala akhangeleka ngolu hlobo: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.
Ukuqokelela
Kufuneka ubhale umsebenzi obuyisela irekhodi ye-nth kulandelelwano oluthile, kunye no-n ibe linani eligqithisiweyo njengengxabano kumsebenzi.
fibonacci(3) // —> 2
Lo msebenzi ubandakanya ukuhamba nge-loop inani lamaxesha achazwe kwingxoxo, ukubuyisela ixabiso kwindawo efanelekileyo. Le ndlela yokubeka ingxaki ifuna ukusetyenziswa kweelophu. Ukuba usebenzisa i-recursion endaweni yoko, inokukholisa udliwano-ndlebe kwaye ikunike amanqaku ongezelelweyo ambalwa.
Isisombululo
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]
}
Kuluhlu lweziphumo, amanani amabini okuqala aqulethwe kuthotho kuba ingeniso nganye ngokulandelelanayo isixa samanani amabini adlulileyo. Kwasekuqaleni akukho manani mabini anokuthathwa ukufumana inani elilandelayo, ngoko ke iluphu ayinakuwavelisa ngokuzenzekelayo. Kodwa, njengoko sisazi, amanani amabini okuqala ahlala e-0 kunye no-1. Ngoko ke, ungaqalisa uluhlu lweziphumo ngesandla.
Ngokuphathelele ukuphindaphinda, yonke into ilula kwaye inzima ngaxeshanye:
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)
}
Sihlala sibiza i-fibonacci (), sigqithisa amanani amancinci kunye namancinci njengeengxabano. Siyayeka xa ingxabano epasisiweyo ingu-0 okanye u-1.
isiphelo
Okunokwenzeka, sele udibane nayo nayiphi na le misebenzi ukuba ubunodliwano-ndlebe lwe-frontend okanye umsebenzi womphuhlisi weJavaScript (ingakumbi ukuba ukwinqanaba elisezantsi). Kodwa ukuba awudibananga nazo, zinokuba luncedo kwixesha elizayo-ubuncinci kuphuhliso jikelele.
I-Skillbox iyacebisa:
- Isicelo sekhosi ye-intanethi
"Umhlalutyi wedatha yePython" .- Ikhosi ekwi-Intanethi
"Umphuhlisi ophambili weProfessional" .- Ikhosi yonyaka osebenzayo
"Umphuhlisi we-PHP ukusuka kwi-0 ukuya kwi-PRO" .
umthombo: www.habr.com