There are dozens of sub-topics but in my small sample of interviews, the following sub-topics have received disproportionate attention:
- blocking vs non-blocking
- add basic reliability over UDP (many blog posts); how is TCP transmission control implemented
- accept() + threading
- select (or epoll) on multiple sockets
Background — The QQ/ZZ framework was first introduced in this post on c++ learning topics
Only c/c++ positions need socket knowledge. However, my perl/py/java experience with socket API is still relevant.
Socket is a low-level subject. Socket tough topics feel not as complex as concurrency, algorithms, probabilities, OO design, … Yet some QQ questions are so in-depth they remind me of java threading.
Interview is mostly knowledge test; but to do well in real projects, you probably need experience.
Coding practice? no need. Just read and blog.
Socket knowledge is seldom the #1 selection criteria for a given position, but could be #3. (In contrast, concurrency or algorithm skill could be #1.)
- [ZZ] tweaking
- [ZZ] exception handling in practice
- —-Above topics are still worth studying to some extent—–
- [QQ] tuning
- [QQ] buffer management