Собеседование программиста: вопросы, задачи, что спрашивают у разработчика

25 классических вопросов, которые HR-ы задают программистам на собеседованиях — Карьера на vc.ru

Образовательный портал GeekBrains подготовил подборку вопросов, не зависящих от языка программирования и вашего опыта.

Классическое собеседование состоит из предварительного разговора HR и соискателя, выполнения тестового задания, личного диалога с менеджером по подбору персонала и далее – с техническим специалистом.

Обратите внимание

Во время предварительного разговора вас спросят об опыте работы, попросят прислать портфолио, узнают про ваши амбиции, цели, возможность переехать в другой город.

Далее, если вы должным образом отнесётесь к выполнению тестового задания, а ваше резюме устроит менеджеров, вы приедете в офис компании и почти наверняка услышите многое из следующих вопросов.

Категория общих вопросов

В прошлом десятилетии вы могли прийти на собеседование и услышать вопрос: «Что такое программирование?» Трудно представить человека, который в этот момент не растеряется, а многие ещё и разочаруются в будущем работодателе. Однако сегодня подобного непрофессионализма среди HR мало, но пространных вопросов по-прежнему хватает. О них речи не пойдёт, сразу перейдём к тем, которые имеют очевидные ответы:

  • Что такое высокоуровневый и низкоуровневый язык программирования?
  • Что такое полнота языка по Тьюрингу?
  • Какие есть операторы цикла в вашем языке и методы организации цикла без операторов?
  • Что такое компилятор и интерпретатор?
  • Какие бывают типы констант?
  • Дайте определение императивным, функциональным и процедурным языкам программирования. Приведите по 2-3 примера каждого.
  • Что такое методология программирования? Что представляет из себя Agile.
  • Жизненный цикл программы – опишите или изобразите его.
  • Что такое модульное программирование, в чём его плюсы и минусы.
  • Когда вышла последняя версия вашего языка, какие основные изменения и нововведения?

Подобного рода вопросы направлены на выявление не только хорошо обученных программистов, но и тех, кто живёт темой кодинга, интересуется деталями и трендами.

Знание разных методов сортировки и их применяемости позволяет разработчику эффективнее обрабатывать данные. HR-менеджеры, в свою очередь, любят эти вопросы просто потому, что очень многие новички в мире программирования знают лишь пузырьковый метод, да и то теряются, когда слышат это название. А ведь есть ещё несколько подходов. Взгляните, сможете ли вы ответить на все эти вопросы:

  • Изобразите алгоритм сортировки методом пузырька.
  • Изобразите алгоритм быстрой сортировки.
  • Изобразите алгоритм сортировки методом вставки.
  • Изобразите алгоритм сортировки методом слияния.
  • Изобразите алгоритм поразрядной сортировки.

Алгоритмы поиска и замены

Так как в современном мире огромный акцент делается на работу с большим числом данных, то современный разработчик просто обязан знать несколько алгоритмов поиска и замены в массивах чисел и символов. Многие из них перекликаются с вопросами сортировки, но неплохо бы иметь решения и без её использования. Вот что вам могут спросить по этой теме:

  • Напишите программу поиска минимума и максимума в массиве из 100 чисел.
  • Напишите программу поиска пропущенного значения в массиве целых чисел от 1 до 100. Текущий размер массива – 99 чисел, рассмотрите варианты, когда он уже отсортирован или ещё нет.
  • Напишите программу поиска повторяющихся значений в массиве целых чисел от 1 до 100. Текущий размер массива – 101 число, рассмотрите варианты, когда он уже отсортирован или ещё нет.
  • Напишите программу «разворота» массива целых чисел. То есть первое и последнее меняются местами, второе – с предпоследним и так далее. Без использования специальных библиотек.
  • Напишите программу вставки пропущенного или удаления дублированного значения в массиве целых чисел от 1 до 100 без использования специальных библиотек.

Сами по себе описанные задания для написания программ далеки от понятия «сложные».

Однако подготовленный HR или технический специалист может попросить вас всё подробно объяснить и поискать несколько способов решения. Часто – тот, который нравится собеседующему больше всего.

Надо быть к этому готовым, и, если что-то не вспомнили, не паниковать, а спокойно начать рассуждать вслух, показав ход мысли.

Работа со строками

Несмотря на простоту, новички часто допускают ошибки именно в работе со строками: то неправильно отсчитают номер символа из-за незнания основ, то сравнят значение со ссылкой, то вообще запутаются с совместимостью типов. Добавим сюда немного алгоритмов и получим следующие вопросы:

  • Напишите программу, проверяющую являются ли две строки анаграммами друг друга.
  • Напишите программу проверки строки на проверку наличия только символов или только цифр.
  • Напишите программу, подсчитывающую количество гласных и согласных в строке.
  • Напишите программу, которая вытаскивает из резюме основные данные (ФИО, профессия, город, возраст, стаж работы) и передаёт их в соответствующие массивы для дальнейшей работы. Подсказка: необходимо не только разбить текст, но и удалить недопустимые символы, лишние пробелы, присвоить нужный тип.
  • Покажите несколько методов конкатенации строк и объясните различия в исполнении кода.

Также популярностью пользуются вопросы, аналогичные «массивным»: про поиск дублированных символов, в частности, пробелов, задачки на переворот символов без использования библиотек

В данной статье мы целенаправленно не стали писать ответы на вопросы (на некоторые это и невозможно). Во-первых, чтобы не растягивать текст на 5 частей для повышения читабельности.

Во-вторых, чтобы при подготовке к собеседованию вы ориентировались на несколько источников и, как следствие, куда больше бы понимали, чем зубрили.

Ведь в конце концов именно это, а не знание ответов на все базовые вопросы, является отличием готового разработчика от того, кто только хочет им стать.

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать

Источник: https://vc.ru/hr/45846-25-klassicheskih-voprosov-kotorye-hr-y-zadayut-programmistam-na-sobesedovaniyah

15 задач на собеседовании для программиста

В этой статье я расскажу о задачах и вопросах, которые ждут программистов на собеседовании при приёме на работу.

Интервьюеры не отличаются оригинальностью, и один и тот же вопрос можно встретить на 3-5 разных собеседованиях.

Но даже опытные программисты, оказываясь в стрессовой ситуации, нередко теряются и не могут найти ответ на довольно простые вопросы.

Поэтому предлагаю заранее потренироваться, проверить свои знания, а заодно и посмотреть на любимые вопросы интервьюеров. Не исключено, что именно на них Вам предстоит отвечать на следующем собеседовании.

