-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestbasecheck.html
565 lines (486 loc) · 41.2 KB
/
testbasecheck.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Базовый тест ИТ навыков SQL и Python</title>
<style>
.title {
font-weight: bold;
font-size:larger;
}
.question {
font-weight:bold;
}
.questionCode {
font-weight: bold;
font-style:italic;
}
.qBlock {
margin-top:30px;
}
.info {
margin-top: 30px;
}
.textInput {
width:100%;
}
</style>
</head>
<body>
<div class="info">
<div class="qBlock">
<label for="etalon">Вставьте эталонные ответы</label>
<input class="textInput" type="text" id="etalon" />
</div>
<div class="qBlock">
<label for="answer">Вставьте полученные ответы</label>
<input class="textInput" type="text" id="answer" />
</div>
</div>
<div class="qBlock">
<button onclick="checkResult()">Проверить результат</button>
</div>
<div class="qBlock" id="result">
</div>
<div hidden="hidden">
<div class="title">Базовый тест ИТ навыков SQL и Python</div>
<div class="info">
<label for="userName">Введите свое имя</label>
<input type="text" id="userName" />
</div>
<div class="qBlock question">SQL</div>
<div class="qBlock">
<p class="question">1. Что такое SQL?</p>
<p><input type="radio" id="1_a" name="1" value="а">а) SQL – это язык запросов к базе данных</p>
<p><input type="radio" id="1_b" name="1" value="б">б) SQL – это база данных</p>
<p><input type="radio" id="1_c" name="1" value="в">в) SQL – это база данных и язык программирования</p>
<p><input type="radio" id="1_d" name="1" value="г">г) SQL – это язык программирования</p>
</div>
<div class="qBlock">
<p class="question">2.Что такое реляционные базы данных:</p>
<p><input type="radio" id="2_a" name="2" value="а">а) База данных, в которой информация хранится в виде двумерных таблиц, связанных между собой</p>
<p><input type="radio" id="2_b" name="2" value="б">б) База данных, в которой одна ни с чем не связанная таблица</p>
<p><input type="radio" id="2_c" name="2" value="в">в) Любая база данных - реляционная</p>
<p><input type="radio" id="2_d" name="2" value="г">г) Совокупность данных, не связанных между собой</p>
</div>
<div class="qBlock">
<p class="question">3.Как выглядит запрос, для вывода ВСЕХ значений из таблицы Orders:</p>
<p><input type="radio" id="3_a" name="3" value="а">а) select ALL from Orders;</p>
<p><input type="radio" id="3_b" name="3" value="б">б) select % from Orders;</p>
<p><input type="radio" id="3_c" name="3" value="в">в) select * from Orders;</p>
<p><input type="radio" id="3_d" name="3" value="г">г) select *.Orders from Orders;</p>
</div>
<div class="qBlock">
<p class="question">4.Какие данные мы получим из этого запроса?</p>
<p class="questionCode">select id, date, customer_name from Orders;</p>
<p><input type="radio" id="4_a" name="4" value="а">а) Неотсортированные номера и даты всех заказов с именами заказчиков</p>
<p><input type="radio" id="4_b" name="4" value="б">б) Никакие, запрос составлен неверно</p>
<p><input type="radio" id="4_c" name="4" value="в">в) Номера и даты всех заказов с именами заказчиков, отсортированные по первой колонке</p>
<p><input type="radio" id="4_d" name="4" value="г">г) Номера и даты всех заказов с именами заказчиков, отсортированные по всем колонкам, содержащим слово Order</p>
</div>
<div class="qBlock">
<p class="question">5.Есть ли ошибка в запросе?</p>
<p class="questionCode">select id, date, customer_name from Orders where customer_name = Mike;</p>
<p><input type="radio" id="5_a" name="5" value="а">а) Есть ли ошибка в запросе?</p>
<p><input type="radio" id="5_b" name="5" value="б">б) Mike необходимо записать в кавычках 'Mike'</p>
<p><input type="radio" id="5_c" name="5" value="в">в) Нужно убрать лишние поля из запроса</p>
<p><input type="radio" id="5_d" name="5" value="г">г) Строчку с where поменять местами с from</p>
</div>
<div class="qBlock">
<p class="question">6.Что покажет следующий запрос:</p>
<p class="questionCode">select * from Orders where date between '2017-01-01' and '2017-12-31'</p>
<p><input type="radio" id="6_a" name="6" value="а">а) Все данные по заказам, совершенным за 2017 год, за исключением 01 января 2017 года</p>
<p><input type="radio" id="6_b" name="6" value="б">б) Все данные по заказам, совершенным за 2017 год, за исключением 31 декабря 2017 года</p>
<p><input type="radio" id="6_c" name="6" value="в">в) Все данные по заказам, совершенным за 2017 год</p>
<p><input type="radio" id="6_d" name="6" value="г">г) Ничего, запрос составлен неверно</p>
</div>
<div class="qBlock">
<p class="question">7.Что не так с этим запросом</p>
<p class="questionCode">select id, date from Orders where seller_id = NULL;</p>
<p><input type="radio" id="7_a" name="7" value="а">а) Все верно, запрос покажет все заказы, продавцы которых не проставлены</p>
<p><input type="radio" id="7_b" name="7" value="б">б) NULL нужно взять в кавычки</p>
<p><input type="radio" id="7_c" name="7" value="в">в) Сравнение с NULL можно проводить только с оператором IS</p>
<p><input type="radio" id="7_d" name="7" value="г">г) Сравнение с NULL можно проводить только с оператором ON</p>
</div>
<div class="qBlock">
<p class="question">8.Порядок выполнения операторов AND и OR следующий:</p>
<p><input type="radio" id="8_a" name="8" value="а">а) Сначала выполняется AND, а затем OR</p>
<p><input type="radio" id="8_b" name="8" value="б">б) Сначала выполняется OR, а затем AND</p>
<p><input type="radio" id="8_c" name="8" value="в">в) Порядок выполнения операторов AND и OR зависит от того, какой операторов стоит первым</p>
<p><input type="radio" id="8_d" name="8" value="г">г) Операторы AND и OR выполняются одновременно</p>
</div>
<div class="qBlock">
<p class="question">9.Что покажет следующий запрос:</p>
<p class="questionCode">select DISTINCT seller_id order by seller_id from Orders;</p>
<p><input type="radio" id="9_a" name="9" value="а">а) Уникальные ID продавцов, отсортированные по возрастанию</p>
<p><input type="radio" id="9_b" name="9" value="б">б) Уникальные ID продавцов, отсортированные по убыванию</p>
<p><input type="radio" id="9_c" name="9" value="в">в) Ничего, запрос составлен неверно, ORDER BY всегда ставится в конце запроса</p>
<p><input type="radio" id="9_d" name="9" value="г">г) Неотсортированные никак уникальные ID продавцов</p>
</div>
<div class="qBlock">
<p class="question">10.Что делает спецсимвол '_' в паре с оператором LIKE:</p>
<p class="questionCode">select * from Orders where customer_name like 'mik_';</p>
<p><input type="radio" id="10_a" name="10" value="а">а) найдет все имена, которые начинаются на mik и состоят из 4 символов</p>
<p><input type="radio" id="10_b" name="10" value="б">б) найдет все имена, которые начинаются на mik, вне зависимости от того, из какого количества символов они состоят</p>
<p><input type="radio" id="10_c" name="10" value="в">в) найдет данные, где имя равно mik</p>
<p><input type="radio" id="10_d" name="10" value="г">г) запрос составлен неверно, в паре с оператором like не используются спецсимволы</p>
</div>
<div class="qBlock">
<p class="question">11.Выберите корректный пример использования функции CONCAT:</p>
<p><input type="radio" id="11_a" name="11" value="а">а) select concat = index and city from Orders;</p>
<p><input type="radio" id="11_b" name="11" value="б">б) select concat IN (`index`, `city`) from Orders;</p>
<p><input type="radio" id="11_c" name="11" value="в">в) select concat(`index`," ", `city`) from Orders;</p>
<p><input type="radio" id="11_d" name="11" value="г">г) нет правильного примера</p>
</div>
<div class="qBlock">
<p class="question">12. Что покажет следующий запрос:</p>
<p class="questionCode">select concat(index," ", city) AS delivery_address from Orders;</p>
<p><input type="radio" id="12_a" name="12" value="а">а) ничего, запрос составлен неверно</p>
<p><input type="radio" id="12_b" name="12" value="б">б) покажет уникальные значения индексов и адресов из таблицы Orders</p>
<p><input type="radio" id="12_c" name="12" value="в">в) соединит поля с индексом и адресом из таблицы Orders и покажет их с псевдонимом delivery_address</p>
<p><input type="radio" id="12_d" name="12" value="г">г) соединит поля с индексом и адресом из таблицы Orders, но покажет их без псевдонима</p>
</div>
<div class="qBlock">
<p class="question">13.Выберите правильный пример использования функции округления ROUND</p>
<p><input type="radio" id="13_a" name="13" value="а">а) select id, price * discount AS total price from Orders ROUND (2);</p>
<p><input type="radio" id="13_b" name="13" value="б">б) select id, price * discount ROUND (2) AS total price from Orders;</p>
<p><input type="radio" id="13_c" name="13" value="в">в) select id, ROUND (price * discount, 2) AS total price from Orders;</p>
<p><input type="radio" id="13_d" name="13" value="г">г) нет правильного примера</p>
</div>
<div class="qBlock">
<p class="question">14.Что покажет следующий запрос: select id from Orders where year (date) > 2018;</p>
<p><input type="radio" id="14_a" name="14" value="а">а) номера заказов, сделанных до 2018 года</p>
<p><input type="radio" id="14_b" name="14" value="б">б) номера заказов, сделанных в 2018 году</p>
<p><input type="radio" id="14_c" name="14" value="в">в) уникальные номера заказов</p>
<p><input type="radio" id="14_d" name="14" value="г">г) номера заказов, сделанных после 2018 года</p>
</div>
<div class="qBlock">
<p class="question">15. Для чего используется LIMIT: select * from Orders limit 10;</p>
<p><input type="radio" id="15_a" name="15" value="а">а) необходим, чтобы показать все заказы, содержащие цифру 10</p>
<p><input type="radio" id="15_b" name="15" value="б">б) необходим, чтобы показать первых 10 записей в запросе</p>
<p><input type="radio" id="15_c" name="15" value="в">в) необходим, чтобы показать рандомные 10 записей в запрос</p>
<p><input type="radio" id="15_d" name="15" value="г">г) не существует такого оператора</p>
</div>
<div class="qBlock">
<p class="question">16.Что такое агрегирующие функции:</p>
<p><input type="radio" id="16_a" name="16" value="а">а) функции, которые фильтруют значения</p>
<p><input type="radio" id="16_b" name="16" value="б">б) функции, которые сортируют значения</p>
<p><input type="radio" id="16_c" name="16" value="в">в) функции, которые работают с набором данных, превращая их в одно итоговое значение</p>
<p><input type="radio" id="16_d" name="16" value="г">г) функции, которые суммируют все значения</p>
</div>
<div class="qBlock">
<p class="question">17.Выберите пример правильно составленного запроса с использованием агрегирующей функции SUM:</p>
<p><input type="radio" id="17_a" name="17" value="а">а) select sum(price) from Orders;</p>
<p><input type="radio" id="17_b" name="17" value="б">б) select sum(price), customer_name from Orders;</p>
<p><input type="radio" id="17_c" name="17" value="в">в) select * from Orders where price=sum();</p>
<p><input type="radio" id="17_d" name="17" value="г">г) select sum() from Orders group by price desc;</p>
</div>
<div class="qBlock">
<p class="question">18. Возможно ли использование одновременно двух агрегирующих функций:</p>
<p class="questionCode">select min(price), max(price) from Orders;</p>
<p><input type="radio" id="18_a" name="18" value="а">а) да, но данный запрос составлен неверно, надо так: select * from Orders where price IN (min, max);</p>
<p><input type="radio" id="18_b" name="18" value="б">б) да, в результате мы получим минимальную и максимальную стоимости</p>
<p><input type="radio" id="18_c" name="18" value="в">в) да, в результате мы получим стоимости, отсортированные от минимальной к максимальной</p>
<p><input type="radio" id="18_d" name="18" value="г">г) нет, две функции использовать одновременно нельзя</p>
</div>
<div class="qBlock">
<p class="question">19. Выберите корректно составленный запрос с функцией GROUP BY:</p>
<p><input type="radio" id="19_a" name="19" value="а">а) select count(*) from Orders GROUP seller_id;</p>
<p><input type="radio" id="19_b" name="19" value="б">б) select seller_id, count(*) from Orders GROUP seller_id;</p>
<p><input type="radio" id="19_c" name="19" value="в">в) select seller_id, count(*) from Orders GROUP BY seller_id;</p>
<p><input type="radio" id="19_d" name="19" value="г">г) select count(*) from Orders GROUP ON seller_id;</p>
</div>
<div class="qBlock">
<p class="question">20. Что покажет следующий запрос:</p>
<p class="questionCode">select seller_id, count(*) from Orders GROUP BY seller_id HAVING seller_id IN (2,4,6);</p>
<p><input type="radio" id="20_a" name="20" value="а">а) количество заказов сгруппированное по продавцам 2, 4 и 6</p>
<p><input type="radio" id="20_b" name="20" value="б">б) количество продавцов, у которых 2, 4 или 6 товаров</p>
<p><input type="radio" id="20_c" name="20" value="в">в) ничего, запрос составлен неверно, HAVING указывается до группировки</p>
<p><input type="radio" id="20_d" name="20" value="г">г) ничего, запрос составлен неверно, для указания условия должно быть использовано WHERE</p>
</div>
<div class="qBlock">
<p class="question">21. Выберите пример корректно написанного запроса с использованием подзапроса, который выводит информацию о заказе с самой дорогой стоимостью:</p>
<p><input type="radio" id="21_a" name="21" value="а">а) select * from Orders where price = (select big(price) from Orders)</p>
<p><input type="radio" id="21_b" name="21" value="б">б) select * from Orders where price = max</p>
<p><input type="radio" id="21_c" name="21" value="в">в) select count(*) from Orders</p>
<p><input type="radio" id="21_d" name="21" value="г">г) select * from Orders where price = (select max(price) from Orders)</p>
</div>
<div class="qBlock">
<p class="question">22. Что такое JOIN:</p>
<p><input type="radio" id="22_a" name="22" value="а">а) операция объединения</p>
<p><input type="radio" id="22_b" name="22" value="б">б) операция группировки</p>
<p><input type="radio" id="22_c" name="22" value="в">в) операция суммирования</p>
<p><input type="radio" id="22_d" name="22" value="г">г) операция создания</p>
</div>
<div class="qBlock">
<p class="question">23. Какого из перечисленных ниже видов JOIN на самом деле не существует:</p>
<p><input type="radio" id="23_a" name="23" value="а">а) LEFT JOIN - который выведет все записи первой таблицы, а для ненайденных пар из правой таблицы проставит значение NULL</p>
<p><input type="radio" id="23_b" name="23" value="б">б) RIGHT JOIN - который выведет все записи второй таблицы, а на место недостающей информации из первой таблицы проставит NULL</p>
<p><input type="radio" id="23_c" name="23" value="в">в) INNER JOIN - который показывает только те записи, для которых нашлись пары</p>
<p><input type="radio" id="23_d" name="23" value="г">г) TRUE JOIN - который выведет все верные значения</p>
</div>
<div class="qBlock">
<p class="question">24. Выберите корректный пример составленного запроса с использованием JOIN. Данный запрос выведет нам данные ID заказа, имя заказчика и продавца:</p>
<p><input type="radio" id="24_a" name="24" value="а">а) select Orders.id, Orders.customer_name, Sellers.id from Orders LEFT JOIN ON Sellers AND Orders.seller_id = Sellers.id;</p>
<p><input type="radio" id="24_b" name="24" value="б">б) select id AND customer_name AND seller_id from Orders LEFT JOIN Sellers ON seller_id = id;</p>
<p><input type="radio" id="24_c" name="24" value="в">в) select Orders.id, Orders.customer_name, Sellers.id from Orders LEFT JOIN Sellers ON Orders.seller_id = Sellers.id;</p>
<p><input type="radio" id="24_d" name="24" value="г">г) select Orders.id, Orders.customer_name, Sellers.id from Orders JOIN Sellers WHEN Orders.seller_id = Sellers.id;</p>
</div>
<div class="qBlock">
<p class="question">25. Выберите правильный пример запроса с использованием UNION:</p>
<p><input type="radio" id="25_a" name="25" value="а">а) select id, city from Orders order by id union select id, city from Sellers order by city;</p>
<p><input type="radio" id="25_b" name="25" value="б">б) select id, city, seller_id from Orders and select city, id from Sellers order by id;</p>
<p><input type="radio" id="25_c" name="25" value="в">в) select id, city from Orders union select id, city from Sellers order by id;</p>
<p><input type="radio" id="25_d" name="25" value="г">г) Все запросы верные</p>
</div>
<div class="qBlock">
<p class="question">26. Какого строкового типа данных нет в SQL:</p>
<p><input type="radio" id="26_a" name="26" value="а">а) VARCHAR</p>
<p><input type="radio" id="26_b" name="26" value="б">б) STRING</p>
<p><input type="radio" id="26_c" name="26" value="в">в) CHAR</p>
<p><input type="radio" id="26_d" name="26" value="г">г) TEXT </p>
</div>
<div class="qBlock">
<p class="question">27. Чем отличается CHAR и VARCHAR?</p>
<p><input type="radio" id="27_a" name="27" value="а">а) Это одно и то же</p>
<p><input type="radio" id="27_b" name="27" value="б">б) VARCHAR не существует</p>
<p><input type="radio" id="27_c" name="27" value="в">в) CHAR - это тип данных, а VARCHAR – подтип</p>
<p><input type="radio" id="27_d" name="27" value="г">г) CHAR дополняет строку пробелами до максимальной длины, а VARCHAR тратит лишнюю память на хранение значения длины строки</p>
</div>
<div class="qBlock">
<p class="question">28. Как получить значение текущего года в SQL?</p>
<p><input type="radio" id="28_a" name="28" value="а">а) select now();</p>
<p><input type="radio" id="28_b" name="28" value="б">б) select year();</p>
<p><input type="radio" id="28_c" name="28" value="в">в) select year(now());</p>
<p><input type="radio" id="28_d" name="28" value="г">г) select year from Date;</p>
</div>
<div class="qBlock">
<p class="question">29. Как правильно добавить строку в таблицу? Какой запрос верный?</p>
<p><input type="radio" id="29_a" name="29" value="а">а) INSERT INTO SimpleTable (some_text) VALUES ('my text');</p>
<p><input type="radio" id="29_b" name="29" value="б">б) INSERT INTO SimpleTable SET some_text='my text';</p>
<p><input type="radio" id="29_c" name="29" value="в">в) SET INTO SimpleTable VALUE some_text='my text';</p>
<p><input type="radio" id="29_d" name="29" value="г">г) UPDATE INTO SimpleTable SET some_text='my text';</p>
</div>
<div class="qBlock">
<p class="question">30. Какие поля из таблицы обязательно перечислять в INSERT для вставки данных?</p>
<p><input type="radio" id="30_a" name="30" value="а">а) Конечно все</p>
<p><input type="radio" id="30_b" name="30" value="б">б) Только те, у которых нет DEFAULT значения</p>
<p><input type="radio" id="30_c" name="30" value="в">в) Те, у которых нет DEFAULT значения и которые не имеют атрибут auto_increment</p>
<p><input type="radio" id="30_d" name="30" value="г">г) Все поля имеют негласное DEFAULT значения, обязательных полей в SQL нет</p>
</div>
<div class="qBlock">
<p class="question">31. Как сделать несколько записей в таблицу за один запрос?</p>
<p><input type="radio" id="31_a" name="31" value="а">а) Использовать MULTI INSERT INTO вместо INSERT INTO</p>
<p><input type="radio" id="31_b" name="31" value="б">б) Использовать подзапрос</p>
<p><input type="radio" id="31_c" name="31" value="в">в) Перечислить через запятую все наборы значений после VALUES</p>
<p><input type="radio" id="31_d" name="31" value="г">г) Никак, расходимся по домам</p>
</div>
<div class="qBlock">
<p class="question">32. Зачем существует команда UPDATE, если можно сначала удалить запись, а потом добавить новую, исправленную.</p>
<p><input type="radio" id="32_a" name="32" value="а">а) Именно так и делаю, UPDATE не использую</p>
<p><input type="radio" id="32_b" name="32" value="б">б) Так меньше нагрузки на базу, ведь команда одна, а не две</p>
<p><input type="radio" id="32_c" name="32" value="в">в) Потому что в записи могут быть автоматически проставляемые поля, такие как auto_increment или timestamp, которые собьются при внесении записи заново</p>
<p><input type="radio" id="32_d" name="32" value="г">г) Как раз удалять записи в SQL нельзя, вместо этого используется UPDATE с NULL-значениями для всех полей</p>
</div>
<div class="qBlock">
<p class="question">33. В каких командах можно использовать LIMIT?</p>
<p><input type="radio" id="33_a" name="33" value="а">а) Только Select</p>
<p><input type="radio" id="33_b" name="33" value="б">б) Select и Insert</p>
<p><input type="radio" id="33_c" name="33" value="в">в) Select, Update, Delete</p>
<p><input type="radio" id="33_d" name="33" value="г">г) Select, Insert, Delete, Update</p>
</div>
<div class="qBlock">
<p class="question">34. Как можно заранее узнать, какие записи будут удалены при выполнении DELETE?</p>
<p><input type="radio" id="34_a" name="34" value="а">а) Зачем заранее, просто вызвать его и посмотреть какие записи пропали</p>
<p><input type="radio" id="34_b" name="34" value="б">б) Заменить DELETE на SELECT *, ведь в остальном синтаксис DELETE похож на синтаксис простого SELECT</p>
<p><input type="radio" id="34_c" name="34" value="в">в) Сделать DELETE с LIMIT 1, одну запись не жалко</p>
<p><input type="radio" id="34_d" name="34" value="г">г) SQL создан для хранения данных, их нельзя удалять</p>
</div>
<div class="qBlock">
<p class="question">35. Какой командой можно создать новую таблицу?</p>
<p><input type="radio" id="35_a" name="35" value="а">а) CREATE TABLE</p>
<p><input type="radio" id="35_b" name="35" value="б">б) MAKE TABLE</p>
<p><input type="radio" id="35_c" name="35" value="в">в) SET TABLE</p>
<p><input type="radio" id="35_d" name="35" value="г">г) Создавать таблицы можно только через интерфейс СУБД, специальной SQL команды для этого нет</p>
</div>
<div class="qBlock">
<p class="question">36. Можно ли поменять тип данных поля в уже существующей таблице?</p>
<p><input type="radio" id="36_a" name="36" value="а">а) Да, при помощи команды ALTER</p>
<p><input type="radio" id="36_b" name="36" value="б">б) Да, достаточно сделать INSERT с новым типом данных</p>
<p><input type="radio" id="36_c" name="36" value="в">в) Нет, только пересоздать таблицу</p>
<p><input type="radio" id="36_d" name="36" value="г">г) Тип бывает только у таблицы, а не у поля таблицы</p>
</div>
<div class="qBlock question">Python</div>
<div class="qBlock">
<p class="question">37. Что такое тип данных dict?</p>
<p><input type="radio" id="37_a" name="37" value="а">а) Целое число</p>
<p><input type="radio" id="37_b" name="37" value="б">б) Массив</p>
<p><input type="radio" id="37_c" name="37" value="в">в) Словарь</p>
<p><input type="radio" id="37_d" name="37" value="г">г) Строка</p>
</div>
<div class="qBlock">
<p class="question">38. Что означает оператор **?</p>
<p><input type="radio" id="38_a" name="38" value="а">а) Умножить два раза</p>
<p><input type="radio" id="38_b" name="38" value="б">б) Пропустить</p>
<p><input type="radio" id="38_c" name="38" value="в">в) Разделить</p>
<p><input type="radio" id="38_d" name="38" value="г">г) Возвести в степень</p>
</div>
<div class="qBlock">
<p class="question">39. Что такое if?</p>
<p><input type="radio" id="39_a" name="39" value="а">а) Выполнить многократно</p>
<p><input type="radio" id="39_b" name="39" value="б">б) Пропустить выполнение блока кода в if</p>
<p><input type="radio" id="39_c" name="39" value="в">в) Выполнить определенный блок кода при определенном условии</p>
<p><input type="radio" id="39_d" name="39" value="г">г) Пропустить блок кода</p>
</div>
<div class="qBlock">
<p class="question">40. Что выведет следующий код?</p>
<p class="questionCode">
string = "Hello World!"</br>
print(string[:-2])
</p>
<p><input type="radio" id="40_a" name="40" value="а">а) последние два символа</p>
<p><input type="radio" id="40_b" name="40" value="б">б) ошибку</p>
<p><input type="radio" id="40_c" name="40" value="в">в) все, кроме последних двух символов</p>
<p><input type="radio" id="40_d" name="40" value="г">г) строку полностью</p>
</div>
<div class="qBlock">
<p class="question">41. Когда выполняется цикл while?</p>
<p><input type="radio" id="41_a" name="41" value="а">а) Всегда</p>
<p><input type="radio" id="41_b" name="41" value="б">б) Всегда написано выражение if перед циклом</p>
<p><input type="radio" id="41_c" name="41" value="в">в) Это не цикл</p>
<p><input type="radio" id="41_d" name="41" value="г">г) Если выражение в условии цикла истинно(True), то выполняется “Блок кода” написанный в цикле</p>
</div>
<div class="qBlock">
<p class="question">42. Что выведет следующий код?</p>
<p class="questionCode">
a = 20</br>
b = a + 10</br>
print(b)
</p>
<p><input type="radio" id="42_a" name="42" value="а">а) 10</p>
<p><input type="radio" id="42_b" name="42" value="б">б) 5</p>
<p><input type="radio" id="42_c" name="42" value="в">в) 20</p>
<p><input type="radio" id="42_d" name="42" value="г">г) 30</p>
</div>
<div class="qBlock">
<p class="question">43. В каком виде представлены данных в Python?</p>
<p><input type="radio" id="43_a" name="43" value="а">а) В виде массивов</p>
<p><input type="radio" id="43_b" name="43" value="б">б) В виде функций</p>
<p><input type="radio" id="43_c" name="43" value="в">в) В виде объектов</p>
<p><input type="radio" id="43_d" name="43" value="г">г) В двоичном виде</p>
</div>
<div class="qBlock">
<p class="question">44. Что является списками?</p>
<p><input type="radio" id="44_a" name="44" value="а">а) Переменные, заключенные в фигурные скобки</p>
<p><input type="radio" id="44_b" name="44" value="б">б) Упорядоченные, неограниченные по размеру коллекции объектов произвольных типов</p>
<p><input type="radio" id="44_c" name="44" value="в">в) Переменные, разделенные точкой</p>
</div>
<div class="qBlock">
<p class="question">45. Как получить элемент из списка?</p>
<p><input type="radio" id="45_a" name="45" value="а">а) По ключу</p>
<p><input type="radio" id="45_b" name="45" value="б">б) По индексу</p>
<p><input type="radio" id="45_c" name="45" value="в">в) С помощью метода .get()</p>
</div>
<div class="qBlock">
<p class="question">46. Какой метод позволит получить от словаря сразу и ключ и значение?</p>
<p><input type="radio" id="46_a" name="46" value="а">а) key_values()</p>
<p><input type="radio" id="46_b" name="46" value="б">б) .items()</p>
<p><input type="radio" id="46_c" name="46" value="в">в) Нет такого метода</p>
</div>
<div class="qBlock">
<p class="question">47. Что такое кортеж?</p>
<p><input type="radio" id="47_a" name="47" value="а">а) Изменяемый список</p>
<p><input type="radio" id="47_b" name="47" value="б">б) Массив списков</p>
<p><input type="radio" id="47_c" name="47" value="в">в) Неизменяемый список</p>
</div>
<div class="qBlock">
<p class="question">48. Чтобы выйти из цикла, можно использовать команду:</p>
<p><input type="radio" id="48_a" name="48" value="а">а) exit</p>
<p><input type="radio" id="48_b" name="48" value="б">б) caption</p>
<p><input type="radio" id="48_c" name="48" value="в">в) break</p>
<p><input type="radio" id="48_d" name="48" value="г">г) continue</p>
</div>
<div class="qBlock">
<p class="question">49. Что делает функция len?</p>
<p><input type="radio" id="49_a" name="49" value="а">а) Преобразует строку в нижний регистр</p>
<p><input type="radio" id="49_b" name="49" value="б">б) Она принимает любую последовательность в качестве аргумента и возвращает ее длину</p>
<p><input type="radio" id="49_c" name="49" value="в">в) Очищает строку</p>
<p><input type="radio" id="49_d" name="49" value="г">г) Преобразует строку в верхний регистр</p>
</div>
</div>
<script>
function getCheckedValue() {
var text = "";
var inputs = document.getElementsByTagName('input');
for (i = 0; i < inputs.length; i++) {
if (inputs[i].type == 'text') {
text = text + 'user:' + inputs[i].value + ",";
}
if (inputs[i].type == 'radio' && inputs[i].checked) {
text = text + inputs[i].name + ":" + inputs[i].value + ",";
}
}
return text;
}
function saveResult() {
var text = getCheckedValue();
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', 'result');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
function checkResult() {
var etalonText = document.getElementById('etalon').value;
var answerText = document.getElementById('answer').value;
var result = document.getElementById('result');
var etalons = etalonText.split(',');
var answers = answerText.split(',');
var diffs = []
for (var i = 0; i < answers.length; i++) {
if (answers[i].startsWith("user")) {
continue;
}
if (etalons.indexOf(answers[i]) === -1) {
diffs.push(answers[i]);
}
}
var etalonsNumbers = []
for (var i = 0; i < etalons.length; i++){
etalonsNumbers.push(etalons[i].split(":")[0]);
}
var answersNumbers = []
for (var i = 0; i < answers.length; i++){
answersNumbers.push(answers[i].split(":")[0]);
}
var diffsNotChecked = []
for (var i = 0; i < etalonsNumbers.length; i++) {
if (answersNumbers.indexOf(etalonsNumbers[i]) === -1) {
diffsNotChecked.push(etalonsNumbers[i]);
}
}
var inputs = document.getElementsByTagName('input');
var resultHTML = "";
resultHTML = "<div class='title'>Результаты теста \"Базовый тест ИТ навыков SQL и Python\"</div>"
resultHTML = resultHTML + "<p>" + "Экзаменуемый: " + answers[0].replace("user:","") + "</p>"
resultHTML = resultHTML + "<p>" + "Правильных ответов:" + (etalons.length - 2 - diffsNotChecked.length - diffs.length) + "</p>"
resultHTML = resultHTML + "<p>" + "Неправильных ответов:" + (diffs.length) + "</p>"
resultHTML = resultHTML + "<p>" + "Пропущенные вопросы:" + (diffsNotChecked.length) + "</p>"
resultHTML = resultHTML + "</br>"
for (var i = 0; i < diffs.length; i++) {
for (k = 0; k < inputs.length; k++) {
if (inputs[k].type == 'radio' && inputs[k].name + ":" + inputs[k].value == diffs[i]) {
resultHTML = resultHTML
+ "<p class='question'>" + inputs[k].parentElement.parentElement.getElementsByClassName('question')[0].innerText + "</p>"
+ "<p>" + inputs[k].parentElement.innerText + "</p>";
break;
}
}
}
result.innerHTML = resultHTML;
}
</script>
</body>
</html>