it-swarm-eu.dev

Was ist Ihr Lieblingsproblem mit Whiteboard-Interviews?

Wie der Titel schon sagt, was ist Ihr Lieblingsproblem bei Whiteboard-Interviews und warum hat es sich für Sie als effektiv erwiesen?

Junior, Senior, Java, C, Javascript, PHP, SQL, Pseudocode usw.

52
Nicole

Ich bitte den Kandidaten, eine Lösung für ein Problem zu entwerfen, auf das ich tatsächlich gestoßen bin in meiner täglichen Arbeit. Dabei versuche ich, einen Dialog zwischen mir und dem Kandidaten herzustellen. Ich versuche über das Design zu diskutieren, das er baut, als hätte ich noch nie über das Problem nachgedacht.

Ich versuche zu bewerten, ob wir uns verstehen können und ob wir ohne Verwirrung über ein technisches Problem sprechen können.

Konkretes Beispiel

(Für einen Java Desktop-Entwickler)

Entwerfen Sie eine API für Navigationsverlauf eines Webbrowsers (vorherige Seite, nächste Seite, Liste der 10 vorherigen Seiten), die in vielen Teilen der Anwendung wiederverwendbar sein kann (hier gebe ich konkrete Beispiele in unserer App). Skizzieren Sie dann eine Implementierung.

Ich mag dieses, weil es einfach genug ist, leicht zu veranschaulichen ist, Schritt für Schritt gelöst werden kann (zusätzliche Verhaltensweisen hinzufügen, ohne alles zu beschädigen), es ermöglicht, über Edge-Fälle und Fehlerbehandlung zu sprechen, und es ermöglicht auch, über Daten zu sprechen Strukturen.

22
barjak

Ich fand dieses äußerst aufschlussreich, wenn ich Kandidaten interviewte und diejenigen herausfilterte, die nichts damit zu tun hatten. Es ist ähnlich komplex wie Fizz Buzz, konzentriert sich jedoch auf Datenbankkenntnisse.

Assuming the following basic  table structure
Documents (DocID, DocDate)
Keywords (KeyWordID, KeyWord)
DocumentKeywords (DocID,KeywordID)

Write a query to return the following:
Part 1: Documents with a DocDate after 4/1/1995  
Part 2: Documents that contain the keyword "Blue"  
Part 3: Documents that contain the either the keyword "Blue" or "Yellow"
Part 4: Documents that contain the both the keywords "Blue" and "Yellow"

Ich lasse sie es in jeder gewünschten SQL-Variante schreiben und bin bei kleinen Syntaxproblemen nicht zu wählerisch. Ich möchte hauptsächlich wissen, dass sie grundlegende relationale DB-Konzepte verstehen.

Die meisten Kandidaten können Teil 3 ohne Probleme bestehen. Sie werden erstaunt sein, wie viele denken, dass die Antwort auf Teil 4 nur darin besteht, den Operator in der where-Klausel von OR zu AND) zu ändern.

40
JohnFx

"Zeichnen Sie für mich auf das Whiteboard das Design des letzten Projekts, an dem Sie gearbeitet haben, ohne mir sensible Details preiszugeben."

20
Uberto

Implementieren Sie strcpy, strcmp und Freunde.

14
fredoverflow

