5 عام جاوا اسڪرپٽ انٽرويو جا ڪم: تجزيو ۽ حل

5 عام جاوا اسڪرپٽ انٽرويو جا ڪم: تجزيو ۽ حل

مترجم کان: توهان لاء هڪ مضمون شايع ڪيو ماريا انتونيٽا پرنا، جيڪو عام جاوا اسڪرپٽ ڪمن بابت ڳالهائيندو آهي, اڪثر انٽرويو دوران ڊولپر درخواست ڏيندڙن کي پيش ڪيو ويندو آهي. مضمون مفيد ٿيندو، سڀ کان پهريان، نوان پروگرامرز لاء.

ٽيڪنيڪي ڪمپنين ۾ انٽرويو ڊگهي عرصي کان شهر جي ڳالهه ڪئي وئي آهي. اهو حيرت انگيز نه هجڻ گهرجي - ڪاميابيءَ سان هڪ انٽرويو پاس ڪرڻ توهان کي سٺي نوڪري حاصل ڪرڻ جو موقعو ڏئي ٿو. پر اهو ايترو سادو ناهي، ڇاڪاڻ ته پيچيده مسئلا اڪثر حل ڪرڻ جي ضرورت آهي.

ان کان علاوه، اڪثر ڪري، انهن مان اڪثر ڪم سان لاڳاپيل نه آهن جيڪي درخواست ڪندڙ انجام ڏيندو، پر انهن کي اڃا تائين حل ڪرڻ جي ضرورت آهي. ڪڏهن ڪڏهن توهان کي بورڊ تي ڪرڻو پوندو، گوگل يا ڪنهن ٻئي ذريعن سان چيڪ ڪرڻ کان سواء. ها، صورتحال آهستي آهستي تبديل ٿي رهي آهي، ۽ ڪجهه ڪمپنيون اهڙيون انٽرويو ڇڏي رهيا آهن، پر ڪيترائي ملازمت اڃا تائين هن روايت تي عمل ڪن ٿا. هي آرٽيڪل عام جاوا اسڪرپٽ جي ڪمن جي تجزيي لاءِ وقف آهي جيڪي اڪثر نوڪري ڳولڻ وارن لاءِ ڪم طور استعمال ڪيا ويندا آهن.

اسان توهان کي ياد ڏياريون ٿا: "Habr" جي سڀني پڙهندڙن لاءِ - 10 روبل جي رعايت جڏهن "Habr" پروموشنل ڪوڊ استعمال ڪندي ڪنهن به اسڪل باڪس ڪورس ۾ داخلا.

Skillbox سفارش ڪري ٿو: عملي ڪورس "موبائل ڊولپر پرو".

بنيادي شيء توهان جي انٽرويو لاء مڪمل طور تي تيار ڪرڻ آهي.

ها، ان کان اڳ جو اسان ڪمن کي ڏسڻ شروع ڪريون، اچو ته ڪجهه عام انٽرويو تيار ڪرڻ جا طريقا ڏسو.

بنيادي شيء اڳواٽ تيار ڪرڻ آهي. جانچ ڪريو ته توهان الورورٿمز ۽ ڊيٽا جي جوڙجڪ کي ڪيترو چڱي طرح ياد ڪندا آهيو، ۽ انهن علائقن ۾ توهان جي ڄاڻ کي بهتر بڻائيندا آهيو جن سان توهان تمام گهڻو واقف نه آهيو. اتي ڪيترائي آن لائن پليٽ فارم آھن جيڪي توھان جي مدد ڪري سگھن ٿيون انٽرويو لاءِ تيار. اسان صلاح ڏيون ٿا geeksforgeeks, پرامپ, Interviewing.io и ڪوڊ سگنل.

اهو فيصلو بلند آواز سان چوڻ سکڻ جي قابل آهي. اهو مشورو ڏنو ويو آهي ته درخواست ڏيندڙن کي ٻڌايو ته توهان ڇا ڪندا آهيو، ۽ نه صرف بورڊ تي لکو (يا ڪمپيوٽر ۾ ڪوڊ ٽائپ ڪريو، خاموشيء سان). اهو طريقو، جيڪڏهن توهان ڪوڊ ۾ غلطي ڪريو ٿا، پر حل عام طور تي صحيح آهي، توهان پنهنجي ڪاميابي جا موقعا وڌائي سگهو ٿا.

توھان کي سمجھڻ جي ضرورت آھي مسئلي کي حل ڪرڻ کان پھريان. ڪجھ ڪيسن ۾، توھان سمجھي سگھوٿا ھڪڙي ڪم کي سطحي طور تي ۽ پوءِ ھيٺ وڃو غلط رستو. اهو ٿي سگهي ٿو ته انٽرويو وٺندڙ کي ڪجهه واضح سوال پڇڻ جي قابل.

