Personal security background development, of course, is in the Linux environment. Give a few common questions.
1. Data Structure Foundation. For example, implement a simple hash table.
2. Operating system basics. The Linux process model, the heap/stack differences, the approximate location, the direction in which the various variables are stored, and the more likely to ask the difference between a dynamic library and a static library, as this is common in a production environment, where the dynamic library is mapped in the process model. Other common issues such as zombie processes, thread sharing, and so on.
3. TCP/IP Fundamentals. For example, often asked three times handshake, four waves, why four times; time_wait state-related issues; MTU fragmentation issues. Now generally do not ask the TCP/IP header size so the pain of the problem, but may ask the TCP head several state fields, such as syn/psh/fin/rst/urg/ack .... In which case the 1 will be placed, and this will be a bit deeper. In-depth there is a general principle of sliding window and congestion control.
4. Socket programming. Blocking/non-blocking differences, event loop Select/poll/epoll, how common network library Read/write will be implemented (refer to Muduo). The interviewer will ask if the client needs to bind;tcp/udp the nuances of protocol programming ...
5. Tool-related. vim/makefile/gdb/g++ ...
6. C + + related. It is unavoidable to ask virtual functions; Common STL implementations and operations; What is extern c doing?
7. Script-related. Shell/perl/python at least one door, OPS/deployment is required.
The above list is a more common, relatively simple problem. But it's not easy to get these answers right.
Linux Background Development Interview questions summary