最近换工作,朋友介绍去了一家公司面试,最终有幸能够被认可,加入了新的工作。
在绿盟眨眼三年,很多思考在此工作交接完成之后,想总结下。
还是由本次面试开始说吧。
1、面试的过程
姑且叫这家公司为X公司,我所面试的职位是测试开发。话说在过去的四年,我基本上算是一直兢兢业业,平时也经常在网络上和大家交流,自认为技术不错。而且在面试之前,推荐人和朋友也给我打气:你的技术不会有问题,最终决定的是你是否想去。
信心慢慢的来到X公司,参加一轮面试。甫一见笔试卷,便很慌乱,全C,主要考量技术,int,float,str等数据类型分别占几字节,内存泄漏的预防,数据结构,算法等内容。
我的基础比较差,虽然已经在着力弥补,还是难以答得比较吃力。幸而推荐的朋友比较强力,得到面谈的机会。面试官前后问了四个问题:
1)TCP协议建立连接和销毁连接的过程,画图演示并说明,尽量能够说出具体的数据包;
2)列举几种有可能引起进程死锁的情况,给予一种情况,分析是否会出现进程死锁;
3)Python的多线程特点;(主要指和C,C++,Java等语言对比);
4)socket编程写一个简单的监听本地的server;
这些问题大多有涉猎,但对于细节的把握不好,往往一知半解,惭愧。
惶恐自己是否有二面的机会,幸好得到。二面的技术问题比较简单:
设计一个系统,可以测试多操作系统(仅指windows下的xp,vista,win7等,不牵扯*nix)的某产品功能;
对于这个话题倒是有所涉猎,洋洋洒洒的设计了个多线程+虚拟机控制的系统,可以并发测试多种操作系统的功能,当然,也强调了工作重点主要在环境的搭建等等。
可能未来的技术应用中,虚拟机会占有重要的地位。二面的考官对这个系统设计还是比较满意。
其实也凸显了自己的知识主要集中在应用层面,在理论基础层面欠缺很多,而自己的兴趣偏偏就在理论基础层面,需要更多的努力去弥补。
2、与二轮面试官的交流
技术面试作罢,探讨了下关于自动化测试的思考。二轮面试官在业界可能没有名气,但他的确主导了某一家大型公司的自动化测试工作,并且有不错的成果。说到自动化测试,往往会立刻联想到它的意义在于回归测试阶段,在功能稳定的阶段,可以进行回归测试,节约人的重复工作,进而可以解放出人力去拓展测试领域,深化测试。
这中说法几乎成为了业界的标准答案,貌似专业。然后对此我却有所不认同:
从我刚开始自动化测试是在2007年7月吧,那时到现在已经三年有余,当时就已经有了这样的理论说法。那个时候,QTP在国内应用还比较少,我当时还欣欣然认为自己习得了一门安身立命的好本事。到现在我都不用QTP一年多了,这样的理论也的确应该得到一些修正。