Mein Favorit, der einige Disziplinen umfasst, ist das Zählen der Anzahl der Knoten in einem Binärbaum unter Berücksichtigung der Schnittstelle (in C #):

public interface IBinaryTree<T>
{
    IBinaryTree<T> Left
    {
        get;
    }

    IBinaryTree<T> Right
    {
        get;
    }

    T Data
    {
        get;
    }

    // Other properties and methods not germane to this problem.
}

und nur zum Spaß, hier ist die Implementierung, obwohl der Befragte dies nicht sehen muss.

public sealed class BinaryTree<T> : IBinaryTree<T>
{
    private readonly IBinaryTree<T> left;

    private readonly IBinaryTree<T> right;

    private readonly T data;

    public BinaryTree(
        IBinaryTree<T> left,
        IBinaryTree<T> right,
        T data)
    {
        this.left = left;
        this.right = right;
        this.data = data;
    }

    public IBinaryTree<T> Left
    {
        get
        {
            return this.left;
        }
    }

    public IBinaryTree<T> Right
    {
        get
        {
            return this.right;
        }
    }

    public T Data
    {
        get
        {
            return this.data;
        }
    }

    // Other properties and methods not germane to this problem.
}

und die Assistentenklasse:

public static class BinaryTreeNodeCounter
{
    public static int CountNodes<T>(this IBinaryTree<T> tree)
    {
        // TODO: What goes here?
    }
}

Die Lösung, die ich gerne sehe, ist folgende:

public static class BinaryTreeNodeCounter
{
    public static int CountNodes<T>(this IBinaryTree<T> tree)
    {
        return tree == null
            ? 0
            : 1 + tree.Left.CountNodes() + tree.Right.CountNodes();
    }
}

Wie es zeigt Wissen von:

  • wie ein Baum (insbesondere ein Binärbaum) funktioniert
  • die rekursive Definition eines Binärbaums
  • rekursive Methoden und wie Basisfälle die Rekursion stoppen
  • was bedeutet es, einen einzelnen Knoten zu zählen?
  • schnittstellen als Vertrag
  • (weniger wichtige) Kenntnisse der C # -Syntax:
    • generika
    • erweiterungsmethoden
    • ternärer Operator
14
Jesse C. Slicer

Zwei Fragen, die für mich interessante Whiteboard-Diskussionen ausgelöst haben, sind:

  1. "Bitte können Sie so detailliert erklären, wie Sie möchten, wie ein Webbrowser eine generierte Seite erhält."
  2. "Bitte erläutern Sie, wie Java Hibernate funktioniert")

Sie beginnen einfach und werden dann zunehmend komplexer.

12
Gary Rowe

Ich mag es nicht, ein Puzzle oder eine Designfrage als Whiteboard-Frage zu verwenden. Ich bevorzuge einfache Fragen, die die Fähigkeit des Kandidaten testen, Code zu schreiben. Meine Favoriten sind:

1) Schreiben Sie eine Funktion, um eine einfach verknüpfte Liste umzukehren. (Es dauert eine Weile, bis sie feststellen, dass sie 3 Zeiger benötigen.)

2) Bestimmen Sie bei gegebenem Binärbaum die Tiefe des Binärbaums. (Diese Frage testet ihre Fähigkeit, rekursiven Code zu schreiben. Lassen Sie mich überprüfen, ob der Basisfall intakt ist.)

3) Schreiben Sie eine Prozedur zum binären Suchen eines Arrays von ganzen Zahlen. (Wie Jon Bentley sagt (in Programming Pearls), neigen viele Leute dazu, Fehler beim Schreiben der binären Suche zu machen. Man kann dann Fehler finden, Testfälle schreiben, den Code durchgehen usw.)

8
pyNem

Wir haben dies bei einer Firma verwendet, für die ich gearbeitet habe.

Wir gaben dem Kandidaten ein Stück Papier, mit dem die Zeit verfolgt werden konnte. Es war eine echte Arbeitszeittabelle, die von einer oder unseren Abteilungen verwendet wurde. Wir haben den Kandidaten gebeten, uns durch den Entwurfsprozess zu führen, um ein besseres Zeiterfassungstool zu erstellen. Keine Grenzen, habe nicht gesagt, welche Sprache usw., will nur sehen, wie gut der Kandidat im "vollen Lebenszyklus" war. Es gab uns einen echten Einblick, wie sie Anforderungen sammelten. Wie sie Datenbanktabellen strukturiert haben, welche Art von Benutzeroberfläche sie möglicherweise verwenden. Für diese Aufgabe waren offensichtlich Kommunikationsfähigkeiten erforderlich. Es wurde normalerweise in einem Raum mit mehreren großen weißen Tafeln durchgeführt und dauerte bis zu 2 Stunden.

Wir haben mehrere Leute eingestellt, die diesen Prozess angewendet haben, und wenn sie die Aufgabe wirklich gut gemeistert haben, haben sie uns wirklich gut getan. Wenn sie marginal waren und wir beschlossen, sie trotzdem einzustellen (separates Thema), waren sie marginale Programmierer.

7
Bill Leeper

Ich verwende ein Problem, das für meine Programmierdomäne relevant ist.

Wenn ich Webanwendungen entwickle, möchte ich sehen, wie sie ein Webformular erstellen, das Datensätze löscht, und wie sie beispielsweise den Datensatz aus der Datenbank entfernen. Dies sagt mir, ob sie grundlegende Datenbankprinzipien kennen, wie sie mit dem Benutzer interagieren, um das Löschen zu überprüfen, und ob sie wissen, was ein weiches Löschen ist.

Ich habe keinen Favoriten. Das Problem, das ich wähle, ist je nach Job sehr unterschiedlich.

Es ist mir egal, ob sie das Problem in einem Interview vollständig lösen können oder nicht, welche Technologien und Sprachen sie verwenden oder wie beschissen ihr Code auf einem Whiteboard aussieht. Ich suche ein Gedankenmuster; Ich möchte sehen, ob sie wissen, wie sie Probleme durchdenken und lösen können.

6
Robert Harvey

Mein Favorit war einer, den ein Freund von mir benutzte.

Schreiben Sie mir eine Funktion zum Generieren/Drucken/Speichern der ersten "n" Primzahlen und erklären Sie dann, wie es funktioniert und wie effizient es ist.

Es funktioniert gut, weil:

  1. Da es sich um eine algorithmische Frage handelt, muss der Befragte in der Lage sein, zu denken und dann sein Denken zu erklären - damit Sie sehen können, wie sein Gehirn funktioniert.

  2. Es ist sprachunabhängig.

  3. Kaum jemand macht es richtig (es gibt normalerweise einen Edge-Fall, den er verpasst (normalerweise 1 oder 2), oder er behandelt keine negativen Zahlen, sodass Sie sehen können, wie er mit Fehlern umgeht und dass ihm gesagt wird, dass er falsch liegt.

  4. Die meisten tun dies als einfaches, aber sehr langsames Sieb (z. B. 80% der Leute überprüfen, ob n eine Primzahl ist, indem sie n durch alle ganzen Zahlen unter n dividieren), was Ihnen viel Raum für Gespräche darüber gibt, wie sie den Algorithmus verbessern könnten auf Raum/Zeit-Kompromisse, z "Warum dividierst du eine Zahl durch 4, wenn du bereits weißt, dass sie nicht durch 2 teilbar ist?" oder "Sie haben herausgefunden, dass Sie nur durch alle Primzahlen unter sqrt (n) dividieren müssen, aber dafür müssen Sie diese Zahlen irgendwo speichern. Was bedeutet das?")

Sie müssen nicht die richtige Antwort finden. Wenn jemand denken und sein Denken erklären kann, ist er ein langer Weg, um ein guter Kandidat zu sein.

4
Rhys Gibson

Es hängt wirklich davon ab, wonach Sie suchen. Als Organisation, die viel dynamische Webarbeit mit Bildern ausführt, stelle ich gerne eine Geometriefrage, die für den Job relevant ist. Auf jeden Fall neige ich dazu, eine Geometriefrage zu stellen, da ich finde, dass es sich um einen guten Mathe-Test handelt, der nett und visuell ist und die Fähigkeit eines Kandidaten zeigt, seine Arbeit visuell darzustellen und ein Problem methodisch zu bearbeiten.

Für fortgeschrittene Kandidaten stelle ich gelegentlich die folgende Frage:

Dieses Bild zeigt einen Halbmond. Die Breite des Halbmonds von B nach D beträgt 9 cm und zwischen E und F 5 cm. C ist der Mittelpunkt des größeren Kreises.

a) Bitte berechnen Sie die Fläche des Halbmonds. Crescent Moon Maths Question

b) Beschreiben Sie die Berechnungen, die erforderlich sind, um die Größe eines Bilds so zu ändern, dass es von einer bestimmten Größe in den inneren Kreis passt, und positionieren Sie es innerhalb des Kreises, wenn der Mittelpunkt bekannt ist.

