├── 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 `