Interview questions -- think in C/C++ by James Chen