Видеоурок:

Итак, вы прошли собеседование на летней стажировке своей мечты, здорово! Рекрутер только что сказал вам, что вас ждут проблемы с кодированием / техническое собеседование (иногда это «технический экран»).

Будь то собеседование в стиле «белой доски», на котором вы разговариваете напрямую с другими инженерами, или просто испытание 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 и тем, о чем вы хотите написать, и мы вернуться к вам!