---
# System prepended metadata

title: Technical Test Questions

---

# Technical Test Questions

This is a collection of technical questions categorised by technology and subject that we're most concerned with. 

The questions are organised into the following hierarchy starting at level-3 headings:

```
 └─ Technology
    └─ Category
       └─ Question
          ├─ Answer
          ├─ Difficulty
          └─ Sources
```

Each node in the hierarchy may contain explanatory text.

The difficulty scoring is form 1-4 where 4 is "expert" level.

## Suggested Usage

Randomly select N questions from each category to produce a unique test per candidate. 

This process can be automated using a markdown parser.

## Java

### Language

#### Q: What must you also override if you override `equals`?

##### A: `hashCode`

This fails the general contract for `hashCode`. The class will fail to function correctly in hash-based collections.

##### D: 1

##### Sources

1. Effective Java, Item 11

#### Q: Review & suggest improvements to the following code

```java
static String firstLineOfFile(String path) throws IOException {
  BufferedReader br = new BufferedReader(new FileReader(path));
  try {
    return br.readLine();
  } finally {
    br.close();
  }
}
```
##### A: Use `try-with-resources` syntactic sugar

Note: `readLine` and `close` both throw `IOException`

May also comment on:

* use of `String` for the path, or parameter types in general

##### D: 1
##### Sources

### Design/Architecture

#### TODO: Composition vs Inheritence
#### Q:
##### A:
##### D:
##### Sources

#### A simple domain object Java class has grown considerably requiring a large and complex set of constructor parameters. What pattern could help simplify creating instances of this object?

##### The builder pattern

##### Difficulty: 2

##### Sources
1. Effective Java, Item 2


### Collections Runtime Complexity

#### Q: What is the runtime complexity of `ArrayList.add`? a) O(1) b) O(n) or c) O(log n)

##### A: O(1)

##### D: 2

##### Sources

https://gist.github.com/psayre23/c30a821239f4818b0709

#### Q: What is the runtime complexity of `TreeSet<K,V>.contains`?
##### A: `O(log n)`
##### D: 2
##### Sources

https://gist.github.com/psayre23/c30a821239f4818b0709

### Concurrency


## Functional Programming

### Concepts

#### Q: Referential Transparency
##### A:
##### D:
##### Sources

## Reactive Programming

#### Q:
##### A:
##### D:
##### Sources

## Database

## CI/CD

## Linux

## Team Dynamics

#### Q:
##### A:
##### D:
##### Sources
