Reverse all the words in a given string
Some comments.


It is safer to swap the order when compare - even if you have already checked for null:



else if ("".equals(s)) return "";



Even better 1-liner:

if (s == null || "".equals(s)) return s;



What if you have other separators then space - like tabs, new-lines, \r etc?



if (s.charAt(index) == ' ')



Use regex to match all white-spaces:

// global
Pattern p = Pattern.compile("\\s+");


Actually - just think about it - your solution is not working for such cases, maybe regex is not the best way either.

Regarding your questions:
split() is slower then charAt() because former is kind of a regex search in string, charAt is just similar to index access to array.

My opinion is that this "mambo-jumbo" with searching spaces and revering the rest of the string recursively is not worth any theoretical gains it possibly has.
Code is difficult to understand - it took me a minute to get the idea what you are doing here.

Why not just to split for all spaces and reverse iterate over tokens? This solution does not preserve spaces BTW, so maybe not good.
So question you should ask on interview - if spaces needs to be preserved on not.

I didn't read your link BTW - this maybe exactly what is proposed there - because the point is to comment on your code and not to compare with somebody else.