Für eine einfachere Frage gebe ich normalerweise die gleiche Art von Frage, verwende aber das Beispiel "Quadrat innerhalb eines Kreises innerhalb eines Quadrats". Obwohl dies sehr einfach ist, würde ich eine perfekte Algebra erwarten.

Square inside a circle inside a square

Darüber hinaus neige ich dazu, sie zu bitten, einen Algorithmus zum Generieren aller Kombinationen eines Datensatzes variabler Länge zu entwickeln.

3
Orbling

Die besten FizzBuzz Antworten, die ich gesehen habe, sind:

SQL Server 2008

;WITH mil AS (
 SELECT TOP 100 ROW_NUMBER() OVER ( ORDER BY c.column_id ) [n]
 FROM master.sys.all_columns as c
 CROSS JOIN master.sys.all_columns as c2
)                
 SELECT CASE WHEN n  % 3 = 0 THEN
             CASE WHEN n  % 5 = 0 THEN 'FizzBuzz' ELSE 'Fizz' END
        WHEN n % 5 = 0 THEN 'Buzz'
        ELSE CAST(n AS char(6))
     END + CHAR(13)
 FROM mil

C # (einfach)

foreach (int number in Enumerable.Range(1, 100))
{
    bool isDivisibleBy3 = (number % 3) == 0;
    bool isDivisibleBy5 = (number % 5) == 0;

    if (isDivisibleBy3)
         Console.Write("Fizz");

    if (isDivisibleBy5)
         Console.Write("Buzz");

    if (!isDivisibleBy3 && !isDivisibleBy5)
         Console.Write(number);

    Console.WriteLine();
}

C # (clever)

 Enumerable
  .Range(1, 100)
  .Select(i =>
    i % 15 == 0 ? "FizzBuzz" :
    i % 5 == 0 ? "Buzz" :
    i % 3 == 0 ? "Fizz" :
    i.ToString())
  .ToList()
  .ForEach(s => Console.WriteLine(s));
3
Simon Hughes

