2018绿盟软件开发工程师笔试记录

2018-08-18

更新1:XX年10月17日(星期天) 晚上7:29 收到面试通知,明天下午面试。

更新2:XX年10月21日 下午五点左右收到通知,已被录用。第一份offer~

笔试地点:华科n201

笔试职位:软件开发工程师(质量部)

笔试感觉还好,题目类型为:

多选(选对3分,不全1分,选错不得分)

配置题:第一个是windows和linux下如何配置静态路由,第二题是一个sql查询的(很强大啊)、第三题是填写几个公司名称

设计题:两个路由器负载均衡,如何设计测试用例

工具使用题:告诉你一个名为netperf的工具,然后发一张英文文档,内容大致为man netperf显示的,有命令的格式,每个参数的含义,考研英文阅读能力和使用命令行工具的经验,以及快速摄取必要信息的能力。

编程题:

1.n*n的矩形,每一格输入1-n*n的数,要求行、列、对角线之和均相等。

2.一个字符串匹配的设计题目。

下面是详细内容:

选择题涉及了

        linux下的chmod命令,chmod 755 ,可以使具有什么权限?

        两个整数交换的方式,通过与运算和加法运算都可以完成(不过加法可能溢出,不知道出题人怎么考虑的,反正我选了. a=a+b,b=a-b,a=a-b,与运算是肯定没问题的)

       哪几个工具可以进行协议分析(tcpdump/wireshark/sniffer,还有一个选项没见过:tcpreplay,在这里,看描述是进行网络硬件测试的:test a variety of network devices. it allows you to classify traffic as client or server, rewrite layer 2, 3 and 4 headers and finally replay the traffic back onto the network and through other devices such as switches, routers, firewalls, nids and ips's. tcpreplay supports both single and dual nic modes for testing both sniffing and inline devices. )。

      还有一个是问web自动化测试的工具有哪些(我就看到认识一个junit,查资料得知,selenium是很有名的web自动化测试工具。选项:curl是 a command line tool for transferring data with url syntax, supporting 很多的协议~。还有个选项忘了)

    大致就这些题值得记忆。

    接下来是问答题
1.分别在windows和linux下用命令行的方式添加静态路由,写出命令。比如添加192.168.0.1/16,网关为192.168.255.254.

2.有三张数据库表,表明和字段如下(格式:表明(字段1,字段2……)):

course(cno,cname,credit,teacher)

student(sno,sname,dept,grade,class)

sc(id,sno,cno,date)

试卷上面是给的中文,我自己在试卷上说明后对每个字段给了个英文名。其中,credit是成绩,class是班级,id是序号。

题目要求,写出“截至/9/13,每门课程在各院系的选课人数”的sql语句,要求输入格式:课程名、院系、选课人数(选课人数由大到小排序)。

说实话,这个比课本上的示例要难一些,难点在与这里有两次group,一个是对cno的group,另一个是dept上的group,如何完成呢?我用了from嵌套查询的方式解决。大致如下:

select cname,dept,count(*) as totalstu

from (select cname,dept

          from sc,student,course

          where sc.cno=course.cno and

                      sc.sno=student.sno and

                      data <= XX0930 //假设时间用一个八位的整数表示

            group by cno)

group by dept

order by totalstu asc;

之前不久复习过数据库,还有些印象。不过也不太清楚,这个from中嵌套select后能不能调用group by语句。这题可能做错了。

3.写出三个主要从事信息安全的公司名,国内和国外一共三个。

很囧的说,我第一个就写的金山……。然后是奇虎、江明、瑞星、卡巴、趋势。

然后是一个完全没碰过的测试用例设计题:

某route具有ha(high availability,高可靠性)能力,即:将两个路由器a、b部署到网络,平时a、b分别配不同策略路由,以达到负载均衡,两个route用专线同步心跳。一旦一台出现故障,则由另一台承担全部任务,以保证网络正常通讯,当故障路由器回复上线时,负载重回流到均衡状态,请针对ha功能进行测试用例设计。

说实话,测试用例我是小白。但是8分的题不写多可信,于是大致写了下思路。分为4大类情况:

classify          a           b

1              ok             ok

2.             bad->ok    ok

                 ok            bad->ok

3              ok->bad   ok

                ok             ok->bad

4             ok                bad

                bad              ok

为什么这么分?不解释。看个人的理解~

下面是考察快速学习和应用能力了:

先是一个拓扑图,给出了服务器和客户端的ip以及server的port,然后额外发了一张纸,内容如下:

其实就是shell中输入man netperf得到的内容,然后给出几个场景,利用这些参数构造命令。具体的场景记不得了。

最后是两个数据结构和算法题:

题一:画了三个矩形,分别是3*3 、5*5 、7*7三种矩形的示例,每个矩形满足:所有数在1-n*n之间,行、列、对角线数只和相等。找出图中的规律,写一个程序,实现输入n(n为奇数),生成一个n*n的矩阵,满足行、列、对角和相等。

这种题目估计很多人之前做过,这里就不多说了。

题二:实现通配符匹配,通配符包括*(星号,代表任意个任意字符)。?(问号,单个任意字符)。要求利用递归实现。比如,匹配a*b,对于字符串mmmafdjskb输出true,对mmmmaaa输出false。

如果说不限制用递归,用循环我估计可以解决,一看到递归我就不想写了。随便写了个明显带有问题的程序就交了。

另外选择题有个考察shell中的正则的,大概为:echo 'hello hello big world' | sed '/s/^h.*\s/hi' ,问输出的结果是什么。sed中的\s是什么意思?这个我没搞懂,所以只能理解到这一层“/s表示该字符串中以h开头,后面跟任何一个字符的子串均用hi替换”,那么输出即为hi。

因为不懂\s的意思,所以只能这样了

总的来说,这张试卷考的面很广:

1.知识面广:涉及了网络、数据库、正则表达式、网络安全(sql注入的原理)、linux常用操作、测试用例的设计……

2.语言杂:shell、sed、python、bat (这个说法不太严格)

就这么多吧,上面有任何不对,希望各位大牛不吝指出。