توهان کي هٿ سان ڪوڊ لکڻ جي مشق ڪرڻ جي ضرورت آهي، نه پي سي تي. اهو ٿئي ٿو ته انٽرويو دوران درخواست ڪندڙ کي هڪ مارڪر ۽ وائيٽ بورڊ ڏنو ويندو آهي، جتي ڪوبه اشارو يا خودڪار فارميٽنگ نه هوندو آهي. جڏهن هڪ حل ڳولي رهيا آهيو، اهو توهان جي ڪوڊ کي ڪاغذ جي هڪ ٽڪري تي يا سڌو بورڊ تي لکڻ جي قابل آهي. جيڪڏهن توهان هر شي کي پنهنجي سر ۾ رکو، توهان شايد ڪجهه اهم وساري سگهو ٿا.

جاوا اسڪرپٽ ۾ ٽيمپليٽ جا ڪم

انهن مان ڪجهه ڪم شايد توهان کي اڳ ۾ ئي واقف آهن. توهان يا ته انٽرويو ڪيا آهن جتي توهان کي ڪجهه ساڳيو حل ڪرڻو هو، يا جاوا اسڪرپٽ سکڻ دوران انهن تي مشق ڪيو. خير، هاڻي ان کي ٻيهر حل ڪرڻ جو وقت آهي، ۽ عمل جي تفصيلي وضاحت سان.

پيلنڊروم

هڪ palindrome هڪ لفظ، جملو يا ڪردارن جي ترتيب آهي، جيڪو عام طور تي ساڳئي طرف ۽ مخالف طرف ٻنهي طرفن سان پڙهيو ويندو آهي. مثال طور، "انا" هڪ پيلينڊوم آهي، پر "ٽيبل" ۽ "جان" نه آهن.

اسٽوريج

هڪ تار ڏنو؛ توهان کي هڪ فنڪشن لکڻ جي ضرورت آهي جيڪا توهان کي صحيح موٽڻ جي اجازت ڏئي ٿي جيڪڏهن اسٽرنگ هڪ پيلنڊروم آهي، ۽ غلط جيڪڏهن نه. انهي حالت ۾، توهان کي اڪائونٽ جي جڳهن ۽ اوقاف جي نشانين ۾ رکڻ جي ضرورت آهي.

palindrome ('racecar') === سچ
palindrome ('table') === غلط

اچو ته ڪم جو تجزيو ڪريون

هتي بنيادي خيال آهي تار کي ريورس ڪرڻ. جيڪڏهن "ريورس" اسٽرنگ اصل ۾ مڪمل طور تي هڪجهڙائي آهي، ته پوء اسان کي هڪ پيلنڊروم مليو آهي ۽ فنڪشن کي صحيح موٽڻ گهرجي. جيڪڏهن نه، ڪوڙ.

فيصلو

هتي اهو ڪوڊ آهي جيڪو حل ڪري ٿو پالنڊروم.

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

پهريون قدم ان پٽ اسٽرنگ ۾ ڪردارن کي لوئر ڪيس ۾ تبديل ڪرڻ آهي. اها هڪ گارنٽي آهي ته پروگرام ڪردارن جو پاڻ ۾ مقابلو ڪندو، نه ته ڪيس يا ٻيو ڪجهه.

ٻيو قدم لڪير کي ريورس ڪرڻ آهي. اهو ڪرڻ ڏکيو نه آهي: توهان کي ان کي .split() طريقو (String library) استعمال ڪندي هڪ صف ۾ تبديل ڪرڻو پوندو. پوءِ اسان .reverse() (Array library) استعمال ڪندي صف کي ريورس ڪريون ٿا. آخري قدم .join() (Array library) استعمال ڪندي ريورس ايري کي اسٽرنگ ۾ تبديل ڪرڻ آهي.

هاڻي توهان سڀني کي ڪرڻو آهي اصل اسٽرنگ سان "ريورس" اسٽرنگ جو مقابلو ڪريو، نتيجو صحيح يا غلط موٽائي.

فز بز

انٽرويو ۾ سڀ کان وڌيڪ مشهور ڪمن مان هڪ آهي.

اسٽوريج

توھان کي ھڪڙو فنڪشن لکڻو پوندو جيڪو نمبر 1 کان n تائين ڪنسول ڏانھن پرنٽ ڪري ٿو، جتي n ھڪڙو عدد آھي جيڪو فنڪشن ھڪڙي پيرا ميٽر جي طور تي وٺندو آھي، ھيٺين شرطن سان:

  • 3 جي ضرب جي بدران فيز آئوٽ ڪريو؛
  • انگن جي بدران buzz ٻاھر ڪڍو جيڪي 5 جا ضرب آھن؛
  • انگن جي بدران fizzbuzz output جيڪي 3 ۽ 5 ٻنهي جا ضرب آهن.