Etwas namens aff_z, das Teil der C-Prüfungen meiner Ingenieurschule war und als "Dummy" -Test verwendet wurde, um Schüler bei der Rückkehr aus den Ferien scheitern zu lassen (unser Markierungssystem implizierte, dass das Nichtbestehen eines Tests die Markierung stoppte, sodass dieser Dummy-Test fehlschlug Ihren gesamten Test ungültig machen (zwingt Sie, auf schwachsinnige Details zu achten). Ich habe es ein- oder zweimal während der Interviews wiederverwendet.

Wie auch immer ... Ich habe die genaue Formulierung vergessen, aber es war so etwas ...

Write a function taking a single char parameter named c and returning nothing (void).
You function must satisfy the following requirements:

 - if c is bigger or equal to 0, then print 'z' to standard output
 - if c is stricly smaller than 0 , then print 'z' to standard output
 - in any other case, print the letter 'z' to standard output

Das Traurige ist, dass nicht nur einige Schüler extrem komplizierte Lösungen finden würden, wenn die Antwort ziemlich offensichtlich ist, sondern dass einige sogar scheitern würden.

Und ob Sie es glauben oder nicht, es ist auch während der Interviews passiert.

Das Ausführen in Interviews hat ziemlich viel Spaß gemacht, da einige Bewerber anfingen, die möglichen Zweige zu schreiben und dann erkannten, was falsch ist (natürlich ist es verständlich, wenn Sie sie nur mündlich fragen, dass sie dies tun, während Sie sprechen ... aber wenn Sie gib es schriftlich, ich finde es rätselhaft ...)

Es ist dumm, aber ich denke, es ist ein minimalistisches Screening (ähnlich wie bei der Einstellung von JS-Programmierern frage ich immer, wie eine Variable deklariert werden soll, und abhängig von ihrer Antwort, ob die Verwendung von var überhaupt einen Unterschied macht oder nicht. Sehr oft ein trauriger Moment, ehrlich.)

3
haylem

Ich suche ein paar Dinge in Kandidaten, die ich interviewt habe. Aus Gründen, die ich online nicht beschreiben kann, bekommen wir ziemlich arme Kandidaten, und ich habe es erwartet, also bin ich ziemlich einfach mit ihnen. Trotzdem suche ich:

  • Designbewusstsein.

    "Zeigen Sie mir die Tabellenstruktur für ein Adressbuchprogramm mit Kontakten mit Vor- und Nachnamen, die mehrere Telefonnummern mit einer Beschreibung der Nummer (Zelle/Zuhause/Arbeit/etc.) Haben können."

    Ich suche hier kein UML 2.0-Spezifikationsdiagramm, ein einfaches Blasendiagramm hier ist in Ordnung. Solange es vernünftig ist.

  • Kenntnisse in der Arbeit mit einer Datenbank (dh SQL)

    1. Schreiben Sie eine Abfrage, um alle Telefonnummern für Personen mit dem Nachnamen "Schmied" zu erhalten.
    2. Schreiben Sie eine Abfrage, um alle Kunden in die Datenbank aufzunehmen, und die Telefonnummern für diejenigen mit dem Nachnamen "Schmied".
  • Kenntnisse im Testen

    Angenommen, es gibt eine Methode mit der Signatur public IEnumerable<PhoneNumber> GetPhoneNumbers(string lastName), die die Ergebnisse Ihrer Abfrage von früher zurückgibt. Angenommen, wenn Sie eine Null an die Methode übergeben, wird eine NullReferenceException ausgelöst. Schreiben Sie einen Test, um diese Funktionalität zu demonstrieren.

    Schreiben Sie einen Test, der zeigt, dass GetPhoneNumbers eine private Telefonnummer von (123)456-7890 für jemanden mit dem Nachnamen "smith" zurückgibt.

  • Kenntnisse im Schreiben von Code

    Implementieren Sie eine Methode, die die Anforderungen der von Ihnen geschriebenen Tests erfüllt.


In Anbetracht der Anzahl und Qualität der Bewerber, die wir bekommen haben, habe ich alle interviewt, die sich jemals ernsthaft beworben haben. Ich habe niemanden eingestellt.

2
Steven Evers

Schreiben Sie einen Algorithmus für das folgende Problem: Geben Sie bei einer gegebenen Zahl n die Gesamtzahl der (eindeutigen) Binärbäume mit n Knoten aus .

Für n= 0 und n= 1 lautet die Antwort also 1. Für n= 2 haben Sie 2: den Wurzelknoten, und dann den zweiten Knoten entweder links oder rechts.

Sie können einen Einblick in Entwurfstechniken erhalten und sehen, ob diese an Rekursion oder Memoisierung oder an die dynamische Programmierlösung denken.

[Siehe auch diesen StackOverflow Diskussion für den verwandten, aber unterschiedlichen Fall von Binärsuchbäumen.]

2
Macneil

Wenn ich einen Softwareentwickler interviewen würde, würde ich ihn bitten, eine Software zu entwerfen und die Hardwareanforderungen zu beschreiben, um doppelte Einträge aus einer beliebig großen Datei zu entfernen, die in jeder Zeile einen vollständigen Namen enthält. Ich lasse einige Teile der Problembeschreibung absichtlich mehrdeutig. Dann fordere ich ihn auf, herauszufinden, ob er das Analysieren und Klären von Anforderungen, verschiedene Kompromisse, Datenstrukturen und Algorithmen, E/A (Sekundärspeicher), Software- und Hardwaretechnologien, Skalierbarkeit usw. versteht.

Ich denke, es ist ein kleines, aber herausforderndes Problem, das die Kenntnisse und Fähigkeiten des Bewerbers in vielen Computerbereichen offenbart.

2

Mein Lieblingsproblem mit C++ - Whiteboards ist die Implementierung des Kandidaten

Vector3 a(1, 0, 0), b(0, 1, 0); // Mathematical 3D vectors
double c = 7.0;
double d = a * c;
Vector3 e = a * b;

Daraus kann ich lernen

  • wenn der Kandidat erkennt, dass Sie den Rückgabetyp nicht überladen können (Angabe von C++ auf Junior-Ebene)
  • wenn der Kandidat weiß, wie man einen temporären zurückgibt und Casting-Operatoren implementiert (Angabe von C++ auf mittlerer Ebene)
  • wenn der Kandidat grundlegende Vektormathematik kann (wichtig für unsere Anwendungsdomäne)
2
smithco

Implement function/method(on c/c++/c# whatever), which calculates n-th item of Fibonacci sequence

Viele Leute könnten daran festhalten. Wenn eine Lösung angegeben wird, wird normalerweise eine Rekursion verwendet. Nachdem:

Implement the same via 'for'-loop

Ich kann Ihnen nicht sagen, wie viele Stipendiaten beide Aufgaben nicht erfüllen - 50% der Kandidaten.
Deshalb mag ich es :)

2
alexb

Für Datenbanken gehe ich mit:

Tabelle: Dinge 
 
 ID Name 
 1 Bodkin Van Horn 
 2 Hoos-Foos 
 3 Hoos-Foos 
 4 Hot- Schuss 
 5 Marvin O'Gravel Ballongesicht 
 6 Snimm 
 7 Marvin O'Gravel Ballongesicht 
 8 Marvin O'Gravel Ballongesicht 
 9 Dave

Schreiben Sie mir SQL, das eine Tabelle wie diese basierend auf dem Namen de-dupliziert (und es ist mir egal, welche ID ich zurückerhalte, aber welche zurückgegeben wird, muss für diesen Namen gültig sein). Die Tabelle zeigt also, sobald das richtige SQL angewendet wurde, Folgendes an:

Tabelle: Dinge 
 
 ID Name 
 1 Bodkin Van Horn 
 2 Hoos-Foos 
 4 Hot-Shot 
 5 Marvin O. 'Kiesballongesicht 
 6 Snimm 
 9 Dave

Ich mag es weil:

  • Die Deduplizierung ist ein Problem der realen Welt
  • Es gibt eine Reihe von Möglichkeiten, dies zu tun
  • Ich denke, dass Sie bei so ziemlich allen Möglichkeiten entweder (etwas) komplexeres SQL (im Wesentlichen GROUP BY und HAVING) verstehen oder die Fähigkeit haben müssen, durch Verketten mehrerer einfacherer Anweisungen zu argumentieren.
  • Aufgrund dieses letzten Teils können Sie sie fragen, was sie denken, und auf diese Weise darüber sprechen, selbst wenn sie mit Syntax oder was auch immer zu kämpfen haben.
  • Es verweist auf Dr. Seuss

(Hier finde ich, dass es einen völlig trivialen Weg gibt, dies zu tun, und ich habe es all die Jahre überkompliziert).

2
Jon Hopkins

Normalerweise lasse ich sie ein Blockdiagramm des letzten Systems skizzieren, an dem sie gearbeitet haben, und frage sie nach den Beziehungen zwischen den Blöcken. Dann lasse ich sie den Block erläutern, an dem sie gearbeitet haben/an dem sie verantwortlich sind. Sie können aus dieser Übung viele lernen, wie man über seine kleine Domäne hinausschaut, wie wichtig es für ihn ist, zu wissen, wo er handelt, und Sie können auch lernen, welche Rolle er gespielt hat, ob es sich um einen Schlüssel oder eine Seite handelt Rolle.

2
Assimiz

Wie würden Sie ein Standard-Kartenspiel mit 52 Karten darstellen? Jede Programmiersprache ist in Ordnung. Wie würden Sie die Karten mischen?

2
MrDatabase

Sie haben eine Schüssel mit 200 Fischen. Von diesen Fischen sind 99% keine Guppys. Wie viele Fische sollten Sie entfernen, damit 2% der verbleibenden Fische Guppys sind? Zeigen Sie Ihre Arbeit.

Hier geht es um verwirrende Anforderungen. Auf diese Weise soll die Perspektive während derselben Frage mehrmals geändert werden. Es soll sehen, ob sie herausfinden können, was wirklich los ist.

Sie wären überrascht, wie viele Leute es falsch verstehen.

1
dacracot

Eine Frage, die ich seit meiner Verwendung bei mir verwende, ist die folgende:

Schreiben Sie eine Funktion, um alle Zahlen zwischen 1 und 100 zu drucken.

Ein großer Teil des Grundes, warum ich es verwendet habe, ist auf die Tatsache zurückzuführen, dass Sie dann die Lösung nehmen und sich in verschiedene Richtungen bewegen können:

Wie würden Sie die Funktion ändern, um alle Zahlen zwischen 1 und 1000, 10000 oder n zu drucken?

Ihre Antworten auf diese Fragen können Ihnen einen Einblick geben, wie sie auf sich ändernde Anforderungen reagieren und ob sie Leistungsaspekte erkennen können. Ein starker Kandidat könnte mit einer Frage antworten, welche Funktion benötigt wird und wie oft sie aufgerufen wird.

In eine andere Richtung bewegen:

Wie würden Sie Dinge ändern, wenn Sie wüssten, dass diese Funktion mehrmals pro Minute aufgerufen wird und die Leistung ein Problem darstellt?

Ich benutze dies, um ihr Querdenken zu überprüfen. Da die Berechnung von Primzahlen langsam sein kann, wenn der Maximalwert größer wird, ist es manchmal sinnvoller, nur eine Art berechnete oder vorberechnete Nachschlagetabelle zu verwenden, die auf der Grundlage des Problems, das Sie lösen möchten, angepasst wird.

1
rjzii

Hier ist eine, die zum Nachdenken anregt: Es ist unkompliziert, erfordert ein wenig Mathematik und überprüft die Kenntnisse des Kandidaten über das grundlegende Computerdesign (Überlauf, numerische Darstellung usw.):

Schreiben Sie ein Programm (oder eine Prozedur), das ein Paar Ganzzahlen X, Y als Eingabe verwendet und bestimmt, ob X * Y gleichmäßig durch 10 teilbar ist. WICHTIGER HINWEIS: X und Y können groß genug sein, damit X * Y den größten verfügbaren Ganzzahltyp überläuft auf Ihrer Maschine.



T_BOOL MultipleOfTen(int x, int y)
{
    return((x%2==0 || y%2==0) && (x%5==0 || y%5==0));
}
1
oosterwal

Mein Favorit ist es, zunächst den Prototyp von printf zu fragen. Wenn Sie dann eine Low-Level-API printc (char c) verwenden, die ein Zeichen druckt, implementieren Sie printf. Gibt alle möglichen interessanten Antworten, da der Stack Teil der CPU ist. Wie Sie vielleicht vermutet haben, habe ich einen C- und eingebetteten Hintergrund.

1
aufather

Ich habe ein paar Favoriten, aber hier sind ein paar, die fast immer auftauchen. Die meiste Zeit mache ich technische Interviews in der letzten Runde (C++), also bevorzuge ich längere und offenere Fragen, die zu neuen Interessengebieten führen. Es gibt keine "richtige" Antwort, nur eine Öffnung für andere Gespräche.

1) Implementierung eines gemeinsamen gemeinsamen Zeigers, Erläuterungen zu Mängeln im Vergleich zu tr1 oder den gemeinsamen Zeigern von boost in ihrer Implementierung, Verwendung usw.

2) Eine Codeüberprüfung. Für erfahrene Mitarbeiter erwarten wir, dass sie in der Lage sind, den bereitgestellten Code sicher auf Entwurfsprobleme, Fehler, Codierungsprobleme und potenzielle Wartbarkeitsprobleme zu überprüfen. Natürlich auch, wie sie es reparieren würden; und manchmal, wie sie diese Nachricht an den Junior-Entwickler weitergeben, den sie abschießen.

1
Alaric

Geben Sie die folgende Methode ein: PS Ein Modus einer Zahl ist die Zahl (in der Liste), die am häufigsten vorkommt.

public int getMode(List<Integer> numberList) {


}

Dies ist zu sehen, wie effizient Ihr Code ist.

0
Buhake Sindi