2009-06-19 17 views
4

Kann jemand ein paar grundlegende Telefonbildschirm Interview Fragen für zukünftige Mac OS X Desktop-Anwendung Entwickler vorschlagen?Telefonbildschirmfragen für Mac OS X-Entwicklerpositionen?

Nur etwas, um zu bestimmen, ob der Kandidat wirklich eine echte Entwicklung auf dem Mac gemacht hat, im Gegensatz zu jemandem, der einige Schlagworte kennt und versucht, sich in ein persönliches Interview hineinzukopieren.

TIA.

+1

Bitten Sie sie ihre Berichterstattung über Fehler zurück zum Benutzer. Wenn sie irgendwelche Details zu dem Problem angeben, anstatt eine hübsche Fehlerbox in 10 verschiedenen Sprachen zu öffnen ... sie sind nicht für den Mac entwickelt worden. –

+0

@Justin: Oder wenn sie haben, hat es nie das Tageslicht gesehen ... –

+0

"Lesen/verwenden Sie Stack Overflow?". Gut, eh? :-) –

Antwort

5

Fordern Sie als leitender Entwickler einige Informationen über ein Radar an, das sie eingereicht haben. Jeder leitende Entwickler sollte irgendwann einen Cocoa-Bug entdeckt haben, und ein guter Entwickler wird ein Radar-Gerät gefunden haben.

Ich stimme w/Lou über Speicherverwaltung Fragen. Jeder seriöse Mac-Entwickler sollte die Regeln der Speicherverwaltung kalt kennen, einschließlich der three magic words. Wer sagt "Ich benutze nur Garbage Collection" hat sich nicht sehr lange entwickelt, weil es nur mit Leopard kam, und es ist nicht auf dem iPhone verfügbar.

Ein leitender Entwickler sollte die Speicherverwaltungsregeln von Core Foundation kennen und in der Lage sein zu erklären, was "gebührenfreies Bridging" ist. (Ein echter CocoaHead sollte dann poetisch darüber wanken, wie unglaublich und elegant ein Konzept gebührenfreies Bridging ist, aber vielleicht bin ich nur das.)

Ein älterer Entwickler sollte in der Lage sein, mehrere Frameworks außerhalb von Cocoa zu benennen. Insbesondere sollten sie mit mindestens einem Framework vertraut sein, das standardmäßig nicht verlinkt ist und das sie zu ihrem Projekt hinzufügen müssen (jeder ernsthafte Entwickler wird auf dieses Problem gestoßen sein).

Jeder Mac-Entwickler sollte in der Lage sein, leicht zu erklären, was EXC_BAD_ACCESS verursachen würde.

Jeder Mac-Entwickler sollte wissen, was passiert, wenn Sie eine Nachricht an null senden.

Ein leitender Entwickler sollte in der Lage sein, eine NSInvocation zu erklären, zumindest auf der Ebene, wie Sie sie verwenden würden.

Ein leitender Entwickler sollte in der Lage sein, die Verwendung der Methode Swizzling, zumindest in groben Zügen zu erklären.

Jeder Mac-Entwickler sollte in der Lage sein, das MVC-Paradigma zu erklären und zu beschreiben, wie man ein einfaches Problem in Models, Views und Controller aufteilt.

+0

Bitten Sie darum, Autorelease-Pools zu erklären und fragen Sie nach Setter- und Getter-Methoden. Bitten Sie sie, eine Getter- und Setter-Methode für ein Objektfeld zu programmieren. Schlüssel/Wert-Codierung wäre eine lustige Sache, die man einbeziehen sollte. Und ist Methode nicht Swizzling böse? Sie haben keinen Quellcode für das Framework. Woher weißt du, was du brichst? In der Win32-Welt nennen wir es "hooking", und es ist ein bisschen anders gemacht, und es war die Quelle von unglaublichen Schmerzen für mich. Ich würde fast jede Alternative finden und sie verwenden, bevor ich einen Low-Level-Hack berühren würde. (Anscheinend erfordert jede Version von objective-C-Laufzeit unterschiedliche Hacks) –

+0

Vereinbaren Sie Zugriffsmethoden und insbesondere, wie Sie eine codieren. KVC ist auch gut. Method Swizzling ist die Grundlage von KVO, also sollte ein Seniorentwickler es verstehen, und es zeigt ein Verständnis der Implementierungsdetails von ObjC, was ich von sr erwarte. Entwickler. Eine weitere Möglichkeit, die Frage zu stellen, lautet: "Wenn Sie einen Setter für ein beobachtetes KVO-Objekt aufrufen, wird wishChangeValueForKey: automatisch aufgerufen, obwohl er nicht im Setter-Code enthalten ist. Wie wird dies erreicht?" Ein Zwischenentwickler sollte zumindest von diesem überraschenden Verhalten gestört sein, und ein sr. Entwickler sollten ungefähr wissen, wie es gemacht wird. –

+0

Oh, und Methode Swizzling ist unglaublich nützlich in Debugging und Performance-Analyse, wenn Sie wissen möchten, wenn eine Framework-Methode aufgerufen wird (indem Sie einfach Protokollierungscode injizieren können). Aber nein, es sollte nicht breit verwendet werden (und sehr selten ist es in dem Code, den ich angeschaut habe). Es ist sehr verwirrend. –

0

Ich frage gerne: "Wenn Sie Sprache X (Objective-C 2.0) ändern könnten, welche Funktion würden Sie hinzufügen (oder entfernen)?"

Dies zeigt normalerweise, dass ein Kandidat die Sprache beherrscht. Für ein persönliches Interview bitte ich sie immer, ein sehr kleines Programm auf Papier zu schreiben.

0

Beschreiben Sie die grundlegende Speicherverwaltung in Objective-C. Erwar- ten Sie, dass sie die Eigenschaften Retain, Release, AutoRelease, GC, Auto Retain usw. verstehen.

Beschreiben Sie die ObjC-Unterstützung für statische und dynamische Bindungen. Vergleiche Kontrastverbrauch von jedem.

Lassen Sie sie etwas in ObjC programmieren - etwas Einfaches, aber sie müssen es Ihnen am Telefon vorlesen - ich denke, stellen Sie sicher, dass es etwas braucht, das nicht nur C ist, wenn es Sie interessiert.

+0

Wenn mich jemand bat, ihnen ein Programm über das Telefon zu lesen, würde ich lachen und auflegen! –

+0

Tut mir leid, aber ich habe es satt, dass Nicht-Programmierer versuchen, Jobs zu bekommen. Ich lasse sie etwas wie FizzBuzz rezitieren, bevor sie reinkommen. –