Видеоурок:
Итак, вы прошли собеседование на летней стажировке своей мечты, здорово! Рекрутер только что сказал вам, что вас ждут проблемы с кодированием / техническое собеседование (иногда это «технический экран»).
Будь то собеседование в стиле «белой доски», на котором вы разговариваете напрямую с другими инженерами, или просто испытание HackerRank, к этому неплохо подготовиться.
Если это ваш первый опыт собеседования, не паникуйте. Скорее всего, вы уже сталкивались с подобными проблемами кодирования в своей курсовой работе. Это просто вопрос тонкой настройки ваших навыков решения проблем и синтаксиса конкретного языка.
Обычно интервьюеры позволяют вам выбрать, на каком языке вы хотите решать задачи, и дадут вам список из трех-семи на выбор. Подумайте - Java, JavaScript, Python, C ++, C и Ruby - ваш опыт будет другим. Кроме того, не удивляйтесь, если они зададут вопросы об SQL, парсинге JSON или архитектуре базы данных.
Если вы проводите собеседование в стиле «белой доски», скорее всего, вашего интервьюера больше заботит то, как вы можете сформулировать свою проблему и решение, а не то, насколько «блестящим» будет ваш ответ.
Это три наиболее распространенных вопроса о программировании, которые я видел, работая стажерами и проводя собеседования с ними. Я отвечу на каждый вопрос с помощью псевдокода (который, скорее всего, попросят вас сделать собеседники на белой доске), а затем фактическим решением на JavaScript. Мне нравится использовать JavaScript, потому что этот язык предлагает множество встроенных объектов, которые позволяют вам использовать отличные ярлыки. Это, и мне это нравится.
1. Проверьте, является ли строка палиндромом (т. Е. Обращением строки)
Допустим, вы получили массив строк, arr, и для каждой строки мы хотим определить, является ли это палиндромом. Верните «Верно» или «Ложь» для каждого элемента.
Псевдокод:
Итак, нам дан следующий массив:
arr = [“The quick brown fox jumped over the sleeping dog", "Oozy rat in a sanitary zoo", "Carla loves chocolate"]
Сначала нам нужен цикл for () или forEach (), чтобы коснуться каждого элемента в массиве.
На каждой итерации нам нужно использовать toLowercase () для всей строки str, чтобы соответствовать регистру. Это важно, потому что «гоночная машина» - это не то же самое, что «гоночная машина» в обратном направлении.
Далее необходимо удалить пробелы из строки str. Это можно сделать с помощью встроенного объекта .replace ().
Теперь нам нужно создать новую строку newStr, равную значению нашего отредактированного (строчные буквы и без пробелов), но в обратном порядке. Это можно сделать с помощью встроенного объекта .reverse ().
Наконец, сравните значения str и newStr. Если они равны, верните True, в противном случае верните False.
Код:
function palindromeChecker(arr){ arr.forEach(element => { element = element.toLowerCase(); element = element.replace(/\s/g, ‘’); newElement = element.split(‘’).reverse().join(‘’); if(newElement == element){ console.log(“it is a palindrome”) return true } else{ console.log(“it is not a palindrome”) return false } }); } arr = [“The quick brown fox jumped over the sleeping dog”,”Oozy rat in a sanitary zoo”,”Carla loves chocolate”] palindromeChecker(arr)
2. Найдите наиболее частый элемент в массиве
Допустим, вам дан массив целых чисел и символов, найдите, какое целое число / символ встречается чаще всего.
Псевдокод:
Допустим, нам дан следующий массив:
arr1 = [2, 'b', 1, 'a', 2, 6, 'a', 3, 'b', 2, 9, 3,2];
Нам нужно найти наиболее часто встречающийся элемент в массиве, и мы можем сделать это с помощью двух вложенных циклов For.
Первый цикл For будет перебирать каждый элемент массива и получать его значение. Затем нам понадобится еще один цикл (внутри первого), чтобы сравнить первый элемент с последующими элементами в массиве и посмотреть, сколько раз он равен будущим элементам в массиве.
Код:
function mostFrequent(arr){ var mf = 1; //most frequent occurrence count (count) var m = 0; // current count var item; for (var i = 0; i < arr.length; i++) { for (var j = i; j < arr.length; j++) { if (arr[i] == arr[j]){ m++; } if (mf < m){ mf = m; } item = arr[i]; } } m = 0; } console.log(item + " "+ mf + " times"); } arr = [2, 'b', 1, 'a', 2, 6, 'a', 3, 'b', 2, 9, 3,2]; mostFrequent(arr)
3. Распечатайте последовательность Фибоначчи с помощью рекурсии.
Учитывая число n, выведите первый n-й элемент последовательности Фибоначчи. Если n = 5, выведите пятое число Фибоначчи.
Псевдокод:
Числа Фибоначчи - это числа, в которых каждое число в ряду после первых двух является суммой двух предыдущих.
Последовательность Фибоначчи выглядит так: 1, 1, 2, 3, 5, 8, 13, 21, 34…
Итак, чтобы сделать это рекурсивно, нам нужно думать об этом так:
Допустим, n = 5, поэтому:
Step 1: fibonacci(4) + fibonacci(3) Step 2: (fibonacci(3) + fibonacci(2)) + (fibonacci(2) + fibonacci(1)) Step 3: ((fibonacci(2) + fibonacci(1)) + 1) + (1 + 1) Step 4: ((1 + 1) + 1) + (1 + 1) Answer = 5
Код:
function fibonacci(n) { if (n <= 2) return 1; return fibonacci(n — 1) + fibonacci(n — 2); } n=5 console.log(fibonacci(n))
Заключение
Удачи на собеседовании! Учитесь, и у вас все будет хорошо!
Примечание команды Plain English
Вы знали, что у нас четыре публикации? Проявите немного любви, предложив им следующие слова: JavaScript на простом английском, AI на простом английском, UX на простом английском , Python на простом английском - спасибо и продолжайте учиться!
Кроме того, мы всегда заинтересованы в продвижении хорошего контента. Если у вас есть статья, которую вы хотели бы отправить в какую-либо из наших публикаций, отправьте электронное письмо на адрес [email protected] с вашим именем пользователя Medium и тем, о чем вы хотите написать, и мы вернуться к вам!