Как стать автором
Обновить
1010.69
OTUS
Цифровые навыки от ведущих экспертов

Что хотят от кандидатов на собеседовании по написанию кода?

Время на прочтение3 мин
Количество просмотров4.9K
Привет, хабровчане. В преддверии старта курса «Java QA Engineer» делимся с вами продолжением вот этого материала
.




На первых своих собеседованиях я этого не знал. А ведь разработчики не просто наблюдали за мной — они ожидали. Ожидали, что я буду действовать по следующему алгоритму:

Уточнить задание

  • Спросите: «Что вы подразумеваете под словом палиндром?».
  • Это отвечает на вопрос: приступит ли кандидат к решению задачи немедленно — даже не осознавая, что ее технические условия не ясны до конца? Или немного подумает и уточнит требования?»

«Мы имеем в виду такую последовательность, которая читается одинаково слева направо и справа налево. Ваше решение должно быть чувствительно к регистру: маленькая r не идентична большой R».

Начните с примеров

  • Спросите: «В качестве примеров приведены слова «доход» и «шалаш». А что насчет фраз вроде «А роза упала на лапу Азора?». Что насчет пустой строки или строки из одного символа?
  • Это отвечает на вопрос: примет ли кандидат во внимание достаточное количество пограничных случаев? Насколько точным и внимательным он будет?



Прежде чем приступить к описанию кода, кратко ознакомьте интервьюера с алгоритмом


Как кандидат подходит к решению проблемы? Проговаривает ли он свои мысли вслух, чтобы интервьюер их услышал?

Например, string s = "alla".

Мы можем воспользоваться вспомогательным методом для Строки Java, charAt(int i). Введите индекс строки в метод, и он выведет символ в таком индексе:

s.charAt(0) == 'a'
s.charAt(1) == 'l'
s.charAt(2) == 'l'
s.charAt(3) == 'a'

Чтобы узнать длину строки, можно использовать метод length():

s.length == 4

Чтобы узнать последний символ, можно использовать:

int len = s.length
s.charAt(len - 1)

Мы начали отсчет с 0, поэтому последний символ будет «длина минус 1».

Давайте назовем первый символ «first», а последний «last».

  • Если первый символ s.charAt(first) не совпадает с s.charAt(last), то это не палиндром. Выводим false.
  • Если первый символ s.charAt(first) совпадает с s.charAt(last), мы переходим к оценке следующего набора символов, сдвигаясь на один символ от «first» и от «last». Если все совпадает, вывести true.
  • Проверив алгоритм вместе с интервьюером, можно приступать к написанию кода:

public boolean isPalindrome(String s) {
    int first = 0;
    int last = s.length() - 1;
    while (first < last) {
        if (s.charAt(first) != s.charAt(last)) {
            return false;
        }
        first++;
        last--;
    }
    return true;
}

Отладка и тестирование


  • Возьмите изначальные тестовые примеры и попытайтесь представить: что произойдет, если вставить их в код.
  • Интервьюеры проверяют вашу внимательность при отладке. (Заметите ли вы ошибки в собственном коде без подсказок со стороны?).
  • Интервьюеры будут давать подсказки, если вы сумели произвести на них хорошее впечатление. (Если мы будем давать кандидату подсказки, воспользуется ли он ими? Готов ли он прислушаться к чужому мнению? Умеет ли он работать с людьми, занимающими более высокие должности?).

Покажите свой код другим людям и соберите их отзывы


Я показал свое решение задачи про палиндром своему другу-разработчику. Он скорчил гримасу: «Зачем ты использовал переменные «first» и «last»? И зачем задействовал цикл «loop», если можно обойтись «for»? Все можно было сделать короче, элегантнее и быстрее:

public boolean isPalindrome(String s) {
    int len = s.length;
    for (int i = 0; i < len / 2; i++) {
        if ( s.charAt(i) != s.charAt(len - 1 - i)) {
            return false;
        }
    }
    return true;
}

Что дальше


Овладеть языком программирования в одночасье не получится. Поэтому лучше следовать такому алгоритму:

  • Найти в интернете задачи по программированию базового уровня.
  • Попробовать решить их с помощью бумаги и ручки.
  • Если вы не можете их решить, ознакомьтесь с официальной документацией языка программирования и посмотрите, какие встроенные методы могут помочь вам.
  • Сформулируйте собственное решение перед тем, как искать чужое. Если вы сами будете собирать информацию и изучать ее, появится вероятность того, что эта информация навсегда осядет в вашей голове.
  • Не устраивайте сеансы зубрежки. Так вы просто сохраните информацию в краткосрочной памяти.
  • Практикуйтесь короткими заходами, по 15 минут в день. Так информация переместится в долгосрочную память, и вы сможете вспомнить ее даже при экстремальном стрессе на собеседовании.
  • Не подвергайте себя всем этим мучениям только ради того, чтобы пройти тест на доске. Цельтесь выше! Поставьте перед собой задачу стать более профессиональным программистом!
Теги:
Хабы:
Всего голосов 11: ↑4 и ↓7-3
Комментарии8

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS