MATLAB вопросы интервью? - PullRequest
       9

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

22 голосов
/ 23 марта 2010

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

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

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

Ответы [ 7 ]

17 голосов
/ 23 марта 2010

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

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

13 голосов
/ 23 марта 2010

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

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

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

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

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

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

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

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

9 голосов
/ 08 мая 2010

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

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


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

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

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

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

  5. Сколько дп fpns в [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's u = rand дают dp fpn, равномерно распределенные по открытому интервалу (0,1):

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

    = 3,872591914849318e-121, 7,888609052210118e-031, 5,000000000000000e-001

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

  12. Matlab's 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?

8 голосов
/ 23 марта 2010

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

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

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

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

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

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

Это должно помочь вам начать.

3 голосов
/ 23 марта 2010

I. Я думаю этот недавний ТАК вопрос по индексации это очень хороший вопрос для «эксперта».

У меня есть 2D-массив, назовите его «A». я имею два других 2D-массива, назовите их «ix» и "я". Я хотел бы создать выходной массив, элементами которого являются элементы А в индексных парах предоставляется 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), я получаю значение А во всем диапазоне (IX) X (гу).

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

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

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

V. Вот еще один сладкий ТАК вопрос

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

Например:

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

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

Кстати , есть отличный шанс, что ваш собеседник отправит в Google "вопросы интервью MATLAB" и увидит этот пост

2 голосов
/ 23 марта 2010

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

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

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

1 голос
/ 23 марта 2010

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

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

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

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

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