Generating a list of alternatively positioned odd and even number out of an array of unsorted integers
You probably should have used Math.min(). Even if it was requested by the interviewer to not use anything else besides ArrayList, min can be written much more concise as

return n &lt;= m ? n : m


(1 line of code vs. 8)
This loop is little bit ugly:


  for (i = 0; i &lt; minOfOddAndEven; i++) {
    resultList.add(2*i,oddList.get(i) );
    resultList.add(2*i+1,evenList.get(i));          
}



While I think it should work (don't have a Java compiler handy to try) it's a bit confusing to add the numbers at specified indices. I think it is legal to call add(index, item) where index == size() which should add an element to the end of the list. So your code happens to work but you need to look twice to make sure. It's totally unnecessary to do this. You could have simply done:

for (i = 0; i &lt; minOfOddAndEven; i++) {
    resultList.add(oddList.get(i));
    resultList.add(evenList.get(i));          
}


Same result but cleaner.
Copying the remainder of the list could have been done with subList:

if (longestList != null)
{
    resultList.addAll(longestList.subList(minOfOddAndEven, longestList.size());
}

Overall I think the interviewer might have wanted to see the use of iterators. You could have greatly simplified your code with this:

Iterator&lt;Integer&gt; odds = oddList.iterator();
Iterator&lt;Integer&gt; evens = evenList.iterator();

while (odds.hasNext() || evens.hasNext())
{
     if (odds.hasNext())
     {
         resultList.Add(odds.next());
     }
     if (evens.hasNext())
     {
         resultList.Add(evens.next());
     }
}


This way you iterate over both lists at once and don't have to implement the "which list is longer and then copy the remainder part"