Final Exam: Lead Developer

Expected Duration
Lesson Objectives
Course Number
Expertise Level


Final Exam: Lead Developer will test your knowledge and application of the topics presented throughout the Lead Developer track of the Skillsoft Aspire Apprentice Developer to Journeyman Developer Journey.

Expected Duration (hours)

Lesson Objectives

Final Exam: Lead Developer

  • analyze algorithms with constant time complexity
  • analyze algorithms with cubic time complexity
  • analyze algorithms with linear time complexity
  • analyze algorithms with logarithmic time complexity
  • analyze algorithms with quadratic time complexity
  • analyze compiled bytecode to see how Java uses type erasure to ensure type safety and prevent code bloat
  • apply default values to an element in annotation and also experiment with unnamed elements
  • apply terminal operations on predicates
  • apply the @Override annotation to detect typographical errors in method names at compile-time rather than at run-time
  • change the target policy to control exactly what code elements an annotation can be applied to
  • count nodes and delete nodes in a circular linked list
  • create a HashSet object and invoke multiple methods on it, and also correctly override the .hashCode and .equals method of the contained class
  • create a TreeSet and sort it using various custom comparators
  • define a method, override it, and then mark that overridden version with the @Override annotation
  • delete a node from a linked list and rewire the list
  • demonstrate that custom objects can be keys or values in maps, but that in order to ensure that there are no duplicates you have to override the .hashCode and .equals methods of those contained objects correctly
  • demonstrate that predicates can be used to transform one stream object into another
  • demonstrate that the @SafeVarargs annotation is purely indicative and does not perform any run time or compile checks
  • demonstrate various relationships between base and derived classes in the presence of type parameters
  • dequeue elements in a queue implemented as a circular queue
  • dequeue elements in a queue implemented using arrays
  • describe how different implementations of the Set interface differ in their notions of set order
  • describe how the .get, .set, .add, .indexof, and .lastindexof methods work
  • describe how the overridden version of .equals can be used to control list equality operations
  • describe how varargs are defined and used
  • describe how you can create a custom comparator
  • describe how you can iterate over lists using ListIterator
  • describe how you can use the .copy function to take values from one list and put them in another
  • describe important methods of the List interface and how the .addall, .removeall, and .retainall methods work
  • describes the is-a relationship of an ArrayList with Collection, Iterable, and List
  • describe the two limitations of an array
  • describe when you can use the .sublist method to get a part of a list
  • differentiate between ArrayLists and LinkedLists and the use cases where they are suitable
  • differentiate between bounded and unbounded type parameters
  • differentiate between methods used to compute set union, difference, intersection, and equality operations
  • enqueue elements in a queue implemented as a circular queue
  • enqueue elements in a queue implemented using arrays
  • enumerate different scenarios in which the @SuppressWarnings annotation can be applied
  • incorporate constraints, known as bounds, on type parameters
  • insert a new node at the head, count the number of nodes in a linked list
  • insert a new node at the tail of the linked list
  • pop elements from and peek into a stack implemented using linked lists
  • pop elements from a stack implemented using arrays
  • push new elements on to a stack implemented using linked list
  • push new elements on to the stack implemented using arrays
  • recognize different aspects of specifying and using type parameters
  • recognize exactly what counts as a functional interface and what does not
  • recognize how maps work and that they are very similar to their set counterparts
  • recognize how the @Deprecated annotation can be used to flag the instantiation of objects of deprecated classes at compile-time
  • recognize how the Iterable and Iterator interfaces can be accessed using loops to avoid run-time errors from going over the limits of a list
  • recognize how type parameters can be applied not only to classes, but also to specific methods inside classes
  • recognize how type parameters may exist only in the base class, or only in the derived class, or in both
  • recognize how using type parameters can ensure both type safety and code reuse
  • recognize the different types of sets and how they all extend the Set, Collection, and Iterable interfaces
  • recognize use-cases where a base class specifies one type parameter and the derived class specifies multiple type parameters
  • recognize what streams are and some of the methods you can invoke on them
  • search for a node with specific data in a linked list
  • traverse a doubly linked list from the last element to the first
  • use the built-in classes in Java for queues and stacks
  • use upper bounded wildcards to specify that a type parameter must be a sub-class of a certain type
  • Course Number:

    Expertise Level