https://medium.com/@.midi/developer-interview-crash-course-series-arrays-part-1-general-concepts-aaa0fc46bde5