مثال طور

فزبز (5)

نتيجي ۾

// 1،XNUMX
// 2،XNUMX
// فيز
// 4،XNUMX
//buzz

اچو ته ڪم جو تجزيو ڪريون

ھتي اصلي شيء آھي جاوا اسڪرپٽ استعمال ڪندي گھڻن کي ڳولڻ جو ھڪڙو طريقو آھي. ان کي استعمال ڪري سگھجي ٿو ماڊيولس آپريٽر يا باقي -٪، جيڪو توھان کي اجازت ڏئي ٿو باقي ڏيکاريو جڏھن ٻن نمبرن کي ورهايو وڃي. جيڪڏهن باقي 0 آهي، ان جو مطلب آهي ته پهريون نمبر سيڪنڊ جو هڪ کان وڌيڪ آهي.

12% 5 // 2 -> 12 5 جو گھڻائي نه آھي
12% 3 // 0 -> 12 3 جو گھڻائي آھي

تنهن ڪري، جيڪڏهن توهان 12 کي 5 سان ورهايو ٿا، توهان کي 2 ملندا باقي 2 سان. جيڪڏهن توهان 12 کي 3 سان ورهائيندا آهيو، توهان کي 4 ملندا باقي 0 سان. پهرين صورت ۾، 12 5 جو هڪ کان وڌيڪ نه آهي، ٻئي ۾. ، 12 3 جو گھڻائي آھي.

فيصلو

بهترين حل هيٺ ڏنل ڪوڊ هوندو:

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 بيان: هڪ ٻي حالت سان شروع ڪريو (&&) ۽ ان صورت سان ختم ڪريو جتي گھڻا نمبر نه ملي سگهيا آهن. نتيجي طور، اسان سڀني اختيارن کي ڍڪيندا آهيون.

انگرام

هي هڪ لفظ جو نالو آهي جنهن ۾ هڪ ئي انگ ۾ ٻئي لفظ جا سڀئي اکر شامل آهن، پر مختلف ترتيب ۾.

اسٽوريج

اسان کي هڪ فنڪشن لکڻ جي ضرورت آهي جيڪا چيڪ ڪري ٿي ته ڇا ٻه اسٽرنگ anagrams آهن، ۽ صورت ۾ فرق نٿو پوي. صرف اکر ڳڻيا ويا آهن؛ خال يا اوقاف جي نشانين کي حساب ۾ نه ورتو وڃي.

anagram ('finder'، 'دوست') -> سچ
anagram ('هيلو'، 'الوداع') -> غلط

اچو ته ڪم جو تجزيو ڪريون

هتي غور ڪرڻ لاءِ اهم ڳالهه اها آهي ته توهان کي هر اکر کي ٻن انپٽ لائنن ۾ ۽ هر قطار ۾ انهن جو نمبر چيڪ ڪرڻ جي ضرورت آهي.

ڳوليندڙ -> f: 1 دوست -> f: 1
i: 1 ر: 1
n: 1 i: 1
d: 1 e: 1
e: 1 ن: 1
ر: 1 ڊي: 1

anagram ڊيٽا کي ذخيرو ڪرڻ لاء، توهان کي هڪ ساخت چونڊڻ گهرجي جهڙوڪ JavaScript اعتراض لفظي. هن معاملي ۾ اهم اکر جو ڪردار آهي، قدر موجوده لائن ۾ ان جي ورجائي جو تعداد آهي.

ٻيا شرط آهن:

  • توهان کي پڪ ڪرڻ جي ضرورت آهي ته انگن اکرن جي صورت ۾ حساب ۾ نه ورتو وڃي جڏهن compare. اسان صرف ٻنهي تارن کي لوئر يا اپر ڪيس ۾ تبديل ڪريون ٿا.
  • اسان سڀني غير ڪردارن کي مقابلي کان خارج ڪريون ٿا. ڪم ڪرڻ لاء بهترين باقاعده اظهار.

فيصلو

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

استعمال تي Payيان ڏيو Object.keys() مٿين حصي ۾. اهو طريقو هڪ صف کي واپس ڏئي ٿو جنهن ۾ نالا يا ڪنجيون ساڳئي ترتيب ۾ آهن جيڪي اهي اعتراض ۾ ظاهر ٿيندا آهن. هن معاملي ۾ صف هن طرح ٿيندو:

['f'، 'i'، 'n'، 'd'، 'e'، 'r']

اهڙي طرح اسان کي بلڪ لوپ ڪرڻ جي بغير اعتراض جي ملڪيت حاصل ڪري ٿي. ڪنهن مسئلي ۾، توهان هن طريقي کي استعمال ڪري سگهو ٿا .length ملڪيت سان چيڪ ڪرڻ لاءِ ته ڇا ٻنهي اسٽرنگ ۾ اکرن جو تعداد ساڳيو آهي - هي anagrams جي هڪ اهم خصوصيت آهي.

