Quais são os fundamentos que você deve saber antes de uma entrevista técnica?
Depende realmente do tipo de entrevista. Você estará fazendo o desenvolvimento de aplicações? Desenvolvimento móvel? Desenvolvimento Web?
Em geral, se você sabe o seguinte, você deve estar muito bem (para ser honesto, ter um amplo entendimento de CS é útil):
Software Engineering / General
>ul>>li>MVC (Model-View-Controller)>li>Como é o ciclo de vida do software (algo parecido: [Universo do Discurso] -> Formulação do Problema -> [Especificação do Problema] -> Engenharia de Requisitos -> [Especificação dos Requisitos] -> Arquitetura -> [Especificação da Arquitetura] -> Projeto -> [Especificação do Projeto] -> Programação -> [Componentes de Software] -> Integração -> [Sistema de Software] -> Entrega/Desdobramento -Como usar a recursividadeli>li>li> Os prós e os contras dos algoritmos recursivosli>li> Como escrever um algoritmo recursivo como um algoritmo iterativoli>li>SOLID (objeto-oriented design)DebuggingComplexity
- 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'Como testar um problema contra várias estruturas de dados para ver se ele pode ser resolvido de forma mais inteligente>li> Como fazer o escopo de um problema (defini-lo, identificar/questionar suposições), determinar entradas e saídas)>li> Como escrever uma solução de força bruta>li> Como melhorar a eficiência de uma solução>li>li> Como externalizar seus pensamentosli>li> Como comentar o código de uma maneira útil e organizadali>li> Como rastrear através do código para verificar se ele funciona para a amostra de entradasli>li> Como identificar onde no seu código você cometeu um erro se você está't obtendo a saída esperada
- li>Como testar partes individuais separadamente>li>li> Como identificar padrões em problemas passando pelas entradas da amostra e considerando as saídas esperadas
Artigos semelhantes
- O que é a escrita não técnica? Em que é que difere da escrita técnica?
- Como me preparar para responder a perguntas de design em uma entrevista técnica
- Em média, quanto tempo leva para um novato aprender os fundamentos e funções gerais do Python se for a sua primeira língua?
- Devo aprender os fundamentos da Informática como programador iniciante?