QNA > Q > Quali Sono I Fondamenti Che Dovresti Conoscere Prima Di Un'intervista Tecnica?

Quali sono i fondamenti che dovresti conoscere prima di un'intervista tecnica?

Dipende davvero dal tipo di intervista. Farai sviluppo di applicazioni? Sviluppo mobile? Sviluppo web?

In generale, se conoscete quanto segue, dovreste essere abbastanza a posto (ad essere onesti, avere un'ampia comprensione di CS è utile):

Ingegneria del software / Generale

  • MVC (Model-View-Controller)
  • Come è il ciclo di vita del software (qualcosa come: [Universo del discorso] -> Formulazione del problema -> [Specifica del problema] -> Ingegneria dei requisiti -> [Specifica dei requisiti] -> Architettura -> [Specifica dell'architettura] -> Progettazione -> [Specifica della progettazione] -> Programmazione -> [Componenti del software] -> Integrazione -> [Sistema software] -> Consegna/Deployment -.> [Delivered Software])
  • Come usare la ricorsione
  • I pro e i contro degli algoritmi ricorsivi
  • Come scrivere un algoritmo ricorsivo come algoritmo iterativo
  • SOLID (object-oriented design)
  • Debugging

Complexity

  • How to read code and determine its Big-O complexity
  • How to compare the performance of algorithms that have the same Big-O complexity

Low Level

  • Bit manipulation (And, Or, Not, Shifts, etc.)
  • Bit masking
  • Big-endian versus little-endian
  • Caches and how they work

Data Structures
(Know how to use, the Big-O complexities of various operations, how to implement, etc.)

  • Hash Tables
  • Singly- & Doubly- Linked Lists
  • Arrays
  • Binary Trees / Trees in General
  • B-Trees (just have a very basic understanding of these)
  • Heaps
  • Stacks
  • Queues
  • Tries

Algorithms / Techniques

  • Shortest Path
  • Breadth-first search
  • Depth-first search
  • In-order/Pre-order/Post-order traversal
  • Binary Search
  • Merge Sort
  • Quick Sort
  • Insertion Sort
  • Bubble Sort
  • Divide and Conquer
  • Dynamic Programming

OOP

  • Interfaces
  • Abstract classes
  • Polymorphism
  • Inheritance
  • Encapsulation
  • Overriding
  • Overloading

Concurrency

  • What is multithreading
  • What to watch out for with multithreading
  • Mutexes/semaphores

Problem Solving / White Board Coding

  • How to speak everything you are thinking
  • How to verify that your code works (and check that it handles unexpected inputs correctly)
  • How to break a problem into parts
  • How to determine whether to use an iterative solution or a recursive solution
  • How to relate a problem to other problems you'come testare un problema con varie strutture di dati per vedere se può essere risolto in modo più intelligente
  • Come definire un problema (definirlo, identificare/domandare i presupposti, determinare input e output)
  • Come scrivere una soluzione a forza bruta
  • Come migliorare l'efficienza di una soluzione
  • Come esternare i propri pensieri
  • Come commentare il codice in modo utile e organizzato
  • Come tracciare il codice per verificare che funzioni per input campione
  • Come identificare dove nel codice si è commesso un errore se non si sta ottenendo l'output che ci si aspetta
  • ;l'output che vi aspettate
  • Come testare le singole parti separatamente
  • Come identificare i modelli nei problemi passando attraverso gli input di esempio e considerando gli output previsti

Questa lista non è onnicomprensiva. Avrete bisogno di sapere molto di più per interviste più specifiche, ma questo dovrebbe farvi iniziare.

Di Eads

Qual è il miglior launcher per un telefono? :: Qual è la differenza tra un iPhone sbloccato in fabbrica e uno sbloccato GSM?
Link utili