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.
Articoli simili
- Cos'è la scrittura non tecnica? Come si differenzia dalla scrittura tecnica?
- In media, quanto tempo ci vuole per un principiante per imparare i fondamenti generali e le funzioni di Python se è la sua prima lingua?
- Quali sono alcuni trucchi segreti che dovresti conoscere su Android?
- Quali sono alcuni trucchi segreti sconosciuti che dovresti conoscere su Google?