Des questions sur MATLAB?

j'ai programmé dans MATLAB pendant de nombreuses années, mais je suis passé à l'utilisation de R exclusivement au cours des dernières années donc je suis un peu hors de pratique. J'interroge un candidat aujourd'hui qui se décrit comme un expert en MATLAB.

quelles questions Dois-je poser à MATLAB?

certains autres sites avec des ressources pour ceci:

  • "questions D'entrevue de Matlab" on Wilmott
  • "MATLAB Questions et Réponses" sur GlobaleGuildLine
  • "Matlab Questions d'Entrevue" sur CoolInterview
23
demandé sur Shane 2010-03-23 18:25:55

7 réponses

C'est un peu subjectif, mais je vais mordre... ;)

pour quelqu'un qui s'est autoproclamé expert en MATLAB, voici quelques-unes des choses que je m'attendrais personnellement à ce qu'ils soient capables d'illustrer dans une interview:

17
répondu gnovice 2010-03-23 18:15:41

nous avons plusieurs nouvelles personnes dans le département de soutien technique ici à MathWorks. Tout cela est post-embauche (Je ne suis pas impliqué dans l'embauche), mais j'aime apprendre à connaître les gens, donc je leur donne le "Impossible et adaptative MATLAB programming challenge "

je commence avec eux à MATLAB et leur en donne .Fichier MAT contenant des données. Je leur demande de l'analyser, sans autre instruction. Je peux très vite me faire une idée de leur expérience réelle.

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

le défi actuel ne signifie pas grand-chose, j'en apprends davantage en les regardant essayer.

font-ils des scripts, des fonctions, une ligne de commande ou une interface graphique? Semblent-ils avoir une idée claire de là où ils vont avec elle? Quel niveau de confiance ont-ils dans ce qu'ils font?

sont-ils des informaticiens ou un ingénieur qui a appris à programmer. CS majors ont tendance à faire des choses comme fermer leur parenthèse immédiatement, et d'autres petites optimisations comme cela. Les personnes qui ont utilisé MATLAB pendant un certain temps ont tendance à capturer les poignées des commandes de traçage pour une utilisation ultérieure.

à quelle vitesse naviguent-ils dans la documentation? Une fois que je vois qu'ils vont sur le " bon " chemin alors je vais juste changer le défi pour voir à quelle vitesse ils peuvent faire des parcelles, sortir submatrices etc...

je vais jeter quelques vieux trucs du Projet Euler. La plupart du temps, on se pose des questions jusqu'à ce que l'un de nous soit déçu.

13
répondu MatlabDoug 2010-03-23 17:06:28

À Virgule Flottante "Questions 1519230920"

étant donné que Matlab L ' principal (seulement?) le type de données est la matrice de double précision à virgule flottante, et que la plupart des gens utilisent l'arithmétique à virgule flottante -- qu'ils le sachent ou non -- je suis étonné que personne n'ait suggéré de poser des questions de base à virgule flottante. Voici quelques questions flottantes de difficulté variable:


  1. Quelle est la gamme de |x| , un dp fpn IEEE?

  2. approximativement combien y a-t-il de FPN dp IEEE?

  3. Qu'est-ce que machine epsilon ?

  4. x = 10^22 est exactement représentatif en tant que DP fpn. Quelles sont les fpns xp et xs juste en dessous et juste au-dessus de x ?

  5. Combien de DP FPN y a-t-il dans [1,2) ? Combien d'atomes sont sur un bord d'une Un cube de sucre d'un pouce?

  6. expliquer pourquoi sin(pi) ~= 0 , mais cos(pi) = -1 .

  7. pourquoi if abs(x1-x2) < 1e-10 then est un mauvais test de convergence?

  8. pourquoi if f(a)*f(b) < 0 then est-ce un test de vérification de mauvaise signalisation?

  9. Le milieu c de la l'intervalle [a,b] peut être calculé comme suit:

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

    Que préférez-vous? Expliquer.

  10. calculer dans Matlab: a = 4/3; b = a-1; c = b+b+b; e = 1-c; Mathématiquement, e devrait être zéro mais Matlab donne e = 2.220446049250313e-016 = 2^(-52) , machine epsilon (eps). Expliquer.

  11. étant donné que realmin = 2.225073858507201e-308 , et u = rand de Matlab donne un DP fpn uniformément distribué sur l'intervalle ouvert (0,1):

    sont les nombres à virgule flottante [2^(-400), 2^(-100), 2^(-1)]

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

    est également susceptible d'être produit par rand ?

  12. Matlab's rand utilise le RNG Mersenne Twister qui a une période de (2^19937-1)/2 , pourtant il n'y a qu'environ 2^64 DP fpns. Expliquer.

  13. trouver le plus petit IEEE double précision fpn x , 1 < x < 2 , tel que x*(1/x) ~= 1 .

    écrire une fonction Matlab courte pour rechercher un tel nombre.

    Réponse: Alan Edelman, MIT

  14. seriez-vous dans un avion dont le logiciel a été écrit par vous?


Cordialement,

Derek O'Connor


Colin K ne voulait pas m'engager (et probablement me virer) pour avoir dit "que Matlab principale (seule?) le type de données est la double précision flottante point de la matrice".

quand Matlab a commencé c'était tout ce que l'Utilisateur a vu, mais au fil des années ils ont ajouté ce qu'ils appellent les "classes de stockage":, U) int8,16,32,64 et autres. Mais ce ne sont pas vraiment des types parce vous ne pouvez pas faire d'arithmétique utile sur eux. L'arithmétique sur ces classes de stockage sont si lentes qu'elles sont inutiles en tant que types. Oui, ils économisent le stockage, mais à quoi bon si vous ne pouvez pas faire rien qui vaille la peine avec eux?

Voir mon billet (n ° 13) ici:

texte du lien

où je montre que l'arithmétique sur int32s est 12 fois plus lent que double arithmétique et où L'expert en maths Loren Shure dit "Par par défaut, les variables MATLAB sont des tableaux de double précision. Autrefois jours, ceux-ci étaient le SEUL type de tableaux dans MATLAB. De retour alors même les tableaux de caractères ont été stockés sous forme de valeurs doubles."

pour moi le plus grand défaut de Matlab est son manque de types appropriés , comme ceux disponibles en C et Fortran.

au fait Colin, quelle était votre réponse à la question 14?

Derek O'Connor

9
répondu Derek O'Connor 2011-01-23 23:21:21

posez des questions sur son expertise et son expérience dans l'application MATLAB dans votre domaine.

posez des questions sur la façon dont il aborderait la conception d'une application pour sa mise en œuvre dans MATLAB. S'il se réfère à des caractéristiques récentes de MATLAB, demandez-lui de les expliquer, et en quoi elles diffèrent des anciennes caractéristiques qu'elles remplacent ou complètent, et pourquoi elles sont préférables (ou non).

posez des questions sur son expertise avec des structures de données MATLAB. Beaucoup des "experts" de MATLAB que j'ai rencontrés sont très bons pour écrire du code, mais très pauvres pour déterminer quelles sont les meilleures structures de données pour le travail en question. Ceci est souvent une conséquence directe de leur statut d'experts du domaine qui ont ramassé MATLAB plutôt que d'avoir été formés en informatique. Le résultat est souvent un bon code qui doit compenser les mauvaises structures de données.

poser des questions sur son expérience, le cas échéant, avec d'autres langues / systèmes et l'inviter à développer ses observations sur les forces et les faiblesses relatives de MATLAB.

demandez des conseils sur l'optimisation des programmes MATLAB. Attendez les réponses: vectorisation, pré-allocation, élimination des variables inutilisées, etc.

S'interroge sur sa familiarité avec le profileur MATLAB, le débogueur et les outils lint . J'ai récemment découvert que le MATLAB 'expert' dans le coin ici n'avait jamais, en 10 ans à l'aide de l'outil, a trouvé le profileur.

qui devrait vous aider à démarrer.

8
répondu High Performance Mark 2010-03-29 19:13:11

I. je pense que cette récente DONC, la question l'indexation est une très bonne question pour un "expert".

j'ai un tableau 2D, appelez-le 'A'. J'ai deux autres tableaux 2D, appelez-les'ix' et 'iy'. Je voudrais créer une tableau de sortie dont les éléments sont éléments de A dans les paires d'indices fourni par x_idx et y_idx. Je peux le faire cette avec une boucle comme suit:

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

Comment faire sans la boucle? Si Je ne output = A(ix,iy), j'ai l' valeur de A sur toute la gamme de ix) X(iy).

