Chip multiprocessor (CMP) systems have become inevitable to meet high computing demands. In such systems sharing of resources is imperative for better resource utilisation. The challenge arises when various application programs running on neighbouring cores compete for these resources concurrently and introduce contention. We aim to present in a simple, lucid and captivating manner a review of previous work on contention in multicores due to various shared resources like shared caches, main memory, memory bus bandwidth, prefetchers etc. The work investigates key ideas proposed by the research community to alleviate resource contention due to these various resources, under a single umbrella. The prime objective of the study is to throw light upon the fact that, alone a single shared component is not a dominant reason for performance degradation in CMPs, rather all elements in the memory hierarchy introduce resource contention thereby affecting performance cumulatively. The work presented would assist novice readers, researchers and academicians to further serve to propose optimal policies to address contention in designing multicore applications, considering the overall impact of these resources on the performance of multicore systems.