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

Linux后台开发面试问题汇总的相关文章

linux后台server开发环境的部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))

linux后台server开发环境部署配置 引言 背景 随着互联网业务的不断增多.开发环境变得越来越复杂,为了便于统一server端的开发部署环境,特制定本配置文档. 使用软件 CentOS 6.3(Linux version 2.6.32-279.el6.x86_64) gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4) 本次配置 Nginx 1.5.8 Apache 2.4.7 php 5.3.26 目的 构造WEB前端技术架构.web前端的部署结构技术全然

ASP.NET面试点汇总

1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么答:尽可能用约束(包括CHECK.主键.唯一键.外键.非空字段)实现,这种方式的效率最好:其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性.一致性:最后再考虑用自写业务逻辑实现,但这种方式效率最低.编程最复杂,当为下下之策 2 : ADO.NET相对于ADO等主要有什么改进?答 ADO数据以Recordset 形式存储 ADO.NET以DataSet形式存储Recordset对数据库持续连接访问A

Linux系统开发7 进程关系,守护进程

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> Linux系统开发7  进程关系守护进程 终端 网络终端 Linux PCB结构体信息 进程组 修改子进程.父进程的组ID 会话组 设置一个会话脱离控制终端 生成一个新的会话 守护进程 守护进程模板 获取当前系统时间  终端 在UNIX系统中用户通过终端登录系统后得到一个Shell进程这个终端成为Shell进 程的控制终端Controlling Terminal在讲进程时讲过控制终端是保存在PCB

Linux系统开发6 信号

[本文谢绝转载,原文来自http://990487026.blog.51cto.com] <大纲> Linux系统开发6 信号 linux系统有64种信号 signal man文档 终端按键信号 ctrl +c SIGIN ctrl +z SIGTSTP ctrl +\ SIGQUIT 硬件产生信号 浮点数例外信号  访问非法内存 kill()函数 信号与权限 kill()函数的pid 与返回值 信号产生原因 raise() 信号 abort() 信号 alarm() 信号 收到信号的默认操作

php后台开发(一)hello world

php后台开发(一)hello world 环境安装 开发环境为Ubuntu 12.04,选择linux+apache+php的开发环境 安装 apache2 sudo apt-get install apache2 安装php sudo apt-get install php5 安装mysql(注意安装过程中,需要输入root密码) sudo apt-get install mysql-server 安装apache的解析模块 sudo apt-get install libapache2-m

【转】linux驱动开发的经典书籍

原文网址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为<linux_device_driver 3rd Edition>,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本侧重于实战的书籍也只能停留在基本的接口介绍上,更深入的东东只能靠我们自己摸索了.但万事总有一个开头,没有对Linux驱动整体框架的把握是很难做一个优秀的驱动开发者的.除了

linux web开发常用命令

:q 退出 vi :wq 保存并退出 vi :wq! 强制保存并退出 vi #tail -f catalina.out  查询tomcat后台输出 在Linux系统下,重启Tomcat使用命令操作的! 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看Tomcat是否以关闭 ps -ef|grep java 如果显示以下相似信息,说明Tomcat还没有关闭 root 7010 1 0 Apr19 ?

linux服务器开发浅谈

[开发前准备] 在进行linux服务器开发之前,必须很清楚地了解所开发的对象需要考虑的相关问题比如:功能架构:提供服务的模块体系结构稳定性:服务器的出core率,内存泄露情况性能:请求与返回的速度与正确性负载能力:能同时访问的最大数量和频度 根据不同服务器对象的环境和应用,服务器开发的对应手段相差甚远.比如就客户端连接时间较短却又比较频繁的服务器(例如HTTP服务器)而言,在可选的服务器结构中,预先派生进/线程的结构就要比并发式结构高效 总之,在开发服务器之前,必须进行完整的服务器开发需求分析,

(java web后端方向)如何让你的简历为你争取到更多的面试机会,内容来自java web轻量级开发面试教程

我们在做培训时,会发现一个不合理的情况,一些程序员能力不错,在公司里也是技术牛人,但发出去的简历往往会石沉大海,没有回复.对于刚毕业的大学生或工作年限在2年之内的程序员,这个情况会更严重. 这种情况下,其实不是你的能力有问题,而是简历筛选人(往往是人事或技术面试官)无法从简历上看出你很牛,或者即使能从简历上感觉到你能力很强,但会感觉到你的能力和公司的需求不匹配.不管是哪种情况,结果都一个,你甚至得不到技术面试的机会. 笔者在这里,将根据面试多个候选人(至今有100以上)的经验,来向大家展示准备简