Структуры данных и вопросы об алгоритмах – основная часть любого собеседования для программистов вне зависимости от их специализации

1. Как найти средний элемент в LinkedList за один проход?

Это один из самых популярных вопросов на собеседованиях. Его используют даже в телефонных интервью, чтобы быстро определить общий уровень знаний кандидата на роль программиста и оценить его способность быстро решать нестандартные задачи.

Все программисты знают, что средний элемент в LinkedList несложно найти, определив длину списка, последовательно пройдя все его узлы, пока не дойдёшь до NULL в первом проходе. А затем, пройдя половину из них во втором проходе. Когда же их просят решить эту задачу за один проход, многие теряются.

Большинство задач, поставленных на собеседовании, имеет довольно простое решение, и сидя в спокойной обстановке, Вы без особого труда найдёте его сами.

Решение

В этой задаче достаточно ввести два указателя. Первый будет увеличиваться при прохождении одного узла списка, второй — при прохождении 2 узлов. В момент, когда 2ой указатель дойдёт до конца списка (наткнётся на NULL), первый будет указывать на середину списка.
Успешно справились с этим вопросом? Получите следующий.

Исходный код решения

Исходный код

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 public class Central {public static void main(String args[]) {LinkedList linkedList = new LinkedList();LinkedList.Node head = linkedList.head();linkedList.add( new LinkedList.Node(“1”));linkedList.add( new LinkedList.Node(“2”));linkedList.add( new LinkedList.Node(“3”));linkedList.add( new LinkedList.Node(“4”));linkedList.add( new LinkedList.Node(“5”));linkedList.add( new LinkedList.Node(“6”));linkedList.add( new LinkedList.Node(“7”));linkedList.add( new LinkedList.Node(“8”));linkedList.add( new LinkedList.Node(“9”));linkedList.add( new LinkedList.Node(“10”));LinkedList.Node current = head;int length = 0;LinkedList.Node middle = head;while(current.next() != null){length++;if(length%2 ==0){middle = middle.next();}current = current.next();}if(length%2 == 1){middle = middle.next();}System.out.println(“length of LinkedList: ” + length);System.out.println(“middle element of LinkedList : ” + middle);}}class LinkedList{private Node head;private Node tail;public LinkedList(){this.head = new Node(“head”);tail = head;}public Node head(){return head;}public void add(Node node){tail.next = node;tail = node;}public static class Node{private Node next;private String data;public Node(String data){this.data = data;}public String data() {return data;}public void setData(String data) {this.data = data;}public Node next() {return next;}public void setNext(Node next) {this.next = next;}public String toString(){return this.data;}}}

2. А если LinkedList зациклен?

Решение

Если в списке есть цикл, то в какой-то момент оба указателя будут показывать на один и тот же узел списка.

Уже знаете ответ?

Решение

Можно использовать ту же схему решения. Первый указатель показывает на первый узел в связанном списке, второй на i-тый сначала. Когда второй указатель достигнет конца списка (дойдёт до NULL), первый будет указывать на i-тый элемент с конца.

4.Как определить дублированный элемент в массиве, в котором содержатся элементы типа int от 1 до 100, при условии, что в массиве дублируется только один элемент?

Это вообще задача на логику для средней школы. Многие программисты стремятся её решить длинным перебором/сравнением элементов, но есть куда более рациональный и эстетичный способ.

Догадались, какой?

Решение

  1. Считаем сумму всех чисел от 1 до 100 любым удобным для Вас методом.
  2. Считаем сумму элементов массива.
  3. Вычитаем первое из второго. Получаем… Правильно, получаем значение дублирующегося элемента.
  4. Если надо, находим номера искомых элементов в массиве.

5.Как изменить порядок элементов в строке на обратный без использования вспомогательных классов?

Один из самых популярных экспресс-вопросов. Есть несколько способов выполнения этого задания, но на собеседовании лучше выбрать самый простой. Не забывайте, что Ваш собеседник далеко не всегда может оценить преимущества длинного, но красивого решения.
Неплохо подойдёт что-то типа этого:

Исходный код

