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

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

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

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

22
задан Shane 23 March 2010 в 18:47
поделиться

7 ответов

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

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

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

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

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

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

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

8
ответ дан 29 November 2019 в 04:06
поделиться

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

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

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

2
ответ дан 29 November 2019 в 04:06
поделиться

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

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

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

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

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

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

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

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

13
ответ дан 29 November 2019 в 04:06
поделиться

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

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

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

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

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

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

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

V. Вот еще один интересный вопрос SO

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

Например:

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

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

Между прочим , есть отличный шанс, что ваш собеседник загуглиет "Вопросы для интервью MATLAB" и увидит этот пост :)

3
ответ дан 29 November 2019 в 04:06
поделиться

Немного зависит от того, что вы хотите проверить.

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

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

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

1
ответ дан 29 November 2019 в 04:06
поделиться

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

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

17
ответ дан 29 November 2019 в 04:06
поделиться

Вопросы с плавающей запятой

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


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

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

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

  4. x = 10 ^ 22 точно может быть представлен как dp fpn. Что такое fpns xp и xs чуть ниже и чуть выше x?

  5. Сколько dp fpns в [1,2) ? Сколько атомов находится на краю 1-дюймового кубика сахара?

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

  7. Почему , если abs (x1-x2) <1e-10, то плохая проверка сходимости?

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

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

      c1 = (a + b) / 2, или 
    c2 = a + (ba) / 2, или 
    c3 = a / 2 + b / 2. 
     

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

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

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

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

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

    равно вероятно, будет выведен rand?

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

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

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

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


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

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

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

Для меня самым большим недостатком Matlab является отсутствие надлежащего типы, например, доступные в C и Fortran.

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

9
ответ дан 29 November 2019 в 04:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: