Linux后台开发面试问题汇总

个人从事安全后台开发,当然是linux环境下的了。举几个常见的问题。
1. 数据结构基础。比如实现一个最简单的哈希表。
2. 操作系统基础。linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长,各类变量存储在哪些区域;更深一点可能会问动态库与静态库的区别,因为这个在生产环境中常见,动态库映射在进程模型的哪里。其他常见如僵尸进程、线程共享等问题。
3. tcp/ip基础。比如常问三次握手,四次挥手,为什么要四次;time_wait状态相关问题;mtu分片问题。现在一般不会问tcp/ip头大小这么蛋疼的问题了,但可能会问tcp头部几个状态字段,比如syn/psh/fin/rst/urg/ack....在什么情形下会置1,这个就问得比较深了。深入的还有滑动窗口与拥塞控制的大致原理。
4. socket编程。阻塞/非阻塞的区别;事件循环select/poll/epoll;常见的网络库read/write会怎样实现(可以参考muduo)。有面试官会问客户端是否需要bind;tcp/udp 协议编程时的细微区别...
5.工具相关。vim/makefile/gdb/g++ ...
6. c++相关。免不了问虚函数;常见stl实现和操作;extern c 干嘛的。
7. 脚本相关。shell/perl/python 至少会一门吧,运维/部署都需要。
上述列举的都是比较常见,比较简单的问题。不过能把这些答好已经不容易了。

时间: 01-31