package Javatest.company;public class Reverse {    public static String reverseByArray(String s) {        char[] a = s.toCharArray();        char[] b = new char[a.length];        for (int i = 0; i

Источник: https://proglib.io/p/15-questions-for-programmers/

Как программисту провалить собеседование

Правила неуспеха.

18 февраля 20164 минуты23387

Поговорим о том, какие действия и ошибки обеспечат провал на собеседовании. Что написать в резюме, что сказать, как себя вести, чтобы наверняка отпугнуть работодателя?
Если вы еще не программист, но хотите им стать, рекомендуем пройти онлайн-курс по основам программирования. Это бесплатно!

Самые популярные ошибки при составлении резюме

Сергей Дмитриченко, основатель GMS Services, сооснователь AmazingHiring:

«Часто талантливые программисты не любят много писать. Хороший код должен содержать минимально возможное количество строк. При составлении резюме — это не всегда верно.

Здорово, если описание опыта содержит несколько предложений о проектах, в которых вы участвовали, зоне ответственности, используемых технологиях и результатах работы.

Если компания, в которой вы работаете, не очень известная, лучше добавить одно-два предложения о том, чем она занимается. Если имя на слуху — достаточно названия и ссылки на сайт.

Бывает, что при составлении резюме, разработчик ориентируется на технического специалиста.

Важно

Например, такое описание опыта разработчика драйверов под операционную систему windows: C/C++, Asm, x86, x64, DDK, WDF, WDM, не всем рекрутерам позволит распознать правильного кандидата.

С точки зрения же программиста — этого вполне достаточно, чтобы понять специализацию. Пояснение „заклинаний“ кратким текстом поможет рекрутерам быстрее найти вас и правильно оценить.

Программисты не всегда правильно преподносят свой опыт и ожидания от новой работы. Умение емко и четко рассказать о своем опыте, расставить правильные акценты — важная часть интервью. Отдельная тема — ответ на вопрос „чего вы ждете от новой работы?“, часто его сложно добиться.

Важно помнить всем известную истину: собеседование — это двойная продажа (компания продает себя кандидату и наоборот). Если вы согласились на интервью, поищите информацию о компании, будьте вежливы и доброжелательно настроены, проявляйте заинтересованность, будьте пунктуальны.

 

Онлайн-репутация становится все более важным критерием найма. Высокий рейтинг на Stackoverflow, Kaggle, открытые репозитории на GitHub — информация, которую полезно добавлять в резюме. Она может позволить компаниям быстрее понять ваш профессиональный уровень и, возможно, сразу позвать на техническое интервью, вместо выполнения входного тестового задания».

Галина Денина, руководитель HR-службы Redmadrobot:

«Резюме стоит составлять, как минимум, отталкиваясь от того, в компанию какого профиля человек хочет устроиться — занимающуюся аутсорс-разработкой или продуктовую.

Важно правильно расставлять акценты и ни в коем случае не игнорировать сопроводительное письмо, именно в нем можно сакцентировать внимание рекрутера на том, что соискатель считает важным и релевантным.

В Redmadrobot самая частая причина отказа кандидатам — слабые технические навыки. 

Вовсе не нужно упражняться в остроумии и снабжать резюме искрометными (как вам кажется) шутками.

Совет

Такие попытки выделить свое резюме могут поднять настроение сотрудникам HR-отдела, но не сделают его резюме более заметным с профессиональной точки зрения.

Читайте также:  Принцип парето 20-80: анализ и суть закона на примере студента

Компаниям нужны профессионалы, а чувство юмора — это soft skill, который вы сможете ненавязчиво продемонстрировать на финальном испытании. Вообще с юмором нужно быть аккуратнее — вас могут неправильно понять или не воспринять серьезно».

5 способов не пройти собеседование

Павел Настобурко, руководитель AppLead:

  1. Проситься с первого месяца пребывания в компании работать дома или удаленно;
  2. Не иметь никакого представления, о том, чем занимается компания в которую пригласили на собеседование;
  3. Не уделять внимание тестовому заданию, с помощью которого работодатель проверит уровень знаний программиста-соискателя. Частое заблуждение думать о том, что потом результат тестового задания соискателя используют в дальнейшей работе компании. 
  4. Спешить или всячески показывать, что для собеседования выделили только 10 минут;
  5. Быть неспособным сформулировать должность на которую пришел. Вот это действительно очень раздражает.

Топ провальных «кейсов»

Екатерина Артюшина, HR-директор СимбирСофт:

«В нашей практике был кейс несанкционированного собеседования.

Кандидат не просто пришел в компанию без предварительного приглашения или резюме, так еще и с мамой! Молодой человек был выпускником ИТ-специальности вуза, с хорошими оценками, но говорила на собеседовании только мама. Когда дошло до технической части, он почему-то не прошел, то ли давление со стороны навредило, то ли он просто не привык общаться самостоятельно».

Юрий Кондратьев, генеральный директор кадрового агентства Lightman Solutions:

«Могу вспомнить несколько случаев провального (для кандидатов) собеседования на технические позиции. Например, была встреча с разработчиком Java, на встречу он пришел с женой, сел в переговорной вместе с ней, когда его вызвали.

Само собой, встреча приняла несерьёзный оборот. Провальность собеседования в самом способе проведения. Другой случай, программист 1С пришел, чтобы написать тест.

Тест оказался сложным, и вместо ответов на большинство вопросов он тезисно писал рассуждения о жизни и нелегкой судьбе соискателя».

Елена Крачковская, руководитель административного отдела Группы Компаний ХОСТ:

«У нас был кандидат на разработчика Java. Он успешно выполнил тестовое задание, и мы пригласили его на собеседование. Тут-то и выяснилось, что задание за него выполнял дядя, а кандидат просто смотрел на «расшаренный» рабочий стол. На собеседовании он не ответил на самые простые вопросы по заданию и потом долго удивлялся, почему его не взяли на работу — „задание-то он выполнил“».

Тем, кто хочет разобраться в веб-разработке, рекомендуем профессию «Веб-разработчик» от GeekBrains.

Источник: https://geekbrains.ru/posts/how_to_fail

Собеседование: как выявить крутого программиста? – Актуальные новости сферы Информационных технологий на портале ITMozg

На одном из собеседований я попросил очень опытного разработчика встроенного ПО написать простую программу, которая переворачивает строку и выводит результат на экран. И он не смог.

Он правда был крут. Ему можно было дать кучу металлолома, и он превратил бы её в робота, который смог бы передвигаться по комнате. Он работал над спутниками, которые были пущены в эксплуатацию и сейчас находятся на орбите.

Но вот так сложилось, что ему никогда в жизни не приходилось выводить результаты на экран.

У некоторых людей есть настоящий талант задавать правильные вопросы, которые помогут выявить крутых программистов на собеседованию. У других такого таланта нет: они заявляются на собеседование, задают пару вопросов, которые вычитали в Интернете, а потом принимают коллективное решение.

Обратите внимание

А ведь плохой выбор рекрутера влечёт за собой долгосрочные последствия хотя бы потому, что программист на уровне «ниже среднего» непременно снижает общий уровень команды. И наоборот, несправедливое и необдуманное отсекание великолепного кандидата тоже не принесёт ничего хорошего.

Интервью с программистом состоит как минимум из трёх частей. В первой части мы проверяем свои предположения после прочтения резюме. Во второй части мы определяем реальный опыт кандидата. В заключительной части мы проверяем этот опыт с помощью небольших задачек и вопроса по программированию.

Часть I: проверяем свои предположения

Однажды я вместе со своим коллегой собеседовал кандидата. После завершения интервью у меня осталось впечатление, что соискатель вполне неплох, хоть и неидеален.

Мой коллега, напротив, был взбешен: «Он наврал насчёт знания технологии Х. Он никогда с ней не работал. Не наш кандидат». Эта технология Х даже не требовалась для данной вакансии. «Но ведь он наврал о ней.

Я больше не верю ни слову из его резюме».

Конечно, в любом резюме кандидат описывает себя в наиболее положительном свете. Для того, чтобы отделить действительное от воображаемого, при просмотре резюме я пользуюсь золотым правилом:

«Всё написанное в резюме — ложь, пока не доказано обратное».

Если в резюме написано: «Эксперт в такой-то технологии», про себя я думаю, что это означает «знаю название этой технологии». Если в резюме написано «Работал над созданием многопоточной торговой площадки», про себя я замечаю, что это означает «участвовал в выборе цвета фона».

Возможно, я бы ещё верил написанному резюме, если бы как-то на собеседование ко мне не пришёл кандидат с 10 годами опыта, который не смог написать ни строчки кода.

Лучше не строить никаких ожиданий, чтобы не разочаровываться. Всё написанное нужно будет проверить.

Как? Очень просто: задать на собеседовании коварные вопросы о каждом указанном навыке или проекте.

Разрабатывал систему реального времени в качестве курсовой работы.

Важно

Коварные вопросы: Сколько человек работало с вами в группе? 15? А над чем конкретно работали вы? Над очередью сообщений? Здорово! А расскажите, что происходит, когда высокоприоритетная задача посылает сообщение низкоприоритетной задаче?

Разрабатывал с нуля протокол звуковой передачи для беспроводных систем безопасности.

Коварные вопросы: Сколько человек было в команде? Только вы? Ого! И как проходил процесс тестирования? Вы использовали RTP?

Чинил баги в XYZEngine.

Расскажите о баге, который было действительно сложно исправить, и как вы решили эту задачу.

Часть II: определяем реальный опыт кандидата

Большой опыт — хороший индикатор крутости программиста. Опытный программист уже насовершал кучу ошибок, и знает, где ещё можно ошибиться.

У них уже работает нюх на то, какие требования изменятся, а какие, скорее всего, останутся неизменными. Они знают, когда можно расслабиться, а когда нужно быть педантичным.

Это и есть тот настоящий опыт, который увеличивает пропасть между талантами и посредственностями.

Но не каждый опыт одинаково полезен!

Кто-то набирает огромный опыт за пару лет, работая над множеством разных проектов, занимаясь написанием и переписыванием бесчисленных строк кода, ошибаясь и исправляя ошибки. А кто-то десятилетия занимается одним проектом, внося по строчке изменений, не узнавая ничего нового.

Узнать о начале карьеры

Есть множество отличных программистов, которые начали кодить при поступлении в интститут. После выпуска у них уже есть несколько лет опыта.

А вот множество превосходных разработчиков начали изучать программирование чуть ли не в детстве. У меня есть знакомые, которые начали писать свои первые программы в подростковом возрасте.

Эту информацию не указывают в резюме, но её можно выяснить в ходе собеседования:

  • Как вы попали в сферу разработки ПО?
  • Какой был ваш первый язык программирования?

Плотность опыта

Многие превосходные программисты занимаются кодом на работе. Это замечательные зрелые специалисты, которых действительно стоит нанимать. Тем не менее, наличие личных сторонних проектов также является хорошим показателем крутости. Если у кандидата нет личных проектов, плотность опыта соискателя можно выявить по следующим показателям:

  • Работа в малых командах/группах;
  • Работа в большом количестве проектов;
  • Подробные знания о разных уровнях проекта;
  • Опыт внесения основного вклада в развитие проекта.

Часть III: подтверждаем опыт соискателя

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

Мы можем определить ширину и глубину знаний кандидата, задавая вопросы из разных сфер разработки ПО. Конечно, на ваше восприятие навыков соискателя будет влиять собственный опыт.

Вы не можете судить о правильности ответов на темы, которые не знакомы лично вам. Поэтому так мало действительно хороших интервьюеров.

Конкретные темы зависят от требований к должности. Темами для беседы могут быть:

  • структуры данных и алгоритмы;
  • многопоточность;
  • побитовая обработка;
  • распределение памяти;
  • объекты и наследование, паттерны разработки;
  • рекурсия;
  • компиляция и исполнение программ.

Каждая тема включает в себя некоторые базовые вопросы (например, «Что такое семафор?»). Эти вопросы должны быть настолько общими, что каждый, кто хотя бы немного работал в этой сфере, сможет ответить. Помимо общих вопросов нужно задать подробные более узкие вопросы. Что-то не так, если вы просите опытного программиста встроенных систем перевести 0х4с в двоичный код, а он пишет: 4 х 16 + 12.

Тест по программированию

Обычно после первых трёх этапов собеседования я уже понимаю, подходит кандидат или нет, но тест по программированию убирает все сомнения.

Тест необходимо тщательно продумать до собеседования. Если его неправильно задать, ответ, каким бы он ни был, будет бесполезен.

Совет

Во-первых, тест должен основываться на опыте кандидата и особенностях вакансии. Если у вас есть отличная задачка, которую можно решить с помощью конвертирования объектов в пересекающиеся 3D-плоскости, но для текущей вакансии не требуется знание 3D-графики, забудьте об этой задачке.

Во-вторых, вопрос должен быть чётко сформулирован. «Напишите функцию для перемешивания колоды карт» — это несерьёзно. Предложите хедер функции, избегайте двусмысленностей.

Если вы не позаботитесь об этом, кандидат будет решать тот вопрос, который он сам себе придумал, а не тот, который задали вы.

Чтобы не терять время, можно через несколько минут попросить кандидата озвучить свои мысли, чтобы понять, правильно ли он понял вопрос.

Порядок вопросов имеет значение

Порядок, в котором вы задаёте вопросы на собеседовании, оказывает влияние на мыслительный процесс соискателя. Например, я задаю вопрос о хеш-таблицах, когда полагаю, что кандидат знает о них.

Затем дело доходит до теста, который не имеет ничего общего с хеш-таблицами. В большинстве случаев кандидаты начинают использовать в решении хеш-таблицы.

Если я не спрашиваю о хеш-таблицах, кандидаты предлагают более оптимальные решения.

На кандидатов влияет и выбор основного ЯП. Например, вы говорите, что в текущей работе используется Java. Каждый кандидат начнёт клясться и божиться, что он настоящий эксперт в Java, и вообще это его любимый язык. Он будет использовать именно Java во всех тестах, несмотря на то, что не может вспомнить, как в его любимом языке объявляют переменную.

Не замыкайтесь на одном языке

Обратите внимание

Очень соблазнительно сделать выбор в сторону того языка, который используется в вашей компании. Ограничивая свой выбор одним языком, вы оставляете за бортом множество отличных программистов. Не старайтесь определить, насколько круто кандидат программирует на C или Java. Ваша задача: выяснить, насколько круто кандидат программирует на языке, который он знает лучше всего.

Выходим за рамки

Предложенная схема собеседования с программистом подходит не всегда и не всем. Эта схема основана на определении опыта кандидата, и может пропустить действительно крутых программистов с малым опытом, но с большим внутренним потенциалом. Для этого интервьюер может предложить выполнить задание, не требующее написания кода, но выявляющее способность решать задачи.

Данная схема предполагает построение гипотез и использование интуиции. Вам нужно определить, какими чертами должен обладать крутой разработчик.

Поэтому вопрос, на который вы отвечаете сам себе, звучит так: «С какой вероятностью ответ кандидата на тот или иной вопрос подтверждает, что он на самом деле прекрасный программист?».

100%-ной вероятности вы не достигнете, но правильно подобранные вопросы помогут вам подобраться к истине немного ближе.

Перевод: Люся Ширшова. По материалам блога Steve Hanov. 

Источник: http://ITmozg.ru/news/1191

Вопросы на собеседованиях при устройстве на работу программистом

Сегодня я решил поразмышлять о том, какие вопросы задают программистам (и не только) на собеседованиях при устройстве на работу.

В данной заметке, я попытаюсь рассказать о том какие вопросы испытывал я лично на своем опыте трудоустройства, читал в журналах и Интернете или задавал сам, когда мне было необходимо найти человека для работы.

Сразу оговорюсь, что все что будет написано далее — мое личное мнение.

Читайте также:  Как написать курсовую работу самостоятельно: пример и правила написания курсача

Вы можете согласиться с ним, а можете нет. В любом случая, я буду рад Вашим дополнениям к данной записи в комментариях. И так, перейдем непосредственно к нашей теме.

Важно

Вообще, на мой взгляд, собеседование процесс очень интересный, а главное познавательный. Что ожидать от той или иной беседы с руководством организации можно только догадываться, а поэтому в той или иной степени начинаешь ощущать себя студентом, который идет сдавать экзамен. Вопрос готовиться к собеседованию или нет — риторический.

Конечно хорошо когда человек подготавливается, однако настоящих знаний это может не показать (я думаю многие из нас не любили в университетах тех, кто сдавал экзамены зазубривая материал, абсолютно не понимая о чем они говорят, по мне здесь ситуация аналогичная).

К тому же как показывает практика отличные знания Вашей специализации это еще не гарант приема на работу. Вы можете не понравиться фирме как личность, запросить слишком большую ЗП и многое другое. А еще встречаются и такие организации, где для приема на работу на должность программиста не задают ни одного вопроса о программировании.

При этом из сотен претендентов выбирают 1-2 человека.

Да, бывает и такое…
Сейчас я не буду акцентировать внимания на таких общих вопросах, как: «кем вы себя видите«, «чем увлекаетесь» и «что знаете о нашей фирме«… Для чего нужны эти вопросы, я думаю, многим известно, а если нет, то в Интернете полно информации по этому поводу.

А вот о специализированных вопросах мы поговорим поподробнее.
Давайте представим себе, что мы находимся в какой-нибудь фирме и проходим собеседование на только что освободившуюся должность. Мы поговорили на общие темы, и теперь настало время перейти к теории и практике. Как правило все начинается с очень простых вопросов. Например если мы говорим о должности программиста PHP вопрос может выглядеть так (у программистов C# могут спросить тоже самое):

Какие имена переменных допустимы $test = 1; $test123 = 1; $123test = 1; $пришелВася = 1; $_123test = 1;

Так же одним из вопросов может быть «Перечислить типы данных в том или ином языке программирования«. Если речь идет о современных языках программирования стоит помнить про ООП, что это, с чем его едят.

А уж речь зашла про объектно-ориентированное программирование готовьтесь услышать «А чем отличается абстрактный класс от интерфейса«. А если речь идет о PHP, то тут уж от вопроса «Главное отличие PHP4 от PHP5» никуда не денешься.

Однако, если Вы не полный ноль, эти вопросы воспримутся адекватно и ответить на них у Вас труда не составит. А главное это придаст Вам уверенности в себе.

Совет

Далее вопросы могут быть очень разнообразными: а что выведет этот код, а что такое это, а что такое то, а что из перечисленного вы хотя бы раз использовали… Однако в целом все сводиться в достаточно общим вопросам, так как человек не может знать все.

В целом я всегда симпатизировал фирмам, которые свои собеседования проводят именно в таком духе. Для меня эталоном адекватности фирмы является фраза: «Мы сейчас тебя поспрашиваем, но мы прекрасно понимаем что у нас ты будешь учить почти все заново«.

В данном случае фирма ищет не робота, готового с первого же дня приступить к плодотворной работе, а адекватного человека, который умеет что-то делать, и может обучиться делать что-то новое, а главное сможет вписаться в их коллектив. Еще один плюс к копилку фирмы, можно добавить, если на собеседовании выдают тестовое задание.

Во-первых это поможет фирме отсеять реально не заинтересованных в должности людей (такова уж человеческая натура), а во-вторых анализ решения кандидата как ни что покажет, что твориться у него в голове. Тестовые задачи, как правило очень простые: для PHP это может быть «Создание гостевой книги«, для C# «Создание двух приложений, которые могут обмениваться данными«, для JS это может быть задача по созданию формы с проверкой заполненности полей«, для 1с это может быть задача «Создание обработки для списка сотрудников» и т.п.

Все хорошо, если бы так было всегда и у всех. Работодатели встречаются разные и порой очень специфические.

Я никогда не пойму ситуацию, когда одна фирма приглашает на интервью топового работника другой фирмы и просто заваливает его вопросами, на которые тот не в состоянии ответить. Причем причина этого не в слабых навыках работника, а в совершенно разных сферах деятельности.

(например администратор Win сервера абсолютно может быть не компетентен в вопросах Unix, а программист всегда работающий с использованием одного фреймворка, может совершенно не ориентироваться в другом). Так же некоторые фирмы зачем то заваливают кандидатов теоретическими вопросами.

Конечно, основу, а в некоторых моментах, чуть больше, знать нужно. Но все это рано или поздно улетучится, если это постоянно не практиковать. Приведу случай из своего собеседования:

Однажды на одном из собеседований мне задали вопрос, который загнал в меня в ступор. А именно меня спросили: Сколько нормальных форм БД вы знаете? И опишите их. Я порылся в закромах своей памяти и вспомнил давние лекции, которые нам читали в университете года 3 назад. Я ответил что существует 3 основные нормальные формы и еще 2 дополнительные, которые по сути лишь уточняют или конкретизируют первые три. А не мог описать каждую форму, но в целом я мог рассказать об основных моментах, которые они в себе несут. Но как оказалось общие слова их не интересовали. Однако проблема не том, что я не знал точного ответа на этот вопрос, а в том как повели себя люди, которые меня собеседовали. Они сказали мне, что это должен знать каждый программист, который хоть как-то работает с базами данных. “Плохо” – сказали они и покивали головами. После этого, у меня не то что пропало желание работать в данной фирме, я хотел попросить их выйти в соседний кабинет и задать этот вопрос людям которые работают у них сейчас. Не думаю что многие бы смогли ответить полноценно на этот вопрос.

Как говорил наш преподаватель по физике «Да вы что? Зачем учить эти формулы?! У Вас крыша съедет от такого количества информации! Не просто так же люди придумали документации, книги и справочники. Вам нужно лишь уметь правильно ими пользоваться и быть в состоянии самостоятельно разобрать о чем там пишут.»

Как по мне, замечательные слова…

К плану шизофренических вопросов, я так же могу отнести вопросы плана:

Обратите внимание

Чем отличается версия PHP 5.x.3 от 5.x.4?
Как база SQL хранит таблицы на жестком диске?
Какая особенность есть у цикла foreach в PHP?
Почему ++i работает быстрее i++?
Чем отличается стандарт кодирования X от стандарта Y?

А ведь как не печально, все это встречается. И одно дело, когда вопрос задается с целью проверки реакции человека (так как скорей всего ответ он не знает). Другое когда ответ на этот вопрос реально хотят услышать.

Далее предоставлю небольшой список возможных вопросов:
Что рекомендуется делать при использовании свойсвт float:left, float:right?
Есть MySQL таблицы A и B c полями `name` и `value`.

Необходимо поменять местами значения полей `value` в строках, где значение в поле `name` присутствует как в таблице А, так и в таблице В.
Есть массив A. Переставьте его элементы так, чтобы последний элемент стал первым и т.д.


Чем в C# отличается фоновый поток от не фонового?
Отличается ли в C# структура от класса.

Если да то чем?
Какие глобальные переменные есть в PHP?
Если ли в Javascript классы?
Чем отличается POST от GET запроса?
Что такое сложность алгоритма?
Основная проблема многопоточного приложения?
Самое основное отличие 1С от C++ или C#?
Когда целесообразней использовать table вместо div?
Какие парадигмы программирования Вам известны?

Главное, чего не стоит бояться на собеседованиях — это говорить, а еще важней — задавать вопросы.

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

Главное то, что Вы узнаете ответ в стрессовой ситуации, а данные полученные так, как правило, надолго откладываются в голове =)

Источник: https://blog.foolsoft.ru/voprosy-na-sobesedovaniyax-pri-ustrojstve-na-rabotu-programmistom/

“Идеальный кандидат”. 10 Вопросов позволяющих “подобрать нужного” программиста 1С

Статья будет полезна руководителям подразделений/проектов, у кого ещё не сформирован свой фиксированный перечень вопросов по которому они определяют подходит им кандидат или нет.

Так же будет полезна программистам, которые задумываются о карьерном росте, и ещё не сформировали себе окончательный карьерный план, возможно в него имеет смысл внести коррективы.Попытался систематизировать собственный опыт и некоторые знания в области HR, составив некоторый портрет “идеального программиста 1С”.

После того как такой “портрет” получилось построить выбрал все знания/умения/навыки, которыми такой “идеальный” кандидат должен обладать,  выбрал 10 наиболее важных (по моему опыту) и сформулировал вопросы, которыми данные качества/знания/навыки можно проверить.

Важно

Всё это мы неоднократно проделываем на собеседовании, вот только времени обычно на это минуты 2-3, потому как не привыкли же мы заранее продумывать вопросы, которые зададим.

Расшифровка результатов ответов приведена в конце статьи

Вопрос 1 Есть ли у Вас сертификаты 1С? Какие? 

В России мы привыкли пренебрежительно относиться ко “всякого рода бумажкам”. Это общий подход. Жизнь научила нас им не доверять. Привыкли мы к “купленным правам”, “купленным дипломам” и т.п. Тем не менее, таким замечательным инструментом первичной оценки знаний нужно пользоваться. 1С достаточно трепетно относится к выдаче своих сертификатов (что касается “Специалист” и выше).

 “Покупать” сертификаты вряд ли кто будет – не такая это большая ценность, чтобы пытаться, да и не просто это, я думаю. Круг лиц весьма ограничен. А о чём говорит сертификат “1С Специалист”:

– Есть хоть какая-то школа.

При сдачи экзаменов 1С смотрят не просто как человек умеет ездить (программировать), а как человек умеет ездить по правилам (программировать по методикам)

– Как минимум – человек программировать в 1С умеет, может и не большой профи, но умеет, поэтому кучу всевозможных проверок одним вопросом мы отбрасываемЛучше всего если у кандидата несколько сертификатов – по платформе и по прикладному решению с которым ему предстоит работать.Но очень внимательно отнеситесь если у кандидата много сертификатов, либо среди них есть сертификаты вида “Руководитель проекта, ведущий  консультант, Эксперт по техн. вопросам”. Если эти люди ищут работу обычным программистом – на то должны быть другие причины, кроме того уровень желаемого дохода может оказаться несоразмерным вашему бюджету.

Вопрос 2. Вы знакомы с документом “Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8”?

Сам документ находится на любом диске ИТС или http://its.1c.ru/db/v8std#browse:13:-1 

Если нужно проверить знание самого документа, можно спросить из каких частей в общем случае состоит программный модуль системы ответ должен быть примерно таким:

  • заголовок модуля
  • раздел описания переменных
  • процедуры и функции модуля
  • обработчики событий элементов формы
  • обработчики событий
  • раздел инициализации

Лично мое мнение этот документ должен знать каждый программист. Этим отличается квалифицированный программист от “программера”.

Именно из за того что следовать методикам часто не принято, а преобладает “я сам лучше знаю как надо” получаются многие “кривые” прикладные решения.

А если отойти от 1С это основная “болезнь” русских программистов, на эту тему уже множество шуточных статей вроде этой: http://blog.sjinks.pro/humour/76-programmers-russian-indian-chinese-canadian/

Вопрос 3. Вам нужно разработать прикладное решение “с нуля” с чего вы начнете?

Жизненный вопрос, правда? “Правильный” программист вспомнит теорию ещё с университетской скамьи: http://ru.wikipedia.

org/wiki/%D0%A6%D0%B8%D0%BA%D0%BB_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F (анализ требований, составление спецификации)

Ещё более правильный вспомнит что перед сбором и анализом требований хорошо бы провести цельное исследование – познакомиться с бизнес-процессами компании. Ну и совсем правильно будет ещё взять правильную основу для разработки – 1С нам подарила замечательную “библиотеку стандартных подсистем”: http://its.1c.ru/db/bspdoc#browse:13:-1

Читайте также:  В единстве сила: ошеломительные подарки студентам из москвы!

Вопрос 4. Насколько хорошо вы знаете функциональность прикладного решения “…”? Перечислите основные процедуры проведения Документа в решении “…”.

 “Доверяй но проверяй”. Прикладное решение естественно должно использоваться (планироваться к использованию) в вашей организации и заявлено у программиста в резюме как знакомое. Собственно если человек достаточно хорошо знает “внутренности” того или иного прикладного решения, В модули проведения документа он вмешивался не один раз. Изменения, которые не влияют на проведение, часто можно считать “косметическими”. А уж если приходилось добавлять новые документы в рамках функциональности прикладного решения, и добавлять их “правильно”, то эти процедуры надолго отложатся в памяти. Проверить конечно это стало достаточно трудно, т.к. в решениях на 8.2 логика проведения поменялась, и следовательно процедуры поменялись тоже.Для УТ 11 на момент написания статьи они такие:

ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

 ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

 ….ОтразитьДвижение….(ДополнительныеСвойства, Движения, Отказ);
СформироватьСписокРегистровДляКонтроля();ЗаписатьНаборыЗаписей(ЭтотОбъект);

ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

Вообще программист 1С должен хорошо ориентироваться во всех типовых конфигурациях, потому что основная работа квалифицированного программиста не написать код, а грамотно спереть код оттуда где подобная задача уже решена.

Вопрос 5. Перечислите все статьи баланса, которые вы знаете.

Совет

Простой тест на превичное знание бух. и упр. учета. Собственно должно получиться что-то похожее на http://blanker.ru/files/forma-1-balans-2003-q1.

doc В зависимости от вида формы и названия статей можно так определить с каким балансом больше имел дело человек с бухгалтерским или управленческим.

 По большому счету, незнание структуры баланса не говорит о том что перед нами плохой программист, но говорит о том что перед нами “только программист”.

Вопрос 6. Вам знакомо понятие “Валюта Баланса”?

Вопрос убивает 2-х зайцев одним выстрелом: проверяет возможные необдуманные действия и знание бухгалтерского учета.

Казалось бы самый простой ответ “валюта в которой формируется баланс”…

но в этом и есть вся загвоздка – это не так http://www.edudic.ru/buh/705/ Это первичное понятие БУ.

Собственно не знание его означает уже не знание БУ как такового, а ответ “валюта в которой” лишь попытки догадки без знаний, что характеризует кандидата не с лучшей стороны.

Вопрос 7. Технический back ground. Вы знаете MS SQL? Знаете MS AD? Основные сетевые протоколы? 

Проверить знания MS SQL можно к примеру вопросом “Для чего используется статистика MS SQL” или “что такое план запроса”.Собственно статистика нужна для построения плавильных планов запросов, а планы запросов:

http://ru.wikipedia.org/wiki/%D0%9F%D0%BB%D0%B0%D0%BD_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0

MS AD – практически стало стандартом организации ИТ инфраструктуры http://ru.wikipedia.org/wiki/Active_Directory 

Знание сетевых протоколов можно к примеру спросить чем отличается TCP от UDP

http://ru.wikipedia.org/wiki/TCP и http://ru.wikipedia.org/wiki/UDP Собственно отличается TCP предварительной установкой соединения.

Хороший технический Background необходим для квалифицированного программиста, т.к. часто приходится решать смежные задачи: оптимизация базы потребует зания MS SQL, настройка и развертывание сервера потребует первичных знаний AD.

 Организация интеграции с другими системами потребует знания сетевых протоколов и т.д. Очень часто “бедой” “программистов 1С” является то, что кроме 1С собственно ничего и не видели. Особенно если образование не техническое, или “не информационное”.

Это сужает круг задач, которые они могут решать.  

Вопрос 8. Вы знаете другие языки программирования (C++, C#)?

Источник: https://comol.livejournal.com/4792.html

Подготовьтесь к собеседованию на веб-разработчика: ответы на вопросы, часть 1

От автора: неважно, ищете вы работу или нет, веб-разработчик должен знать как базовые, так и продвинутые темы.

Они необходимы для разработки продуктов высокого качества с хорошей производительностью и правильными технологиями.

В этой статье я расскажу про свой опыт поиска работы, а также про возможные вопросы для собеседования разработчика, которые необходимо изучить, чтобы подготовить себя и максимально повысить свои шансы на получение работы мечты.

Прежде чем начнем

Ищите вы работу сейчас или искали ранее, у вас точно были эти периоды. Много страхов, эмоций, желаний, надежд и дилемм. Нравится вам или нет, но вам нужно обратить внимание на некоторые проблемы и быть готовыми к поиску работы.

В моей прошлой статье мы говорили о том, что важно для соискателя, получили советы о том, как максимально повысить свои шансы, а также узнали, как подготовиться к процессу получения работы мечты. Если вы не читали эту статью, рекомендую сначала ее прочесть.

Вернемся к основам

Сложность подготовки зависит от того, сколько времени вы уделяете на данный момент HTML, CSS и JS, а также от требований должности. Очень важно понять основы и внутренности. В большинстве случаев короткого разговора достаточно, чтобы понять, что вы чего-то не понимаете.

Когда что-то не работает, CSS может быть очень странным. JS может быть странным, даже когда все работает.

Задача того, кто вас собеседует – увидеть, как вы рассуждаете, как справляетесь с трудными вопросами, а также понять, насколько ваши знания технологий соответствуют требованиям.

Обратите внимание

Разберем пример. Часто на собеседованиях спрашивают про замыкания – что вернет код ниже:

Современные тенденции и подходы в веб-разработке

Узнайте алгоритм быстрого роста с нуля в сайтостроении

Узнать подробнее

for (var i = 0; i console.log(i), 1000);

Код вернет 5 5 5 5 5, а не 0 1 2 3 4. Если использовать let вместо var или использовать ((j) => { return () => console.

log(j); })(i) – значение I будет сохранено с помощью IIFE в аргумент j в область видимости новой функции.

Этот небольшой вопрос так важен, потому что он собирает в себе важные концепции языка – замыкания, контекст, область видимости, IIFE, а также let и var.

Этот вопрос задают очень часто, но есть множество других вопросов типа «почему это произошло». Отвечая, вы можете вспомнить о Event Loop  — отличный момент, чтобы углубиваться в важный механизм того, «как работает JS».

Может быть еще такой вопрос «как решить эту проблему». Может, вы знаете решение, но опрашивающий может попросить более сложные решения. Например, проблему можно решить с помощью функции bind, но также есть apply и call. В чем разница? К внутренностям JS можно двигаться разными путями.

Принцип работы

Хороший разработчик должен знать принцип работы языка/технологии. Это влияет на принятие решений, поддержание производительности и другие параметры. Вы должны знать, почему необходимо использовать эту технологию, а также какие варианты еще есть. Вы должны обладать этими практическими знаниями – они того стоят.

Принцип работы веба

Что происходит, когда вы нажимаете Go в адресной строке браузера? Вы думали об этом? DNS и т.д… Да, но не только это. DNS-серверы действительно участвуют в процессе, но есть и другие части. В процессе проверяется 4 кэша для поиска карты для подходящего IP. Затем идет TCP рукопожатие и Ack сообщения, которые вы помните из лекций на степень бакалавра.

«Страницу не приносит аист, он ее не загружает и не рендерит. Вам, как разработчику, нужно знать, как это происходит.»

Что будет делать браузер после того, как HTML возвращается в него? Проходит большой процесс парсинга и рендера ресурсов, среди которых элементы, внешние и внутренние скрипты и стили. То где вы расположите теги и скрипты на внешние ресурсы повлияет на производительность и время взаимодействия. Существуют приоритеты, и браузер проделывает очень много работы.

JavaScript работает в один поток

ОК, и что? Вы подумаете об этом и поймете, почему один поток это так важно. Какие плюсы и минусы в этом? NodeJS подходит разработчикам, у которых много I/O и асинхронных событий. Он работает на основе событий.

То есть тяжелые синхронные вычисления типа машинного обучения, скорее всего, не подходят для NodeJS. Кроме того, существуют другие известные языки типа Java или C#. Очень важно знать, что использовать.

Все зависит от способов использования продукта.

Цикл событий, стек вызовов, очередь, куча

Еще одна часть того «как это работает» — это внутренний поток и процесс языка – механизм.

Каков порядок выполнения, где хранятся все переменные, в чем разница между стеком вызовов и очередью, а также что происходит при вызове setTimeout.

Как устроен мир, и как он устроен? Когда вы ответите на эти вопросы, поймете поток JS. Не ходите на собеседование на должность с JS, если не знаете этот механизм. Это критично.

Важно

Что еще очень часто задают на собеседовании – область видимости, контекст, поднятие, как реализовать энкапсуляцию в ES5 и прототип. Если у вас спросили это, не сомневайтесь, вы под полным контролем.

Современные тенденции и подходы в веб-разработке

Узнайте алгоритм быстрого роста с нуля в сайтостроении

Узнать подробнее

Асинхронные колбек-функции, Promises, AsyncAwait и генераторы

JS разработчики используют множество асинхронных операций. HTTP-запросы, планировщики, таймеры и I/O операции – это только часть асинхронных операций. Это не очередное свойство языка – это его хлебные крошки.

Нас могут впечатлить последние разработки новых функций, мы можем проследить их эволюцию. От кошмара с колбеками до кошмара с promises и к генераторам и функциям asyncawait.

Вы должны знать эту эволюцию и уметь ее объяснить.

ES6/7/8

JS находится в продакшене, но он постоянно обновляется. Процесс принятия новых функций в спецификацию крайне упорядоченный и сбалансированный. ECMAScript – это спецификация, формирующая основы JS. ECMAScript стандартизирован организацией по стандартам International в спецификациях ECMA-262 и ECMA-402.

TC39 официально выпустили ECMAScript 2017 в середине 2017. За последний год мы часто упоминали ECMAScript и не зря. ES6 – одна из свежих функций в мире JS. Он везде. ES6 сейчас так популярен из-за своих улучшений, которые сделали разработку удобнее (новый синтаксис и инновации). В ES появились такие вещи, как asyncawait, стрелочные функции, оператор расширения, структура классов и т.д.

Семантический HTML

Вы не видите визуальной разницы между div, footer, main and article, но она огромна. Семантический HTML очень важен, по многим причинам. Люди с ограниченными способностями используют скрин ридеры, а семантика влияет на порядок чтения и выполнения операций.

Для вас, как разработчика, это должен быть стандарт. Легко можно сделать семантический HTML блок, а не просто div внутри div. Так вы приводите разметку к единообразию, а пользователь получает хороший UX – например, h2 на всех страницах будет выглядеть одинаково.

Иногда у вас могут возникать следующие вопросы:

Можно ли помещать div в параграф?

Когда использовать тег article?

Можно ли помещать main внутрь main?

Что лучше подходит к ссылке назад и вперед – тег a или тег button?

Ответы на множество подобных вопросов и рекомендации можно найти в спецификации HTML или на сайте W3C.

Куки, локальное хранилище или хранилище сессии

Куки, локальное хранилище и хранилище сессии широко используются. Часть из них используется почти на всех сайтах, которые вы посещаете.

С их помощью можно хранить локальные настройки типа размера колонок таблицы, порядка и любимых элементов. Локальные данные (локальное хранилище или хранилище сессии) влияют на конкретный браузер, на котором они сохранены.

Если необходимо влиять на все браузеры и машины пользователя, то данные нужно хранить на сервере.

С помощью кук можно проходить авторизацию и проверять надежность источника запроса. Куки автоматически добавятся в запросы, если не передать время жизни.

Локальное хранилище и хранилище сессии не добавятся к запросам на сервер, к ним обращаются только на стороне клиента. Хранилище сессии доступно до тех пор, пока не закрыта вкладка в браузере.

Локальное хранилище доступно и при последующих сессиях в браузере.

Локальное хранилище может сохранять толкьо строковые ключи и значения, а куки может хранить сложные объекты. Эти 3 хранилища ограничены размерами. Локальное хранилище и хранилище сессии могут содержать до 5Мб, а куки до 4Кб. Есть и другие ограничения и различия. Это частая тема на собеседовании, она может быть решением на другие вопросы.

Заключение

К собеседованию можно подготовиться. Подготовка делает вас увереннее и помогает вспомнить темы, которые вы редко используете.

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

Я расскажу вам про некоторые действия и источники, которые помогут упростить подготовку.

Источник: https://webformyself.com/podgotovtes-k-sobesedovaniyu-na-veb-razrabotchika-otvety-na-voprosy-chast-1/

Ссылка на основную публикацию