February 28, 2024

Technical Interview

Meta teglar vazifasi ?

  • Meta teglar brauzerlarga sahifaning mazmuni, struktura, va boshqa ma'lumotlar haqida ma'lumot berishga yordam beradi. Bu ma'lumotlar esa brauzerlarda sahifani ko'rish, qidirish, va boshqa funktsiyalarni bajarish uchun ishlatiladi. Meta teglar to'plami HTML <head> elementi ichiga joylashtiriladi.

Pesudo class va pseudo element farqi?

  1. Pseudo-class (Pesudo-klass): Pseudo-classlar, HTML-elementlariga boshqa holatlarda (masalan, hover bo'lganda yoki active bo'lganda) ushbu elementlar uchun xususiyatlarni o'zgartirishga yordam beradi. Pseudo-classlar, : belgisi bilan ajratilgan bo'ladi. Masalan: :hover, :active, :focus.
a:hover {
    color: red;
}


button:active {
    background-color: green;
}

2. Pseudo-element (Pesudo-element): Pseudo-elementlar, HTML-elementlarining bazi qismlari uchun yangi elementlar qo'shishga imkon beradi. Ular, HTML struktura modifikatsiyasi uchun ishlatiladi. Pseudo-elementlar :: belgisi bilan ajratilgan bo'ladi. Masalan: ::before, ::after.

p::before {
    content: "Before content";
}

Mixin vs Extend farqi ?

  1. Mixin - kodimizda qayta ishlatmoqchi bo'lgan css deklaratsiyasi guruhlarini qayta ishlatish imkonini beradi.
  2. Extend - Css xususiyatlari to'plamini bir selektordan boshqasiga almashish imkonini beradi

Javascript data types ?

  • Primative and Non-primative(Reference)

Primative:

  1. Number
  2. String
  3. Boolean
  4. Undefined
  5. Null
  6. BigInt
  7. Symbol

Non-primative(Reference):

  1. Object
  2. Array

Variables difference ?

  1. var - qayta o'zgaruvchi yaratsa bo'ladi, qayta qiymat tayinlash va qayta e'lon qilish mumkun.
  2. let - qayta qiymat tayinlash mumkun, yaratilgan o'zgaruvchini qayta yaratib bo'lmaydi.
  3. const - o'zgarmas, qiymatni o'zgartirib bo'lmaydi, qayta qiymat e'lon qilish mumkun emas.

  • var - global
  • let - local
  • const - local

Number methods :

  1. isIntegar → butun sonmi yoki yo'qmi tekshiradi
Number.isInteger(0); // true
Number.isInteger(-100000); // true
Number.isInteger(99999999999999999999999); // true
Number.isInteger(0.1); // false
Number.isInteger(NaN); // false
Number.isInteger(Infinity); // false
Number.isInteger("10"); // false

2. isSafeIntegar → 'xavfsiz butun son' yoki yo'qligini tekshiradi.

Number.isSafeInteger(3); // true
Number.isSafeInteger(2 ** 53); // false
Number.isSafeInteger(2 ** 53 - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.0); // true

3. parseInt → faqat butun qismini oladi.

Number.parseInt(13.4) // 13
Number.parseInt(1.4) // 1
Number.parseInt(13.33) // 13

4. parseFloat → shundoqligicha olib beradi.

Number.parseFloat("3"); // 3
Number.parseFloat(3.1); // 3.1
Number.parseFloat(3.0); // 3.0

5. toFixed → butun qismini oladi, lekin type o'zgarib qoladi

Number.toFixed(13.2); // 13 type - string
Number.toFixed(1.2) // 1
Number.toFixed(13.5) // 14

6. toString → Stringga o'giradi.

123.toString(); // "123" 
true.toString(); // "true"

7. toPrecision → to'g'ridan-to'g'ri olinadi lekin type string bo'ladi.

let num = 13.3714;
num.toPrecision(2); // Returns "13"
num.toPrecision(3); // Returns "13.4"
num.toPrecision(10); // Returns "13.3714"

8. toLocaleString → davlar turiga qarab sonlarni xonalarga bo'ladi.

function eArabic(x) {
  return x.toLocaleString('ar-EG');
}

console.log(eArabic(123456.789));
// Expected output: "١٢٣٬٤٥٦٫٧٨٩"

console.log(eArabic('123456.789'));
// Expected output: "123456.789"

console.log(eArabic(NaN));
// Expected output: "ليس رقم"

Math object:

  1. floor - kichik tomonga yaxlitlash.
  2. ceil - katta tomonga yaxlitlash.
  3. round - haqiqiy yaxlitlash.
  4. abs - absolute yaxlitlash sonning moduli : manfiy bo'lsa musbatga aylanadi.
  5. random - random()* nechidur son bersak 0 dan shu songacha bo'lgan sonni chiqarib beradi.
  6. trunc - butun qismini oladi.
  7. pow - daraja
  8. sqrt - kvadrat ildiz : ildiz osti

String methods:

  1. slice - boshini va oxirini ko'rsatib bersa o'shatdan kesib oladi. Agar hech nima bermasa copy qilib qo'yadi.
  2. substring - negative index qabul qilmaydi. slice bilan bir xil ishlaydi.
  3. toUppercase - katta harfga aylantiradi.
  4. toLowercase - kichik harfga aylanatiradi.
  5. replace - textni boshqa text bilan almashtirish.
  6. replaceAll - textda 2ta 3ta so'z bir xil bo'lsa o'zgartirib beradi.
  7. concat - stringni stringga qo'shib beradi.
  8. trim - spacelarni olib tashash uchun. boshidan va oxiridan olib tashidi.
    trimStart - boshidan
    trimEnd - oxiridan
  9. chartAt - o'zgaruvchiga biriktirilgan qiymatlarni indexini bersak o'sha qiymatni qaytarib beradi.
  10. charCodeAt - ASCII tabledagi son yoki harfni kodini olib beradi.
  11. split - textni bo'lib beradi va qaytgan qiymat array bo'ladi.

Undefined vs null ?

  • Undefined - o'zgaruvchu ochib unga qiymat berilmasa, undefined hisoblanadi.
  • Null - o'zgaruvchi bor, nomi ham bor lekin ichi bo'shligini etsak, uni null deb yozamiz.

Truthy , Falthy ?

Conditional operator ? (ternory operator)

Taqqoslash operatorlari ?

O’zlashtirish operatorlari ?

?? , && , ||

?? - Nullish collasing operator. Qachonki chap tomonda null yoki undefined bo'lsa, o'ng tomondagi qiymat chiqadi.
&& - Logical and operator. First falthy, else the last.
|| - Logical or operator. First truthy, else the last.

Dynamic elements ?

Callstack and Heap ?

Primitive data-typelar ma'lumotlari Call Stackda saqlanadi.
- Cheka qismidagi text,obj,obj2 lar Call stackda bo'lmaydi.
shunchaki chunarli bo'lish uchun yozilgan
- Primitive data-typelar unique (takrorlanmas) ID
orqali saqlab qoladi "hello world" esa qiymati
Non-primitive (Object,Array,Function) - heapda saqlanadi.
- Non-primitive data-typelar heapda unique ID orqali saqlanadi,
o'ng tomonida esa {} - qiymati
- Lekin Non-primitive data-type shu bilan birgalikda call stackda
ham saqlanadi,call stackda birinchi qanaqadir bir random ID,
va uni heapda saqlangan ID qiymat sifatida saqlanadi.

Array ?

Array - bir nechta turdagi ma'lumotni o'zida saqlovchi konteyner. Tartiblangan holatda ma'lumot saqlash mumkun. Tartibni hisoblash 0 dan boshlanadi.

Ularni 2 xil usulda create qilish mumkun:

const arr = new Array(qiymat)
console.log(arr)
let arr = [] ---- bu holat tezroq ishlaydi.
arr[0] = "Hello"
console.log(arr) // Hello 

Function

Function declaration - bir marta e'lon qilish mumkun. O'zidan yuqorida call qilish mumkun.

Function expression - bir necha marta e'lon qilish mumkun. O'zidan yuqorida call qilish mumkun emas.

Arrow function - 1 ta qatorda yozish uchun. O'zidan yuqorida call qilish mumkun emas.

Array methods

Pure , impure functions

Pure function - Shunchaki kelgan argumentlarni execute qilib return qiladi. Global scopega ta'sir ko'rsatmidi.
function pureFunc(a, b){
      return a + b
}
create(10, 15) // 25

Impure function - Kelgan argumentlarni global o'zgaruvchiga yig'ib olib return qiladi. Global scopega ta'sir ko'rsatadi.
let arr = []
function add(a){
    arr.push(a)
    return arr
}
add(21)

Higher order functions

HOF - Higher order function. Funksiya ichida boshqa bir funksiyani return qilishi.
Argument sifatida funksiyani qabul qilishi va callback qilishi.

Spread and rest operator

Spread - yoyib beradi. Arrayni yoyib nusxalab beradi. Agar string bo'lsa, har bir harakatni yoyib beradi.
Rest - yig'ib beradi. elementlarga nom berib va qolgan elementlarni olish uchun ishlatamiz.

Filter , map , forEach ?

forEach - o'zini ichida funksiya qabul qiladi. 3ta argument qabul qiladi(element, index, array).

  • Return ishlamidi.
  • Methodlarni iteratsiya qiladi.
  • Condition ishlidi lekin return ishlamidi.

map - iteratsiya bo'ladi va har doim yangi array qaytarib beradi. Nechta element bo'lsa shuncha aylanib return qiladi.

  • Return ishlidi.
  • Map orqali deep copy qilish mumkun
  • Condition ishlamidi.

filter - arrayni return qiladi mutatsiya qilib bo'lmaydi. Filtered arrayga condition berish orqali filter qiladi.

  • Nullish ishlamidi.
  • Returndan keyin ternory operator ishlamidi.
  • Conditiondan o'tgan elementlarni array qilib joylab beradi.
  • Faqat true qiymat oladi, elementlarni o'zgartiromidi.

Reduce qanday ishlaydi

Reduce - faqat summa uchun qo'llanadi. Funksiya qabul qiladi.

Method nima?

Method - objectni ishga tushirishda funksiya xususiyatini aniqlash uchun qisqaroq sintaksis.

“use strict” keyword

"use strict" - JavaScriptning qat'iy rejimini ishga tushiradi, bu esa ishlash vaqtida kodni yanada qattiq tahlil qilish va xatolarni qayta ishlashni ta'minlaydi.

.this keyword

This - object ichida ishlatilsa o'sha objectga teng,funksiya ichida ishlatilsa o'sha funksiyaga.
  • arrow function ichida ishlatilmaydi.

Deep copy , shalow copy

Deep copy - chuqur nusxalash. Copy qilib olingan elementga o'zgartirish kiritilsa, originalga ta'sir ko'rsatilmidi.

Shallow copy - sayoz nusxalash. Boshqa bir o'zgaruvchiga tenglab olish.