[{"data":1,"prerenderedAt":1163},["ShallowReactive",2],{"$f_kIVWM1nuwU2NiIj5GCPuv3jbwEXkN5SbyKUprArwu8":3,"$f-KhKwB8J0md5Q3U1oyqNCQbHxVpirjaanlJWCGo_ht4":178,"$fkVWEWXZHbLy86BhC78gDVDJ_00TY4k_DsdZD3Mz6ZO0":181,"$fqGwjmVbyPxmA5lnsLz9nF3m-ncS8WzLIlTsTA85cuZA":186,"$fVMSX_HWVzVkzv-u5ATHiOgClblPaIGZfXUn_Cq8LKn4":532,"$fw0tI3d-iV2W3zZtbRjyPNNRSgXGobrmwsMU7a1fynls":753,"mdc-oo35sm-key":773,"mdc-atbxdo-key":840,"mdc--8b4bvc-key":925,"mdc--at2x3n-key":965,"mdc--d2cyig-key":997,"mdc-8wzwhc-key":1146},{"content":4,"livecodingContent":44,"type":166,"pageMeta":167},[5,9,13,17,20,24,27,31,34,38,41],{"id":6,"value":7,"isTypeH1":8},"1979","Числа от 1 до 100 находятся в массиве, они хаотично перемешанные, но в нём не хватает одного числа из этой последовательности. Необходимо найти его",true,{"id":10,"value":11,"anchor":12,"isTypeH2":8},"4612","Теория по задаче","theory-after-variants",{"id":14,"value":15,"anchor":16,"isTypeH3":8},"4646","Теория для суммы","theory-for-sum",{"id":18,"value":19,"isTypeParagraph":8},"10608","Сумма чисел от 1 до n вычисляется по формуле: `S = n(n + 1) / 2`\n\nДля n = 100: `S = 100 * 101 / 2 = 5050`\n\nПочему формула разумна (простая интуиция “пар”):\n- берётся первое и последнее число: 1 + 100 = 101\n- берётся второе и предпоследнее: 2 + 99 = 101\n- каждая такая пара даёт одинаковый результат 101\n- всего пар 50, значит сумма 50 * 101 = 5050\n\nДалее используется ключевое наблюдение:\n- в массиве содержатся все числа 1…100, кроме одного\n- значит сумма массива равна 5050 минус пропущенное число\n- следовательно, `пропущенное = 5050 - сумма_массива`",{"id":21,"value":22,"anchor":23,"isTypeH3":8},"4647","Теория для XOR","theory-for-xor",{"id":25,"value":26,"isTypeParagraph":8},"10609","XOR (исключающее ИЛИ) обладает свойствами, которые делают его удобным для “поиска лишнего/пропущенного”:\n- `a ^ a = 0`\n- `a ^ 0 = a`\n- XOR не зависит от порядка (ассоциативность и коммутативность)\n\nЕсли выполнить XOR всех чисел 1…100 и XOR всех элементов массива, то каждое число, которое присутствует и там и там, встретится дважды и превратится в 0.\nОстанется только то число, которое было в диапазоне 1…100, но отсутствовало в массиве.\n",{"id":28,"value":29,"anchor":30,"isTypeH3":8},"4648","Когда решения корректны","when-solutions-are-correct",{"id":32,"value":33,"isTypeParagraph":8},"10610","Описанные решения корректны при выполнении условия задачи:\n- в массиве нет дублей\n- все элементы лежат в диапазоне 1…100\n- пропущено ровно одно число\n\nЕсли вход может нарушать эти условия, вариант с отметками следует дополнять проверками (например, считать количество пропусков, отслеживать дубликаты).",{"id":35,"value":36,"anchor":37,"isTypeH2":8},"4613","Сложность и выбор подхода","complexity-and-choice",{"id":39,"value":40,"isTypeParagraph":8},"10611","| Подход | Время | Память | Особенности |\n|---|---:|---:|---|\n| Сумма | O(n) | O(1) | Самый короткий и читаемый код при корректном входе. |\n| XOR | O(n) | O(1) | Тоже не зависит от порядка, полезный приём, но менее “очевиден”. |\n| Отметки | O(n) | O(n) | Самый наглядный, легко добавлять валидацию входа. |\n| Сортировка + проход | O(n log n) | O(1)/O(n) | Работает, но избыточно: сортировка тяжелее одного прохода. |\n\nПрактический выбор:\n- при гарантированно корректном входе чаще всего выбирается вариант “сумма”\n- при сомнениях в корректности входа удобнее “отметки”",{"id":42,"value":43,"isTypeParagraph":8},"10612","Кратко: наиболее простой путь — вычислить `5050 - сумма(массива)` за O(n) и O(1); альтернативно можно применить XOR диапазона и массива (O(n), O(1)); для проверок корректности входа подходит таблица присутствия (O(n), O(n)).",{"id":45,"functionTestData":46,"functionName":162,"functionTemplateCode":163,"solution":164,"description":165},"420",[47,150,153,156,159],[48,149],[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],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,99,100,98,[151,86],[152],[59,60,61,62,63,50,51,52,53,54,55,56,57,58,73,74,75,76,77,78,64,65,66,67,68,69,70,71,72,79,80,81,82,83,84,95,96,97,98,99,100,101,85,87,88,89,90,91,92,93,94,102,116,117,118,119,120,121,103,104,105,106,107,108,109,110,111,112,113,114,115,122,123,124,125,126,127,141,142,143,144,145,128,129,130,131,132,133,134,135,136,137,138,139,140,146,149,147,148],[154,57],[155],[50,69,70,71,72,73,74,75,76,77,78,79,80,51,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,68,81,96,97,98,99,100,101,102,103,104,105,106,107,82,83,84,85,86,87,88,89,90,91,92,93,94,95,108,109,110,111,112,113,114,115,116,117,129,130,131,132,133,134,118,119,120,121,122,123,124,125,126,127,128,135,136,137,140,141,142,143,144,145,146,149,138,139,147,148],[157,117],[158],[65,66,67,68,69,70,71,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,72,85,86,87,88,89,90,91,92,73,74,75,76,77,78,79,80,81,82,83,84,93,94,95,96,97,98,99,100,113,114,115,116,118,119,101,102,103,104,105,106,107,108,130,131,132,133,134,135,109,110,111,112,137,138,139,140,141,142,120,121,122,123,124,125,126,127,128,129,136,143,144,147,145,146,149,148],[160,50],[161],[51,52,53,66,67,68,69,70,54,55,56,57,58,59,60,61,62,63,64,65,71,72,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,73,74,75,76,77,78,79,80,81,82,83,84,85,86,103,104,117,118,119,120,121,122,123,105,106,107,108,109,110,111,112,113,114,115,116,124,125,126,127,128,140,141,142,143,144,129,130,131,132,133,134,135,136,137,138,139,145,146,149,147,148],"searchDeleteNumber","function searchDeleteNumber(arr) {\n    // ваш код здесь\n}","**Вариант 1**: через сумму (O(n), O(1))\n\nИдея: вычисляется ожидаемая сумма чисел 1…100, затем вычитается сумма массива; разница и есть пропущенное число.\n\n```\nfunction searchDeleteNumber(arr) {\n  const N = 100;\n\n  // Сумма 1..N по формуле\n  const expected = (N * (N + 1)) / 2;\n\n  // Сумма элементов массива\n  const actual = arr.reduce((acc, x) => acc + x, 0);\n\n  return expected - actual;\n}\n```\n\nДля диапазона 1…100 ожидаемая сумма всегда равна 5050, поэтому вычисления выполняются быстро и без проблем с точностью.\n\nЕсли задача обобщается на очень большие диапазоны, у JavaScript-типа `number` существует предел точного представления целых чисел (после него возможны ошибки округления). Для 1…100 это не актуально.\n\n**Вариант 2**: через XOR (O(n), O(1))\n\nИдея: выполняется XOR по всем числам 1…100 и XOR по массиву; одинаковые значения “взаимно уничтожаются”, остаётся пропущенное.\n\n```\nfunction searchDeleteNumber(arr) {\n  const N = 100;\n\n  let xorAll = 0;\n  for (let i = 1; i \u003C= N; i++) xorAll ^= i;\n\n  let xorArr = 0;\n  for (const x of arr) xorArr ^= x;\n\n  return xorAll ^ xorArr;\n}\n```\n\nПояснение по JavaScript: оператор `^` выполняет побитовый XOR; для `number` он работает в 32-битной целочисленной модели, но при значениях до 100 это безопасно.\n\n**Вариант 3**: таблица присутствия (O(n), O(n))\n\nИдея: отмечается, какие числа встречались, затем находится первое неотмеченное из 1…100.\n\n```\nfunction searchDeleteNumber(arr) {\n  const N = 100;\n  const seen = Array(N + 1).fill(false);\n\n  for (const x of arr) {\n    if (x >= 1 && x \u003C= N) seen[x] = true;\n  }\n\n  for (let i = 1; i \u003C= N; i++) {\n    if (!seen[i]) return i;\n  }\n\n  return null;\n}\n```\n\nВариант с отметками проще расширять, если дополнительно необходимо проверять дубликаты или числа вне диапазона.","Дан массив чисел, заполненный числами от 1 до 100. В нём не хватает одного числа из этой последовательности (1, ...,100). Необходимо найти это число.\nАлгоритм не должен превышать O(n^2) сложности.\n\nПримеры:\n\n```\nsearchDeleteNumber([\n  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,\n  23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,\n  42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,\n  61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n  80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99,\n  100\n]) === 98\n```\n\n```\nsearchDeleteNumber([\n    10, 11, 12, 13, 14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 24, 25, 26, 27, 28, 29, 15,\n    16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 32, 33, 34, 35, 46, 47, 48, 49, 50,\n    51, 52, 36, 38, 39, 40, 41, 42, 43, 44, 45, 53, 67, 68, 69, 70, 71, 72, 54,\n    55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 74, 75, 76, 77, 78, 92,\n    93, 94, 95, 96, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 97, 98,\n    99, 100\n]) === 37\n```\n\n```\nsearchDeleteNumber([\n  1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 2, 3, 4, 5, 6, 7, 9, 10,\n  11, 12, 13, 14, 15, 16, 17, 18, 19, 32, 47, 48, 49, 50, 51, 52, 53, 54, 55,\n  56, 57, 58, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60,\n  61, 62, 63, 64, 65, 66, 67, 68, 80, 81, 82, 83, 84, 85, 69, 70, 71, 72, 73,\n  74, 75, 76, 77, 78, 79, 86, 87, 88, 91, 92, 93, 94, 95, 96, 97, 98, 89, 90,\n  99, 100\n]) === 8\n```\n\n```\nsearchDeleteNumber([\n  16, 17, 18, 19, 20, 21, 22, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  23, 36, 37, 38, 39, 40, 41, 42, 43, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n  34, 35, 44, 45, 46, 47, 48, 49, 50, 51, 64, 65, 66, 67, 69, 70, 52, 53, 54,\n  55, 56, 57, 58, 59, 81, 82, 83, 84, 85, 86, 60, 61, 62, 63, 88, 89, 90, 91,\n  92, 93, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 87, 94, 95, 99, 96, 97, 98,\n  100\n]) === 68\n```\n\n```\nsearchDeleteNumber([\n  2, 3, 4, 17, 18, 19, 20, 21, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 22,\n  23, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 24, 25,\n  26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 54, 55, 68, 69, 70, 71, 72,\n  73, 74, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 75, 76, 77, 78, 79,\n  91, 92, 93, 94, 95, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 96, 97, 98,\n  99, 100\n]) === 1\n```","livecoding",{"title":168,"description":169,"ogTitle":168,"ogDescription":169,"ogImageUrl":170,"canonical":171,"ogLocale":172,"ogSiteName":173,"ogImageType":174,"ogImageWidth":175,"ogImageHeight":176,"ogType":177,"ogUrl":171},"Числа от 1 до 100 лежат в массиве, они хаотично перемешанные","Числа от 1 до 100 находятся в массиве, они хаотично перемешанные, но в нем не хватает одного числа из этой последовательности. Необходимо найти его","/og-image.png",null,"ru_RU","goodwebjob.ru","image_jpeg","1200","630","website",{"siteName":179,"siteUrl":180},"GOOD WEB JOB!","https://goodwebjob.ru",[182],{"label":183,"slug":184,"to":185},"Подготовка к тех.интервью","technical-interview","/technical-interview/where-to-begin",{"navigationList":187,"navigationSublist":196},[188,192],{"path":185,"isActive":189,"name":190,"icon":191,"isNavbarMobileDisabled":8},false,"С чего начать?","material-symbols:visibility-outline-rounded",{"path":193,"isActive":8,"name":194,"icon":195,"isNavbarMobileDisabled":189},"/technical-interview/tasks","Сборник задач","material-symbols:task-outline",[197,206,233,245,251,391,415,424,430,493,514,520],{"title":198,"list":199,"isOpened":189},"Bash",[200,203],{"name":201,"path":202,"isActive":189},"Дан фрагмент bash-скрипта: cd ~; mkdir foo... Что в нем происходит?","/technical-interview/tasks/here-is-a-fragment-of-a-bash-script-cd-mkdir-foo-what-is-happening-in-this-script",{"name":204,"path":205,"isActive":189},"Дан фрагмент bash-скрипта: target=$(ps -Af | grep $1 | head -n 1)...","/technical-interview/tasks/here-is-a-fragment-of-a-bash-script-target-ps-af-grep-1-head-n-1",{"title":207,"list":208,"isOpened":189},"CSS",[209,212,215,218,221,224,227,230],{"name":210,"path":211,"isActive":189},"Дан HTML-код. Какой будет цвет у текста «Some dummy text»?","/technical-interview/tasks/the-html-code-is-given-what-will-be-the-color-of-the-some-dummy-text",{"name":213,"path":214,"isActive":189},"Есть шаблон HTML и CSS кода. Какой будет цвет у текста «Таким образом, постоянное»?","/technical-interview/tasks/there-is-a-template-for-html-and-css-code-what-color-will-the-text-thus-constant-have",{"name":216,"path":217,"isActive":189},"Есть шаблон вложенного HTML кода. Какой будет цвет у текста «One more dummy text»?","/technical-interview/tasks/there-is-a-template-for-embedded-html-code-what-will-be-the-color-of-the-one-more-dummy-text",{"name":219,"path":220,"isActive":189},"Есть шаблон вложенного HTML кода. Будет ли display:block у body влиять на span?","/technical-interview/tasks/there-is-a-template-for-embedded-html-code-will-there-be-a-display-does-bodys-block-affect-span",{"name":222,"path":223,"isActive":189},"Есть HTML код. Будет ли font-weight на span влиять?","/technical-interview/tasks/there-is-an-html-code-will-font-weight-affect-span",{"name":225,"path":226,"isActive":189},"Flexbox и Grid, чем отличаются друг от друга?","/technical-interview/tasks/what-are-the-differences-between-flexbox-and-grid",{"name":228,"path":229,"isActive":189},"Заменяют ли Flexbox и Grid друг друга?","/technical-interview/tasks/do-flexbox-and-grid-replace-each-other",{"name":231,"path":232,"isActive":189},"Есть CSS и JS анимация. Какая между ними разница, что быстрее, что более удобно?","/technical-interview/tasks/there-are-css-and-js-animations-what-is-the-difference-between-them-and-which-is-faster-and-more-convenient",{"title":234,"list":235,"isOpened":189},"Git",[236,239,242],{"name":237,"path":238,"isActive":189},"Разрабатывал, взял закоммитил, запушил. Оказалось, что запушил не в ту ветку, точнее, коммит не в ту ветку. Какие действия?","/technical-interview/tasks/developed-it-committed-it-and-launched-it-it-turned-out-that-i-had-pushed-it-to-the-wrong-branch-or-rather-the-commit-was-in-the-wrong-branch-what-actions",{"name":240,"path":241,"isActive":189},"В git есть несколько вариантов слияния веток, какие? Чем отличаются?","/technical-interview/tasks/git-has-several-options-for-merging-branches-which-ones-how-are-they-different",{"name":243,"path":244,"isActive":189},"Какие существуют стратегии ветвления для работы команды? Что это такое?","/technical-interview/tasks/what-are-the-branching-strategies-for-the-team-what-is-it",{"title":246,"list":247,"isOpened":189},"HTML",[248],{"name":249,"path":250,"isActive":189},"Что такое HTML?","/technical-interview/tasks/what-is-html",{"title":252,"list":253,"isOpened":189},"JavaScript",[254,257,260,263,266,269,272,275,278,281,284,287,290,293,296,299,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,353,356,359,362,365,368,371,374,377,380,383,386,389],{"name":255,"path":256,"isActive":189},"Какие логические значения в console.log будут получены?","/technical-interview/tasks/prototype-what-logical-values-will-be-received-in-console-log",{"name":258,"path":259,"isActive":189},"Почему опасно писать прямо в прототипы базовых типов?","/technical-interview/tasks/why-is-it-dangerous-to-write-directly-to-the-prototypes-of-basic-types",{"name":261,"path":262,"isActive":189},"Что вернёт следующий код? Object.create(null).hasOwnProperty('toString')","/technical-interview/tasks/what-will-the-following-code-return-object-create-null-has-own-property-to-string",{"name":264,"path":265,"isActive":189},"Какое значение выведет консоль с object.property?","/technical-interview/tasks/what-value-will-the-console-output-with-object-property",{"name":267,"path":268,"isActive":189},"Что выведется в console.log([arr[0](), arr[0]()])?","/technical-interview/tasks/what-will-be-displayed-in-console-log-arr-0-arr-0",{"name":270,"path":271,"isActive":189},"Что выведет console.log в результате выполнения цикла while?","/technical-interview/tasks/what-will-console-log-output-as-a-result-of-executing-the-while-loop",{"name":273,"path":274,"isActive":189},"Есть функция и объект. Напишите все известные вам способы, чтобы вывести в консоли значение x из объекта, используя функцию","/technical-interview/tasks/there-is-a-function-and-an-object-write-all-the-ways-you-know-to-output-the-value-of-x-from-an-object-in-the-console-using-the-function",{"name":276,"path":277,"isActive":189},"Что вернёт метод book.getUpperName()?","/technical-interview/tasks/what-will-the-book-get-upper-name-method-return",{"name":279,"path":280,"isActive":189},"Переменные объявлены следующим образом: a=3; b=«hello»;. Укажите правильное утверждение","/technical-interview/tasks/variables-are-declared-as-follows-specify-the-correct-statement",{"name":282,"path":283,"isActive":189},"Что выведет консоль в случае присвоения свойства массиву по строковому положительному индексу?","/technical-interview/tasks/what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-positive-string-index",{"name":285,"path":286,"isActive":189},"Что выведет консоль в случае присвоения свойства массиву по строковому отрицательному индексу?","/technical-interview/tasks/what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-negative-string-index",{"name":288,"path":289,"isActive":189},"Что выведет консоль в случае удаления элемента массива с помощью оператора delete?","/technical-interview/tasks/what-will-the-console-output-if-an-array-element-is-deleted-using-the-delete-operator",{"name":291,"path":292,"isActive":189},"Что вернёт этот код: typeof (function(){})()","/technical-interview/tasks/what-this-code-will-return-typeof-function",{"name":294,"path":295,"isActive":189},"Что получится в результате передачи объекта как аргумента в функцию и выполнения кода?","/technical-interview/tasks/what-will-happen-when-an-object-is-passed-as-an-argument-to-a-function-and-the-code-is-executed",{"name":297,"path":298,"isActive":189},"Какие способы объявления функции есть в JavaScript?","/technical-interview/tasks/what-are-the-ways-to-declare-a-function-in-javascript",{"name":300,"path":301,"isActive":189},"Что такое this в JavaScript?","/technical-interview/tasks/what-is-this-in-javascript",{"name":303,"path":304,"isActive":189},"Что такое Event Loop, как работает?","/technical-interview/tasks/what-is-an-event-loop-and-how-does-it-work",{"name":306,"path":307,"isActive":189},"Что будет, если вызвать typeof на необъявленной переменной?","/technical-interview/tasks/what-happens-if-you-call-typeof-on-an-undeclared-variable",{"name":309,"path":310,"isActive":189},"Что показывает оператор typeof в JavaScript?","/technical-interview/tasks/what-does-the-typeof-operator-show-in-javascript",{"name":312,"path":313,"isActive":189},"Какие типы данных существует в JavaScript?","/technical-interview/tasks/what-types-of-data-exist-in-javascript",{"name":315,"path":316,"isActive":189},"Какую структуру использовать для хранения упорядоченного списка строк в JavaScript?","/technical-interview/tasks/what-is-the-best-structure-to-use-for-storing-an-ordered-list-of-strings-in-javascript",{"name":318,"path":319,"isActive":189},"Что вернет typeof для массива?","/technical-interview/tasks/what-will-typeof-return-for-an-array",{"name":321,"path":322,"isActive":189},"Почему оператор typeof, применённый к массиву, возвращает объект?","/technical-interview/tasks/why-does-the-typeof-operator-applied-to-an-array-return-an-object",{"name":324,"path":325,"isActive":189},"Если нужно хранить список уникальных строк, какую структуру данных выбрать?","/technical-interview/tasks/if-you-need-to-store-a-list-of-unique-strings-which-data-structure-should-i-choose",{"name":327,"path":328,"isActive":189},"Что возвращает typeof для new Set в JavaScript?","/technical-interview/tasks/what-does-typeof-return-for-new-set-in-javascript",{"name":330,"path":331,"isActive":189},"Почему в JavaScript два объекта с одинаковым содержимым при сравнении возвращают false?","/technical-interview/tasks/why-do-two-objects-with-the-same-content-return-false-when-compared-in-javascript",{"name":333,"path":334,"isActive":189},"В чем разница между микро- и макро-тасками в JavaScript?","/technical-interview/tasks/what-is-the-difference-between-micro-and-macro-tasks-in-javascript",{"name":336,"path":337,"isActive":189},"arr.push(0) повлияет на массив так же, как если бы мы выполнили...","/technical-interview/tasks/arr-push-0-will-affect-the-array-in-the-same-way-as-if-we-performed",{"name":339,"path":340,"isActive":189},"Вернуть массив от 1 до n, где числа, кратные 3, заменены на 'fizz', кратные 5 - на 'buzz', а кратные и 3, и 5 одновременно - на 'fizzbuzz'","/technical-interview/tasks/returns-an-array-from-1-to-n-replacing-numbers-that-are-multiples-of-3-with-fizz-numbers-that-are-multiples-of-5-with-buzz-and-numbers-that-are-multiples-of-both-3-and-5-with-fizzbuzz",{"name":342,"path":343,"isActive":189},"Дана строка: 'one.two.three.four.five'. Необходимо из строки сделать вложенный объект","/technical-interview/tasks/the-string-one-two-three-four-five-is-given-it-is-necessary-to-make-a-nested-object-out-of-the-string",{"name":345,"path":346,"isActive":189},"Дано дерево (вложенный объект), надо найти сумму всех вершин","/technical-interview/tasks/given-a-tree-nested-object-it-is-necessary-to-find-the-sum-of-all-vertices",{"name":348,"path":349,"isActive":189},"Для каждого вложенного объекта нужно добавить свойство level, которое равняется числу - номер вложенности","/technical-interview/tasks/for-each-nested-object-you-need-to-add-the-level-property-which-is-equal-to-a-number-the-nesting-number",{"name":351,"path":352,"isActive":189},"Для каждой ветви дерева записать номер вложенности данной ветви","/technical-interview/tasks/for-each-branch-of-the-tree-write-down-the-nesting-number-of-this-branch",{"name":354,"path":355,"isActive":189},"Есть массив, в котором лежат объекты с датами, необходимо отсортировать даты по возрастанию","/technical-interview/tasks/there-is-an-array-containing-objects-with-dates-that-need-to-be-sorted-by-date",{"name":357,"path":358,"isActive":189},"Есть слова в массиве, необходимо определить, состоят ли они из одних и тех же букв","/technical-interview/tasks/there-are-words-in-the-array-it-is-necessary-to-determine-whether-they-consist-of-the-same-letters",{"name":360,"path":361,"isActive":189},"Есть строка, состоящая из разных скобок, необходимо проверить, закрыты ли все","/technical-interview/tasks/there-is-a-string-consisting-of-different-brackets-it-is-necessary-to-check-whether-all-are-closed",{"name":363,"path":364,"isActive":189}," Найти в массиве неповторяющиеся числа","/technical-interview/tasks/find-non-repeating-numbers-in-an-array",{"name":366,"path":367,"isActive":189},"Напишите функцию, который сделает из массива объект","/technical-interview/tasks/write-a-function-that-will-make-an-object-out-of-an-array",{"name":369,"path":370,"isActive":189},"Необходимо проверить, являются ли две строки анаграммами друг друга","/technical-interview/tasks/checks-whether-two-strings-are-anagrams-of-each-other",{"name":372,"path":373,"isActive":189},"Нечётные числа должны отсортироваться по возрастанию, а чётные должны остаться на своих местах","/technical-interview/tasks/odd-numbers-should-be-sorted-in-ascending-order-and-even-numbers-should-remain-in-their-original-positions",{"name":375,"path":376,"isActive":189},"Определить, является ли слово палиндромом","/technical-interview/tasks/determines-whether-a-word-is-a-palindrome",{"name":378,"path":379,"isActive":189},"«Расплющивание» массива","/technical-interview/tasks/flattening-the-array",{"name":381,"path":382,"isActive":189},"Реализовать функцию, принимающую аргументы \"*\", \"1\", \"b\", \"1c\" и возвращающую строку \"1*b*1c\"","/technical-interview/tasks/implement-a-function-that-accepts-arguments-1-b-1c-and-the-return-string-1-b-1c",{"name":384,"path":385,"isActive":189},"Сжатие строк","/technical-interview/tasks/string-compression",{"name":387,"path":388,"isActive":189},"Уникализация значений в массиве","/technical-interview/tasks/unifying-values-in-an-array",{"name":7,"path":390,"isActive":189},"/technical-interview/tasks/the-numbers-from-1-to-100-are-in-the-array-they-are-randomly-mixed-but-it-lacks-one-number-from-this-sequence-it-is-necessary-to-find-him",{"title":392,"list":393,"isOpened":189},"React",[394,397,400,403,406,409,412],{"name":395,"path":396,"isActive":189},"Для чего нужен React, какие он решает проблемы?","/technical-interview/tasks/what-is-react-used-for-and-what-problems-does-it-solve",{"name":398,"path":399,"isActive":189},"Какой механизм лежит в основе оптимизации обновлений DOM в React?","/technical-interview/tasks/what-is-the-underlying-mechanism-for-optimizing-dom-updates-in-react",{"name":401,"path":402,"isActive":189},"Если убрать в React VDOM/Fiber, и вручную изменять DOM, разве это не оптимально?","/technical-interview/tasks/if-you-remove-the-vdom-fiber-in-react-and-manually-change-the-dom-isn-t-that-optimal",{"name":404,"path":405,"isActive":189},"Есть блок кода. Что в реальном DOM изменится после нажатия на кнопку?","/technical-interview/tasks/there-is-a-block-of-code-what-changes-in-the-real-dom-after-clicking-the-button",{"name":407,"path":408,"isActive":189},"Есть код, в котором список и кнопка. Что в реальном DOM изменится после нажатия на кнопку?","/technical-interview/tasks/there-is-a-code-in-which-there-is-a-list-and-a-button-what-will-change-in-the-real-dom-after-clicking-on-the-button",{"name":410,"path":411,"isActive":189},"Зачем нужен Redux (Mobx/Effector)? Зачем нужен менеджер состояния? Какие проблемы решает?","/technical-interview/tasks/why-do-we-need-redux-mobx-effector-why-do-we-need-a-state-manager-what-problems-does-it-solve",{"name":413,"path":414,"isActive":189},"Что мешает организовать централизованное состояние без менеджера состояния? Если организовать состояние механизмами реакта: контекстом, стейтом, в чем проблема? Что менеджеры состояния привносят?","/technical-interview/tasks/what-prevents-you-from-organizing-a-centralized-state-without-a-state-manager-if-you-organize-the-state-using-react-context-and-state-mechanisms-what-is-the-problem-what-do-state-managers-add",{"title":416,"list":417,"isOpened":189},"Алгоритмы",[418,421],{"name":419,"path":420,"isActive":189},"Что такое алгоритмическая сложность?","/technical-interview/tasks/what-is-algorithmic-complexity",{"name":422,"path":423,"isActive":189},"Какая алгоритмическая сложность у \"быстрой сортировки\"?","/technical-interview/tasks/what-is-the-algorithmic-complexity-of-quick-sort",{"title":425,"list":426,"isOpened":189},"Дебаггинг",[427],{"name":428,"path":429,"isActive":189},"Как диагностировать и исправить нежелательное изменение цвета фона по клику на кнопку, если исходный код сайта запутан и недоступен для прямого чтения?","/technical-interview/tasks/how-can-diagnose-and-fix-unwanted-background-color-changes-when-clicking-on-a-button-if-the-source-code-of-the-site-is-confusing-and-inaccessible-to-direct-reading",{"title":431,"list":432,"isOpened":189},"Компьютерные сети",[433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490],{"name":434,"path":435,"isActive":189},"Как браузер после ввода домена понимает, откуда брать сайт?","/technical-interview/tasks/how-does-the-browser-know-where-to-get-the-website-after-entering-the-domain",{"name":437,"path":438,"isActive":189},"Что такое DNS, как DNS находит нужный IP-адрес?","/technical-interview/tasks/what-is-dns-and-how-does-dns-find-the-correct-ip-address",{"name":440,"path":441,"isActive":189},"Как домен попадает в DNS в таблицу соответствия: домен – ip","/technical-interview/tasks/how-does-a-domain-get-into-the-dns-mapping-table-domain-ip",{"name":443,"path":444,"isActive":189},"Как браузер решает, какое соединение ему открывать, TCP или UDP?","/technical-interview/tasks/how-does-a-browser-decide-whether-to-open-a-tcp-or-udp-connection",{"name":446,"path":447,"isActive":189},"Ключевые отличия TCP и UDP","/technical-interview/tasks/key-differences-between-tcp-and-udp",{"name":449,"path":450,"isActive":189},"\"TCP/IP\" - кем является TCP, а кем IP в данном случае?","/technical-interview/tasks/tcp-ip-who-is-tcp-and-who-is-ip-in-this-case",{"name":452,"path":453,"isActive":189},"Что такое HTTP и из чего состоит?","/technical-interview/tasks/what-is-http-and-what-does-it-consist-of",{"name":455,"path":456,"isActive":189},"Что такое заголовки в HTTP и зачем они нужны?","/technical-interview/tasks/what-are-http-headers-and-why-do-we-need-them",{"name":458,"path":459,"isActive":189},"Что такое параметры в HTTP?","/technical-interview/tasks/what-are-http-parameters",{"name":461,"path":462,"isActive":189},"Где находится HTML-код в структуре HTTP-ответа?","/technical-interview/tasks/where-is-the-html-code-located-in-the-http-response-structure",{"name":464,"path":465,"isActive":189},"Чем отличаются 1.0, 1.1, 2.0, 3.0 версии HTTP?","/technical-interview/tasks/what-are-the-differences-between-http-versions-1-0-1-1-2-0-and-3-0",{"name":467,"path":468,"isActive":189},"Пользователь авторизован на сайте. Как сервер узнает об этом с последующими другими заходами, что «я – авторизованный пользователь»?","/technical-interview/tasks/the-user-is-logged-in-on-the-website-how-does-the-server-know-that-i-am-an-authorized-user-when-the-user-logs-in-again",{"name":470,"path":471,"isActive":189},"Что такое cookie?","/technical-interview/tasks/what-is-a-cookie",{"name":473,"path":474,"isActive":189},"Кто является инициатором записи cookie в браузере?","/technical-interview/tasks/who-initiates-the-cookie-recording-in-the-browser",{"name":476,"path":477,"isActive":189},"Есть ли возможность с клиента (с браузера) управлять cookie?","/technical-interview/tasks/is-it-possible-to-manage-cookies-from-the-client-browser",{"name":479,"path":480,"isActive":189},"Верно ли утверждение, что злоумышленник, контролирующий роутер и прослушивающий трафик, может получить логины и пароли от сайтов, на которые заходит клиент?","/technical-interview/tasks/is-it-true-that-an-attacker-who-controls-a-router-and-listens-to-traffic-can-obtain-logins-and-passwords-from-websites-that-a-client-visits",{"name":482,"path":483,"isActive":189},"Всё, что идет по HTTPS – оно защищено?","/technical-interview/tasks/is-everything-that-goes-through-https-secure",{"name":485,"path":486,"isActive":189},"Все данные зашифрованы, используется https. Хакер взламывает dns и делает подмену одного ip на другой, на фишинговый сайт. В этом случае, злоумышленник может получить данные (логин \\ пароль)?","/technical-interview/tasks/all-data-is-encrypted-https-is-used-let-s-assume-a-hacker-hacks-the-dns-and-makes-a-substitution-of-one-ip-for-another-a-phishing-site",{"name":488,"path":489,"isActive":189},"Есть веб-приложение. Помимо HTTP, какие протоколы того же уровня (Application Layer) можно дополнительно использовать в веб-приложении в браузере?","/technical-interview/tasks/there-is-a-web-application-in-addition-to-http-what-other-protocols-of-the-same-level-application-layer-can-be-used-in-the-web-application-in-browser",{"name":491,"path":492,"isActive":189},"Каким способом может выполняться авторизация пользователя на сайте?","/technical-interview/tasks/how-can-a-user-be-authorized-on-a-website",{"title":494,"list":495,"isOpened":189},"Отрисовка в браузере",[496,499,502,505,508,511],{"name":497,"path":498,"isActive":189},"Что происходит, когда HTTP прислал HTML? Что браузер дальше делает c HTML с учетом того, что она валидная?","/technical-interview/tasks/what-happens-when-http-sends-html-what-does-the-browser-do-with-this-html-given-that-it-is-valid",{"name":500,"path":501,"isActive":189},"Как браузер парсит JavaScript и изображения при рендеринге?","/technical-interview/tasks/how-the-browser-parses-javascript-and-images-when-rendering",{"name":503,"path":504,"isActive":189},"Что в браузере блокирует рендеринг страницы?","/technical-interview/tasks/what-is-blocking-the-page-rendering-in-the-browser",{"name":506,"path":507,"isActive":189},"Что такое DOM в браузере? Что такое CSSOM?","/technical-interview/tasks/what-is-dom-in-a-browser-what-is-cssom",{"name":509,"path":510,"isActive":189},"Что является узлами в DOM?","/technical-interview/tasks/what-are-nodes-in-the-dom",{"name":512,"path":513,"isActive":189},"Из чего состоит CSSOM?","/technical-interview/tasks/what-does-cssom-consist-of",{"title":515,"list":516,"isOpened":189},"Ревью кода",[517],{"name":518,"path":519,"isActive":189},"По каким характеристикам, ревьюер понимает, что данный код - хороший, а этот код - плохой?","/technical-interview/tasks/how-does-a-reviewer-know-which-code-is-good-and-which-code-is-bad",{"title":521,"list":522,"isOpened":189},"Теория вероятности",[523,526,529],{"name":524,"path":525,"isActive":189},"В комнате три человека. Какова вероятность того, что хотя бы двое из них одного пола? То есть два и более.","/technical-interview/tasks/there-are-three-people-in-the-room-what-is-the-probability-that-at-least-two-of-them-are-of-the-same-sex-that-is-two-or-more",{"name":527,"path":528,"isActive":189},"Есть монета. Ее подбрасывают пять раз подряд. Каждый раз записывается, что выпало - орел или решка. Сколько разных последовательностей орлов и решек может при этом получиться?","/technical-interview/tasks/there-is-a-coin-it-is-tossed-five-times-in-a-row-each-time-it-is-recorded-whether-it-lands-on-heads-or-tails-how-many-different-sequences-of-heads-and-tails-can-be-obtained",{"name":530,"path":531,"isActive":189},"Как гарантированно найти лёгкую фальшивую монету среди 8 за минимальное число взвешиваний на чашечных весах?","/technical-interview/tasks/how-can-you-guarantee-to-find-an-easy-fake-coin-among-8-in-the-minimum-number-of-weighings-on-a-balance-scale",{"slugs":533},[534,537,539,541,543,546,549,551,553,555,557,559,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,743,745,747,749,751],{"name":535,"value":536},"Теоретические задания","theoretical-tasks",{"name":291,"value":538},"what-this-code-will-return-typeof-function",{"name":190,"value":540},"where-to-begin",{"name":258,"value":542},"why-is-it-dangerous-to-write-directly-to-the-prototypes-of-basic-types",{"name":544,"value":545},"Backend","backend",{"name":547,"value":548},"Frontend","frontend",{"name":255,"value":550},"prototype-what-logical-values-will-be-received-in-console-log",{"name":372,"value":552},"odd-numbers-should-be-sorted-in-ascending-order-and-even-numbers-should-remain-in-their-original-positions",{"name":363,"value":554},"find-non-repeating-numbers-in-an-array",{"name":336,"value":556},"arr-push-0-will-affect-the-array-in-the-same-way-as-if-we-performed",{"name":342,"value":558},"the-string-one-two-three-four-five-is-given-it-is-necessary-to-make-a-nested-object-out-of-the-string",{"name":560,"value":561},"Реализовать функцию, похоже как в Jquery","implement-a-function-similar-to-jquery",{"name":348,"value":563},"for-each-nested-object-you-need-to-add-the-level-property-which-is-equal-to-a-number-the-nesting-number",{"name":264,"value":565},"what-value-will-the-console-output-with-object-property",{"name":267,"value":567},"what-will-be-displayed-in-console-log-arr-0-arr-0",{"name":339,"value":569},"returns-an-array-from-1-to-n-replacing-numbers-that-are-multiples-of-3-with-fizz-numbers-that-are-multiples-of-5-with-buzz-and-numbers-that-are-multiples-of-both-3-and-5-with-fizzbuzz",{"name":369,"value":571},"checks-whether-two-strings-are-anagrams-of-each-other",{"name":375,"value":573},"determines-whether-a-word-is-a-palindrome",{"name":354,"value":575},"there-is-an-array-containing-objects-with-dates-that-need-to-be-sorted-by-date",{"name":381,"value":577},"implement-a-function-that-accepts-arguments-1-b-1c-and-the-return-string-1-b-1c",{"name":345,"value":579},"given-a-tree-nested-object-it-is-necessary-to-find-the-sum-of-all-vertices",{"name":351,"value":581},"for-each-branch-of-the-tree-write-down-the-nesting-number-of-this-branch",{"name":357,"value":583},"there-are-words-in-the-array-it-is-necessary-to-determine-whether-they-consist-of-the-same-letters",{"name":7,"value":585},"the-numbers-from-1-to-100-are-in-the-array-they-are-randomly-mixed-but-it-lacks-one-number-from-this-sequence-it-is-necessary-to-find-him",{"name":360,"value":587},"there-is-a-string-consisting-of-different-brackets-it-is-necessary-to-check-whether-all-are-closed",{"name":366,"value":589},"write-a-function-that-will-make-an-object-out-of-an-array",{"name":270,"value":591},"what-will-console-log-output-as-a-result-of-executing-the-while-loop",{"name":273,"value":593},"there-is-a-function-and-an-object-write-all-the-ways-you-know-to-output-the-value-of-x-from-an-object-in-the-console-using-the-function",{"name":285,"value":595},"what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-negative-string-index",{"name":288,"value":597},"what-will-the-console-output-if-an-array-element-is-deleted-using-the-delete-operator",{"name":387,"value":599},"unifying-values-in-an-array",{"name":378,"value":601},"flattening-the-array",{"name":276,"value":603},"what-will-the-book-get-upper-name-method-return",{"name":384,"value":605},"string-compression",{"name":282,"value":607},"what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-positive-string-index",{"name":294,"value":609},"what-will-happen-when-an-object-is-passed-as-an-argument-to-a-function-and-the-code-is-executed",{"name":434,"value":611},"how-does-the-browser-know-where-to-get-the-website-after-entering-the-domain",{"name":440,"value":613},"how-does-a-domain-get-into-the-dns-mapping-table-domain-ip",{"name":443,"value":615},"how-does-a-browser-decide-whether-to-open-a-tcp-or-udp-connection",{"name":446,"value":617},"key-differences-between-tcp-and-udp",{"name":449,"value":619},"tcp-ip-who-is-tcp-and-who-is-ip-in-this-case",{"name":452,"value":621},"what-is-http-and-what-does-it-consist-of",{"name":455,"value":623},"what-are-http-headers-and-why-do-we-need-them",{"name":458,"value":625},"what-are-http-parameters",{"name":461,"value":627},"where-is-the-html-code-located-in-the-http-response-structure",{"name":249,"value":629},"what-is-html",{"name":464,"value":631},"what-are-the-differences-between-http-versions-1-0-1-1-2-0-and-3-0",{"name":467,"value":633},"the-user-is-logged-in-on-the-website-how-does-the-server-know-that-i-am-an-authorized-user-when-the-user-logs-in-again",{"name":470,"value":635},"what-is-a-cookie",{"name":473,"value":637},"who-initiates-the-cookie-recording-in-the-browser",{"name":476,"value":639},"is-it-possible-to-manage-cookies-from-the-client-browser",{"name":641,"value":166},"Лайвкодинг",{"name":261,"value":643},"what-will-the-following-code-return-object-create-null-has-own-property-to-string",{"name":482,"value":645},"is-everything-that-goes-through-https-secure",{"name":485,"value":647},"all-data-is-encrypted-https-is-used-let-s-assume-a-hacker-hacks-the-dns-and-makes-a-substitution-of-one-ip-for-another-a-phishing-site",{"name":488,"value":649},"there-is-a-web-application-in-addition-to-http-what-other-protocols-of-the-same-level-application-layer-can-be-used-in-the-web-application-in-browser",{"name":500,"value":651},"how-the-browser-parses-javascript-and-images-when-rendering",{"name":497,"value":653},"what-happens-when-http-sends-html-what-does-the-browser-do-with-this-html-given-that-it-is-valid",{"name":503,"value":655},"what-is-blocking-the-page-rendering-in-the-browser",{"name":506,"value":657},"what-is-dom-in-a-browser-what-is-cssom",{"name":509,"value":659},"what-are-nodes-in-the-dom",{"name":512,"value":661},"what-does-cssom-consist-of",{"name":210,"value":663},"the-html-code-is-given-what-will-be-the-color-of-the-some-dummy-text",{"name":213,"value":665},"there-is-a-template-for-html-and-css-code-what-color-will-the-text-thus-constant-have",{"name":216,"value":667},"there-is-a-template-for-embedded-html-code-what-will-be-the-color-of-the-one-more-dummy-text",{"name":219,"value":669},"there-is-a-template-for-embedded-html-code-will-there-be-a-display-does-bodys-block-affect-span",{"name":222,"value":671},"there-is-an-html-code-will-font-weight-affect-span",{"name":225,"value":673},"what-are-the-differences-between-flexbox-and-grid",{"name":228,"value":675},"do-flexbox-and-grid-replace-each-other",{"name":231,"value":677},"there-are-css-and-js-animations-what-is-the-difference-between-them-and-which-is-faster-and-more-convenient",{"name":194,"value":679},"tasks",{"name":297,"value":681},"what-are-the-ways-to-declare-a-function-in-javascript",{"name":300,"value":683},"what-is-this-in-javascript",{"name":303,"value":685},"what-is-an-event-loop-and-how-does-it-work",{"name":306,"value":687},"what-happens-if-you-call-typeof-on-an-undeclared-variable",{"name":309,"value":689},"what-does-the-typeof-operator-show-in-javascript",{"name":312,"value":691},"what-types-of-data-exist-in-javascript",{"name":315,"value":693},"what-is-the-best-structure-to-use-for-storing-an-ordered-list-of-strings-in-javascript",{"name":318,"value":695},"what-will-typeof-return-for-an-array",{"name":321,"value":697},"why-does-the-typeof-operator-applied-to-an-array-return-an-object",{"name":324,"value":699},"if-you-need-to-store-a-list-of-unique-strings-which-data-structure-should-i-choose",{"name":327,"value":701},"what-does-typeof-return-for-new-set-in-javascript",{"name":395,"value":703},"what-is-react-used-for-and-what-problems-does-it-solve",{"name":401,"value":705},"if-you-remove-the-vdom-fiber-in-react-and-manually-change-the-dom-isn-t-that-optimal",{"name":404,"value":707},"there-is-a-block-of-code-what-changes-in-the-real-dom-after-clicking-the-button",{"name":407,"value":709},"there-is-a-code-in-which-there-is-a-list-and-a-button-what-will-change-in-the-real-dom-after-clicking-on-the-button",{"name":410,"value":711},"why-do-we-need-redux-mobx-effector-why-do-we-need-a-state-manager-what-problems-does-it-solve",{"name":428,"value":713},"how-can-diagnose-and-fix-unwanted-background-color-changes-when-clicking-on-a-button-if-the-source-code-of-the-site-is-confusing-and-inaccessible-to-direct-reading",{"name":237,"value":715},"developed-it-committed-it-and-launched-it-it-turned-out-that-i-had-pushed-it-to-the-wrong-branch-or-rather-the-commit-was-in-the-wrong-branch-what-actions",{"name":240,"value":717},"git-has-several-options-for-merging-branches-which-ones-how-are-they-different",{"name":243,"value":719},"what-are-the-branching-strategies-for-the-team-what-is-it",{"name":518,"value":721},"how-does-a-reviewer-know-which-code-is-good-and-which-code-is-bad",{"name":201,"value":723},"here-is-a-fragment-of-a-bash-script-cd-mkdir-foo-what-is-happening-in-this-script",{"name":204,"value":725},"here-is-a-fragment-of-a-bash-script-target-ps-af-grep-1-head-n-1",{"name":419,"value":727},"what-is-algorithmic-complexity",{"name":422,"value":729},"what-is-the-algorithmic-complexity-of-quick-sort",{"name":330,"value":731},"why-do-two-objects-with-the-same-content-return-false-when-compared-in-javascript",{"name":491,"value":733},"how-can-a-user-be-authorized-on-a-website",{"name":333,"value":735},"what-is-the-difference-between-micro-and-macro-tasks-in-javascript",{"name":524,"value":737},"there-are-three-people-in-the-room-what-is-the-probability-that-at-least-two-of-them-are-of-the-same-sex-that-is-two-or-more",{"name":527,"value":739},"there-is-a-coin-it-is-tossed-five-times-in-a-row-each-time-it-is-recorded-whether-it-lands-on-heads-or-tails-how-many-different-sequences-of-heads-and-tails-can-be-obtained",{"name":530,"value":741},"how-can-you-guarantee-to-find-an-easy-fake-coin-among-8-in-the-minimum-number-of-weighings-on-a-balance-scale",{"name":183,"value":184},{"name":479,"value":744},"is-it-true-that-an-attacker-who-controls-a-router-and-listens-to-traffic-can-obtain-logins-and-passwords-from-websites-that-a-client-visits",{"name":437,"value":746},"what-is-dns-and-how-does-dns-find-the-correct-ip-address",{"name":279,"value":748},"variables-are-declared-as-follows-specify-the-correct-statement",{"name":398,"value":750},"what-is-the-underlying-mechanism-for-optimizing-dom-updates-in-react",{"name":413,"value":752},"what-prevents-you-from-organizing-a-centralized-state-without-a-state-manager-if-you-organize-the-state-using-react-context-and-state-mechanisms-what-is-the-problem-what-do-state-managers-add",{"cooperation":754,"copyright":757,"reportError":758,"socialNetwork":760},{"link":755,"title":756},"https://t.me/baurinanton","Сотрудничество","© “GOOD WEB JOB!”",{"label":759,"link":755},"Сообщить об ошибке",{"label":761,"socialNetworkList":762},"Мы в соцсетях:",[763,766,769],{"icon":171,"link":764,"title":765},"https://max.ru/u/f9LHodD0cOKMaukdnnahTeL5pwvjrPfUaZ4S8_1rsNy9I9qsmc9Ar3kP_y8","Max",{"icon":767,"link":755,"title":768},"ic:baseline-telegram","Telegram",{"icon":770,"link":771,"title":772},"ri:vk-fill","https://vk.com/baurinanton","VK",{"data":774,"body":775},{},{"type":776,"children":777},"root",[778,786,791,804,813,822,831],{"type":779,"tag":780,"props":781,"children":782},"element","p",{},[783],{"type":784,"value":785},"text","Дан массив чисел, заполненный числами от 1 до 100. В нём не хватает одного числа из этой последовательности (1, ...,100). Необходимо найти это число.\nАлгоритм не должен превышать O(n^2) сложности.",{"type":779,"tag":780,"props":787,"children":788},{},[789],{"type":784,"value":790},"Примеры:",{"type":779,"tag":792,"props":793,"children":797},"pre",{"className":794,"code":796,"language":784},[795],"language-text","searchDeleteNumber([\n  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,\n  23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,\n  42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,\n  61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n  80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99,\n  100\n]) === 98\n",[798],{"type":779,"tag":799,"props":800,"children":802},"code",{"__ignoreMap":801},"",[803],{"type":784,"value":796},{"type":779,"tag":792,"props":805,"children":808},{"className":806,"code":807,"language":784},[795],"searchDeleteNumber([\n    10, 11, 12, 13, 14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 24, 25, 26, 27, 28, 29, 15,\n    16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 32, 33, 34, 35, 46, 47, 48, 49, 50,\n    51, 52, 36, 38, 39, 40, 41, 42, 43, 44, 45, 53, 67, 68, 69, 70, 71, 72, 54,\n    55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 74, 75, 76, 77, 78, 92,\n    93, 94, 95, 96, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 97, 98,\n    99, 100\n]) === 37\n",[809],{"type":779,"tag":799,"props":810,"children":811},{"__ignoreMap":801},[812],{"type":784,"value":807},{"type":779,"tag":792,"props":814,"children":817},{"className":815,"code":816,"language":784},[795],"searchDeleteNumber([\n  1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 2, 3, 4, 5, 6, 7, 9, 10,\n  11, 12, 13, 14, 15, 16, 17, 18, 19, 32, 47, 48, 49, 50, 51, 52, 53, 54, 55,\n  56, 57, 58, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60,\n  61, 62, 63, 64, 65, 66, 67, 68, 80, 81, 82, 83, 84, 85, 69, 70, 71, 72, 73,\n  74, 75, 76, 77, 78, 79, 86, 87, 88, 91, 92, 93, 94, 95, 96, 97, 98, 89, 90,\n  99, 100\n]) === 8\n",[818],{"type":779,"tag":799,"props":819,"children":820},{"__ignoreMap":801},[821],{"type":784,"value":816},{"type":779,"tag":792,"props":823,"children":826},{"className":824,"code":825,"language":784},[795],"searchDeleteNumber([\n  16, 17, 18, 19, 20, 21, 22, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  23, 36, 37, 38, 39, 40, 41, 42, 43, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n  34, 35, 44, 45, 46, 47, 48, 49, 50, 51, 64, 65, 66, 67, 69, 70, 52, 53, 54,\n  55, 56, 57, 58, 59, 81, 82, 83, 84, 85, 86, 60, 61, 62, 63, 88, 89, 90, 91,\n  92, 93, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 87, 94, 95, 99, 96, 97, 98,\n  100\n]) === 68\n",[827],{"type":779,"tag":799,"props":828,"children":829},{"__ignoreMap":801},[830],{"type":784,"value":825},{"type":779,"tag":792,"props":832,"children":835},{"className":833,"code":834,"language":784},[795],"searchDeleteNumber([\n  2, 3, 4, 17, 18, 19, 20, 21, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 22,\n  23, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 24, 25,\n  26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 54, 55, 68, 69, 70, 71, 72,\n  73, 74, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 75, 76, 77, 78, 79,\n  91, 92, 93, 94, 95, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 96, 97, 98,\n  99, 100\n]) === 1\n",[836],{"type":779,"tag":799,"props":837,"children":838},{"__ignoreMap":801},[839],{"type":784,"value":834},{"data":841,"body":842},{},{"type":776,"children":843},[844,855,866,871,896,901],{"type":779,"tag":780,"props":845,"children":846},{},[847,849],{"type":784,"value":848},"Сумма чисел от 1 до n вычисляется по формуле: ",{"type":779,"tag":799,"props":850,"children":852},{"className":851},[],[853],{"type":784,"value":854},"S = n(n + 1) / 2",{"type":779,"tag":780,"props":856,"children":857},{},[858,860],{"type":784,"value":859},"Для n = 100: ",{"type":779,"tag":799,"props":861,"children":863},{"className":862},[],[864],{"type":784,"value":865},"S = 100 * 101 / 2 = 5050",{"type":779,"tag":780,"props":867,"children":868},{},[869],{"type":784,"value":870},"Почему формула разумна (простая интуиция “пар”):",{"type":779,"tag":872,"props":873,"children":874},"ul",{},[875,881,886,891],{"type":779,"tag":876,"props":877,"children":878},"li",{},[879],{"type":784,"value":880},"берётся первое и последнее число: 1 + 100 = 101",{"type":779,"tag":876,"props":882,"children":883},{},[884],{"type":784,"value":885},"берётся второе и предпоследнее: 2 + 99 = 101",{"type":779,"tag":876,"props":887,"children":888},{},[889],{"type":784,"value":890},"каждая такая пара даёт одинаковый результат 101",{"type":779,"tag":876,"props":892,"children":893},{},[894],{"type":784,"value":895},"всего пар 50, значит сумма 50 * 101 = 5050",{"type":779,"tag":780,"props":897,"children":898},{},[899],{"type":784,"value":900},"Далее используется ключевое наблюдение:",{"type":779,"tag":872,"props":902,"children":903},{},[904,909,914],{"type":779,"tag":876,"props":905,"children":906},{},[907],{"type":784,"value":908},"в массиве содержатся все числа 1…100, кроме одного",{"type":779,"tag":876,"props":910,"children":911},{},[912],{"type":784,"value":913},"значит сумма массива равна 5050 минус пропущенное число",{"type":779,"tag":876,"props":915,"children":916},{},[917,919],{"type":784,"value":918},"следовательно, ",{"type":779,"tag":799,"props":920,"children":922},{"className":921},[],[923],{"type":784,"value":924},"пропущенное = 5050 - сумма_массива",{"data":926,"body":927},{},{"type":776,"children":928},[929,934,960],{"type":779,"tag":780,"props":930,"children":931},{},[932],{"type":784,"value":933},"XOR (исключающее ИЛИ) обладает свойствами, которые делают его удобным для “поиска лишнего/пропущенного”:",{"type":779,"tag":872,"props":935,"children":936},{},[937,946,955],{"type":779,"tag":876,"props":938,"children":939},{},[940],{"type":779,"tag":799,"props":941,"children":943},{"className":942},[],[944],{"type":784,"value":945},"a ^ a = 0",{"type":779,"tag":876,"props":947,"children":948},{},[949],{"type":779,"tag":799,"props":950,"children":952},{"className":951},[],[953],{"type":784,"value":954},"a ^ 0 = a",{"type":779,"tag":876,"props":956,"children":957},{},[958],{"type":784,"value":959},"XOR не зависит от порядка (ассоциативность и коммутативность)",{"type":779,"tag":780,"props":961,"children":962},{},[963],{"type":784,"value":964},"Если выполнить XOR всех чисел 1…100 и XOR всех элементов массива, то каждое число, которое присутствует и там и там, встретится дважды и превратится в 0.\nОстанется только то число, которое было в диапазоне 1…100, но отсутствовало в массиве.",{"data":966,"body":967},{},{"type":776,"children":968},[969,974,992],{"type":779,"tag":780,"props":970,"children":971},{},[972],{"type":784,"value":973},"Описанные решения корректны при выполнении условия задачи:",{"type":779,"tag":872,"props":975,"children":976},{},[977,982,987],{"type":779,"tag":876,"props":978,"children":979},{},[980],{"type":784,"value":981},"в массиве нет дублей",{"type":779,"tag":876,"props":983,"children":984},{},[985],{"type":784,"value":986},"все элементы лежат в диапазоне 1…100",{"type":779,"tag":876,"props":988,"children":989},{},[990],{"type":784,"value":991},"пропущено ровно одно число",{"type":779,"tag":780,"props":993,"children":994},{},[995],{"type":784,"value":996},"Если вход может нарушать эти условия, вариант с отметками следует дополнять проверками (например, считать количество пропусков, отслеживать дубликаты).",{"data":998,"body":999},{},{"type":776,"children":1000},[1001,1128,1133],{"type":779,"tag":1002,"props":1003,"children":1004},"table",{},[1005,1035],{"type":779,"tag":1006,"props":1007,"children":1008},"thead",{},[1009],{"type":779,"tag":1010,"props":1011,"children":1012},"tr",{},[1013,1019,1025,1030],{"type":779,"tag":1014,"props":1015,"children":1016},"th",{},[1017],{"type":784,"value":1018},"Подход",{"type":779,"tag":1014,"props":1020,"children":1022},{"align":1021},"right",[1023],{"type":784,"value":1024},"Время",{"type":779,"tag":1014,"props":1026,"children":1027},{"align":1021},[1028],{"type":784,"value":1029},"Память",{"type":779,"tag":1014,"props":1031,"children":1032},{},[1033],{"type":784,"value":1034},"Особенности",{"type":779,"tag":1036,"props":1037,"children":1038},"tbody",{},[1039,1063,1084,1105],{"type":779,"tag":1010,"props":1040,"children":1041},{},[1042,1048,1053,1058],{"type":779,"tag":1043,"props":1044,"children":1045},"td",{},[1046],{"type":784,"value":1047},"Сумма",{"type":779,"tag":1043,"props":1049,"children":1050},{"align":1021},[1051],{"type":784,"value":1052},"O(n)",{"type":779,"tag":1043,"props":1054,"children":1055},{"align":1021},[1056],{"type":784,"value":1057},"O(1)",{"type":779,"tag":1043,"props":1059,"children":1060},{},[1061],{"type":784,"value":1062},"Самый короткий и читаемый код при корректном входе.",{"type":779,"tag":1010,"props":1064,"children":1065},{},[1066,1071,1075,1079],{"type":779,"tag":1043,"props":1067,"children":1068},{},[1069],{"type":784,"value":1070},"XOR",{"type":779,"tag":1043,"props":1072,"children":1073},{"align":1021},[1074],{"type":784,"value":1052},{"type":779,"tag":1043,"props":1076,"children":1077},{"align":1021},[1078],{"type":784,"value":1057},{"type":779,"tag":1043,"props":1080,"children":1081},{},[1082],{"type":784,"value":1083},"Тоже не зависит от порядка, полезный приём, но менее “очевиден”.",{"type":779,"tag":1010,"props":1085,"children":1086},{},[1087,1092,1096,1100],{"type":779,"tag":1043,"props":1088,"children":1089},{},[1090],{"type":784,"value":1091},"Отметки",{"type":779,"tag":1043,"props":1093,"children":1094},{"align":1021},[1095],{"type":784,"value":1052},{"type":779,"tag":1043,"props":1097,"children":1098},{"align":1021},[1099],{"type":784,"value":1052},{"type":779,"tag":1043,"props":1101,"children":1102},{},[1103],{"type":784,"value":1104},"Самый наглядный, легко добавлять валидацию входа.",{"type":779,"tag":1010,"props":1106,"children":1107},{},[1108,1113,1118,1123],{"type":779,"tag":1043,"props":1109,"children":1110},{},[1111],{"type":784,"value":1112},"Сортировка + проход",{"type":779,"tag":1043,"props":1114,"children":1115},{"align":1021},[1116],{"type":784,"value":1117},"O(n log n)",{"type":779,"tag":1043,"props":1119,"children":1120},{"align":1021},[1121],{"type":784,"value":1122},"O(1)/O(n)",{"type":779,"tag":1043,"props":1124,"children":1125},{},[1126],{"type":784,"value":1127},"Работает, но избыточно: сортировка тяжелее одного прохода.",{"type":779,"tag":780,"props":1129,"children":1130},{},[1131],{"type":784,"value":1132},"Практический выбор:",{"type":779,"tag":872,"props":1134,"children":1135},{},[1136,1141],{"type":779,"tag":876,"props":1137,"children":1138},{},[1139],{"type":784,"value":1140},"при гарантированно корректном входе чаще всего выбирается вариант “сумма”",{"type":779,"tag":876,"props":1142,"children":1143},{},[1144],{"type":784,"value":1145},"при сомнениях в корректности входа удобнее “отметки”",{"data":1147,"body":1148},{},{"type":776,"children":1149},[1150],{"type":779,"tag":780,"props":1151,"children":1152},{},[1153,1155,1161],{"type":784,"value":1154},"Кратко: наиболее простой путь — вычислить ",{"type":779,"tag":799,"props":1156,"children":1158},{"className":1157},[],[1159],{"type":784,"value":1160},"5050 - сумма(массива)",{"type":784,"value":1162}," за O(n) и O(1); альтернативно можно применить XOR диапазона и массива (O(n), O(1)); для проверок корректности входа подходит таблица присутствия (O(n), O(n)).",1775575822578]