├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Nəzrin İsbəndiyarova 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | ### JavaScript Interview Questions and Answers 5 | 6 | #### “The strength of JavaScript is that you can do anything. The weakness is that you will.” 7 | 8 |

━ Reg Braithwaite

9 |
10 | 11 | # 12 | 13 | 1. ### What is the difference between == and === operators? 14 | 15 | "==" operatoruna bərabərlik operatoru deyilir. Dəyişənlərin data tiplərini nəzərə almadan iki dəyişəni müqayisə etmək üçün istifadə edilir və boolean dəyər (true və ya false) qaytarır. Əgər dəyişənlərin dəyəri eynidirsə true qaytarır, deyilsə false qaytarır.
16 | "===" operatoruna isə qatı bərabərlik operatoru deyilir və "==" operatorundan fərqli olaraq iki dəyişənin həm dəyərini müqayisə edir, həm də data tiplərini yoxlayır. Əgər hər ikisi də eynidirsə true qaytarır, deyilsə false qaytarır. 17 | 18 | _Bir neçə nümunəyə baxaq:_ 19 | 20 | ```js 21 | "you" == "you"; // true 22 | "you" === "you"; // true 23 | "your" === "you"; // false 24 | 5 == "5"; // true 25 | 5 === "5"; // false 26 | 5 == 5; // true 27 | 5 === 5; // true 28 | 0 == false; // true 29 | 0 === false; // false 30 | 1 == true; // true 31 | 1 === true; // false 32 | null == null; // true 33 | null === null; // true 34 | null == undefined; // true 35 | null === undefined; // false 36 | NaN === NaN; // false 37 | ``` 38 | 39 |
40 | 41 | 2. ### What is null value? 42 | 43 | Null dəyərin yoxluğunu ifadə edən JavaScriptə xas primitiv data növüdür və typeof operatorundan istifadə edəndə object qaytarır. 44 | 45 | _Nümunə:_ 46 | 47 | ```js 48 | let test = null; 49 | alert(test); // null 50 | alert(typeof test); // object 51 | ``` 52 | 53 |
54 | 55 | 3. ### What is undefined property? 56 | 57 | Undefined dəyişənin olduğunu, lakin dəyər təyin edilmədiyini bildirən primitiv data növüdür və typeof operatorundan istifadə edəndə undefined qaytarır. 58 | 59 | _Nümunə:_ 60 | 61 | ```js 62 | let test; 63 | alert(test); // undefined 64 | alert(typeof test); // undefined 65 | ``` 66 | 67 |
68 | 69 | 4. ### What is isNaN? 70 | 71 | JavaScriptdə isNaN() metodu dəyərin ədəd olub-olmamasını yoxlayır və boolean dəyər (true və ya false) qaytarır. Əgər dəyər NaN (**N**ot-**a**-**N**umber) olarsa (yəni ədəd olmazsa), bu zaman true qaytarır, əks halda false qaytarır. 72 | 73 | _Nümunə:_ 74 | 75 | ```js 76 | isNaN(20); // false 77 | isNaN("20"); // false 78 | isNaN("20.55"); // false 79 | isNaN("20,55"); // true 80 | isNaN("text"); // true 81 | isNaN(""); // false 82 | isNaN(" "); // false 83 | isNaN(null); // false 84 | isNaN(undefined); // true 85 | isNaN(NaN); // true 86 | isNaN(true); // false 87 | isNaN({}); // true 88 | isNaN(new Date()); // false 89 | ``` 90 | 91 |
92 | 93 | 5. ### **What is the typeof operator?** 94 | 95 | JavaScriptdə typeof operatorundan dəyişənlərin data tipini tapmaq üçün istifadə olunur. 96 | 97 | _Nümunə:_ 98 | 99 | ```js 100 | // numbers 101 | typeof 55; // 'number' 102 | typeof 55.12; // 'number' 103 | typeof Infinity; // 'number' 104 | typeof NaN; // 'number' 105 | typeof Number("5"); // 'number' 106 | typeof Number("paper"); // 'number' 107 | 108 | typeof 55n; // 'bigint' 109 | 110 | // strings 111 | typeof ""; // 'string' 112 | typeof "5"; // 'string' 113 | typeof "text"; // 'string' 114 | typeof `string text`; // 'string' 115 | typeof typeof 5; // 'string' 116 | 117 | // booleans 118 | typeof true; // 'boolean' 119 | typeof false; // 'boolean' 120 | 121 | // undefined 122 | typeof undefined; // 'undefined' 123 | 124 | // objects 125 | typeof null; // 'object' 126 | typeof { name: "Samir" }; // 'object' 127 | typeof [5, 55, 12]; // 'object' 128 | typeof new Date(); // 'object' 129 | 130 | // function 131 | typeof function () {}; // 'function' 132 | ``` 133 | 134 |
135 | 136 | 6. ### Who created JavaScript? 137 | 138 | JavaScript ilk dəfə **1995**-ci ildə **Brendan Eich** tərəfindən **Netscape Navigator 2.0** ilə birlikdə buraxılmışdır. İlk olaraq **Mocha** adı verildi, daha sonra **LiveScript** və ən sonda isə **JavaScript** adını aldı. 139 | 140 |
141 | 142 | 7. ### What are primitive data types? 143 | 144 | JavaScriptdə primitiv data növləri metodları və xüsusiyyətləri (properties) olmayan datadır. 7 primitiv data növü var. 145 | 146 | - number 147 | - bigint 148 | - undefined 149 | - null 150 | - string 151 | - symbol 152 | - boolean 153 | 154 |
155 | 156 | 8. ### What is NaN property? 157 | 158 | NaN "**N**ot-**a**-**N**umber" (ədəd olmayan) dəyərləri təmsil edən qlobal xüsusiyyətdir. NaN xüsusiyyətindən daxil edilmiş nömrələrin etibarlı olub-olmamasını yoxlamaq üçün istifadə edilə bilər. 159 | 160 | _Nümunə:_ 161 | 162 | ```js 163 | parseInt("text"); // NaN 164 | Number(undefined); // NaN 165 | Math.sqrt(-1); // NaN 166 | 5 + NaN; // NaN 167 | 0 * Infinity; // NaN 168 | undefined + undefined; // NaN 169 | "text" / 5; // NaN 170 | "text" * 5; // NaN 171 | "text" - 5; // NaN 172 | ``` 173 | 174 |
175 | 176 | 9. ### What are the bitwise operators available in JavaScript? 177 | 178 | Bitwise operatorları aşağıdakılardır: 179 | 180 | | Operator | Name | Example | 181 | | :------: | :--------------------------: | :--------: | 182 | | & | Bitwise AND | a & b | 183 | | | | Bitwise OR | a | b | 184 | | ^ | Bitwise XOR | a ^ b | 185 | | ~ | Bitwise NOT | ~ a | 186 | | << | Left shift | a << b | 187 | | >> | Sign-propagating right shift | a >> b | 188 | | >>> | Zero-fill right shift | a >>> b | 189 | 190 |
191 | 192 | 10. ### What is the use of setTimeout? 193 | 194 | JavaScriptdə setTimeout() metodundan funksiyanı çağırmaq və müəyyən edilmiş vaxtdan sonra yalnız bir dəfə yerinə yetirmək üçün istifadə olunur. Əgər icranı təkrarlamaq lazımdırsa, bu zaman setInterval() metodundan istifadə etmək lazımdır. 195 | 196 | _Nümunə:_ 197 | 198 | ```js 199 | function sayHello() { 200 | alert("Hello!"); 201 | } 202 | 203 | setTimeout(sayHello, 5000); 204 | ``` 205 | 206 | Bu o deməkdir ki, sayHello() metodu 5 saniyədən (5000 millisaniyə) sonra işə düşəcək, yəni bir dəfə 5 saniyədən sonra ekranda "Hello!" yazısı görünəcək. 207 | 208 |
209 | 210 | 11. ### What is the use of setInterval? 211 | 212 | JavaScriptdə setInterval() metodundan funksiyanı çağırmaq və müəyyən edilmiş vaxt ərzində davamlı şəkildə yerinə yetirmək üçün istifadə olunur. SetInterval() metodu setTimeout() metodu ilə eyni yazılışa sahibdir, lakin ondan tək fərqi müəyyən edilmiş vaxt ərzində yalnız bir dəfə yox, davamlı şəkildə işləyir. Bu metod clearInterval() metodu çağırılana qədər və ya pəncərə (windows) bağlanana qədər davam edir. 213 | 214 | _Nümunə:_ 215 | 216 | ```js 217 | function sayHello() { 218 | alert("Hello!"); 219 | } 220 | 221 | setInterval(sayHello, 5000); 222 | ``` 223 | 224 | Bu o deməkdir ki, sayHello() metodu hər 5 saniyədən (5000 millisaniyə) bir işə düşəcək, yəni hər 5 saniyədən bir ekranda "Hello!" yazısı görünəcək. 225 | 226 |
227 | 228 | 12. ### What would be the result of 1+2+'3'? 229 | Cavab 33-dür, çünki ilk iki dəyər ədəddir və ona görə də birinci 1 və 2 toplanacaq (3+'3'). Ondan sonrakı dəyər isə string'dir və string olduğu üçün də dəyərlər birləşəcək və cavab 33 olacaq. 230 | 231 |
232 | 233 | 13. ### What is the difference between internal and external JavaScript? 234 | 235 | Internal (daxili) JavaScript HTML-də `` teqinin içində yazılır. External (xarici) JavaScriptdə isə JavaScript kodları ayrıca ".js" uzantılı faylın içində yazılır və HTML-də bu kod ilə çağırılır ``. 236 | 237 |
238 | 239 | 14. ### What paradigm is JavaScript? 240 | 241 | JavaScript **funksional (functional)**, **obyekt yönümlü (object-oriented)**, **prosessual/imperativ (procedural/imperative)** və **prototip (prototypal)** proqramlaşdırmanı dəstəkləyən **çoxparadiqmalı (multi-paradigm)** dildir. 242 | 243 |
244 | 245 | 15. ### What is JSON? 246 | 247 | JSON (**J**ava**S**cript **O**bject **N**otation) dataları (çox böyük olmayan) depolamaq və dəyişdirmək üçün istifadə olunan JavaScript obyekt məntiqinə əsaslanan mətn əsaslı formatdır. Məsələn, JSON-dan istifadə edərək serverdən alınan JSON-ları JavaScript obyektinə çevirə bilərsiniz və ya hər hansısa bir JavaScript obyektini JSON-a çevirib serverə göndərə bilərsiniz. Fayl genişləməsi **".json"**-dur. JSON-da verilənlər açar (key) və dəyərlərdən (value) ibarət olur. 248 | 249 | _Nümunə:_ 250 | 251 | ```json 252 | { "ad": "Vüsalə", "soyad": "İsbəndiyarova" } 253 | ``` 254 | 255 |
256 | 257 | 16. ### What are the syntax rules of JSON? 258 | JSON-un aşağıdakı sintaksis qaydaları var: 259 | 260 | - Verilənlər açar (key) və dəyər (value) cütlərindən ibarət olur. Sol tərəfdəki məlumatlar açarı, sağ tərəfdəki məlumatlar isə dəyəri təmsil edir (hər ikisi qoşa dırnaq içində yazılır) və bir-birlərindən ":" (iki nöqtə) işarəsi ilə ayrılırlar. 261 | - Ad/dəyər (name/value) cütləri bir-birindən vergüllə ayrılır. 262 | - Bəzəkli mötərizələr ({}) obyektləri saxlayır. 263 | - Kvadrat mötərizələr ([]) arrayları saxlayır. 264 | 265 |
266 | 267 | 17. ### Why do you need JSON? 268 | Serverlə brauzer arasında olan məlumat mübadiləsi yalnız mətn ola bilər. JSON da yalnız mətn olduğundan serverə və ya serverdən asanlıqla göndərilə bilər və bütün proqramlaşdırma dilləri tərəfindən data formatı kimi istifadə oluna bilər. 269 | 270 |
271 | 272 | 18. ### How do you parse JSON string? 273 | 274 | JSON-un ümumi istifadəsi serverə və ya serverdən data mübadiləsi etməkdir və serverdən məlumat qəbul edərkən data həmişə string formatında olmalıdır. **JSON.parse()** metodu ilə aşağıdakı string dəyərini JavaScript obyektinə çevirə bilərsiniz. 275 | 276 | _Nümunə:_ 277 | 278 | ```js 279 | const str = '{"name":"Orkhan", "surname":"Shahbaz", "age":29}'; 280 | const obj = JSON.parse(str); 281 | console.log(obj); // { name: 'Orkhan', surname: 'Shahbaz', age: 29 } 282 | ``` 283 | 284 | Burada obyekt əvəzinə massivə çevirəcək. 285 | 286 | ```js 287 | const text = '["alma", "armud", "banan", "nar"]'; 288 | const arr = JSON.parse(text); 289 | console.log(arr); // [ 'alma', 'armud', 'banan', 'nar' ] 290 | ``` 291 | 292 |
293 | 294 | 19. ### What is the purpose JSON stringify? 295 | 296 | JSON-un ümumi istifadəsi serverə və ya serverdən data mübadiləsi etməkdir və serverə məlumat göndərərkən data həmişə string formatda olmalıdır. **JSON.stringify()** metodu ilə JavaScript obyektini string formatına çevirə bilərsiniz. 297 | 298 | _Nümunə:_ 299 | 300 | ```js 301 | const obj = { 302 | name: "Orkhan", 303 | surname: "Shahbaz", 304 | age: 29, 305 | }; 306 | 307 | const myJSON = JSON.stringify(obj); 308 | console.log(myJSON); // {"name":"Orkhan","surname":"Shahbaz","age":29} 309 | ``` 310 | 311 | `myJSON` indi stringdir və serverə göndərilməyə hazırdır. 312 | 313 |
314 | 315 | 20. ### How do you redirect new page in JavaScript? 316 | 317 | JavaScript ilə başqa səhifəyə redirect etməyin bir neçə yolu var. Bunlardan ən məşhur olanları window obyektinin `location.href` xüsusiyyəti və `location.replace` metodudur. 318 | 319 | _Nümunə:_ 320 | 321 | Buttona klik edəndə portfolio saytıma gedəcək. 322 | 323 | _Birinci yol:_ 324 | 325 | ```html 326 | 327 | ``` 328 | 329 | ```js 330 | function myFunction() { 331 | window.location.href = "https://isbendiyarovanezrin.herokuapp.com"; 332 | } 333 | ``` 334 | 335 | _İkinci yol:_ 336 | 337 | ```html 338 | 339 | ``` 340 | 341 | ```js 342 | function myFunction() { 343 | location.replace("https://isbendiyarovanezrin.herokuapp.com"); 344 | } 345 | ``` 346 | 347 |
348 | 349 | 21. ### How do you get the current url with JavaScript? 350 | 351 | JavaScriptdə cari URL adresini almaq üçün `window.location.href` xüsusiyyətindən istifadə olunur. 352 | 353 | _Nümunə:_ 354 | 355 | ```js 356 | console.log(window.location.href); // cari URL adresini qaytarır 357 | ``` 358 | 359 |
360 | 361 | 22. ### How do you check if a string starts with another string? 362 | 363 | Bunu JavaScript string `startsWith()` metodu ilə etmək olar. `StartsWith()` metodu stringin təyin edilmiş string ilə başlayıb-başlamadığını müəyyən edir və boolean (true və ya false) dəyər qaytarır. Əgər string təyin edilmiş string ilə başlayırsa true qaytarır, əks halda false qaytarır. 364 | 365 | _Sintaksisi bu şəkildədir:_ 366 | 367 | ``` 368 | string.startsWith(axtarılan string) 369 | string.startsWith(axtarılan string, mövqe) 370 | ``` 371 | 372 | _Nümunə:_ 373 | 374 | ```js 375 | const text = "Mənim anam mükəmməldir!"; 376 | const result = text.startsWith("Mənim"); // və ya ("Mənim", 0) 377 | console.log(result); // true qaytaracaq 378 | ``` 379 | 380 | ```js 381 | let text = "Mənim anam mükəmməldir!"; 382 | let result = text.startsWith("ən", 1); 383 | console.log(result); // true qaytaracaq 384 | ``` 385 | 386 | Bu metod böyük, kiçik hərflərə qarşı həssasdır. Başdakı "m" hərfini kiçik yazdığım üçün false qaytaracaq. 387 | 388 | ```js 389 | let text = "Mənim anam mükəmməldir!"; 390 | let result = text.startsWith("mənim"); 391 | console.log(result); // false qaytaracaq 392 | ``` 393 | 394 |
395 | 396 | 23. ### What is a polyfill? 397 | 398 | Polyfill yazdığımız kodları dəstəkləməyən köhnə brauzerlərdə müasir funksionallığı təmin üçün istifadə edilən kod parçasıdır. 399 | 400 |
401 | 402 | 24. ### How do you define JSON arrays? 403 | 404 | JSON massivləri kvadrat mötərizələrin ([]) içində yazılır və JavaScript obyektlərini saxlayır. JSON-dakı massivlər JavaScriptdəki massivlər ilə demək olar ki, eynidir. JSON-da massiv dəyərləri obyekt, string, number, null, massiv və ya boolean ola bilər. JSON stringini (içində JSON massivi olan) `JSON.parse()` metodu ilə massivə çevirə bilərik. 405 | 406 | _Nümunə:_ 407 | 408 | ```js 409 | const meyve = 410 | '{"meyveler":[{"ad":"alma", "növ":"sibir"}, {"ad":"armud", "növ":"lada"}]}'; 411 | const result = JSON.parse(meyve); 412 | console.log(result); 413 | ``` 414 | 415 | _Nəticəsi:_ 416 | 417 | ``` 418 | { 419 | meyveler: [ { ad: 'alma', 'növ': 'sibir' }, { ad: 'armud', 'növ': 'lada' } ] 420 | } 421 | ``` 422 | 423 | Massiv indeksi 0-dan başlayır. 424 | 425 | ```js 426 | const meyve = 427 | '{"meyveler":[{"ad":"alma", "növ":"sibir"}, {"ad":"armud", "növ":"lada"}]}'; 428 | const result = JSON.parse(meyve); 429 | console.log(result.meyveler[0]); 430 | ``` 431 | 432 | _Nəticəsi:_ 433 | 434 | ``` 435 | { ad: 'alma', 'növ': 'sibir' } 436 | ``` 437 | 438 | _Başqa bir nümunəyə baxaq:_ 439 | 440 | ```js 441 | const meyve = 442 | '{"meyveler":[{"ad":"alma", "növ":"sibir"}, {"ad":"armud", "növ":"lada"}]}'; 443 | const result = JSON.parse(meyve); 444 | console.log(result.meyveler[1].ad); 445 | ``` 446 | 447 | _Nəticəsi:_ 448 | 449 | ``` 450 | armud 451 | ``` 452 | 453 |
454 | 455 | 25. ### How do you generate random integers? 456 | 457 | `Math.random()` metodu 0 (daxil olmaqla) ilə 1 (daxil deyil) arasında təsadüfi şəkildə (random) ədədlər qaytarır. `Math.random()` metodu həmişə 1-dən aşağı ədəd qaytarır. 458 | 459 | _Nümunə:_ 460 | 461 | ```js 462 | // 0 ilə 1 (daxil deyil) arasında random bir ədəd qaytaracaq 463 | console.log(Math.random()); 464 | ``` 465 | 466 | `Math.floor()` ilə istifadə olunan `Math.random()` metodu random **tam ədədləri** qaytarmaq üçün istifadə olunur, çünki `Math.floor()` metodu ədədi aşağı ən yaxın tam ədədə yuvarlaqlaşdırır. 467 | 468 | ```js 469 | // 0 ilə 9 (daxil olmaqla) arasında random tam ədəd qaytaracaq 470 | console.log(Math.floor(Math.random() * 10)); 471 | ``` 472 | 473 | ```js 474 | // 1 ilə 10 (daxil olmaqla) arasında random tam ədəd qaytaracaq 475 | console.log(Math.floor(Math.random() * 10) + 1); 476 | ``` 477 | 478 | #### ⬆ [Yuxarıya qayıt](https://github.com/isbendiyarovanezrin/JavaScriptQuestionsAndAnswers#readme) 479 | 480 | 26. ### Can I use reserved words as identifiers? 481 | 482 | Xeyr, istifadə edilsə error verəcək. Dəyişən, funksiya adı kimi bu sözlərdən istifadə edilə bilməz. Məsələn: if, else, for, return, delete, default, this, switch, null, new, true, false, continue, do, const, with, try, break. 483 | 484 | _Nümunə:_ 485 | 486 | ```js 487 | let default = "text"; 488 | console.log(default); 489 | ``` 490 | 491 | _Nəticəsi:_ 492 | 493 | ```js 494 | SyntaxError: Unexpected token 'default' 495 | ``` 496 | 497 |
498 | 499 | 27. ### How do you detect JavaScript disabled in the page? 500 | 501 | JavaScriptin deaktiv olub-olmadığını aşkar etmək üçün `