II. Connaissance de base des opérateurs comme la multiplication par éléments entre deux matrices ( .* ).

III. Indexation logique-générer une matrice aléatoire symétrique avec les valeurs de 0-1 et mettre toutes les valeurs au-dessus de T à 0.

IV. Lire un fichier avec des données correctement formatées dans une matrice ( importdata )

V. une autre douceur DONC, la question

j'ai trois tableaux 1d, où les éléments certaines valeurs et je veux comparer chaque élément dans un tableau à tous les éléments dans les deux autres.

par exemple:

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

je veux savoir s'il y a la même chose valeurs dans différents tableaux (dans ce cas il y a 3,5,8)

Btw , Il ya une excellente chance que votre interlocuteur va Google "questions D'entrevue MATLAB" et de voir ce post:)

3
répondu Jacob 2017-05-23 12:25:02

question Possible: J'ai un tableau A de N R,G,B triplets. C'est une matrice 3xn. J'ai un autre tableau B dans la forme 1xn qui stocke une valeur d'index (association à un cluster) pour chaque triplet.

comment tracer les triplets de A dans L'espace 3D (en utilisant la fonction plot3 ), en colorant chaque triplet selon son index en B? (Le but est d'évaluer qualitativement mon clustering)

très, très bons programmeurs qui sont novices en MATLAB ne sera pas en mesure de vous donner une solution efficace (== style MATLAB). Cependant, c'est un problème très simple si vous connaissez votre MATLAB.

2
répondu ypnos 2010-03-23 16:20:17

dépend un peu de ce que vous voulez tester.

pour tester MATLAB fluidité, il y a plusieurs belles questions de débordement de pile que vous pouvez utiliser pour tester par exemple des manipulations de réseaux ( exemple 1 , exemple 2 ), ou vous pouvez utiliser correction-ce problème comme cette question (j'admets, je suis plutôt fan de celle-ci), ou regarder dans this list for some highly Des trucs spécifiques à MATLAB. Si vous voulez être un peu méchant, posez une question comme celle-ci , où la meilleure solution est une boucle, et la solution typique MATLAB-way-of-thinking remplirait juste la mémoire.

cependant, il peut être plus utile de poser des questions de programmation plus générales qui sont liées à votre domaine de travail et voir si elles obtiennent le problème résolu avec MATLAB.

par exemple, depuis que je fais l'analyse d'image, je peux demandez-leur de concevoir une classe pour le chargement d'images de différents formats (un expert de MATLAB devrait savoir comment faire de L'OOP, après tout, il est sorti depuis deux ans maintenant), puis demandez des suivis sur la façon de traiter les grandes images (je veux voir une vérification sur la quantité de mémoire utilisée-ou peut - être qu'ils savent memory.m - et d'entendre comment MATLAB fonctionne habituellement avec des doubles), etc.

1
répondu Jonas 2017-05-23 12:16:55