- Logical questions
- Anything around this topic depending on the candidate's education
- Basic Programming
- What is a program? What structure does it have?
- What is a variable?
- What is a procedure/method?
- Logical questions
- Algorithms
- Sort an array
- Encapsulation
- Inheritance
- Abstraction
- Polymorphism
- overridding vs overloading
- Main class
- Class Structure (Constructor, fields, methods)
- Access & Non-Access modifiers
- Statements (if, switch, for, while, do-while)
- Types (Primitives, Wrappers)
- what is a String in java
- immutability (== vs equals)
- String pool
- What is an Exception?
- Difference an Exception and an Error
- Checked vs Unchecked
- RuntimeException
- Exception
- Most common predefined exceptions: e.g. NullPointerException, FileNotFoundException
- try-catch-finally block
- throw new exception
- Method signature with throw exception
- Correct handling (higher in the application structure)
- Correct wrapping (don't lose the root cause in case of technical exceptions)
- Well-defined exception hierarchy (starting from base -> splitting in two: technical and business -> ending in concrete exception classes)
- Lists
- ArrayList vs LinkedList
- Sets
- TreeSet vs HashSet
- Maps
- TreeMap vs HashMap
- equals() & hashCode()
- Define a database
- Define a table with different column types (integer -> varchar -> blob -> clob)
- Define a primare key
- Define an index
- Define Foreign Keys
- One-to-many
- Many-to-one
- Many-to-many
- WHERE clause
- by using WHERE clause
- Basic Knowledge about Spring
-
Git
- How does git work?
- Remote & local repo, and commit-based tracking
- What is a commit?
- Have you ever used a branching strategy? why is this useful?
- What are the main operations in git?
- clone ? pull ? commit ? push ?
- Have you ever used stash? (nice to have)
- How does git work?
-
Maven
- What is maven used for?
- Build tool, dependency management, ...
- Do you know the default lifecycle in maven?
- clean -> compile -> install (search for the complete answer)
- How many repos are used by maven? And when?
- central, local & private (if one defined)
- What is maven used for?
-
Jenkins (Nice to know)
- What is jenkins used for?
- Scheduling/Triggering build jobs
- Useful for CI/CD
- Automating builds/deployments
- What is jenkins used for?
- What is a Stream?
- Difference between an InputStream and a Reader
- Difference between an OutputStream and a Writer
- Types of Streams
- Paths
- File Operations
- Thread vs Runnable
- Starting a Thread
- Syncing a thread
- synchronized blocks
- Synchronized collections
- What is a race condition?
- What is a deadlock?
- Naming Conventions
- SOLID principles
- Choose composition over inheritance
- Understand each type of relationship between classes and when to use them:
- Inheritance
- Aggregation
- Asociation
- Composition
- any developer MUST know about the most of the design patterns and be able to use a few of them
- mandatory design patterns:
- Singleton
- Builder
- Factory method
- Strategy
- Normalization (Splitting tables in multiple tables with relations between them)
- inner, outer, left & right join
- order by
- group by
- IoC & DI: Spring Framework
- How does Spring IoC Container work?
- What is a bean?
- Difference between @Component, @Controller, @Service & @Repository
- What is a @Configuration class and when should we use it?
- What about @Bean annotation?
- How do we inject an object in Spring?
- What is application.yml file used for?
- How does the main class look like in Spring Boot app?
- What about the project structure?
- Persistance (JPA)
- CrudRepository & JpaRepository
- ORM: @Entity & @Table & @Column & @Id
- Security
- Authentication & Authorization
- Ways of authentication
- Form-based
- Basic Auth
- Digest Auth (Nice to have)
- OAuth2 (Nice to have)
- Docker
- Container orchestration
- Docker Compose
- Kubernetes
- Openshift
- Cloudfoundry
- AWS
- Azure
- Google Cloud Platform
- Private Cloud
- ACID
- Rollback/Commit