Недавно я разговаривал с младшим веб-разработчиком, которому пришлось нелегко с телефонным собеседованием с Uber. Я подумал, что поделюсь проблемами, над которыми мы работали, и посмотрю, что думает сообщество Medium!

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

Середина

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

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

Пример 1:

Input: numerator = 1, denominator = 2
Output: "0.5"

Пример 2:

Input: numerator = 3, denominator = 1
Output: "3"

Пример 3:

Input: numerator = 2, denominator = 3
Output: "0.(6)"

Некоторые люди просили дать несколько подсказок:

  • Здесь нет сумасшедшей математики высокого уровня, просто вспомните свои дни с долгим делением
  • Попробуйте распознать узор на нескольких примерах. С 1/3 повторяющаяся часть легко, но как насчет чего-то вроде 4/333. Вы видите закономерность?
  • Попробовав их, вы также заметите, как только остаток начнет повторяться, как и разделенный результат.
  • Здесь крайние случаи могут навредить вам. Действительно подумайте о своих тестовых примерах и перечислите их как можно больше. Тестируйте, тестируйте и тестируйте свой код!

Середина

Учитывая два списка закрытых интервалов, каждый список интервалов попарно не пересекается и отсортирован.

Верните пересечение этих двух списков интервалов.

(Формально закрытый интервал [a, b]a <= b) обозначает набор действительных чисел x с a <= x <= b. Пересечение двух закрытых интервалов - это набор действительных чисел, который либо пуст, либо может быть представлен как закрытый интервал. Например, пересечение [1, 3] и [2, 4] равно [2, 3].)

Пример 1:

Input: A = [[0,2],[5,10],[13,23],[24,25]], B = [[1,5],[8,12],[15,24],[25,26]]
Output: [[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]
Reminder: The inputs and the desired output are lists of Interval objects, and not arrays or lists.

Примечание.

  1. 0 <= A.length < 1000
  2. 0 <= B.length < 1000
  3. 0 <= A[i].start, A[i].end, B[i].start, B[i].end < 10^9

* Я также видел этот вопрос на Facebook *

Попробуйте эти два и посмотрите, как вы поступите на телефонном собеседовании Uber с младшими разработчиками! Разработчики в моих предыдущих сообщениях в блоге Интервью в Google - оценка Javascript, Онлайн-оценка Microsoft и Интервью в Facebook - JavaScript на сайте были очень полезны, и в комментариях есть несколько хороших обсуждений / решений.

Удачи и до встречи в комментариях!