آوازن جي ڳولا ڪريو

هڪ بلڪل سادو ڪم جيڪو اڪثر انٽرويو ۾ اچي ٿو.

اسٽوريج

توهان کي هڪ فنڪشن لکڻ جي ضرورت آهي جيڪو هڪ اسٽرنگ کي هڪ دليل طور وٺي ٿو ۽ واپسي جي تعداد کي واپس ڏئي ٿو جيڪي اسٽرنگ ۾ شامل آهن.
حرف ”ا“، ”اي“، ”i“، ”o“، ”u“ آهن.

مثال طور

findVowels('هيلو') // -> 2
ڳوليو آواز ('ڇو') // -> 0

فيصلو

هتي آسان ترين اختيار آهي:

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
}

.includes() طريقي جي استعمال تي ڌيان ڏيڻ ضروري آهي. اهو ٻنهي strings ۽ arrays لاء موجود آهي. اهو طئي ڪرڻ لاء استعمال ڪيو وڃي ته ڇا هڪ صف ۾ هڪ خاص قدر شامل آهي. اهو طريقو صحيح موٽائي ٿو جيڪڏهن صف ۾ مخصوص قيمت شامل آهي، ۽ غلط آهي جيڪڏهن اهو نه آهي.

مسئلو جو هڪ مختصر حل آهي:

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

هي .match() طريقو استعمال ڪري ٿو، جيڪو توهان کي هڪ موثر ڳولا کي لاڳو ڪرڻ جي اجازت ڏئي ٿو. جيڪڏهن هڪ باقاعده اظهار هڪ طريقو دليل جي طور تي مليل آهي مخصوص اسٽرنگ اندر، پوء واپسي قدر ملندڙ اکرن جي هڪ صف آهي. خير، جيڪڏهن ڪو به ميچ نه آهي، ته پوء .match() null موٽائي ٿو.

فبونيڪي

هڪ شاندار ڪم جيڪو مختلف سطحن تي انٽرويو ۾ ڳولهي سگهجي ٿو. اهو ياد رکڻ جي قابل آهي ته فبونيڪي تسلسل انگن جو هڪ سلسلو آهي جتي هر ايندڙ هڪ پوئين ٻن جو مجموعو آهي. تنهن ڪري، پهريون ڏهه نمبر هن طرح نظر اچن ٿا: 0، 1، 1، 2، 3، 5، 8، 13، 21، 34.

اسٽوريج

توهان کي هڪ فنڪشن لکڻ جي ضرورت آهي جيڪا nth رڪارڊ کي هڪ خاص تسلسل ۾ واپس ڪري، n اهو نمبر آهي جيڪو فنڪشن ڏانهن دليل طور منظور ڪيو ويو آهي.

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

نتيجن جي صف ۾، پهرين ٻه نمبر سيريز ۾ شامل آهن ڇو ته هر داخل ٿيڻ جي ترتيب ۾ پوئين ٻن انگن جو مجموعو آهي. بلڪل شروع ۾ ڪو به ٻه نمبر نه آهن جن کي ايندڙ نمبر حاصل ڪرڻ لاءِ ورتو وڃي، تنهنڪري لوپ انهن کي خودڪار طريقي سان پيدا نٿو ڪري سگهي. پر، جيئن اسان ڄاڻون ٿا، پهريان ٻه انگ هميشه 0 ۽ 1 هوندا آهن. تنهن ڪري، توهان نتيجن جي صف کي دستي طور تي شروع ڪري سگهو ٿا.

ٻيهر ورجائي لاء، هر شيء هڪ ئي وقت ۾ آسان ۽ وڌيڪ پيچيده آهي:

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

اسان fibonacci () کي سڏيندا رهون ٿا، دليلن جي طور تي ننڍا ۽ ننڍا انگ پاس ڪري رهيا آهيون. اسان روڪيو جڏهن منظور ٿيل دليل 0 يا 1 آهي.

ٿڪل

گهڻو ڪري، توهان اڳ ۾ ئي انهن ڪمن مان ڪنهن کي منهن ڪيو آهي جيڪڏهن توهان هڪ فرنٽ اينڊ يا جاوا اسڪرپٽ ڊولپر جي نوڪري لاء انٽرويو ڪيو آهي (خاص طور تي جيڪڏهن اهو جونيئر سطح تي آهي). پر جيڪڏهن توهان انهن جي وچ ۾ نه آيا آهيو، اهي مستقبل ۾ ڪارائتو ٿي سگهن ٿا - گهٽ ۾ گهٽ عام ترقي لاء.

Skillbox سفارش ڪري ٿو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو