Подтвердить что ты не робот

Вопросы интервью MATLAB?

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

Какие вопросы по собеседованию MATLAB я должен задать?

Некоторые другие сайты с ресурсами для этого:

4b9b3361

Ответ 1

Это немного субъективно, но я буду укусить...;)

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

Ответ 2

Мы получили несколько новых сотрудников в отделе технической поддержки здесь, в MathWorks. Это все после найма (я не участвую в найме), но мне нравится познакомиться с людьми, поэтому я даю им "Невозможную и адаптивную задачу программирования MATLAB"

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

http://blogs.mathworks.com/videos/2008/07/02/puzzler-data-exploration/

Реальная задача не означает ничего, я больше узнаю от того, как они ее пытаются.

Выполняют ли они скрипты, функции, командную строку или графический интерфейс? Кажется ли у них четкое представление о том, куда они идут? Каков уровень их уверенности в том, что они делают?

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

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

Я выброшу несколько старых вещей из Project Euler. В основном, просто поднимайте вопросы, пока один из нас не остановится.

Ответ 3

Вопросы с плавающей точкой

Учитывая, что основной (только?) Тип данных Matlab является матрицей с плавающей запятой двойной точности, и что большинство людей используют арифметику с плавающей запятой - знают они это или нет - я удивлен, что никто не предложил задавать основные вопросы с плавающей запятой. Вот несколько вопросов с плавающей запятой переменной сложности:


  1. Каков диапазон |x|, IEEE dp fpn?

  2. Приблизительно сколько существует IEEE dp fpns?

  3. Что такое машинный эпсилон?

  4. x = 10^22 точно представлен в виде dp fpn. Что такое XPN XP? а хз чуть ниже и чуть выше х?

  5. Сколько дп фпнс в [1,2)? Сколько атомов находится на краю 1-дюймовый кусочек сахара?

  6. Объясните, почему sin(pi) ~= 0, но cos(pi) = -1.

  7. Почему if abs(x1-x2) < 1e-10 then плохой тест на сходимость?

  8. Почему if f(a)*f(b) < 0 then плохой тест на проверку знака?

  9. Средняя точка c интервала [a,b] может быть рассчитана как:

     c1 = (a+b)/2, or 
     c2 = a + (b-a)/2, or
     c3 = a/2 + b/2. 
    

    Что ты предпочитаешь? Объясните.

  10. Рассчитать в Matlab: a = 4/3; b = a-1; c = b+b+b; e = 1-c; Математически e должен быть равен нулю, но Matlab дает e = 2.220446049250313e-016 = 2^(-52), машинный эпсилон (eps). Объясните.

  11. Учитывая, что realmin = 2.225073858507201e-308 и Matlab u = rand дают dp fpn, равномерно распределенные по открытому интервалу (0,1):

    Являются ли числа с плавающей запятой [2^(-400), 2^(-100), 2^(-1)]

    = 3.872591914849318e-121, 7.888609052210118e-031, 5.000000000000000e-001

    с одинаковой вероятностью будет выводиться по rand?

  12. Matlab rand использует Mersenne Twister rng, который имеет период  (2^19937-1)/2, но есть только около 2^64 dp fpns. Объясните.

  13. Найдите наименьшее значение IEEE двойной точности fpn x, 1 < x < 2, такое, что x*(1/x) ~= 1.

    Напишите короткую функцию Matlab для поиска такого числа.
     Ответ: Алан Эдельман, MIT

  14. Вы бы полетели на самолете, программное обеспечение которого было написано вами?


Колин К не будет нанимать меня (и, вероятно, увольнять) за то, что сказал Основной (только?) Тип данных Matlab - плавающая двойная точность матрица точек ".

Когда Matlab начал, это было все, что видел пользователь, но с годами они добавили то, что они скромно называют "классы хранения": один, (u) int8,16,32,64 и другие. Но это не совсем типы потому что вы не можете сделать ПОЛЕЗНУЮ арифметику на них. Арифметика на эти классы хранения настолько медленны, что они бесполезны как типы. Да, они сохраняют память, но какой смысл, если вы не можете сделать что-нибудь стоящее с ними?

Смотрите мой пост (№ 13) здесь, где я показываю, что арифметика для int32s в 12 раз медленнее, чем двойная арифметика и где MathWorkser Лорен Шуре говорит: по умолчанию переменные MATLAB являются массивами двойной точности. В старину дни, это были ЕДИНСТВЕННЫЕ виды массивов в MATLAB. Тогда даже массивы символов были сохранены как двойные значения. "

Для меня самый большой недостаток в Matlab - это отсутствие правильных типов, такие как те, что доступны в C и Fortran.

Кстати, Колин, каков был твой ответ на вопрос 14?

Ответ 4

Задайте вопросы о своем опыте и опыте применения MATLAB в вашем домене.

Задайте вопросы о том, как он подходит к разработке приложения для реализации в MATLAB. Если он ссылается на последние особенности MATLAB, попросите его объяснить их и как они отличаются от старых функций, которые они заменяют или дополняют, и почему они предпочтительнее (или нет).

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

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

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

Спросите о его знакомстве с профайлером, отладчиком MATLAB и lint. Недавно я обнаружил, что эксперт MATLAB в углу здесь никогда, через 10 лет с помощью инструмента, не нашел профайлера.

Это должно заставить вас начать.

Ответ 5

я. Я думаю, этот недавний вопрос SO  по индексированию - очень хороший вопрос   для "эксперта".

У меня есть 2D-массив, назовите его "A". у меня есть два других 2D-массива, назовите их 'ix' и 'iy'. Я хотел бы создать выходной массив, элементами которого являются элементы A на индексных парах предоставляемые x_idx и y_idx. я могу сделать это с петлей следующим образом:

for i=1:nx
     for j=1:ny
         output(i,j) = A(ix(i,j),iy(i,j));
     end 
end

Как я могу сделать это без цикла? Если Я делаю вывод = A (ix, iy), я получаю значение A во всем диапазоне (IX), Х (IY).

II. Базовые знания операторов, такие как умножение по элементам между двумя матрицами (.*).

III. Логическая индексация - генерирует случайную симметричную матрицу со значениями из 0-1 и устанавливает все значения выше T в 0.

IV. Прочитайте файл с некорректно отформатированными данными в матрицу (importdata)

V. Здесь еще один сладкий вопрос SO

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

Например:

a=[2,4,6,8,12]
b=[1,3,5,9,10]
c=[3,5,8,11,15]

Я хочу знать, есть ли такие же значения в разных массивах (в этом случай есть 3,5,8)

Btw, у вас есть отличный шанс, что ваш собеседник будет отвечать на вопросы Google "Вопросы о MATLAB-интервью" и посмотреть это сообщение:)

Ответ 6

Возможный вопрос: У меня есть массив A из n R, G, B триплетов. Это матрица 3xn. У меня есть другой массив B в форме 1xn, который хранит значение индекса (ассоциация с кластером) для каждого триплета.

Как построить триплеты A в 3D-пространстве (используя функцию plot3), окрашивая каждый триплет по его индексу в B? (Цель состоит в том, чтобы качественно оценить мою кластеризацию)

Действительно, действительно хорошие программисты, которые новичков MATLAB не смогут дать вам эффективное (== MATLAB style) решение. Однако это очень простая проблема, если вы знаете свой MATLAB.

Ответ 7

Зависит от того, что вы хотите проверить.

Чтобы протестировать MATLAB, есть несколько хороших вопросов, которые вы могли бы использовать для тестирования, например. массивные манипуляции (пример 1, пример 2), или вы можете использовать исправления - такие проблемы, как этот вопрос (я признаю, что я очень люблю этот), или загляните в этот список для некоторых очень MATLAB специфический материал. Если вы хотите быть немного средним, задайте такой вопрос, как этот, где лучшим решением является цикл, и типичное решение MATLAB-образ мышления просто заполнит память.

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

Например, поскольку я занимаюсь анализом изображений, я могу попросить их разработать класс для загрузки изображений разных форматов (эксперт MATLAB должен знать, как делать ООП, в конце концов, он отсутствовал уже два года) а затем спросите о том, как обращаться с большими изображениями (я хочу посмотреть, как будет использоваться память - или, может быть, они знают memory.m - и узнать о том, как MATLAB обычно работает с удвоениями) и т.д..

Ответ 8

Я хочу какой-нибудь пример или код для сокращения выбора функций Последовательный обратный выбор Pca Нейронная сеть И так далее. Кто может мне помочь?