记录一次sohu面试

今天去sohu面试了一个新技术研究工程师职位。看这个名字就知道这个肯定是新设定的部门,所以招人肯定会比较多。面试官就一个人,这个我比较喜欢,我可不喜欢对面坐着一排7-8个人这样的面试。
果然在我之前已经很多人来过面试了,我只能算是这其中小小的一个。
说下职位的要求,方向有2个,一个是偏向系统本身的也就是面试官说的硬件,另外一个是系统软件也就是面试官说的软件。其实个人感觉这2个都属于软件,一个是系统软件,一个应用软件。以后所做的就是搭建、测试和优化整个架构的过程。sohu对于这个职位是想招点高手过来,越高越好,上不封顶。
今天这位面试官倒是很实在,跟TOM很像。是根据是熟悉哪些来问的,而不像有些人看你不熟悉哪些就问哪些来满足自己的虚荣心。
由于一直做WEB源站,所以第一个问题就是http1.0和http1.1有什么区别,老实说我这个只知道http1.0不支持压缩,而http1.1支持,因为squid2和squid3最大的区别就是支持http1.0还是支持http1.1。
以下资料是参考互联网文档后的解释:
http1.0是hop-to-hop的协议仅对简单的传输层连接有意义,不被缓存,也不被代理服务器向前传递。为每个要下载的对象,如图片、声音等都创建一个单独的tcp链接。
http1.1是host-to-host的协议,为所有的对象创建同一个链接,传输效率较高。HTTP 1.1 还通过增加更多的请求头和响应头来改进和扩充HTTP 1.0 的功能。还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

第二个问题是问我熟悉不熟悉shell,我说我只能算是基础熟悉吧,毕竟水平还只是停留在while和if以及命令的叠加上。于是他问我如何取出IP地址,我本以为的

意思如何从ifconfig中得到IP地址,那应该是如下


ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F : '{print $2}'

但后来发现并不是这样的,是从一堆文件中如何找出IP地址,那我的思路首先是IP地址分为4段,当中以.分割,同时每段最大为255。思路理清后就用如下的命令来找出


grep "\[0-255\].\[0-255\].\[0-255\].\[0-255\]" file

但是其实这样也只是从文件中找出含有IP地址的那一行而已
第三个问题是mysql的。问:mysql主从复制是加密的吗? 答:mysql主从复制是支持ssl加密的,但是一般是不用的。show slave status是可以看到相关ssl设置的,所以可见它肯定是支持的。问: mysql数据传输是加密的还是不加密的,答:是不加密的,因为我认为Mysql传输是通过bin-log来传递的,而打开bin-log文件也没有被加密过,打开也是明文的,这当中应该是没有任何加密措施的。回家后找了下相关资料发现也是可以进行ssl加密的,只要在语句后面加入REQUIRE SSL就可以了,比如


GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "password!" REQUIRE SSL;

最后一个问题问我处理事故中印象最深刻的是哪次,因为有很多了,所以就说了一个是nginx经过squid压缩的问题,还有一个是mysql slave状态一直变化的问题。

这2个问题在我blog上都是有相关处理的日志记录。